Fix prefix-map build code logic.
diff --git a/src/radv.c b/src/radv.c
index 5cade0f..c8e2f01 100644
--- a/src/radv.c
+++ b/src/radv.c
@@ -443,10 +443,13 @@
 	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 @@
     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;