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),
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to