summaryrefslogtreecommitdiffstats
path: root/sys/netgraph/ng_base.c
diff options
context:
space:
mode:
authorarchie <archie@FreeBSD.org>1999-11-19 05:43:33 +0000
committerarchie <archie@FreeBSD.org>1999-11-19 05:43:33 +0000
commit456bd56ad3b0cc97f59d5b0390c13e2f4730e8fe (patch)
tree76cef65d77af8fc51e1d4990ee4cbc1decbba1d2 /sys/netgraph/ng_base.c
parent1a23d6fcb0cc5df7e7353b83e6095055972d354a (diff)
downloadFreeBSD-src-456bd56ad3b0cc97f59d5b0390c13e2f4730e8fe.zip
FreeBSD-src-456bd56ad3b0cc97f59d5b0390c13e2f4730e8fe.tar.gz
Use KASSERT() instead of old #ifdef DIAGNOSTICS.
Add more INVARIANTS-enabled sanity checking.
Diffstat (limited to 'sys/netgraph/ng_base.c')
-rw-r--r--sys/netgraph/ng_base.c36
1 files changed, 22 insertions, 14 deletions
diff --git a/sys/netgraph/ng_base.c b/sys/netgraph/ng_base.c
index 2ab8126..484a1a3 100644
--- a/sys/netgraph/ng_base.c
+++ b/sys/netgraph/ng_base.c
@@ -94,6 +94,24 @@ MALLOC_DEFINE(M_NETGRAPH, "netgraph", "netgraph structures and ctrl messages");
static ng_ID_t nextID = 1;
+#ifdef INVARIANTS
+#define CHECK_DATA_MBUF(m) do { \
+ struct mbuf *n; \
+ int total; \
+ \
+ if (((m)->m_flags & M_PKTHDR) == 0) \
+ panic("%s: !PKTHDR", __FUNCTION__); \
+ for (total = 0, n = (m); n != NULL; n = n->m_next) \
+ total += n->m_len; \
+ if ((m)->m_pkthdr.len != total) { \
+ panic("%s: %d != %d", \
+ __FUNCTION__, (m)->m_pkthdr.len, total); \
+ } \
+ } while (0)
+#else
+#define CHECK_DATA_MBUF(m)
+#endif
+
/************************************************************************
Node routines
@@ -271,12 +289,8 @@ ng_wait_node(node_p node, char *msg)
TRAP_ERROR;
error = ENXIO;
} else {
-#ifdef DIAGNOSTIC
- if (node->refs == 1) {
- panic(__FUNCTION__);
- error = ENXIO;
- }
-#endif
+ KASSERT(node->refs > 1,
+ ("%s: refs=%d", __FUNCTION__, node->refs));
node->flags |= NG_BUSY;
}
splx(s);
@@ -1274,10 +1288,7 @@ ng_send_data(hook_p hook, struct mbuf *m, meta_p meta)
int (*rcvdata)(hook_p, struct mbuf *, meta_p);
int error;
-#ifdef DIAGNOSTIC
- if ((m->m_flags & M_PKTHDR) == 0)
- panic(__FUNCTION__);
-#endif
+ CHECK_DATA_MBUF(m);
if (hook && (hook->flags & HK_INVALID) == 0) {
rcvdata = hook->peer->node->type->rcvdata;
if (rcvdata != NULL)
@@ -1304,10 +1315,7 @@ ng_send_dataq(hook_p hook, struct mbuf *m, meta_p meta)
int (*rcvdataq)(hook_p, struct mbuf *, meta_p);
int error;
-#ifdef DIAGNOSTIC
- if ((m->m_flags & M_PKTHDR) == 0)
- panic(__FUNCTION__);
-#endif
+ CHECK_DATA_MBUF(m);
if (hook && (hook->flags & HK_INVALID) == 0) {
rcvdataq = hook->peer->node->type->rcvdataq;
if (rcvdataq != NULL)
OpenPOWER on IntegriCloud