mirror_frr/zebra
Chirag Shah d5fdae8f45 zebra: fix crash in evpn neigh cleanup all
zebra crash is seen during shutdown (frr restart).

During shutdown, remote neigh and remote mac clean up
is triggered first, followed by per vni all neigh
(including local) and macs cleanup is triggered.

The crash occurs when a remote mac is cleaned up first
and its reference is remained in local neigh.
When local neigh attempt removes itself from its associated
mac's neigh_list it triggers inaccessible memory crash.

The fix is during mac deletion if its neigh_list is non-empty
then retain the MAC in AUTO state.
This can arise when MAC and neigh duo are in different state
(remote/local). Otherwise, the order of cleanup operation
is neighs followed by macs.

The auto mac will be cleaned up when per vni all neighs and macs
are cleaned up.

Ticket:CM-29826
Reviewed By:CCR-10369
Testing Done:

Configure evpn symmetric config where
MAC is in remote state and neigh is in local state.
Perform frr restart then crash is not seen.

Signed-off-by: Chirag Shah <chirag@nvidia.com>
2022-03-03 14:59:56 -08:00
..
.gitignore *: cleanup .gitignore files 2018-09-08 21:30:42 +02:00
connected.c zebra: Fix ships in the night issue 2022-02-07 16:10:03 -05:00
connected.h lib,zebra: use more const 2021-09-14 10:31:45 -04:00
debug_nl.c zebra: add netlink debug dump for netconf messages 2022-02-25 09:53:02 -05:00
debug.c zebra: debug zebra kernel msgdump is linux specific 2021-08-06 10:04:40 -04:00
debug.h zebra: add 'detail' mpls debug setting 2021-04-05 15:53:48 -04:00
dplane_fpm_nl.c zebra: add dplane type for NETCONF data 2022-02-25 09:53:02 -05:00
if_ioctl.c *: cleanup ifp->vrf_id 2021-11-22 20:47:23 +03:00
if_netlink.c zebra: use dataplane to read interface NETCONF info 2022-02-25 10:18:32 -05:00
if_netlink.h zebra: intf address handler is platform-neutral 2021-09-14 11:07:30 -04:00
if_sysctl.c zebra: kill zebra_memory.h, use MTYPE_STATIC 2021-03-22 20:02:17 +01:00
interface.c zebra: Limit speed lookup to at most 4 minutes 2022-02-28 06:39:07 -05:00
interface.h zebra: Limit speed lookup to at most 4 minutes 2022-02-28 06:39:07 -05:00
ioctl.c zebra: Keep the interface flags safe on multiple ioctl calls 2022-02-09 10:07:47 -05:00
ioctl.h *: Remove solaris from FRR 2020-09-21 10:02:20 -04:00
ipforward_proc.c zebra: Cleanup set but unused variables 2020-02-27 09:41:58 -05:00
ipforward_sysctl.c *: Remove solaris from FRR 2020-09-21 10:02:20 -04:00
ipforward.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
irdp_interface.c zebra: kill zebra_memory.h, use MTYPE_STATIC 2021-03-22 20:02:17 +01:00
irdp_main.c *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
irdp_packet.c *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
irdp.h *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
kernel_netlink.c zebra: Allow *BSD to specify a receive buffer size 2022-02-27 07:47:58 -05:00
kernel_netlink.h zebra: Make netlink buffer reads resizeable when needed 2022-02-08 17:28:19 -05:00
kernel_socket.c Merge pull request #10672 from donaldsharp/bsd_zebra_graceful_restart_cleanup 2022-02-28 14:57:35 -06:00
kernel_socket.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
label_manager.c Merge pull request #7756 from pjdruddy/bgplu-fixes 2021-01-09 15:48:22 -05:00
label_manager.h zebra: expose label-manager util-funcs 2021-01-05 18:19:44 +00:00
main.c zebra: Allow *BSD to specify a receive buffer size 2022-02-27 07:47:58 -05:00
Makefile build: convert zebra/ to non-recursive build 2017-07-31 23:03:30 +02:00
netconf_netlink.c zebra: use dataplane to read interface NETCONF info 2022-02-25 10:18:32 -05:00
netconf_netlink.h zebra: use dataplane to read interface NETCONF info 2022-02-25 10:18:32 -05:00
redistribute.c zebra: Fix ships in the night issue 2022-02-07 16:10:03 -05:00
redistribute.h zebra: Fix redistribute.h up to our standards 2022-01-18 08:39:40 -05:00
rib.h *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
router-id.c *: cleanup ifp->vrf_id 2021-11-22 20:47:23 +03:00
router-id.h zebra: add IPv6 router-id 2020-07-17 17:39:05 +02:00
rt_netlink.c zebra: Remove struct nlsock from dataplane information and use int fd 2022-02-08 17:28:19 -05:00
rt_netlink.h zebra: add netlink debugs for ip rules 2022-02-10 21:36:34 +00:00
rt_socket.c zebra: new dplane action to set gre link interface 2021-04-30 10:33:18 +02:00
rt.h zebra: make netlink object hash threadsafe 2022-02-11 17:03:26 -05:00
rtadv.c *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
rtadv.h zebra: Add knowledge about RA and RFC 5549 to show zebra 2022-02-04 10:29:38 -05:00
rtread_netlink.c zebra: use more const 2021-07-19 10:36:12 -04:00
rtread_sysctl.c zebra: use more const 2021-07-19 10:36:12 -04:00
rule_netlink.c zebra: Use a bool for startup indications 2021-10-04 20:26:38 -04:00
rule_netlink.h zebra: netlink message batching 2020-08-10 21:42:43 +02:00
rule_socket.c zebra: convert ip rule installation to use dplane thread 2020-06-10 16:18:45 +02:00
sample_plugin.c *: require semicolon after FRR_DAEMON_INFO & co. 2021-03-17 06:18:39 +01:00
subdir.am zebra: Start of work to get data about mpls from kernel 2022-02-25 09:53:02 -05:00
table_manager.c zebra: fix memleak on shutdown 2021-11-16 12:42:32 +03:00
table_manager.h zebra: extend table manager per vrf, add vty configuration 2021-09-21 18:37:30 +02:00
testrib.conf zebra: Build the test client, can be useful, and add IPv6 to testrib.conf 2016-05-26 01:13:58 +00:00
zapi_msg.c zebra: Fix ships in the night issue 2022-02-07 16:10:03 -05:00
zapi_msg.h zebra: name the route_entry opaque struct more specifically 2022-01-31 08:50:50 -05:00
zebra_dplane.c zebra: use dataplane to read interface NETCONF info 2022-02-25 10:18:32 -05:00
zebra_dplane.h zebra: add dplane type for NETCONF data 2022-02-25 09:53:02 -05:00
zebra_errors.c zebra: ZAPI add new api to manipulate srv6-locator (step2) 2021-06-02 10:24:47 -04:00
zebra_errors.h zebra: ZAPI add new api to manipulate srv6-locator (step2) 2021-06-02 10:24:47 -04:00
zebra_evpn_mac.c zebra: fix crash in evpn neigh cleanup all 2022-03-03 14:59:56 -08:00
zebra_evpn_mac.h zebra: Convert to struct zebra_mac as per our internal standard 2021-09-02 10:33:22 -04:00
zebra_evpn_mh.c *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
zebra_evpn_mh.h zebra: defer local MAC dataplane install on an ES till the ES-EVI is created 2021-10-15 10:43:41 -07:00
zebra_evpn_neigh.c *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
zebra_evpn_neigh.h zebra: Convert to struct zebra_neigh as per our internal standard 2021-09-02 10:33:23 -04:00
zebra_evpn_vxlan.h *: cleanup ifp->vrf_id 2021-11-22 20:47:23 +03:00
zebra_evpn.c *: cleanup ifp->vrf_id 2021-11-22 20:47:23 +03:00
zebra_evpn.h zebra: Convert to struct zebra_vtep as per our internal standard 2021-09-02 10:33:22 -04:00
zebra_fpm_dt.c zebra: replace inet_ntoa 2020-10-22 13:37:25 -04:00
zebra_fpm_netlink.c zebra: FPM next hop weights 2022-02-10 19:16:33 +03:00
zebra_fpm_private.h zebra: Fix IPv4 routes with IPv6 link local next hops install in FPM 2021-09-13 08:39:43 -07:00
zebra_fpm_protobuf.c *: Do not cast to the same type 2020-04-08 17:15:06 +03:00
zebra_fpm.c *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
zebra_gr.c *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
zebra_l2.c *: cleanup ifp->vrf_id 2021-11-22 20:47:23 +03:00
zebra_l2.h zebra: refresh vxlan evpn contexts, when bridge interface goes up 2021-09-17 10:25:38 +02:00
zebra_mlag_private.c *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
zebra_mlag_vty.c zebra: Do not build mlag protobuf support if version 3 is not avail 2019-12-15 09:37:51 -05:00
zebra_mlag_vty.h lib, zebra: add missing extern "C" {} blocks to new header files 2020-04-22 23:49:22 -03:00
zebra_mlag.c *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
zebra_mlag.h *: require semicolon after DEFINE_HOOK & co. 2021-03-17 06:18:17 +01:00
zebra_mpls_netlink.c zebra: dplane FPM handle LSP install/update/delete 2020-11-27 16:32:01 +00:00
zebra_mpls_null.c zebra: convert PW updates to async dataplane 2019-01-25 10:45:57 -05:00
zebra_mpls_openbsd.c zebra: Convert to struct zebra_nhlfe as per our internal standard 2021-09-02 10:33:23 -04:00
zebra_mpls_vty.c zebra: fix wrong check of mpls command 2021-08-18 19:34:03 -04:00
zebra_mpls.c zebra: Convert vty_out to vty_json for JSON 2021-11-25 17:49:46 +02:00
zebra_mpls.h zebra: Convert to struct zebra_fec as per our internal standard 2021-09-02 10:33:23 -04:00
zebra_mroute.c pimd, zebra: explicit cast int netlink val to uint 2021-04-28 11:43:50 -04:00
zebra_mroute.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
zebra_nb_config.c zebra: Convert to struct zebra_l3nvi as per our internal standard 2021-09-02 10:33:22 -04:00
zebra_nb_rpcs.c zebra: display rpc error msg to vtysh 2020-10-05 13:57:54 -07:00
zebra_nb_state.c zebra: make ribs config false 2021-03-16 17:25:49 +03:00
zebra_nb.c zebra: North-bound implementation for zebra rmaps 2021-03-30 22:58:42 +03:00
zebra_nb.h zebra: North-bound implementation for zebra rmaps 2021-03-30 22:58:42 +03:00
zebra_netns_id.c Merge pull request #7148 from pguibert6WIND/fix_fd_not_closed 2020-09-23 07:40:14 -04:00
zebra_netns_id.h zebra: dynamically detect vxlan link interfaces in other netns 2020-09-11 18:26:23 +02:00
zebra_netns_notify.c *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
zebra_netns_notify.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
zebra_nhg_private.h lib, zebra: add missing extern "C" {} blocks to new header files 2020-04-22 23:49:22 -03:00
zebra_nhg.c zebra: Use the routes vrf not the vrf of the nexthop for route-map application 2022-02-28 13:08:01 -05:00
zebra_nhg.h Merge pull request #8488 from mjstapp/more_workqueue 2021-04-27 11:59:33 -04:00
zebra_ns.c *: rework renaming the default VRF 2021-12-21 22:09:29 +03:00
zebra_ns.h zebra: Make netlink buffer reads resizeable when needed 2022-02-08 17:28:19 -05:00
zebra_opaque.c *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
zebra_opaque.h zebra: add zebra opaque module 2020-06-02 08:20:54 -04:00
zebra_pbr.c zebra: return void for dplane_ctx_get_pbr_ipset_entry 2021-11-17 07:46:36 -05:00
zebra_pbr.h zebra: update dataplane flowspec address family in ipset_info 2021-11-03 17:17:08 +01:00
zebra_ptm_redistribute.c zebra: kill zebra_memory.h, use MTYPE_STATIC 2021-03-22 20:02:17 +01:00
zebra_ptm_redistribute.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
zebra_ptm.c *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
zebra_ptm.h *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
zebra_pw.c *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
zebra_pw.h *: require semicolon after DEFINE_QOBJ & co. 2021-03-17 06:18:37 +01:00
zebra_rib.c zebra: Prevent crash if ZEBRA_ROUTE_ALL is used for a route type 2022-02-28 09:50:35 -05:00
zebra_rnh.c zebra: Nexthop tracking, route resolution recursive lookup 2022-02-22 09:28:00 -08:00
zebra_rnh.h zebra: Start carrying safi for rnh processing 2021-09-27 12:38:08 -04:00
zebra_routemap_nb_config.c zebra: remove checks for src address existence when using "set src" 2021-08-02 18:35:30 +03:00
zebra_routemap_nb.c *: make sure config.h or zebra.h is first 2021-04-23 12:06:35 +02:00
zebra_routemap_nb.h zebra: North-bound implementation for zebra rmaps 2021-03-30 22:58:42 +03:00
zebra_routemap.c *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
zebra_routemap.h zebra: North-bound implementation for zebra rmaps 2021-03-30 22:58:42 +03:00
zebra_router.c zebra: make netlink object hash threadsafe 2022-02-11 17:03:26 -05:00
zebra_router.h zebra: Allow *BSD to specify a receive buffer size 2022-02-27 07:47:58 -05:00
zebra_script.c zebra: add dplane type for NETCONF data 2022-02-25 09:53:02 -05:00
zebra_script.h zebra: Add encoders/decoders for zebra 2021-10-20 00:56:00 +08:00
zebra_snmp.c build: make builddir include path consistent 2021-04-21 15:42:33 +02:00
zebra_srte.c lib, zebra: Send safi for rnh resolution 2021-09-27 15:26:05 -04:00
zebra_srte.h zebra: Convert to struct zebra_lsp as per our internal standard 2021-09-02 10:33:23 -04:00
zebra_srv6_vty.c Merge pull request #9899 from Drumato/zebra-srv6-locator-detail-json-support 2021-12-14 09:11:36 +02:00
zebra_srv6_vty.h *: new cli-nodes for SRv6 manager (step2) 2021-06-02 10:24:47 -04:00
zebra_srv6.c zebra: elliminate srv6 locator auto allocation by zlicnet request 2021-09-07 12:54:39 +00:00
zebra_srv6.h *: fix code format accourding to checkpatch 2021-06-02 10:24:48 -04:00
zebra_vrf.c zebra: fix cleanup of meta queues on vrf disable 2022-02-01 18:20:30 +03:00
zebra_vrf.h lib: move zebra-only netns stuff to zebra 2021-10-19 00:16:10 +03:00
zebra_vty.c *: Add necessary new line for output of vty_out() 2022-02-27 10:59:19 +08:00
zebra_vxlan_private.h zebra: Convert to struct zebra_l3nvi as per our internal standard 2021-09-02 10:33:22 -04:00
zebra_vxlan.c zebra: correct one spell error 2021-12-19 20:47:01 -05:00
zebra_vxlan.h zebra: handle bridge mac address update in evpn contexts 2021-09-17 10:25:35 +02:00
zserv.c *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
zserv.h *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00