diff options
author | gjb <gjb@FreeBSD.org> | 2016-02-15 21:58:52 +0000 |
---|---|---|
committer | gjb <gjb@FreeBSD.org> | 2016-02-15 21:58:52 +0000 |
commit | 64f34d0d7173b140b57c4ae2501a2f2c88a1ff4d (patch) | |
tree | a25465f4b4e80a989a48831c78025037d9013781 /sys/net/route.c | |
parent | e4997c6184529300b3b432e327408ba7c6a89645 (diff) | |
parent | 197e3760ab195e2d3b05357e36b2f8857258d71a (diff) | |
download | FreeBSD-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.c | 14 |
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); |