diff options
author | archie <archie@FreeBSD.org> | 1999-11-19 05:43:33 +0000 |
---|---|---|
committer | archie <archie@FreeBSD.org> | 1999-11-19 05:43:33 +0000 |
commit | 456bd56ad3b0cc97f59d5b0390c13e2f4730e8fe (patch) | |
tree | 76cef65d77af8fc51e1d4990ee4cbc1decbba1d2 /sys/netgraph/ng_base.c | |
parent | 1a23d6fcb0cc5df7e7353b83e6095055972d354a (diff) | |
download | FreeBSD-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.c | 36 |
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) |