aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries/python
diff options
context:
space:
mode:
authorJan Gelety <jgelety@cisco.com>2017-10-23 12:56:04 +0200
committerJan Gelety <jgelety@cisco.com>2017-10-23 12:56:04 +0200
commit2cc797fa23da02eefa19637521098ec41622189b (patch)
tree9f36e5441ded069634f3d34c43760f200052b959 /resources/libraries/python
parentb52c43bd354ee658d4f955995a08073a1338e898 (diff)
FIX: IPSec tunnel interface
- add following line per interface tunnel: set int unnum <ipsec> use <interface> Change-Id: Iff75f27b7cf25f3d24eea92366b1fd4a718c253b Signed-off-by: Jan Gelety <jgelety@cisco.com>
Diffstat (limited to 'resources/libraries/python')
-rw-r--r--resources/libraries/python/IPsecUtil.py19
-rw-r--r--resources/libraries/python/InterfaceUtil.py23
2 files changed, 39 insertions, 3 deletions
diff --git a/resources/libraries/python/IPsecUtil.py b/resources/libraries/python/IPsecUtil.py
index a554a54bb4..61ad001b0f 100644
--- a/resources/libraries/python/IPsecUtil.py
+++ b/resources/libraries/python/IPsecUtil.py
@@ -486,15 +486,18 @@ 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 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 tunnell interfaces to create.
:param crypto_alg: The encryption algorithm name.
:param crypto_key: The encryption key string.
@@ -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.