def test_sourceroute_add_remove_and_read(self): with dummy_device() as nic: addrAdd(nic, IPV4_ADDRESS, IPV4_MASK) with create_sourceroute(device=nic, ip=IPV4_ADDRESS, mask=IPV4_MASK, gateway=IPV4_GW): dsroute = DynamicSourceRoute(nic, None, None, None) routes, rules = dsroute.current_srconfig() self.assertEqual(2, len(routes), routes) self.assertEqual(2, len(rules), rules) self.assertEqual('0.0.0.0/0', routes[0].to) self.assertEqual(nic, routes[0].device) self.assertEqual(IPv4_NET, routes[1].to) self.assertEqual(nic, routes[1].device) self.assertEqual(IPv4_NET, rules[0].to) self.assertEqual(IPV4_TABLE, rules[0].table) self.assertEqual(nic, rules[0].iif) self.assertEqual(rules[0].prio, sourceroute.RULE_PRIORITY) self.assertEqual(IPv4_NET, rules[1].src) self.assertEqual(IPV4_TABLE, rules[1].table) self.assertEqual(rules[1].prio, sourceroute.RULE_PRIORITY)
def test_sourceroute_add_remove_and_read(self, nic0): addrAdd(nic0, IPV4_ADDRESS, IPV4_MASK) with create_sourceroute(device=nic0, ip=IPV4_ADDRESS, mask=IPV4_MASK, gateway=IPV4_GW): dsroute = DynamicSourceRoute(nic0, None, None, None) routes, rules = dsroute.current_srconfig() assert len(routes) == 2 assert len(rules) == 2 assert routes[0].to == '0.0.0.0/0' assert routes[0].device == nic0 assert routes[1].to == IPV4_NET assert routes[1].device == nic0 assert rules[0].to == IPV4_NET assert rules[0].table == IPV4_TABLE assert rules[0].iif == nic0 assert rules[0].prio == sourceroute.RULE_PRIORITY assert rules[1].src == IPV4_NET assert rules[1].table == IPV4_TABLE assert rules[1].prio == sourceroute.RULE_PRIORITY
def _set_network_ip_config(ip_config): """Set IP configuration on Vdsm controlled OVS network""" iface = ip_config.top_dev ipv4 = ip_config.ipv4 ipv6 = ip_config.ipv6 port = ip_config.port blocking_dhcp = ip_config.blocking_dhcp net_dev = NetDevice(iface, iproute2, ipv4=ipv4, ipv6=ipv6, blockingdhcp=blocking_dhcp) DynamicSourceRoute.addInterfaceTracking(net_dev) ipwrapper.linkSet(iface, ['down']) if ipv4.address: ipwrapper.addrAdd(iface, ipv4.address, ipv4.netmask) if ipv4.gateway and ipv4.defaultRoute: ipwrapper.routeAdd(['default', 'via', ipv4.gateway]) if ipv6.address or ipv6.ipv6autoconf or ipv6.dhcpv6: sysctl.disable_ipv6(iface, disable=False) else: sysctl.disable_ipv6(iface) if ipv6.address: ipv6addr, ipv6netmask = ipv6.address.split('/') ipwrapper.addrAdd(iface, ipv6addr, ipv6netmask, family=6) if ipv6.gateway: ipwrapper.routeAdd(['default', 'via', ipv6.gateway], dev=iface, family=6) ipwrapper.linkSet(port, ['up']) ipwrapper.linkSet(iface, ['up']) if ipv4.bootproto == 'dhcp': _run_dhclient(iface, blocking_dhcp, ipv4.defaultRoute, 4) if ipv6.dhcpv6: _run_dhclient(iface, blocking_dhcp, ipv6.defaultRoute, 6) iproute2._addSourceRoute(net_dev)
def _remove_network_ip_config(ip_config): """Remove IP configuration from Vdsm controlled OVS network""" iface = ip_config.top_dev ipv4 = ip_config.ipv4 ipv6 = ip_config.ipv6 net_dev = NetDevice(iface, iproute2, ipv4=ipv4, ipv6=ipv6) DynamicSourceRoute.addInterfaceTracking(net_dev) DhcpClient(iface).shutdown() iproute2._removeSourceRoute(net_dev, DynamicSourceRoute) if ipv4.address or ipv6.address: with suppress(ipwrapper.IPRoute2Error): # device does not exist ipwrapper.addrFlush(iface)
def test_sourceroute_add_remove_and_read(self): with dummy_device() as nic: addrAdd(nic, IPV4_ADDRESS, IPV4_MASK) with create_sourceroute(device=nic, ip=IPV4_ADDRESS, mask=IPV4_MASK, gateway=IPV4_GW): dsroute = DynamicSourceRoute(nic, None, None, None) routes, rules = dsroute.current_srconfig() self.assertEqual(2, len(routes), routes) self.assertEqual(2, len(rules), rules) self.assertEqual('0.0.0.0/0', routes[0].to) self.assertEqual(nic, routes[0].device) self.assertEqual(IPv4_NET, routes[1].to) self.assertEqual(nic, routes[1].device) self.assertEqual(IPv4_NET, rules[0].to) self.assertEqual(IPV4_TABLE, rules[0].table) self.assertEqual(nic, rules[0].iif) self.assertEqual(IPv4_NET, rules[1].src) self.assertEqual(IPV4_TABLE, rules[1].table)