summaryrefslogtreecommitdiffstats
path: root/sys/net/route.c
diff options
context:
space:
mode:
authorgjb <gjb@FreeBSD.org>2016-02-15 21:58:52 +0000
committergjb <gjb@FreeBSD.org>2016-02-15 21:58:52 +0000
commit64f34d0d7173b140b57c4ae2501a2f2c88a1ff4d (patch)
treea25465f4b4e80a989a48831c78025037d9013781 /sys/net/route.c
parente4997c6184529300b3b432e327408ba7c6a89645 (diff)
parent197e3760ab195e2d3b05357e36b2f8857258d71a (diff)
downloadFreeBSD-src-64f34d0d7173b140b57c4ae2501a2f2c88a1ff4d.zip
FreeBSD-src-64f34d0d7173b140b57c4ae2501a2f2c88a1ff4d.tar.gz
MFH
Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'sys/net/route.c')
-rw-r--r--sys/net/route.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/sys/net/route.c b/sys/net/route.c
index 8ad0e24..45f479c 100644
--- a/sys/net/route.c
+++ b/sys/net/route.c
@@ -353,10 +353,24 @@ rt_table_init(int offset)
return (rh);
}
+static int
+rt_freeentry(struct radix_node *rn, void *arg)
+{
+ struct radix_head * const rnh = arg;
+ struct radix_node *x;
+
+ x = (struct radix_node *)rn_delete(rn + 2, NULL, rnh);
+ if (x != NULL)
+ R_Free(x);
+ return (0);
+}
+
void
rt_table_destroy(struct rib_head *rh)
{
+ rn_walktree(&rh->rmhead.head, rt_freeentry, &rh->rmhead.head);
+
/* Assume table is already empty */
rw_destroy(&rh->rib_lock);
free(rh, M_RTABLE);
OpenPOWER on IntegriCloud