LISP: minor enhacements

* use RLOC for IP version detection
* don't check whether RLOC is local when deleting

Change-Id: Icdb84025dd5511eb5348b654bf7b373def15406c
Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
diff --git a/src/vnet/lisp-cp/control.c b/src/vnet/lisp-cp/control.c
index f0383e1..66b560e 100644
--- a/src/vnet/lisp-cp/control.c
+++ b/src/vnet/lisp-cp/control.c
@@ -1038,18 +1038,6 @@
       return VNET_API_ERROR_LISP_DISABLED;
     }
 
-  /* check if none of the locators match localy configured address */
-  vec_foreach (loc, rlocs)
-  {
-    ip_prefix_t *p = &gid_address_ippref (&loc->address);
-    if (is_local_ip (lcm, &ip_prefix_addr (p)))
-      {
-	clib_warning ("RLOC %U matches a local address!",
-		      format_gid_address, &loc->address);
-	return VNET_API_ERROR_LISP_RLOC_LOCAL;
-      }
-  }
-
   if (res_map_index)
     res_map_index[0] = ~0;
 
@@ -1063,6 +1051,18 @@
 
   if (is_add)
     {
+      /* check if none of the locators match localy configured address */
+      vec_foreach (loc, rlocs)
+      {
+	ip_prefix_t *p = &gid_address_ippref (&loc->address);
+	if (is_local_ip (lcm, &ip_prefix_addr (p)))
+	  {
+	    clib_warning ("RLOC %U matches a local address!",
+			  format_gid_address, &loc->address);
+	    return VNET_API_ERROR_LISP_RLOC_LOCAL;
+	  }
+      }
+
       /* overwrite: if mapping already exists, decide if locators should be
        * updated and be done */
       if (old_map && gid_address_cmp (&old_map->eid, eid) == 0)
@@ -2313,7 +2313,7 @@
 
   vnet_buffer (b)->sw_if_index[VLIB_TX] = 0;
 
-  next_index = (ip_addr_version (&lcm->active_map_resolver) == IP4) ?
+  next_index = (ip_addr_version (rloc) == IP4) ?
     ip4_lookup_node.index : ip6_lookup_node.index;
 
   f = vlib_get_frame_to_node (lcm->vlib_main, next_index);