mirror_frr/zebra
Louis Scalbert c6b38684bd zebra: delete kernel routes using an interface with no more IPv4 address
When the last IPv4 address of an interface is deleted, Linux removes
all routes using this interface without any Netlink advertisement.

Routes that have a IPv4 nexthop are correctly removed from the FRR RIB.
However, routes that only have an interface with no more IPv4 addresses
as a nexthop remains in the FRR RIB.

In this situation, among the routes that this particular interface
nexthop:
 - remove from the zebra kernel routes
 - reinstall the routes that have been added from FRR. It is useful when
   the nexthop is for example a VRF interface.

Add related test cases in the zebra_netlink topotest.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2022-12-16 15:07:46 +01:00
..
dpdk build, vtysh: extract vtysh commands from .xref 2022-10-26 17:12:34 +01:00
.gitignore
connected.c zebra: delete kernel routes using an interface with no more IPv4 address 2022-12-16 15:07:46 +01:00
connected.h lib,zebra: use more const 2021-09-14 10:31:45 -04:00
debug_nl.c zebra: add tc netlink and dplane ops 2022-08-11 02:32:43 +08:00
debug.c zebra: fix flags used for debug dpdk 2022-12-13 17:02:29 -05:00
debug.h zebra: fix flags used for debug dpdk 2022-12-13 17:02:29 -05:00
dplane_fpm_nl.c zebra: Read from the dplane_fpm_nl a route update 2022-12-13 15:34:05 -05:00
if_ioctl.c zebra: changes for code maintainability 2022-09-15 14:18:48 +05:30
if_netlink.c zebra: use real MTYPEs for various objects 2022-12-05 10:55:35 -05:00
if_netlink.h zebra: netlink rtm tunnel msg parsing 2022-06-24 07:33:34 -04:00
if_socket.c zebra: Add a mpls enable interface node command 2022-08-08 09:15:22 -04:00
if_sysctl.c zebra: changes for code maintainability 2022-09-15 14:18:48 +05:30
interface.c zebra: use real MTYPEs for various objects 2022-12-05 10:55:35 -05:00
interface.h zebra: use real MTYPEs for various objects 2022-12-05 10:55:35 -05:00
ioctl.c zebra: Attempt to make ioctl.c have a bit more useful log messges 2022-06-15 10:34:30 -04: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
irdp_interface.c zebra: use real MTYPEs for various objects 2022-12-05 10:55:35 -05:00
irdp_main.c zebra: Convert thread_cancel to THREAD_OFF 2022-07-21 08:30:50 -04: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: traffic control state management 2022-11-22 22:35:35 +08:00
kernel_netlink.h zebra: new netlink parse utility for rta 2022-05-16 10:45:14 -07:00
kernel_socket.c zebra: traffic control state management 2022-11-22 22:35:35 +08:00
kernel_socket.h
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: Cleanup memory leaks on shutdown 2022-10-12 07:39:23 -04:00
Makefile
netconf_netlink.c zebra/netconf_netlink.c: fix build without AF_MPLS 2022-11-08 18:48:41 +01:00
netconf_netlink.h zebra: Add a mpls enable interface node command 2022-08-08 09:15:22 -04:00
redistribute.c zebra: Create a zebra_rib_route_entry_new function and use it 2022-08-17 16:04:50 -04:00
redistribute.h zebra: Fix redistribute.h up to our standards 2022-01-18 08:39:40 -05:00
rib.h zebra: Fix handling of recursive routes when processing closely in time 2022-10-26 15:06:23 -04:00
router-id.c lib, zebra, pimd: clean up/fix VRF DECLVAR macros 2022-04-28 11:09:26 +02:00
router-id.h zebra: add IPv6 router-id 2020-07-17 17:39:05 +02:00
rt_netlink.c zebra: Add ctx to netlink message parsing 2022-12-12 10:44:57 -05:00
rt_netlink.h zebra: Add ctx to netlink message parsing 2022-12-12 10:44:57 -05:00
rt_socket.c zebra: Do not complain if deletion fails 2022-03-19 07:44:54 -04:00
rt.h zebra: add tc netlink and dplane ops 2022-08-11 02:32:43 +08:00
rtadv.c build, vtysh: extract vtysh commands from .xref 2022-10-26 17:12:34 +01:00
rtadv.h zebra: clean up rtadv integration 2022-05-21 14:14:01 +02:00
rtread_netlink.c zebra: traffic control state management 2022-11-22 22:35:35 +08:00
rtread_sysctl.c zebra: traffic control state management 2022-11-22 22:35:35 +08:00
rule_netlink.c zebra: Add tracepoint for netlink_rule_change 2022-04-20 09:43:47 -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: traffic control state management 2022-11-22 22:35:35 +08:00
table_manager.c zebra, ospf6d: Do not check if NULL for XCALLOC() 2022-05-08 15:43:21 +03:00
table_manager.h zebra: extend table manager per vrf, add vty configuration 2021-09-21 18:37:30 +02:00
tc_netlink.c zebra: traffic control state management 2022-11-22 22:35:35 +08:00
tc_netlink.h zebra: traffic control state management 2022-11-22 22:35:35 +08:00
tc_socket.c zebra: traffic control state management 2022-11-22 22:35:35 +08:00
testrib.conf
zapi_msg.c zebra: use real MTYPEs for various objects 2022-12-05 10:55:35 -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: Read from the dplane_fpm_nl a route update 2022-12-13 15:34:05 -05:00
zebra_dplane.h zebra: Read from the dplane_fpm_nl a route update 2022-12-13 15:34:05 -05:00
zebra_errors.c zebra: add support for protodown reason code 2022-03-09 17:52:44 -05:00
zebra_errors.h zebra: add support for protodown reason code 2022-03-09 17:52:44 -05:00
zebra_evpn_mac.c zebra: use "get" naming for bgp accept lower knob 2022-11-01 14:09:15 -04:00
zebra_evpn_mac.h bgpd,zebra,lib: bgp evpn vni macip into two tables 2022-10-11 16:18:21 -04:00
zebra_evpn_mh.c zebra: relax if_type check to allow early ES config creation 2022-11-10 12:43:23 -05:00
zebra_evpn_mh.h bgpd,zebra: correct one debug log for evpn-mh 2022-05-12 02:19:51 -04:00
zebra_evpn_neigh.c zebra: use "get" naming for bgp accept lower knob 2022-11-01 14:09:15 -04:00
zebra_evpn_neigh.h bgpd,zebra,lib: bgp evpn vni macip into two tables 2022-10-11 16:18:21 -04:00
zebra_evpn_vxlan.h *: cleanup ifp->vrf_id 2021-11-22 20:47:23 +03:00
zebra_evpn.c zebra: add some neigh del not found debugs 2022-10-11 16:18:21 -04: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 lib, zebra, bgpd: Move route EVPN flag to nexthop 2022-06-10 17:12:48 +08: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 zebra: Remove duplicate updation of msg_type 2022-10-29 23:25:03 +05:30
zebra_gr.c zebra: use real MTYPEs for various objects 2022-12-05 10:55:35 -05:00
zebra_l2.c *: cleanup ifp->vrf_id 2021-11-22 20:47:23 +03:00
zebra_l2.h zebra: clean up rtadv integration 2022-05-21 14:14:01 +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 build, vtysh: extract vtysh commands from .xref 2022-10-26 17:12:34 +01: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_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 *: Properly use memset() when zeroing 2022-05-11 14:08:47 +03:00
zebra_mpls.c zebra: Convert label processing to Meta-Q 2022-08-17 10:44:33 -04:00
zebra_mpls.h zebra: Convert label processing to Meta-Q 2022-08-17 10:44:33 -04:00
zebra_mroute.c zebra, pimd: Add a field family in the message ZEBRA_IPMR_ROUTE_STATS 2022-04-28 01:10:49 -07:00
zebra_mroute.h zebra: Modify base code to get ipv6 stats from kernel 2022-04-28 01:10:49 -07:00
zebra_nb_config.c zebra: remove one unnecessary check for l3vni nb 2022-05-20 03:11:27 -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 *: Avoid casting to the same type as on the left 2022-05-08 16:07:42 +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_neigh.c zebra: free neighbor state before exit to avoid memleaks 2022-07-14 12:20:01 -04:00
zebra_neigh.h zebra: add support for maintaining local neigh entries 2022-06-27 07:56:55 -04:00
zebra_netns_id.c zebra: ret is always -1 or 0 at this point so remove the if test 2022-06-16 16:31:35 -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 zebra: Convert thread_cancel to THREAD_OFF 2022-07-21 08:30:50 -04:00
zebra_netns_notify.h
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: traffic control state management 2022-11-22 22:35:35 +08:00
zebra_nhg.h lib, zebra: Add ability to encode/decode resilient nhg's 2022-11-04 13:29:36 -04:00
zebra_ns.c zebra: Cleanup use after free in shutdown 2022-12-05 08:49:57 -05:00
zebra_ns.h zebra: Make netlink buffer reads resizeable when needed 2022-02-08 17:28:19 -05:00
zebra_opaque.c *: frr_with_mutex change to follow our standard 2022-07-20 15:50:32 -04:00
zebra_opaque.h zebra: add zebra opaque module 2020-06-02 08:20:54 -04:00
zebra_pbr.c zebra: use real MTYPEs for various objects 2022-12-05 10:55:35 -05:00
zebra_pbr.h zebra: use real MTYPEs for various objects 2022-12-05 10:55:35 -05: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
zebra_ptm.c zebra: Convert thread_cancel to THREAD_OFF 2022-07-21 08:30:50 -04:00
zebra_ptm.h *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
zebra_pw.c zebra: Fix crash in shutdown w/ pw thread still running 2022-08-11 16:31:28 -04:00
zebra_pw.h *: use FRR interface name definition everywhere 2022-05-02 13:00:12 -03:00
zebra_rib.c zebra: Read from the dplane_fpm_nl a route update 2022-12-13 15:34:05 -05:00
zebra_rnh.c zebra: json support for show ip nht 2022-11-28 15:38:09 -08:00
zebra_rnh.h zebra: json support for show ip nht 2022-11-28 15:38:09 -08: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 zebra: Free up routemap name memory on vrf deletion event 2022-12-09 09:47:06 -05:00
zebra_routemap.h zebra: Free up routemap name memory on vrf deletion event 2022-12-09 09:47:06 -05:00
zebra_router.c zebra: Add zrouter.asic_notification_nexthop_control 2022-12-12 10:44:57 -05:00
zebra_router.h zebra: Add zrouter.asic_notification_nexthop_control 2022-12-12 10:44:57 -05:00
zebra_script.c zebra: Replace TC definitions for dplane 2022-11-23 17:35:33 +02: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 zebra: Fix use-after-free issue in srte cleanup 2022-11-18 13:19:14 +01:00
zebra_srte.h zebra: upon srte leave, flush sr policies 2022-10-19 08:40:01 +02:00
zebra_srv6_vty.c zebra: Add missing newline in SRv6 config write 2022-12-05 10:22:06 +01:00
zebra_srv6_vty.h zebra: add default SRv6 Function length 2022-10-07 11:34:20 +09:00
zebra_srv6.c zebra: Add helpers to notify locator add/delete 2022-11-08 22:44:23 +01:00
zebra_srv6.h zebra: Add helpers to notify locator add/delete 2022-11-08 22:44:23 +01:00
zebra_tc.c zebra: traffic control state management 2022-11-22 22:35:35 +08:00
zebra_tc.h zebra: traffic control state management 2022-11-22 22:35:35 +08:00
zebra_trace.c zebra: Add initial zebra tracepoint support 2022-04-20 09:39:47 -04:00
zebra_trace.h zebra: Fix tracepoint changes for lttng 2022-11-26 09:30:48 -05:00
zebra_vrf.c zebra: Free up routemap name memory on vrf deletion event 2022-12-09 09:47:06 -05:00
zebra_vrf.h zebra: clean up rtadv integration 2022-05-21 14:14:01 +02:00
zebra_vty.c Merge pull request #12513 from Pdoijode/master 2022-12-15 08:48:35 +02: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: use "get" naming for bgp accept lower knob 2022-11-01 14:09:15 -04:00
zebra_vxlan.h zebra: use "get" naming for bgp accept lower knob 2022-11-01 14:09:15 -04:00
zserv.c zebra: use real MTYPEs for various objects 2022-12-05 10:55:35 -05:00
zserv.h zebra: use real MTYPEs for various objects 2022-12-05 10:55:35 -05:00