]> The Tcpdump Group git mirrors - tcpdump/commitdiff
check the ip protocol version on printing raw packets, from Love <[email protected]>
authorassar <assar>
Tue, 11 Jul 2000 01:22:38 +0000 (01:22 +0000)
committerassar <assar>
Tue, 11 Jul 2000 01:22:38 +0000 (01:22 +0000)
interface.h
print-ip.c
print-raw.c

index 10c96fd646f82418a1ade1bcdff615dbaa107967..840d8eb7c0f507563438ae26a3ba2e8d2fdeb794 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.132 2000-07-11 00:49:02 assar Exp $ (LBL)
+ * @(#) $Header: /tcpdump/master/tcpdump/interface.h,v 1.133 2000-07-11 01:22:38 assar Exp $ (LBL)
  */
 
 #ifndef tcpdump_interface_h
@@ -244,6 +244,7 @@ extern void gre_print(const u_char *, u_int);
 extern void icmp_print(const u_char *, u_int, const u_char *);
 extern void igrp_print(const u_char *, u_int, const u_char *);
 extern void ip_print(const u_char *, u_int);
+extern void ipN_print(const u_char *, u_int);
 extern void ipx_print(const u_char *, u_int);
 extern void isoclns_print(const u_char *, u_int, u_int, const u_char *,
        const u_char *);
index 6a92fb72f9c892641094d9e2ba4496f836f05516..305dad111e681a6eee186af343e2105511872848 100644 (file)
@@ -21,7 +21,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-    "@(#) $Header: /tcpdump/master/tcpdump/print-ip.c,v 1.83 2000-07-01 03:39:03 assar Exp $ (LBL)";
+    "@(#) $Header: /tcpdump/master/tcpdump/print-ip.c,v 1.84 2000-07-11 01:22:39 assar Exp $ (LBL)";
 #endif
 
 #ifdef HAVE_CONFIG_H
@@ -726,3 +726,29 @@ again:
                printf(")");
        }
 }
+
+void
+ipN_print(register const u_char *bp, register u_int length)
+{
+       struct ip *ip, hdr;
+
+       ip = (struct ip *)bp;
+       if (length < 4) {
+               (void)printf("truncated-ip %d", length);
+               return;
+       }
+       memcpy (&hdr, (char *)ip, 4);
+       switch (hdr.ip_v) {
+       case 4:
+           ip_print (bp, length);
+           return;
+#ifdef INET6
+       case 6:
+           ip6_print (bp, length);
+           return;
+#endif
+       default:
+           (void)printf("unknown ip %d", hdr.ip_v);
+           return;
+       }
+}
index dbba479b0dcbe739b14356ade52ec6d6786b2bc5..80a707d322841d2d607e23b32e5e7fbaa52cf95c 100644 (file)
@@ -21,7 +21,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-    "@(#) $Header: /tcpdump/master/tcpdump/print-raw.c,v 1.26 2000-07-01 03:39:08 assar Exp $ (LBL)";
+    "@(#) $Header: /tcpdump/master/tcpdump/print-raw.c,v 1.27 2000-07-11 01:22:39 assar Exp $ (LBL)";
 #endif
 
 #ifdef HAVE_CONFIG_H
@@ -81,7 +81,7 @@ raw_if_print(u_char *user, const struct pcap_pkthdr *h, const u_char *p)
        if (eflag)
                printf("ip: ");
 
-       ip_print(p, length);
+       ipN_print(p, length);
 
        if (xflag)
                default_print(p, caplen);