예제 #1
0
    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)
예제 #2
0
    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
예제 #3
0
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)
예제 #4
0
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)
예제 #5
0
    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)