mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-05 18:42:23 +00:00
![]() Currently kernel routes on system bring up would be `auto-accepted`, then if an interface went down all kernel and system routes would be re-evaluated. There exists situations where a kernel route can exist but the interface itself is not exactly in a state that is ready to create a connected route yet. As such when any interface goes down in the system all kernel/system routes would be re-evaluated and then since that interfaces connected route is not in the table yet the route is matching against a default route( or not at all ) and is being dropped. Modify the code such that kernel or system routes just look for interface being in a good state (up or operative) and accept it. Broken code: eva# show ip route Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP, T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP, F - PBR, f - OpenFabric, > - selected route, * - FIB route, q - queued, r - rejected, b - backup t - trapped, o - offload failure K>* 0.0.0.0/0 [0/100] via 192.168.119.1, enp39s0, 00:05:08 K>* 1.2.3.5/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:05:08 K>* 1.2.3.6/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:05:08 K>* 1.2.3.7/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:05:08 K>* 1.2.3.8/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:05:08 K>* 1.2.3.9/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:05:08 K>* 1.2.3.10/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:05:08 K>* 1.2.3.11/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:05:08 K>* 1.2.3.12/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:05:08 K>* 1.2.3.13/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:05:08 K>* 1.2.3.14/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:05:08 K>* 1.2.3.16/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:05:08 K>* 1.2.3.17/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:05:08 C>* 4.5.6.99/32 is directly connected, dummy9, 00:05:08 K>* 4.9.10.11/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:05:08 K>* 10.11.12.13/32 [0/0] via 192.168.119.1, enp39s0, 00:05:08 C>* 192.168.10.0/24 is directly connected, dummy99, 00:05:08 C>* 192.168.119.0/24 is directly connected, enp39s0, 00:05:08 <shutdown a non-related interface> eva# show ip route Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP, T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP, F - PBR, f - OpenFabric, > - selected route, * - FIB route, q - queued, r - rejected, b - backup t - trapped, o - offload failure K>* 0.0.0.0/0 [0/100] via 192.168.119.1, enp39s0, 00:05:28 C>* 4.5.6.99/32 is directly connected, dummy9, 00:05:28 K>* 10.11.12.13/32 [0/0] via 192.168.119.1, enp39s0, 00:05:28 C>* 192.168.10.0/24 is directly connected, dummy99, 00:05:28 C>* 192.168.119.0/24 is directly connected, enp39s0, 00:05:28 Working code: eva# show ip route Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP, T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP, F - PBR, f - OpenFabric, > - selected route, * - FIB route, q - queued, r - rejected, b - backup t - trapped, o - offload failure K>* 0.0.0.0/0 [0/100] via 192.168.119.1, enp39s0, 00:00:04 K>* 1.2.3.5/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:04 K>* 1.2.3.6/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:04 K>* 1.2.3.7/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:04 K>* 1.2.3.8/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:04 K>* 1.2.3.9/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:04 K>* 1.2.3.10/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:04 K>* 1.2.3.11/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:04 K>* 1.2.3.12/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:04 K>* 1.2.3.13/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:04 K>* 1.2.3.14/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:04 K>* 1.2.3.16/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:04 K>* 1.2.3.17/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:04 C>* 4.5.6.99/32 is directly connected, dummy9, 00:00:04 K>* 4.9.10.11/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:04 K>* 10.11.12.13/32 [0/0] via 192.168.119.1, enp39s0, 00:00:04 C>* 192.168.10.0/24 is directly connected, dummy99, 00:00:04 C>* 192.168.119.0/24 is directly connected, enp39s0, 00:00:04 <shutdown a non-related interface> eva# show ip route Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP, T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP, F - PBR, f - OpenFabric, > - selected route, * - FIB route, q - queued, r - rejected, b - backup t - trapped, o - offload failure K>* 0.0.0.0/0 [0/100] via 192.168.119.1, enp39s0, 00:00:15 K>* 1.2.3.5/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:15 K>* 1.2.3.6/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:15 K>* 1.2.3.7/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:15 K>* 1.2.3.8/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:15 K>* 1.2.3.9/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:15 K>* 1.2.3.10/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:15 K>* 1.2.3.11/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:15 K>* 1.2.3.12/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:15 K>* 1.2.3.13/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:15 K>* 1.2.3.14/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:15 K>* 1.2.3.16/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:15 K>* 1.2.3.17/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:15 C>* 4.5.6.99/32 is directly connected, dummy9, 00:00:15 K>* 4.9.10.11/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:15 K>* 10.11.12.13/32 [0/0] via 192.168.119.1, enp39s0, 00:00:15 C>* 192.168.10.0/24 is directly connected, dummy99, 00:00:15 C>* 192.168.119.0/24 is directly connected, enp39s0, 00:00:15 eva# Signed-off-by: Donald Sharp <sharpd@nvidia.com> |
||
---|---|---|
.. | ||
.gitignore | ||
connected.c | ||
connected.h | ||
debug_nl.c | ||
debug.c | ||
debug.h | ||
dplane_fpm_nl.c | ||
if_ioctl.c | ||
if_netlink.c | ||
if_netlink.h | ||
if_socket.c | ||
if_sysctl.c | ||
interface.c | ||
interface.h | ||
ioctl.c | ||
ioctl.h | ||
ipforward_proc.c | ||
ipforward_sysctl.c | ||
ipforward.h | ||
irdp_interface.c | ||
irdp_main.c | ||
irdp_packet.c | ||
irdp.h | ||
kernel_netlink.c | ||
kernel_netlink.h | ||
kernel_socket.c | ||
kernel_socket.h | ||
label_manager.c | ||
label_manager.h | ||
main.c | ||
Makefile | ||
netconf_netlink.c | ||
netconf_netlink.h | ||
redistribute.c | ||
redistribute.h | ||
rib.h | ||
router-id.c | ||
router-id.h | ||
rt_netlink.c | ||
rt_netlink.h | ||
rt_socket.c | ||
rt.h | ||
rtadv.c | ||
rtadv.h | ||
rtread_netlink.c | ||
rtread_sysctl.c | ||
rule_netlink.c | ||
rule_netlink.h | ||
rule_socket.c | ||
sample_plugin.c | ||
subdir.am | ||
table_manager.c | ||
table_manager.h | ||
testrib.conf | ||
zapi_msg.c | ||
zapi_msg.h | ||
zebra_dplane.c | ||
zebra_dplane.h | ||
zebra_errors.c | ||
zebra_errors.h | ||
zebra_evpn_mac.c | ||
zebra_evpn_mac.h | ||
zebra_evpn_mh.c | ||
zebra_evpn_mh.h | ||
zebra_evpn_neigh.c | ||
zebra_evpn_neigh.h | ||
zebra_evpn_vxlan.h | ||
zebra_evpn.c | ||
zebra_evpn.h | ||
zebra_fpm_dt.c | ||
zebra_fpm_netlink.c | ||
zebra_fpm_private.h | ||
zebra_fpm_protobuf.c | ||
zebra_fpm.c | ||
zebra_gr.c | ||
zebra_l2.c | ||
zebra_l2.h | ||
zebra_mlag_private.c | ||
zebra_mlag_vty.c | ||
zebra_mlag_vty.h | ||
zebra_mlag.c | ||
zebra_mlag.h | ||
zebra_mpls_netlink.c | ||
zebra_mpls_null.c | ||
zebra_mpls_openbsd.c | ||
zebra_mpls_vty.c | ||
zebra_mpls.c | ||
zebra_mpls.h | ||
zebra_mroute.c | ||
zebra_mroute.h | ||
zebra_nb_config.c | ||
zebra_nb_rpcs.c | ||
zebra_nb_state.c | ||
zebra_nb.c | ||
zebra_nb.h | ||
zebra_netns_id.c | ||
zebra_netns_id.h | ||
zebra_netns_notify.c | ||
zebra_netns_notify.h | ||
zebra_nhg_private.h | ||
zebra_nhg.c | ||
zebra_nhg.h | ||
zebra_ns.c | ||
zebra_ns.h | ||
zebra_opaque.c | ||
zebra_opaque.h | ||
zebra_pbr.c | ||
zebra_pbr.h | ||
zebra_ptm_redistribute.c | ||
zebra_ptm_redistribute.h | ||
zebra_ptm.c | ||
zebra_ptm.h | ||
zebra_pw.c | ||
zebra_pw.h | ||
zebra_rib.c | ||
zebra_rnh.c | ||
zebra_rnh.h | ||
zebra_routemap_nb_config.c | ||
zebra_routemap_nb.c | ||
zebra_routemap_nb.h | ||
zebra_routemap.c | ||
zebra_routemap.h | ||
zebra_router.c | ||
zebra_router.h | ||
zebra_script.c | ||
zebra_script.h | ||
zebra_snmp.c | ||
zebra_srte.c | ||
zebra_srte.h | ||
zebra_srv6_vty.c | ||
zebra_srv6_vty.h | ||
zebra_srv6.c | ||
zebra_srv6.h | ||
zebra_trace.c | ||
zebra_trace.h | ||
zebra_vrf.c | ||
zebra_vrf.h | ||
zebra_vty.c | ||
zebra_vxlan_private.h | ||
zebra_vxlan.c | ||
zebra_vxlan.h | ||
zserv.c | ||
zserv.h |