]> git.puffer.fish Git - mirror/frr.git/commitdiff
zebra: fix mpls config on ifaces created post frr 13964/head
authorPhilippe Guibert <philippe.guibert@6wind.com>
Sun, 9 Jul 2023 19:45:51 +0000 (21:45 +0200)
committerPhilippe Guibert <philippe.guibert@6wind.com>
Sun, 9 Jul 2023 19:57:01 +0000 (21:57 +0200)
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 <philippe.guibert@6wind.com>
zebra/interface.c

index ba6a376536e90430be410f6045b50bc6565db08e..ae446988dda4d99c3c8e3f3b75cc2ecf4e2ca440 100644 (file)
@@ -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.",