svn commit: r204808 - head/sys/net

Bjoern A. Zeeb bz at FreeBSD.org
Sat Mar 6 21:27:26 UTC 2010


Author: bz
Date: Sat Mar  6 21:27:26 2010
New Revision: 204808
URL: http://svn.freebsd.org/changeset/base/204808

Log:
  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

Modified:
  head/sys/net/radix.c
  head/sys/net/radix.h

Modified: head/sys/net/radix.c
==============================================================================
--- head/sys/net/radix.c	Sat Mar  6 21:24:32 2010	(r204807)
+++ head/sys/net/radix.c	Sat Mar  6 21:27:26 2010	(r204808)
@@ -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)
 {

Modified: head/sys/net/radix.h
==============================================================================
--- head/sys/net/radix.h	Sat Mar  6 21:24:32 2010	(r204807)
+++ head/sys/net/radix.h	Sat Mar  6 21:27:26 2010	(r204808)
@@ -162,6 +162,9 @@ struct radix_node_head {
 
 void	 rn_init(int);
 int	 rn_inithead(void **, int);
+#ifdef VIMAGE
+int	 rn_detachhead(void **);
+#endif
 int	 rn_refines(void *, void *);
 struct radix_node
 	 *rn_addmask(void *, int, int),


More information about the svn-src-head mailing list