From: hannes Date: Tue, 13 Dec 2005 13:44:29 +0000 (+0000) Subject: add support for FRF.16 Multilink Frame-Relay (DLT_MFR) X-Git-Tag: tcpdump-4.0.0~279 X-Git-Url: https://git.tcpdump.org/tcpdump/commitdiff_plain/997e4c69542f1ba6e2f4498fa633bbb2d9309d58?hp=8e01df24a4f825f880cf4919ab1e5a4a9aa2a45b add support for FRF.16 Multilink Frame-Relay (DLT_MFR) --- diff --git a/interface.h b/interface.h index 1190643a..deee3b97 100644 --- a/interface.h +++ b/interface.h @@ -18,7 +18,7 @@ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * @(#) $Header: /tcpdump/master/tcpdump/interface.h,v 1.263 2005-10-20 07:43:51 hannes Exp $ (LBL) + * @(#) $Header: /tcpdump/master/tcpdump/interface.h,v 1.264 2005-12-13 13:44:29 hannes Exp $ (LBL) */ #ifndef tcpdump_interface_h @@ -202,6 +202,7 @@ extern u_int token_if_print(const struct pcap_pkthdr *, const u_char *); extern void fddi_print(const u_char *, u_int, u_int); extern u_int fddi_if_print(const struct pcap_pkthdr *, const u_char *); extern u_int fr_if_print(const struct pcap_pkthdr *, const u_char *); +extern u_int mfr_if_print(const struct pcap_pkthdr *, const u_char *); extern u_int fr_print(register const u_char *, u_int); extern u_int mfr_print(register const u_char *, u_int); extern u_int ieee802_11_if_print(const struct pcap_pkthdr *, const u_char *); diff --git a/print-fr.c b/print-fr.c index e6de4db4..1b712ac9 100644 --- a/print-fr.c +++ b/print-fr.c @@ -21,7 +21,7 @@ #ifndef lint static const char rcsid[] _U_ = - "@(#)$Header: /tcpdump/master/tcpdump/print-fr.c,v 1.48 2005-11-13 11:53:19 guy Exp $ (LBL)"; + "@(#)$Header: /tcpdump/master/tcpdump/print-fr.c,v 1.49 2005-12-13 13:44:30 hannes Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -324,6 +324,24 @@ fr_print(register const u_char *p, u_int length) } +u_int +mfr_if_print(const struct pcap_pkthdr *h, register const u_char *p) +{ + register u_int length = h->len; + register u_int caplen = h->caplen; + + TCHECK2(*p, 2); /* minimum frame header length */ + + if ((length = mfr_print(p, length)) == 0) + return (0); + else + return length; + trunc: + printf("[|mfr]"); + return caplen; +} + + #define MFR_CTRL_MSG_ADD_LINK 1 #define MFR_CTRL_MSG_ADD_LINK_ACK 2 #define MFR_CTRL_MSG_ADD_LINK_REJ 3 diff --git a/tcpdump.c b/tcpdump.c index 116f3daa..a311f3f0 100644 --- a/tcpdump.c +++ b/tcpdump.c @@ -30,7 +30,7 @@ static const char copyright[] _U_ = "@(#) Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000\n\ The Regents of the University of California. All rights reserved.\n"; static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/tcpdump.c,v 1.265 2005-12-13 08:37:22 hannes Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/tcpdump/tcpdump.c,v 1.266 2005-12-13 13:44:30 hannes Exp $ (LBL)"; #endif /* @@ -260,6 +260,9 @@ static struct printer printers[] = { #endif #ifdef DLT_JUNIPER_CHDLC { juniper_chdlc_print, DLT_JUNIPER_CHDLC }, +#endif +#ifdef DLT_MFR + { mfr_if_print, DLT_MFR }, #endif { NULL, 0 }, };