Adding a debug function to printout buffers like tcpdump.
authorDavid Zhu <yuzhu@cs.berkeley.edu>
Tue, 22 Feb 2011 06:37:28 +0000 (22:37 -0800)
committerKevin Klues <klueska@cs.berkeley.edu>
Thu, 3 Nov 2011 00:35:58 +0000 (17:35 -0700)
kern/include/net.h
kern/src/net.c

index e9b9ba9..605af84 100644 (file)
@@ -8,6 +8,7 @@
 #define ROS_KERN_NET_H
 
 #include <bits/netinet.h>
+#include <stdio.h>
 
 /* A few other useful standard defines.  Note the IP header can change size. */
 #define ETH_HDR_SZ 14
@@ -54,4 +55,6 @@ uint16_t __ip_checksum(void *buf, unsigned int len, uint32_t sum);
 uint16_t ip_checksum(struct ip_hdr *ip_hdr);
 uint16_t udp_checksum(struct ip_hdr *ip_hdr, struct udp_hdr *udp_hdr);
 
+// TODO: Move this to a better location
+void dumppacket(unsigned char *buff, size_t len);
 #endif /* ROS_KERN_NET_H */
index 21f4768..cd8d98b 100644 (file)
@@ -64,3 +64,18 @@ uint16_t udp_checksum(struct ip_hdr *ip_hdr, struct udp_hdr *udp_hdr)
        udp_pseudosum += udp_len;
        return __ip_checksum(udp_hdr, udp_len, udp_pseudosum);
 }
+/* Print out a network packet in the same format as tcpdump, making it easier 
+ * to compare */
+void dumppacket(unsigned char *buff, size_t len)
+{
+       int i;
+       for (i=0; i<len; i++) {
+               if (i%16 == 0)
+                       printk("0x%x\t", i/16);
+               printk("%02x", buff[i]);
+               if (i%2 != 0)
+                       printk(" ");
+               if ((i+1)%16 == 0)
+                       printk("\n");
+       }
+}