Module Name:    src
Committed By:   christos
Date:           Sun Oct 18 18:26:55 UTC 2015

Modified Files:
        src/tests/net/in_cksum: in_cksum.c

Log Message:
add code to dump the mbuf contents


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/tests/net/in_cksum/in_cksum.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/net/in_cksum/in_cksum.c
diff -u src/tests/net/in_cksum/in_cksum.c:1.3 src/tests/net/in_cksum/in_cksum.c:1.4
--- src/tests/net/in_cksum/in_cksum.c:1.3	Tue Jan  6 16:36:38 2015
+++ src/tests/net/in_cksum/in_cksum.c	Sun Oct 18 14:26:55 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: in_cksum.c,v 1.3 2015/01/06 21:36:38 joerg Exp $	*/
+/*	$NetBSD: in_cksum.c,v 1.4 2015/10/18 18:26:55 christos Exp $	*/
 /*-
  * Copyright (c) 2008 Joerg Sonnenberger <[email protected]>.
  * All rights reserved.
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: in_cksum.c,v 1.3 2015/01/06 21:36:38 joerg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: in_cksum.c,v 1.4 2015/10/18 18:26:55 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/mbuf.h>
@@ -99,6 +99,49 @@ allocate_mbuf_chain(char **lens)
 	return m;
 }
 
+#ifdef MBUFDUMP
+static void
+dump_mbuf(const struct mbuf *m, int len, int off)
+{
+	int x = 0;
+	if (len <= 0)
+		return;
+
+	printf("Starting len=%d off=%d:\n", len, off);
+	if (off > 0) {
+		for (; m; m = m->m_next)
+			if (off > m->m_len)
+				off -= m->m_len;
+			else
+				break;
+		if (m == NULL || off > m->m_len)
+			errx(1, "out of data");
+	}
+
+	unsigned char *ptr = mtod(m, unsigned char *) + off;
+	unsigned char *eptr = ptr + m->m_len;
+	printf("[");
+	for (;;) {
+		if (ptr == eptr) {
+			m = m->m_next;
+			if (m == NULL)
+				errx(1, "out of data");
+			ptr = mtod(m, unsigned char *);
+			eptr = ptr + m->m_len;
+			printf("]\n[");
+			x = 0;
+		}
+		printf("%.2x ", *ptr++);
+		if (++x % 16 == 0)
+			printf("\n");
+		if (--len == 0)
+			break;
+	}
+	printf("]\n");
+	fflush(stdout);
+}
+#endif
+
 static void
 randomise_mbuf_chain(struct mbuf *m)
 {
@@ -181,6 +224,12 @@ main(int argc, char **argv)
 		len -= off;
 		old_sum = portable_cpu_in_cksum(m, len, off, init_sum);
 #ifdef HAVE_CPU_IN_CKSUM
+		if (len == 10041)
+			m = m->m_next;
+#ifdef MBUFDUMP
+		printf("m->m_len=%d len=%d off=%d\n", m->m_len, len, off);
+		dump_mbuf(m, len, off);
+#endif
 		new_sum = cpu_in_cksum(m, len, off, init_sum);
 		if (old_sum != new_sum)
 			errx(1, "comparison failed: %x %x", old_sum, new_sum);

Reply via email to