diff options
author | bz <bz@FreeBSD.org> | 2010-03-06 21:27:26 +0000 |
---|---|---|
committer | bz <bz@FreeBSD.org> | 2010-03-06 21:27:26 +0000 |
commit | 8ef34a39860d5396ec488cb71a2b2febedb5a467 (patch) | |
tree | 888b29b7ba9788f9cc675c5b8d933d278f6db978 /sys/net/radix.c | |
parent | f82acabd2e2f46059cb8f8892210335c0444c48d (diff) | |
download | FreeBSD-src-8ef34a39860d5396ec488cb71a2b2febedb5a467.zip FreeBSD-src-8ef34a39860d5396ec488cb71a2b2febedb5a467.tar.gz |
Introduce a function rn_detachhead() that will free the
radix table root nodes. This is only needed (and available)
in the virtualization case to free the resources when tearing
down a virtual network stack.
Sponsored by: ISPsystem
Reviewed by: julian, zec
MFC after: 5 days
Diffstat (limited to 'sys/net/radix.c')
-rw-r--r-- | sys/net/radix.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/sys/net/radix.c b/sys/net/radix.c index db1a46c..24650e7 100644 --- a/sys/net/radix.c +++ b/sys/net/radix.c @@ -1161,6 +1161,24 @@ rn_inithead(head, off) return (1); } +#ifdef VIMAGE +int +rn_detachhead(void **head) +{ + struct radix_node_head *rnh; + + KASSERT((head != NULL && *head != NULL), + ("%s: head already freed", __func__)); + rnh = *head; + + /* Free <left,root,right> nodes. */ + Free(rnh); + + *head = NULL; + return (1); +} +#endif + void rn_init(int maxk) { |