|
|
1.1 ! root 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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.