]> The Tcpdump Group git mirrors - tcpdump/commitdiff
add support for FRF.16 Multilink Frame-Relay (DLT_MFR)
authorhannes <hannes>
Tue, 13 Dec 2005 13:44:29 +0000 (13:44 +0000)
committerhannes <hannes>
Tue, 13 Dec 2005 13:44:29 +0000 (13:44 +0000)
interface.h
print-fr.c
tcpdump.c

index 1190643add3d3e72628eeb312d4bb25f2ff61cc8..deee3b970ca147dd7a37805d2fb86bcebe439028 100644 (file)
@@ -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 *);
index e6de4db4e70203cb45af89d7d401729d49e371ea..1b712ac985ae926791e3b8db9b27ffc716334920 100644 (file)
@@ -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
index 116f3daa7abdc1c06465cb46c1badaaec720edaa..a311f3f0e2d0b36e7e3b1f0345b7c473cba64ac0 100644 (file)
--- 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 },
 };