Routing tables list iteration should use explicit node struct position

This commit is contained in:
Maria Matejka 2021-03-30 15:09:53 +02:00
parent 7a74ad5a61
commit 4635314cef
2 changed files with 8 additions and 4 deletions

View file

@ -1741,8 +1741,9 @@ void
rt_dump_all(void)
{
rtable *t;
node *n;
WALK_LIST(t, routing_tables)
WALK_LIST2(t, n, routing_tables, n)
rt_dump(t);
}

View file

@ -224,12 +224,15 @@ mrt_next_table_(rtable *tab, rtable *tab_ptr, const char *pattern)
return !tab ? tab_ptr : NULL;
/* Walk routing_tables list, starting after tab (if non-NULL) */
for (tab = !tab ? HEAD(routing_tables) : NODE_NEXT(tab);
NODE_VALID(tab);
tab = NODE_NEXT(tab))
for (node *tn = tab ? tab->n.next : HEAD(routing_tables);
NODE_VALID(tn);
tn = tn->next)
{
tab = SKIP_BACK(struct rtable, n, tn);
if (patmatch(pattern, tab->name) &&
((tab->addr_type == NET_IP4) || (tab->addr_type == NET_IP6)))
return tab;
}
return NULL;
}