mirror of
http://thekelleys.org.uk/git/dnsmasq.git
synced 2026-10-21 11:39:39 +00:00
Fix prefix-map build code logic.
This commit is contained in:
1 parent
3803437dcc
commit
e25d1a2ea2
1 file changed
+8
-4
+8
-4
@@ -443,10 +443,13 @@ static int add_subnet(struct in6_addr *local, int prefix,
|
||||
is_same_net6(local, &context->end6, prefix))
|
||||
{
|
||||
for (map = *subnets; map; map = map->next)
|
||||
if (map->iface == 0)
|
||||
if (map->iface == 0 ||
|
||||
(map->iface == if_index && is_same_net6(local, &map->subnet, prefix)))
|
||||
break;
|
||||
else if (map->iface == if_index && is_same_net6(local, &map->subnet, prefix))
|
||||
continue;
|
||||
|
||||
/* It's there already */
|
||||
if (map && map->iface != 0)
|
||||
continue;
|
||||
|
||||
if (!map && (map = whine_malloc(sizeof(struct subnet_map))))
|
||||
{
|
||||
@@ -478,9 +481,10 @@ struct subnet_map *build_subnet_map(void)
|
||||
if ((context->flags & CONTEXT_RA_NAME))
|
||||
break;
|
||||
|
||||
/* no ra-names, no need to go further. */
|
||||
if (!context)
|
||||
return NULL;
|
||||
|
||||
|
||||
/* mark unused */
|
||||
for (map = subnets; map; map = map->next)
|
||||
map->iface = 0;
|
||||
|
||||
Reference in new issue
Block a user