diff options
Diffstat (limited to 'package/network/services/dnsmasq/patches/0015-Handle-some-corner-cases-in-RA-contructed-interfaces.patch')
-rw-r--r-- | package/network/services/dnsmasq/patches/0015-Handle-some-corner-cases-in-RA-contructed-interfaces.patch | 64 |
1 files changed, 0 insertions, 64 deletions
diff --git a/package/network/services/dnsmasq/patches/0015-Handle-some-corner-cases-in-RA-contructed-interfaces.patch b/package/network/services/dnsmasq/patches/0015-Handle-some-corner-cases-in-RA-contructed-interfaces.patch deleted file mode 100644 index ce9ce4af5a..0000000000 --- a/package/network/services/dnsmasq/patches/0015-Handle-some-corner-cases-in-RA-contructed-interfaces.patch +++ /dev/null @@ -1,64 +0,0 @@ -From db0f488ea8f5ded7c57400c9108ec3c9367d75c5 Mon Sep 17 00:00:00 2001 -From: Simon Kelley <simon@thekelleys.org.uk> -Date: Thu, 7 Jun 2018 21:37:02 +0100 -Subject: [PATCH 15/17] Handle some corner cases in RA contructed interfaces - with addresses changing interface. - -Thanks to Vladislav Grishenko for work on this. - -Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> ---- - src/dhcp6.c | 16 ++++++++++------ - 1 file changed, 10 insertions(+), 6 deletions(-) - ---- a/src/dhcp6.c -+++ b/src/dhcp6.c -@@ -640,7 +640,7 @@ static int construct_worker(struct in6_a - return 0; - - for (template = daemon->dhcp6; template; template = template->next) -- if (!(template->flags & CONTEXT_TEMPLATE)) -+ if (!(template->flags & (CONTEXT_TEMPLATE | CONTEXT_CONSTRUCTED))) - { - /* non-template entries, just fill in interface and local addresses */ - if (prefix <= template->prefix && -@@ -667,20 +667,23 @@ static int construct_worker(struct in6_a - end6 = *local; - setaddr6part(&end6, addr6part(&template->end6)); - -- /* If there's an absolute address context covering this address -- then don't contruct one as well. */ - for (context = daemon->dhcp6; context; context = context->next) - if (!(context->flags & CONTEXT_TEMPLATE) && - IN6_ARE_ADDR_EQUAL(&start6, &context->start6) && - IN6_ARE_ADDR_EQUAL(&end6, &context->end6)) - { -- if (context->flags & CONTEXT_CONSTRUCTED) -+ /* If there's an absolute address context covering this address -+ then don't construct one as well. */ -+ if (!(context->flags & CONTEXT_CONSTRUCTED)) -+ break; -+ -+ if (context->if_index == if_index) - { - int cflags = context->flags; - context->flags &= ~(CONTEXT_GC | CONTEXT_OLD); - if (cflags & CONTEXT_OLD) - { -- /* address went, now it's back */ -+ /* address went, now it's back, and on the same interface */ - log_context(AF_INET6, context); - /* fast RAs for a while */ - ra_start_unsolicited(param->now, context); -@@ -688,9 +691,10 @@ static int construct_worker(struct in6_a - /* Add address to name again */ - if (context->flags & CONTEXT_RA_NAME) - param->newname = 1; -+ -+ break; - } - } -- break; - } - - if (!context && (context = whine_malloc(sizeof (struct dhcp_context)))) |