From: Philippe Guibert Date: Sun, 9 Jul 2023 19:45:51 +0000 (+0200) Subject: zebra: fix mpls config on ifaces created post frr X-Git-Tag: base_9.1~268^2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=71b0b0d3b330073b3d0957efca76a6a6d68002f0;p=mirror%2Ffrr.git zebra: fix mpls config on ifaces created post frr The mpls configuration does not work when an interface is created after having applied the frr configuration. The below scenario illustrates: > root@dut:~# modprobe mpls > root@dut:~# zebra & > [..] > dut(config)# interface ifacenotcreated > dut(config-if)# mpls enable > dut(config-if)# Ctrl-D > root@dut:~# ip li show ifacenotcreated > Device "ifacenotcreated" does not exist. > root@dut:~# ip li add ifacenotcreated type dummy > 0 Fix this by forcing the mpls flag when the interface is detected. > root@dut:~# cat /proc/sys/net/mpls/conf/ifacenotcreat/input > 1 Signed-off-by: Philippe Guibert --- diff --git a/zebra/interface.c b/zebra/interface.c index ba6a376536..ae446988dd 100644 --- a/zebra/interface.c +++ b/zebra/interface.c @@ -610,6 +610,11 @@ void if_add_update(struct interface *ifp) if_addr_wakeup(ifp); + if (if_data->mpls_config == IF_ZEBRA_DATA_ON) + dplane_intf_mpls_modify_state(ifp, true); + else if (if_data->mpls_config == IF_ZEBRA_DATA_OFF) + dplane_intf_mpls_modify_state(ifp, false); + if (IS_ZEBRA_DEBUG_KERNEL) zlog_debug( "interface %s vrf %s(%u) index %d becomes active.",