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);