diff options
author | Onong Tayeng <otayeng@cisco.com> | 2020-09-04 17:16:23 +0530 |
---|---|---|
committer | Florin Coras <florin.coras@gmail.com> | 2020-09-10 15:06:27 +0000 |
commit | a3960a8b74de5cef51db2c7575f8f2d71a013d0a (patch) | |
tree | d1fe36baa0a9e7ea32d0632cfa5a64950c3a604a /src | |
parent | 5d2091da2a96cb1092b0744cdee8bb481788a6dc (diff) |
lisp: fix crash with arp and packet trace on
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
Diffstat (limited to 'src')
-rw-r--r-- | src/vnet/lisp-cp/control.c | 6 | ||||
-rw-r--r-- | src/vnet/lisp-cp/lisp_types.c | 4 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/vnet/lisp-cp/control.c b/src/vnet/lisp-cp/control.c index 7e9d059f9ed..60d85619dc5 100644 --- a/src/vnet/lisp-cp/control.c +++ b/src/vnet/lisp-cp/control.c @@ -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); } diff --git a/src/vnet/lisp-cp/lisp_types.c b/src/vnet/lisp-cp/lisp_types.c index 971d3071b6a..6ff3b4ebf4b 100644 --- a/src/vnet/lisp-cp/lisp_types.c +++ b/src/vnet/lisp-cp/lisp_types.c @@ -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 }; |