Blame SOURCES/BZ_2088373-nm-bridge-Fix-multicast_router-option.patch

d3f050
From 81d78014be4b985c8f86159d7abed6a9f73b128c Mon Sep 17 00:00:00 2001
d3f050
From: Gris Ge <fge@redhat.com>
d3f050
Date: Thu, 28 Apr 2022 21:20:26 +0800
d3f050
Subject: [PATCH] nm bridge: Fix multicast_router option
d3f050
d3f050
Adding the missing support of multicast_router option of linux bridge
d3f050
with these values:
d3f050
    * 0: disabled
d3f050
    * 1: auto
d3f050
    * 2: enabled
d3f050
d3f050
Integration test case included and marked as tier 1 as oVirt requested
d3f050
this.
d3f050
d3f050
Signed-off-by: Gris Ge <fge@redhat.com>
d3f050
---
d3f050
 libnmstate/nm/bridge.py                | 20 ++++++++++++++++++++
d3f050
 tests/integration/linux_bridge_test.py | 22 ++++++++++++++++++++++
d3f050
 2 files changed, 42 insertions(+)
d3f050
d3f050
diff --git a/libnmstate/nm/bridge.py b/libnmstate/nm/bridge.py
d3f050
index e7d28e2b..4241c926 100644
d3f050
--- a/libnmstate/nm/bridge.py
d3f050
+++ b/libnmstate/nm/bridge.py
d3f050
@@ -17,6 +17,7 @@
d3f050
 # along with this program. If not, see <https://www.gnu.org/licenses/>.
d3f050
 #
d3f050
 
d3f050
+from libnmstate.error import NmstateNotImplementedError
d3f050
 from libnmstate.schema import LinuxBridge as LB
d3f050
 
d3f050
 from .bridge_port_vlan import nmstate_port_vlan_to_nm
d3f050
@@ -42,6 +43,12 @@ NM_BRIDGE_OPTIONS_MAP = {
d3f050
     OPT.MULTICAST_STARTUP_QUERY_INTERVAL: "multicast_startup_query_interval",
d3f050
 }
d3f050
 
d3f050
+NM_BRIDGE_MCAST_ROUTER_VALUE_MAP = {
d3f050
+    0: "disabled",
d3f050
+    1: "auto",
d3f050
+    2: "enabled",
d3f050
+}
d3f050
+
d3f050
 
d3f050
 def create_setting(
d3f050
     bridge_state, base_con_profile, original_desired_iface_state
d3f050
@@ -80,6 +87,8 @@ def _set_bridge_properties(bridge_setting, options):
d3f050
             bridge_setting.props.multicast_snooping = val
d3f050
         elif key == LB.STP_SUBTREE:
d3f050
             _set_bridge_stp_properties(bridge_setting, val)
d3f050
+        elif key == LB.Options.MULTICAST_ROUTER:
d3f050
+            _set_bridge_mcast_router(bridge_setting, val)
d3f050
         elif key in NM_BRIDGE_OPTIONS_MAP:
d3f050
             nm_prop_name = NM_BRIDGE_OPTIONS_MAP[key]
d3f050
             # NM is using the sysfs name
d3f050
@@ -138,3 +147,14 @@ def create_port_setting(options, base_con_profile):
d3f050
 
d3f050
 def get_port(nm_device):
d3f050
     return nm_device.get_slaves()
d3f050
+
d3f050
+
d3f050
+def _set_bridge_mcast_router(bridge_setting, nmstate_value):
d3f050
+    nm_value = NM_BRIDGE_MCAST_ROUTER_VALUE_MAP.get(nmstate_value)
d3f050
+    if nm_value:
d3f050
+        bridge_setting.props.multicast_router = nm_value
d3f050
+    else:
d3f050
+        raise NmstateNotImplementedError(
d3f050
+            f"Unsupported value {nmstate_value} for "
d3f050
+            "multicast_router bridge option"
d3f050
+        )
d3f050
-- 
d3f050
2.35.3
d3f050