Free radix mask entries on main radix destroy.
This is temporary commit to be merged to 10. Other approach (like hash table) should be used to store different masks. PR: 194078 Submitted by: Rumen Telbizov MFC after: 3 days
This commit is contained in:
parent
852a0932c1
commit
8b1af054e8
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=272385
@ -1178,6 +1178,18 @@ rn_inithead(void **head, int off)
|
||||
return (1);
|
||||
}
|
||||
|
||||
static int
|
||||
rn_freeentry(struct radix_node *rn, void *arg)
|
||||
{
|
||||
struct radix_node_head * const rnh = arg;
|
||||
struct radix_node *x;
|
||||
|
||||
x = (struct radix_node *)rn_delete(rn + 2, NULL, rnh);
|
||||
if (x != NULL)
|
||||
Free(x);
|
||||
return (0);
|
||||
}
|
||||
|
||||
int
|
||||
rn_detachhead(void **head)
|
||||
{
|
||||
@ -1188,6 +1200,7 @@ rn_detachhead(void **head)
|
||||
|
||||
rnh = *head;
|
||||
|
||||
rn_walktree(rnh->rnh_masks, rn_freeentry, rnh->rnh_masks);
|
||||
rn_detachhead_internal((void **)&rnh->rnh_masks);
|
||||
rn_detachhead_internal(head);
|
||||
return (1);
|
||||
|
Loading…
Reference in New Issue
Block a user