aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries/python
diff options
context:
space:
mode:
Diffstat (limited to 'resources/libraries/python')
-rw-r--r--resources/libraries/python/InterfaceUtil.py19
-rw-r--r--resources/libraries/python/ProxyArp.py36
-rw-r--r--resources/libraries/python/TrafficScriptExecutor.py3
3 files changed, 58 insertions, 0 deletions
diff --git a/resources/libraries/python/InterfaceUtil.py b/resources/libraries/python/InterfaceUtil.py
index 7bf0584697..ace4453e54 100644
--- a/resources/libraries/python/InterfaceUtil.py
+++ b/resources/libraries/python/InterfaceUtil.py
@@ -748,3 +748,22 @@ class InterfaceUtil(object):
return {}
return vxlan_gpe_data[0]
+
+ @staticmethod
+ def vpp_proxy_arp_interface_enable(node, interface):
+ """Enable proxy ARP on interface.
+
+ :param node: VPP node to enable proxy ARP on interface.
+ :param interface: Interface to enable proxy ARP.
+ :type node: dict
+ :type interface: str or int
+ """
+ if isinstance(interface, basestring):
+ sw_if_index = InterfaceUtil.get_sw_if_index(node, interface)
+ else:
+ sw_if_index = interface
+
+ with VatTerminal(node) as vat:
+ vat.vat_terminal_exec_cmd_from_template(
+ "proxy_arp_intfc_enable.vat",
+ sw_if_index=sw_if_index)
diff --git a/resources/libraries/python/ProxyArp.py b/resources/libraries/python/ProxyArp.py
new file mode 100644
index 0000000000..4879fe6bae
--- /dev/null
+++ b/resources/libraries/python/ProxyArp.py
@@ -0,0 +1,36 @@
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Proxy ARP library"""
+
+from resources.libraries.python.VatExecutor import VatTerminal
+
+
+class ProxyArp(object):
+ """Proxy ARP utilities."""
+
+ @staticmethod
+ def vpp_add_proxy_arp(node, lo_ip4_addr, hi_ip4_addr):
+ """Enable proxy ARP for a range of IP addresses.
+
+ :param node: VPP node to enable proxy ARP.
+ :param lo_ip4_addr: The lower limit of the IP addresses.
+ :param hi_ip4_addr: The upper limit of the IP addresses.
+ :type node: dict
+ :type lo_ip4_addr: str
+ :type hi_ip4_addr: str
+ """
+ with VatTerminal(node) as vat:
+ vat.vat_terminal_exec_cmd_from_template("add_proxy_arp.vat",
+ lo_ip4_addr=lo_ip4_addr,
+ hi_ip4_addr=hi_ip4_addr)
diff --git a/resources/libraries/python/TrafficScriptExecutor.py b/resources/libraries/python/TrafficScriptExecutor.py
index f730d3a0e3..f4f026addf 100644
--- a/resources/libraries/python/TrafficScriptExecutor.py
+++ b/resources/libraries/python/TrafficScriptExecutor.py
@@ -51,6 +51,7 @@ class TrafficScriptExecutor(object):
:raises RuntimeError: ICMP echo Rx timeout.
:raises RuntimeError: DHCP REQUEST Rx timeout.
:raises RuntimeError: TCP/UDP Rx timeout.
+ :raises RuntimeError: ARP reply timeout.
:raises RuntimeError: Traffic script execution failed.
"""
logger.trace("{}".format(timeout))
@@ -75,6 +76,8 @@ class TrafficScriptExecutor(object):
raise RuntimeError("DHCP REQUEST Rx timeout")
elif "RuntimeError: TCP/UDP Rx timeout" in stderr:
raise RuntimeError("TCP/UDP Rx timeout")
+ elif "Error occurred: ARP reply timeout" in stdout:
+ raise RuntimeError("ARP reply timeout")
else:
raise RuntimeError("Traffic script execution failed")