Add an ability to set the mcast snooping option and mcast querier option on
a bridge.
Signed-off-by: Nogah Frankel <nogahf(a)mellanox.com>
Reviewed-by: Yotam Gigi <yotamg(a)mellanox.com>
---
lnst/Controller/Machine.py | 8 ++++++++
lnst/Controller/Task.py | 6 ++++++
lnst/Slave/BridgeTool.py | 10 ++++++++++
lnst/Slave/NetTestSlave.py | 18 ++++++++++++++++++
4 files changed, 42 insertions(+)
diff --git a/lnst/Controller/Machine.py b/lnst/Controller/Machine.py
index 7077018..a6a3165 100644
--- a/lnst/Controller/Machine.py
+++ b/lnst/Controller/Machine.py
@@ -966,6 +966,14 @@ class Interface(object):
self._machine._rpc_call_x(self._netns, "set_br_state", self._id,
br_state_info)
+ def set_br_mcast_snooping(self, set_on):
+ self._machine._rpc_call_x(self._netns, "set_br_mcast_snooping",
+ self._id, set_on)
+
+ def set_br_mcast_querier(self, set_on):
+ self._machine._rpc_call_x(self._netns, "set_br_mcast_querier",
self._id,
+ set_on)
+
def set_mcast_flood(self, on):
self._machine._rpc_call_x(self._netns, "set_mcast_flood", self._id,
on)
diff --git a/lnst/Controller/Task.py b/lnst/Controller/Task.py
index daf52ab..10b937d 100644
--- a/lnst/Controller/Task.py
+++ b/lnst/Controller/Task.py
@@ -700,6 +700,12 @@ class InterfaceAPI(object):
def set_br_state(_self, state, self=False, master=False):
_self._if.set_br_state({"state": state, "self": self,
"master": master})
+ def set_br_mcast_snooping(_self, set_on = True):
+ _self._if.set_br_mcast_snooping(set_on)
+
+ def set_br_mcast_querier(_self, set_on = True):
+ _self._if.set_br_mcast_querier(set_on)
+
def set_mcast_flood(self, on):
return self._if.set_mcast_flood(on)
diff --git a/lnst/Slave/BridgeTool.py b/lnst/Slave/BridgeTool.py
index 5e8f497..d93b1b9 100644
--- a/lnst/Slave/BridgeTool.py
+++ b/lnst/Slave/BridgeTool.py
@@ -117,3 +117,13 @@ class BridgeTool:
if br_state_info["master"]:
cmd += " master"
exec_cmd(cmd)
+
+ def set_mcast_snooping(self, set_on = True):
+ cmd = "ip link set %s type bridge mcast_snooping %d" %
(self._dev_name,
+ set_on)
+ exec_cmd(cmd)
+
+ def set_mcast_querier(self, set_on = True):
+ cmd = "ip link set %s type bridge mcast_querier %d" % (self._dev_name,
+ set_on)
+ exec_cmd(cmd)
diff --git a/lnst/Slave/NetTestSlave.py b/lnst/Slave/NetTestSlave.py
index 8a39f90..af80f55 100644
--- a/lnst/Slave/NetTestSlave.py
+++ b/lnst/Slave/NetTestSlave.py
@@ -937,6 +937,24 @@ class SlaveMethods:
brt.set_state(br_state_info)
return True
+ def set_br_mcast_snooping(self, if_id, set_on = True):
+ dev = self._if_manager.get_mapped_device(if_id)
+ if not dev:
+ logging.error("Device with id '%s' not found." % if_id)
+ return False
+ brt = BridgeTool(dev.get_name())
+ brt.set_mcast_snooping(set_on)
+ return True
+
+ def set_br_mcast_querier(self, if_id, set_on = True):
+ dev = self._if_manager.get_mapped_device(if_id)
+ if not dev:
+ logging.error("Device with id '%s' not found." % if_id)
+ return False
+ brt = BridgeTool(dev.get_name())
+ brt.set_mcast_querier(set_on)
+ return True
+
def set_speed(self, if_id, speed):
dev = self._if_manager.get_mapped_device(if_id)
if dev is not None:
--
2.4.3