diff options
author | Jan Gelety <jgelety@cisco.com> | 2017-10-23 10:36:34 +0200 |
---|---|---|
committer | Jan Gelety <jgelety@cisco.com> | 2017-10-23 12:36:10 +0200 |
commit | 1679f80885dc1e0dbb8b8bd02af1f4c6e2865763 (patch) | |
tree | fd78b989985285df6c87fc289ea8413f3b0bf9fc /resources | |
parent | 1bd27056523c0c4549491fd857acb60d8f19a7f7 (diff) |
FIX: IPSec tunnel interface
- add following line per interface tunnel:
set int unnum <ipsec> use <interface>
Change-Id: I28c033a48b6c7d84bc8afc14170ad28cbe62f6c3
Signed-off-by: Jan Gelety <jgelety@cisco.com>
Diffstat (limited to 'resources')
-rw-r--r-- | resources/libraries/python/IPsecUtil.py | 21 | ||||
-rw-r--r-- | resources/libraries/python/InterfaceUtil.py | 23 |
2 files changed, 40 insertions, 4 deletions
diff --git a/resources/libraries/python/IPsecUtil.py b/resources/libraries/python/IPsecUtil.py index a554a54bb4..186f4981e2 100644 --- a/resources/libraries/python/IPsecUtil.py +++ b/resources/libraries/python/IPsecUtil.py @@ -486,16 +486,19 @@ class IPsecUtil(object): @staticmethod def vpp_ipsec_create_tunnel_interfaces(node1, node2, if1_ip_addr, - if2_ip_addr, n_tunnels, crypto_alg, - crypto_key, integ_alg, integ_key, - raddr_ip1, raddr_ip2, raddr_range): + if2_ip_addr, if1_key, if2_key, + n_tunnels, crypto_alg, crypto_key, + integ_alg, integ_key, raddr_ip1, + raddr_ip2, raddr_range): """Create multiple IPsec tunnel interfaces between two VPP nodes. :param node1: VPP node 1 to create tunnel interfaces. :param node2: VPP node 2 to create tunnel interfaces. :param if1_ip_addr: VPP node 1 interface IP4 address. :param if2_ip_addr: VPP node 2 interface IP4 address. - :param n_tunnels: Number of tunnell interfaces to create. + :param if1_key: VPP node 1 interface key from topology file. + :param if2_key: VPP node 2 interface key from topology file. + :param n_tunnels: Number of tunnel interfaces to create. :param crypto_alg: The encryption algorithm name. :param crypto_key: The encryption key string. :param integ_alg: The integrity algorithm name. @@ -510,6 +513,8 @@ class IPsecUtil(object): :type node2: dict :type if1_ip_addr: str :type if2_ip_addr: str + :type if1_key: str + :type if2_key: str :type n_tunnels: int :type crypto_alg: CryptoAlg :type crypto_key: str @@ -569,6 +574,14 @@ class IPsecUtil(object): dut2_rte_s = 'ip route add {0}/{1} via {2} {3}\n'.format( raddr_ip1_s, raddr_range, if1_ip_addr, if_s) tmp_f2.write(dut2_rte_s) + dut1_if = Topology.get_interface_name(node1, if1_key) + dut1_unnum_s = 'set interface unnumbered {0} use {1}\n'.format( + if_s, dut1_if) + tmp_f1.write(dut1_unnum_s) + dut2_if = Topology.get_interface_name(node2, if2_key) + dut2_unnum_s = 'set interface unnumbered {0} use {1}\n'.format( + if_s, dut2_if) + tmp_f2.write(dut2_unnum_s) up_s = 'set int state {0} up\n'.format(if_s) tmp_f1.write(up_s) tmp_f2.write(up_s) diff --git a/resources/libraries/python/InterfaceUtil.py b/resources/libraries/python/InterfaceUtil.py index 795bb52933..a68b921146 100644 --- a/resources/libraries/python/InterfaceUtil.py +++ b/resources/libraries/python/InterfaceUtil.py @@ -221,6 +221,29 @@ class InterfaceUtil(object): return data @staticmethod + def vpp_get_interface_name(node, sw_if_index): + """Get interface name for the given SW interface index from actual + interface dump. + + :param node: VPP node to get interface data from. + :param sw_if_index: SW interface index of the specific interface. + :type node: dict + :type sw_if_index: int + :returns: Name of the given interface. + :rtype: str + """ + + if_data = InterfaceUtil.vpp_get_interface_data(node, sw_if_index) + if if_data['sup_sw_if_index'] != if_data['sw_if_index']: + if_data = InterfaceUtil.vpp_get_interface_data( + node, if_data['sup_sw_if_index']) + try: + if_name = if_data["interface_name"] + except KeyError: + if_name = None + return if_name + + @staticmethod def vpp_get_interface_mac(node, interface=None): """Get MAC address for the given interface from actual interface dump. |