ip_wrapper = ip_lib.IPWrapper(self.namespace)
return ip_wrapper.netns.execute(cmd, run_as_root=True)
+ def _sysctl(self, cmd):
+ cmd = ['sysctl', '-w'] + cmd
+ ip_wrapper = ip_lib.IPWrapper(self.namespace)
+ return ip_wrapper.netns.execute(cmd, run_as_root=True)
+
@classmethod
def addbr(cls, name, namespace=None):
bridge = cls(name, namespace)
def disable_stp(self):
return self._brctl(['stp', self.name, 'off'])
+ def disable_ipv6(self):
+ cmd = 'net.ipv6.conf.%s.disable_ipv6=1' % self.name
+ return self._sysctl([cmd])
+
def owns_interface(self, interface):
return os.path.exists(
BRIDGE_INTERFACE_FS % {'bridge': self.name,
br.disable_stp()
self._verify_bridge_mock(['brctl', 'stp', self._BR_NAME, 'off'])
+ br.disable_ipv6()
+ cmd = 'net.ipv6.conf.%s.disable_ipv6=1' % self._BR_NAME
+ self._verify_bridge_mock(['sysctl', '-w', cmd])
+
br.addif(self._IF_NAME)
self._verify_bridge_mock(
['brctl', 'addif', self._BR_NAME, self._IF_NAME])
br_fn.addbr.return_value = bridge_device
bridge_device.setfd.return_value = False
bridge_device.disable_stp.return_value = False
+ bridge_device.disable_ipv6.return_value = False
bridge_device.link.set_up.return_value = False
self.assertEqual(self.lbm.ensure_bridge("br0", None), "br0")