From 80adb3c144c192fd1c85fe31fc3577d9c770c1f2 Mon Sep 17 00:00:00 2001 From: Julien Fortin Date: Wed, 27 Feb 2019 00:11:36 +0100 Subject: [PATCH] addons: bridge: add new policy vxlan_bridge_igmp_snooping_enable_port_mcrouter if igmp snooping is enabled on a vxlan bridge and if the vxlan_bridge_igmp_snooping_enable_port_mcrouter is turned on, ifupdown2 will automatically enable multicast router on the vxlan brport unless this attribute was provided by the user. The policy is enabled by default. The policy can be disabled as follow: { "bridge": { "module_globals": { "vxlan_bridge_igmp_snooping_enable_port_mcrouter": "no" } } } auto br0 iface br0 bridge-ports vx42 bridge-mcsnoop yes auto vx42 iface vx42 vxlan-id 42 $ ifreload -ad will show that the config is applied Signed-off-by: Julien Fortin --- ifupdown2/addons/bridge.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/ifupdown2/addons/bridge.py b/ifupdown2/addons/bridge.py index 973ec7e..3cca424 100644 --- a/ifupdown2/addons/bridge.py +++ b/ifupdown2/addons/bridge.py @@ -643,6 +643,14 @@ class bridge(moduleBase): ) ) + self.vxlan_bridge_igmp_snooping_enable_port_mcrouter = utils.get_boolean_from_string( + policymanager.policymanager_api.get_module_globals( + module_name=self.__class__.__name__, + attr="vxlan_bridge_igmp_snooping_enable_port_mcrouter" + ), + default=True + ) + self.l2protocol_tunnel_callback = { 'all': self._l2protocol_tunnel_set_all, 'stp': self._l2protocol_tunnel_set_stp, @@ -1944,6 +1952,16 @@ class bridge(moduleBase): brport_name, brport_ifla_info_slave_data, bridge_ports_learning.get(brport_name)) + + if self.vxlan_bridge_igmp_snooping_enable_port_mcrouter and utils.get_boolean_from_string( + self.get_bridge_mcsnoop_value(ifaceobj) + ): + # if policy "vxlan_bridge_igmp_snooping_enable_port_mcrouter" + # is on and mcsnoop is on, set 'bridge-portmcrouter 2' + # on vxlan ports (if not set by the user) + if not brport_ifla_info_slave_data.get(Link.IFLA_BRPORT_MULTICAST_ROUTER): + brport_ifla_info_slave_data[Link.IFLA_BRPORT_MULTICAST_ROUTER] = 2 + self.logger.info("%s: %s: vxlan bridge igmp snooping: enable port multicast router" % (ifname, brport_name)) else: kind = None ifla_info_data = {} -- 2.39.2