aboutsummaryrefslogtreecommitdiff
path: root/sys/net/radix.c
diff options
context:
space:
mode:
authorBjoern A. Zeeb <bz@FreeBSD.org>2010-03-06 21:27:26 +0000
committerBjoern A. Zeeb <bz@FreeBSD.org>2010-03-06 21:27:26 +0000
commit1bb635b04d256e0a2d78454dd1815486e317f42f (patch)
tree888b29b7ba9788f9cc675c5b8d933d278f6db978 /sys/net/radix.c
parent391dab1c2d4d3fdf8ffb14c5e8644a0f4cc08e11 (diff)
downloadsrc-1bb635b04d256e0a2d78454dd1815486e317f42f.tar.gz
src-1bb635b04d256e0a2d78454dd1815486e317f42f.zip
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
Notes
Notes: svn path=/head/; revision=204808
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 db1a46ce9035..24650e778aab 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)
{