|
|
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 |
|