1: /*
2: * Copyright (c) 1983 Regents of the University of California.
3: * All rights reserved. The Berkeley software License Agreement
4: * specifies the terms and conditions for redistribution.
5: *
6: * @(#)trace.h 5.2 (Berkeley) 4/20/86
7: */
8:
9: /*
10: * Routing table management daemon.
11: */
12:
13: /*
14: * Trace record format.
15: */
16: struct iftrace {
17: time_t ift_stamp; /* time stamp */
18: struct sockaddr ift_who; /* from/to */
19: char *ift_packet; /* pointer to packet */
20: short ift_size; /* size of packet */
21: short ift_metric; /* metric on associated metric */
22: };
23:
24: /*
25: * Per interface packet tracing buffers. An incoming and
26: * outgoing circular buffer of packets is maintained, per
27: * interface, for debugging. Buffers are dumped whenever
28: * an interface is marked down.
29: */
30: struct ifdebug {
31: struct iftrace *ifd_records; /* array of trace records */
32: struct iftrace *ifd_front; /* next empty trace record */
33: int ifd_count; /* number of unprinted records */
34: struct interface *ifd_if; /* for locating stuff */
35: };
36:
37: /*
38: * Packet tracing stuff.
39: */
40: int tracepackets; /* watch packets as they go by */
41: int tracing; /* on/off */
42: FILE *ftrace; /* output trace file */
43:
44: #define TRACE_ACTION(action, route) { \
45: if (tracing) \
46: traceaction(ftrace, "action", route); \
47: }
48: #define TRACE_INPUT(ifp, src, size) { \
49: if (tracing) { \
50: ifp = if_iflookup(src); \
51: if (ifp) \
52: trace(&ifp->int_input, src, packet, size, \
53: ntohl(ifp->int_metric)); \
54: } \
55: if (tracepackets) \
56: dumppacket(stdout, "from", src, packet, size); \
57: }
58: #define TRACE_OUTPUT(ifp, dst, size) { \
59: if (tracing && ifp) \
60: trace(&ifp->int_output, dst, packet, size, ifp->int_metric); \
61: if (tracepackets) \
62: dumppacket(stdout, "to", dst, packet, size); \
63: }
Defined variables
Defined struct's
Defined macros
Usage of this include