From 94592bf31ada495be5578b73ec51b2f68b6be122 Mon Sep 17 00:00:00 2001 From: guy Date: Wed, 17 Mar 2004 22:11:34 +0000 Subject: Add support for the "-e" flag, printing the destination and source addresses. --- print-ap1394.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'print-ap1394.c') diff --git a/print-ap1394.c b/print-ap1394.c index 49a704ea..62665810 100644 --- a/print-ap1394.c +++ b/print-ap1394.c @@ -20,7 +20,7 @@ */ #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-ap1394.c,v 1.1 2004-03-17 19:40:42 guy Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/tcpdump/print-ap1394.c,v 1.2 2004-03-17 22:11:34 guy Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -53,6 +53,27 @@ struct firewire_header { */ #define FIREWIRE_HDRLEN 18 +static inline void +ap1394_hdr_print(register const u_char *bp, u_int length) +{ + register const struct firewire_header *fp; + fp = (const struct firewire_header *)bp; + + (void)printf("%s > %s", + linkaddr_string(fp->firewire_dhost, FIREWIRE_EUI64_LEN), + linkaddr_string(fp->firewire_shost, FIREWIRE_EUI64_LEN)); + + if (!qflag) { + (void)printf(", ethertype %s (0x%04x)", + tok2str(ethertype_values,"Unknown", ntohs(fp->firewire_type)), + ntohs(fp->firewire_type)); + } else { + (void)printf(", %s", tok2str(ethertype_values,"Unknown Ethertype (0x%04x)", ntohs(fp->firewire_type))); + } + + (void)printf(", length %u: ", length); +} + /* * This is the top level routine of the printer. 'p' points * to the ether header of the packet, 'h->ts' is the timestamp, @@ -73,6 +94,9 @@ ap1394_if_print(const struct pcap_pkthdr *h, const u_char *p) return FIREWIRE_HDRLEN; } + if (eflag) + ap1394_hdr_print(p, length); + length -= FIREWIRE_HDRLEN; caplen -= FIREWIRE_HDRLEN; fp = (struct firewire_header *)p; @@ -84,6 +108,9 @@ ap1394_if_print(const struct pcap_pkthdr *h, const u_char *p) if (ether_encap_print(ether_type, p, length, caplen, &extracted_ether_type) == 0) { /* ether_type not known, print raw packet */ + if (!eflag) + ap1394_hdr_print((u_char *)fp, length + FIREWIRE_HDRLEN); + if (!xflag && !qflag) default_print(p, caplen); } -- cgit v1.2.1