]> The Tcpdump Group git mirrors - tcpdump/commitdiff
yet another hexdump routine;
authorhannes <hannes>
Thu, 18 Jul 2002 00:04:12 +0000 (00:04 +0000)
committerhannes <hannes>
Thu, 18 Jul 2002 00:04:12 +0000 (00:04 +0000)
print_unknown_data{} supports identation;

interface.h
util.c

index ddc3547fc1830eae4fcafb36c733773597caccad..680c7f6706c4f578df0bbe00c6a4d2d9dcdd9941 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.190 2002-07-11 09:17:22 guy Exp $ (LBL)
+ * @(#) $Header: /tcpdump/master/tcpdump/interface.h,v 1.191 2002-07-18 00:04:13 hannes Exp $ (LBL)
  */
 
 #ifndef tcpdump_interface_h
@@ -189,6 +189,7 @@ extern const char *dnnum_string(u_short);
 
 #include <pcap.h>
 
+extern int print_unknown_data(const u_char *,const char *,int);
 extern void ascii_print_with_offset(const u_char *, u_int, u_int);
 extern void ascii_print(const u_char *, u_int);
 extern void hex_print_with_offset(const u_char *, u_int, u_int);
@@ -329,3 +330,13 @@ struct bpf_program;
 
 extern void bpf_dump(struct bpf_program *, int);
 #endif
+
+
+
+
+
+
+
+
+
+
diff --git a/util.c b/util.c
index 920de6dc0d95022b089d948be0724dd548f85fcf..3c396a2399c2619b140dee1ae62f911f4e60b4bb 100644 (file)
--- a/util.c
+++ b/util.c
@@ -21,7 +21,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-    "@(#) $Header: /tcpdump/master/tcpdump/util.c,v 1.75 2002-07-16 04:03:16 guy Exp $ (LBL)";
+    "@(#) $Header: /tcpdump/master/tcpdump/util.c,v 1.76 2002-07-18 00:04:12 hannes Exp $ (LBL)";
 #endif
 
 #ifdef HAVE_CONFIG_H
@@ -201,6 +201,34 @@ relts_print(int secs)
        }
 }
 
+/*
+ *  this is a generic routine for printing unknown data;
+ *  we pass on the linefeed plus indentation string to
+ *  get a proper output - returns 0 on error
+ */
+
+int
+print_unknown_data(const u_char *cp,const char *lf,int len)
+{
+        int i;
+
+       printf("%s0x0000: ",lf);
+       for(i=0;i<len;i++) {
+           if (!TTEST2(*(cp+i), 1)) {
+              printf("%spacket exceeded snapshot",lf);
+              return(0);
+            }
+           printf("%02x",*(cp+i));
+           if (i%2)
+               printf(" ");
+           if (i/16!=(i+1)/16) {
+               if (i<(len-1))
+                   printf("%s0x%04x: ",lf,i);
+           }
+       }
+       return(1); /* everything is ok */
+}
+
 /*
  * Convert a token value to a string; use "fmt" if not found.
  */