Closed skaliassk closed 10 months ago
Same here. link_ifp is NULL
(gdb) p link_ifp $1 = (struct interface ) 0x0 (gdb) p zif $3 = {ifp = 0x55555599caa0, flags = 0, shutdown = 2 '\002', multicast = 0 '\000', mpls = false, linkdown = false, linkdownv6 = false, v4mcast_on = false, v6mcast_on = false, rtadv_enable = 0 '\000', ipv4_subnets = 0x55555599cf00, nhg_dependents = {rr = {rbt_root = 0x555555af9c10, count = 2}}, up_count = 1, up_last = "2023/06/07 14:13:02.15", '\000' <repeats 17 times>, down_count = 0, down_last = '\000' <repeats 39 times>, rtadv = {AdvSendAdvertisements = 0, MaxRtrAdvInterval = 600000, MinRtrAdvInterval = 198000, AdvIntervalTimer = 0, AdvManagedFlag = 0, lastadvmanagedflag = {tv_sec = 0, tv_usec = 0}, AdvOtherConfigFlag = 0, lastadvotherconfigflag = { tv_sec = 0, tv_usec = 0}, AdvLinkMTU = 0, AdvReachableTime = 0, lastadvreachabletime = {tv_sec = 0, tv_usec = 0}, AdvRetransTimer = 0, lastadvretranstimer = {tv_sec = 0, tv_usec = 0}, AdvCurHopLimit = 64, lastadvcurhoplimit = {tv_sec = 0, tv_usec = 0}, AdvDefaultLifetime = -1, prefixes = {{rr = {rbt_root = 0x55555599f140, count = 1}}}, AdvHomeAgentFlag = 0, HomeAgentPreference = 0, HomeAgentLifetime = -1, AdvIntervalOption = 0, DefaultPreference = 0, AdvRDNSSList = 0x55555599bf40, AdvDNSSLList = 0x55555599ced0, UseFastRexmit = true, inFastRexmit = 0 '\000', ra_configured = 0 '\000', NumFastReXmitsRemain = 0}, ra_sent = 0, ra_rcvd = 0, irdp = 0x0, ptm_enable = 0 '\000', zif_type = ZEBRA_IF_MACVLAN, zif_slave_type = ZEBRA_IF_SLAVE_NONE, l2info = {br = {vlan_aware = 0 '\000'}, vl = {vid = 0}, vxl = {vni = 0, vtep_ip = {s_addr = 0}, access_vlan = 0, mcast_grp = {s_addr = 0}, ifindex_link = 0, link_nsid = 0}, gre = {vtep_ip = {s_addr = 0}, vtep_ip_remote = {s_addr = 0}, ikey = 0, okey = 0, ifindex_link = 0, link_nsid = 0}}, brslave_info = {bridge_ifindex = 0, br_if = 0x0, ns_id = 0}, bondslave_info = {bond_ifindex = 0, bond_if = 0x0}, bond_info = {mbr_zifs = 0x0}, es_info = {sysmac = {octet = "\000\000\000\000\000"}, lid = 0, esi = {val = "\000\000\000\000\000\000\000\000\000"}, df_pref = 0, flags = 0 '\000', es = 0x0}, vlan_bitmap = {data = 0x0, n = 0, m = 0}, protodown_rc = 0, mac_list = 0x0, link_ifindex = 32, link = 0x0, speed_update_count = 0 '\000', speed_update = 0x55555599cf40, v6_2_v4_ll_neigh_entry = false, neigh_mac = "\000\000\000\000\000", v6_2_v4_ll_addr6 = {in6_u = {__u6_addr8 = '\000' <repeats 15 times>, u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0}, __u6_addr32 = {0, 0, 0, 0}}}, desc = 0x0}
This issue is stale because it has been open 180 days with no activity. Comment or remove the autoclose
label in order to avoid having this issue closed.
This issue will be automatically closed in the specified period unless there is further activity.
The problem seems to be that whenever there's a link down/up change in an interface which is a macvlan, where the parent interface isn't visible in the network namespace the zebra process is running, the zebra_if_update_link call will leave zif->link as null, which will then crash in if_up->zebra_vxlan_macvlan_up as that assumes the link pointer is non-null.
While running FRR on Docker, zebra crashed when interface state moved from up->down->up
Topology:
Peer Device -------------17.0.0.0/8------------------- FRR on Docker (with macvlan mode)
Crash log
Configuration :
Describe the bug
To Reproduce Once BGP neighbor-ship is established bring down interface of peer device by issuing "shutdown" and then "no shutdown"
Expected behavior BGP should re-establish the neighbor ship and zebra should not crash
Versions
OS Version: Debian 5.10.162-1 (2023-01-21) x86_64 GNU/Linux
Kernel: Linux (5.10.0-21-amd64)
FRR Version: FRRouting 8.5.1 (81ce0b40637c)
Docker : 20.10.5+dfsg1