Commit 6e3dba3f authored by Simon Kelley's avatar Simon Kelley

Ignore template contexts where appropriate.

parent 7558ecd9
...@@ -214,7 +214,8 @@ static int complete_context6(struct in6_addr *local, int prefix, ...@@ -214,7 +214,8 @@ static int complete_context6(struct in6_addr *local, int prefix,
for (context = daemon->dhcp6; context; context = context->next) for (context = daemon->dhcp6; context; context = context->next)
{ {
if (prefix == context->prefix && if (!(context->flags & CONTEXT_TEMPLATE) &&
prefix == context->prefix &&
is_same_net6(local, &context->start6, prefix) && is_same_net6(local, &context->start6, prefix) &&
is_same_net6(local, &context->end6, prefix)) is_same_net6(local, &context->end6, prefix))
{ {
......
...@@ -102,6 +102,7 @@ void ra_start_unsolicted(time_t now, struct dhcp_context *context) ...@@ -102,6 +102,7 @@ void ra_start_unsolicted(time_t now, struct dhcp_context *context)
context->ra_time = now; context->ra_time = now;
else else
for (context = daemon->dhcp6; context; context = context->next) for (context = daemon->dhcp6; context; context = context->next)
if (!(context->flags & CONTEXT_TEMPLATE))
context->ra_time = now + (rand16()/13000); /* range 0 - 5 */ context->ra_time = now + (rand16()/13000); /* range 0 - 5 */
/* re-do frequently for a minute or so, in case the first gets lost. */ /* re-do frequently for a minute or so, in case the first gets lost. */
...@@ -350,7 +351,8 @@ static int add_prefixes(struct in6_addr *local, int prefix, ...@@ -350,7 +351,8 @@ static int add_prefixes(struct in6_addr *local, int prefix,
struct dhcp_context *context; struct dhcp_context *context;
for (context = daemon->dhcp6; context; context = context->next) for (context = daemon->dhcp6; context; context = context->next)
if (prefix == context->prefix && if (!(context->flags & CONTEXT_TEMPLATE) &&
prefix == context->prefix &&
is_same_net6(local, &context->start6, prefix) && is_same_net6(local, &context->start6, prefix) &&
is_same_net6(local, &context->end6, prefix)) is_same_net6(local, &context->end6, prefix))
{ {
...@@ -536,10 +538,12 @@ static int iface_search(struct in6_addr *local, int prefix, ...@@ -536,10 +538,12 @@ static int iface_search(struct in6_addr *local, int prefix,
(void)valid; (void)valid;
for (context = daemon->dhcp6; context; context = context->next) for (context = daemon->dhcp6; context; context = context->next)
if (prefix == context->prefix && if (!(context->flags & CONTEXT_TEMPLATE) &&
prefix == context->prefix &&
is_same_net6(local, &context->start6, prefix) && is_same_net6(local, &context->start6, prefix) &&
is_same_net6(local, &context->end6, prefix)) is_same_net6(local, &context->end6, prefix) &&
if (context->ra_time != 0 && difftime(context->ra_time, param->now) <= 0.0) context->ra_time != 0 &&
difftime(context->ra_time, param->now) <= 0.0)
{ {
/* found an interface that's overdue for RA determine new /* found an interface that's overdue for RA determine new
timeout value and arrange for RA to be sent unless interface is timeout value and arrange for RA to be sent unless interface is
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment