summaryrefslogtreecommitdiffstats
path: root/sys/net/radix.c
diff options
context:
space:
mode:
authorbz <bz@FreeBSD.org>2010-03-06 21:27:26 +0000
committerbz <bz@FreeBSD.org>2010-03-06 21:27:26 +0000
commit8ef34a39860d5396ec488cb71a2b2febedb5a467 (patch)
tree888b29b7ba9788f9cc675c5b8d933d278f6db978 /sys/net/radix.c
parentf82acabd2e2f46059cb8f8892210335c0444c48d (diff)
downloadFreeBSD-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.c18
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)
{
OpenPOWER on IntegriCloud