minor fixes
[unix-history] / usr / src / sbin / XNSrouted / trace.h
CommitLineData
e69f81e0
KS
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 *
610b111d 6 * @(#)trace.h 5.4 (Berkeley) %G%";
e69f81e0
KS
7 *
8 * Includes material written at Cornell University by Bill Nesheim,
9 * by permission of the author.
10 */
42d71268
KS
11
12/*
13 * Xerox Routing Information Protocol.
14 */
15
16/*
17 * Trace record format.
18 */
19struct iftrace {
20 time_t ift_stamp; /* time stamp */
21 struct sockaddr ift_who; /* from/to */
22 char *ift_packet; /* pointer to packet */
23 short ift_size; /* size of packet */
24 short ift_metric; /* metric */
25};
26
27/*
28 * Per interface packet tracing buffers. An incoming and
29 * outgoing circular buffer of packets is maintained, per
30 * interface, for debugging. Buffers are dumped whenever
31 * an interface is marked down.
32 */
33struct ifdebug {
34 struct iftrace *ifd_records; /* array of trace records */
35 struct iftrace *ifd_front; /* next empty trace record */
36 int ifd_count; /* number of unprinted records */
37 struct interface *ifd_if; /* for locating stuff */
38};
39
40/*
41 * Packet tracing stuff.
42 */
43int tracepackets; /* watch packets as they go by */
44int tracing; /* on/off */
45FILE *ftrace; /* output trace file */
46
47#define TRACE_ACTION(action, route) { \
48 if (tracing) \
49 traceaction(ftrace, "action", route); \
50 }
51#define TRACE_INPUT(ifp, src, size) { \
52 if (tracing) { \
53 ifp = if_iflookup(src); \
54 if (ifp) \
55 trace(&ifp->int_input, src, &packet[sizeof(struct idp)], size, \
56 ntohl(ifp->int_metric)); \
57 } \
610b111d
KS
58 if (tracepackets && ftrace) \
59 dumppacket(ftrace, "from", src, &packet[sizeof(struct idp)], size); \
42d71268
KS
60 }
61#define TRACE_OUTPUT(ifp, dst, size) { \
62 if (tracing) { \
63 ifp = if_iflookup(dst); \
64 if (ifp) \
65 trace(&ifp->int_output, dst, &packet[sizeof(struct idp)], size, ifp->int_metric); \
66 } \
610b111d
KS
67 if (tracepackets && ftrace) \
68 dumppacket(ftrace, "to", dst, &packet[sizeof(struct idp)], size); \
42d71268 69 }