From 1942363fa62b6a079ae5552d20c90eb55f0033d9 Mon Sep 17 00:00:00 2001 From: Zdeno Olsovsky Date: Thu, 28 Jul 2016 15:04:54 +0200 Subject: CSIT-237: VPN routed forwarding (VRF) - baseline for IPv6 Change-Id: I5c3053c692df29255a1da22a66f7ac282e3d5624 Signed-off-by: Zdeno Olsovsky --- resources/libraries/python/InterfaceUtil.py | 9 +++++++-- resources/libraries/python/Routing.py | 9 +++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) (limited to 'resources/libraries/python') diff --git a/resources/libraries/python/InterfaceUtil.py b/resources/libraries/python/InterfaceUtil.py index 9ecdb7503a..f5f1ce314e 100644 --- a/resources/libraries/python/InterfaceUtil.py +++ b/resources/libraries/python/InterfaceUtil.py @@ -847,25 +847,30 @@ class InterfaceUtil(object): interface_name=interface) @staticmethod - def assign_interface_to_fib_table(node, interface, table_id): + def assign_interface_to_fib_table(node, interface, table_id, ipv6=False): """Assign VPP interface to specific VRF/FIB table. :param node: VPP node where the FIB and interface are located. :param interface: Interface to be assigned to FIB. :param table_id: VRF table ID. + :param ipv6: Assign to IPv6 table. Default False. :type node: dict :type interface: str or int :type table_id: int + :type ipv6: bool """ if isinstance(interface, basestring): sw_if_index = Topology.get_interface_sw_index(node, interface) else: sw_if_index = interface + ipv6 = 'ipv6' if ipv6 else '' + with VatTerminal(node) as vat: vat.vat_terminal_exec_cmd_from_template("set_fib_to_interface.vat", sw_index=sw_if_index, - vrf=table_id) + vrf=table_id, + ipv6=ipv6) @staticmethod def set_linux_interface_mac(node, interface, mac, namespace=None): diff --git a/resources/libraries/python/Routing.py b/resources/libraries/python/Routing.py index 767fb3aff0..fbe7b60183 100644 --- a/resources/libraries/python/Routing.py +++ b/resources/libraries/python/Routing.py @@ -24,7 +24,7 @@ class Routing(object): @staticmethod def vpp_route_add(node, network, prefix_len, gateway=None, interface=None, use_sw_index=True, resolve_attempts=10, - count=1, vrf=None): + count=1, vrf=None, lookup_vrf=None): """Add route to the VPP node. :param node: Node to add route on. @@ -37,6 +37,7 @@ class Routing(object): :param resolve_attempts: Resolve attempts IP route add parameter. :param count: number of IP addresses to add starting from network IP with same prefix (increment is 1). If None, then is not used. + :param lookup_vrf: VRF table ID for lookup. :type node: dict :type network: str :type prefix_len: int @@ -46,6 +47,7 @@ class Routing(object): :type resolve_attempts: int :type count: int :type vrf: int + :type lookup_vrf: int """ if use_sw_index: int_cmd = ('sw_if_index {}'. @@ -63,6 +65,8 @@ class Routing(object): vrf = 'vrf {}'.format(vrf) if vrf else '' + lookup_vrf = 'lookup-in-vrf {}'.format(lookup_vrf) if lookup_vrf else '' + with VatTerminal(node, json_param=False) as vat: vat.vat_terminal_exec_cmd_from_template('add_route.vat', network=network, @@ -71,7 +75,8 @@ class Routing(object): vrf=vrf, interface=int_cmd, resolve_attempts=rap, - count=cnt) + count=cnt, + lookup_vrf=lookup_vrf) @staticmethod def add_fib_table(node, network, prefix_len, fib_id, place): -- cgit 1.2.3-korg