lisp: fix crash with arp and packet trace on 56/28856/2
authorOnong Tayeng <otayeng@cisco.com>
Fri, 4 Sep 2020 11:46:23 +0000 (17:16 +0530)
committerAndrew Yourtchenko <ayourtch@gmail.com>
Wed, 16 Sep 2020 10:14:22 +0000 (10:14 +0000)
With packet trace on, VPP crashes when an arp packet arrives. This patch
fixes the crash and also ensures that the packet trace displays the eid
info.

Type: fix
Signed-off-by: Onong Tayeng <otayeng@cisco.com>
Change-Id: Iaad09a5e2b33e931ab9bd7bc3d4573b5ed5e4bfd
(cherry picked from commit a3960a8b74de5cef51db2c7575f8f2d71a013d0a)

src/vnet/lisp-cp/control.c
src/vnet/lisp-cp/lisp_types.c

index 7e9d059..60d8561 100644 (file)
@@ -3552,7 +3552,11 @@ lisp_cp_lookup_inline (vlib_main_t * vm,
                                                           sizeof (*tr));
 
              clib_memset (tr, 0, sizeof (*tr));
-             gid_address_copy (&tr->dst_eid, &dst);
+             if ((gid_address_type (&dst) == GID_ADDR_NDP) ||
+                 (gid_address_type (&dst) == GID_ADDR_ARP))
+               clib_memcpy (&tr->dst_eid, &dst, sizeof (gid_address_t));
+             else
+               gid_address_copy (&tr->dst_eid, &dst);
              ip_address_copy (&tr->map_resolver_ip,
                               &lcm->active_map_resolver);
            }
index 971d307..6ff3b4e 100644 (file)
@@ -41,7 +41,7 @@ serdes_fct write_fcts[GID_ADDR_TYPES] =
 };
 
 cast_fct cast_fcts[GID_ADDR_TYPES] =
-  { ip_prefix_cast, lcaf_cast, mac_cast, sd_cast, nsh_cast, 0 /* arp */ ,
+  { ip_prefix_cast, lcaf_cast, mac_cast, sd_cast, nsh_cast, no_addr_cast,
   no_addr_cast
 };
 
@@ -51,7 +51,7 @@ addr_len_fct addr_len_fcts[GID_ADDR_TYPES] =
 };
 
 copy_fct copy_fcts[GID_ADDR_TYPES] =
-  { ip_prefix_copy, lcaf_copy, mac_copy, sd_copy, nsh_copy, 0 /* arp */ ,
+  { ip_prefix_copy, lcaf_copy, mac_copy, sd_copy, nsh_copy, no_addr_copy,
   no_addr_copy
 };