Suppress re-entrant calls to dhcp_construct_contexts()
diff --git a/src/dhcp6.c b/src/dhcp6.c
index bc48fdd..0e470cf 100644
--- a/src/dhcp6.c
+++ b/src/dhcp6.c
@@ -708,12 +708,20 @@
 
 void dhcp_construct_contexts(time_t now)
 { 
+  static int active = 0;
   struct dhcp_context *context, *tmp, **up;
   struct cparam param;
   param.newone = 0;
   param.newname = 0;
   param.now = now;
 
+  /* Various calls that we make may end up calling iface_enumerate(), which can then 
+     call us again, We're NOT re-entrant, so ignore a second invokation. */
+  if (active)
+    return;
+
+  active = 1;
+
   for (context = daemon->dhcp6; context; context = context->next)
     if (context->flags & CONTEXT_CONSTRUCTED)
       context->flags |= CONTEXT_GC;
@@ -771,6 +779,8 @@
 	/* Not doing DHCP, so no lease system, manage alarms for ra only */
 	send_alarm(periodic_ra(now), now);
     }
+
+  active = 0;
 }
 
 #endif