# ensure that the dhcp interface is first in the list
if network.namespace is None:
device = ip_lib.IPDevice(interface_name)
- device.route.pullup_route(interface_name)
+ device.route.pullup_route(interface_name,
+ ip_version=constants.IP_VERSION_4)
if self.conf.use_namespaces:
self._set_default_route(network, interface_name)
return retval
- def pullup_route(self, interface_name):
+ def pullup_route(self, interface_name, ip_version):
"""Ensures that the route entry for the interface is before all
others on the same subnet.
"""
+ options = [ip_version]
device_list = []
- device_route_list_lines = self._run([],
+ device_route_list_lines = self._run(options,
('list',
'proto', 'kernel',
'dev', interface_name)
subnet = device_route_line.split()[0]
except Exception:
continue
- subnet_route_list_lines = self._run([],
+ subnet_route_list_lines = self._run(options,
('list',
'proto', 'kernel',
'match', subnet)
break
for (device, src) in device_list:
- self._as_root([], ('del', subnet, 'dev', device))
+ self._as_root(options, ('del', subnet, 'dev', device))
if (src != ''):
- self._as_root([],
+ self._as_root(options,
('append', subnet,
'proto', 'kernel',
'src', src,
'dev', device))
else:
- self._as_root([],
+ self._as_root(options,
('append', subnet,
'proto', 'kernel',
'dev', device))
'lladdr', mac_address,
'dev', self.name))
- def show(self):
- return self._as_root([],
- ('show',
- 'dev', self.name))
+ def show(self, ip_version):
+ options = [ip_version]
+ return self._as_root(options,
+ ('show',
+ 'dev', self.name))
class IpNetnsCommand(IpCommandBase):
internal_device = router1.get_internal_device_name(
router_info['_interfaces'][0]['id'])
neighbors = ip_lib.IPDevice(internal_device, router1.ns_name).neigh
- self.assertEqual(expected_neighbor, neighbors.show().split()[0])
+ self.assertEqual(expected_neighbor,
+ neighbors.show(ip_version=4).split()[0])
def _assert_rfp_fpr_mtu(self, router, expected_mtu=1500):
dev_mtu = self.get_device_mtu(
return result
self.parent._run = mock.Mock(side_effect=pullup_side_effect)
- self.route_cmd.pullup_route('tap1d7888a7-10')
- self._assert_sudo([], ('del', '10.0.0.0/24', 'dev', 'qr-23380d11-d2'))
- self._assert_sudo([], ('append', '10.0.0.0/24', 'proto', 'kernel',
- 'src', '10.0.0.1', 'dev', 'qr-23380d11-d2'))
+ self.route_cmd.pullup_route('tap1d7888a7-10', ip_version=4)
+ self._assert_sudo([4], ('del', '10.0.0.0/24', 'dev', 'qr-23380d11-d2'))
+ self._assert_sudo([4], ('append', '10.0.0.0/24', 'proto', 'kernel',
+ 'src', '10.0.0.1', 'dev', 'qr-23380d11-d2'))
def test_pullup_route_first(self):
# NOTE(brian-haley) Currently we do not have any IPv6-specific usecase
return result
self.parent._run = mock.Mock(side_effect=pullup_side_effect)
- self.route_cmd.pullup_route('tap1d7888a7-10')
+ self.route_cmd.pullup_route('tap1d7888a7-10', ip_version=4)
# Check two calls - device get and subnet get
self.assertEqual(len(self.parent._run.mock_calls), 2)