aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries/python
diff options
context:
space:
mode:
authorPatrik Hrnciar <phrnciar@cisco.com>2016-06-02 13:59:35 +0200
committerMatej Klotton <mklotton@cisco.com>2016-06-16 08:11:39 +0000
commit8e014c373bdcd281475d83669122ba5eeefb96c1 (patch)
tree923a05f06e4785ee1b4f2c4af56ea9f06aa6ee2e /resources/libraries/python
parent244693d43a5d4a2b8ac3fa7dfcb659b2135743d9 (diff)
IACL MAC filtering tests
- CSIT-133 VPP drops packets based on MAC src addr. - CSIT-134 VPP can drop packets based on src MAC + IPv6 UDP src+dst port. Change-Id: I57d041bc5f3311946679128e556ceef8c4d55264 Signed-off-by: Patrik Hrnciar <phrnciar@cisco.com>
Diffstat (limited to 'resources/libraries/python')
-rw-r--r--resources/libraries/python/Classify.py75
1 files changed, 68 insertions, 7 deletions
diff --git a/resources/libraries/python/Classify.py b/resources/libraries/python/Classify.py
index 7d62e26a67..d955a9cc8c 100644
--- a/resources/libraries/python/Classify.py
+++ b/resources/libraries/python/Classify.py
@@ -21,8 +21,8 @@ class Classify(object):
"""Classify utilities."""
@staticmethod
- def vpp_create_classify_table(node, ip_version, direction):
- """Create classify table.
+ def vpp_creates_classify_table_l3(node, ip_version, direction):
+ """Create classify table for IP address filtering.
:param node: VPP node to create classify table.
:param ip_version: Version of IP protocol.
@@ -54,7 +54,38 @@ class Classify(object):
return table_index, skip_n, match_n
@staticmethod
- def vpp_create_classify_table_hex(node, hex_mask):
+ def vpp_creates_classify_table_l2(node, direction):
+ """Create classify table for MAC address filtering.
+
+ :param node: VPP node to create classify table.
+ :param direction: Direction of traffic - src/dst.
+ :type node: dict
+ :type direction: str
+ :return (table_index, skip_n, match_n)
+ table_index: Classify table index.
+ skip_n: Number of skip vectors.
+ match_n: Number of match vectors.
+ :rtype: tuple(int, int, int)
+ :raises RuntimeError: If VPP can't create table.
+ """
+ output = VatExecutor.cmd_from_template(node,
+ "classify_add_table_l2.vat",
+ direction=direction)
+
+ if output[0]["retval"] == 0:
+ table_index = output[0]["new_table_index"]
+ skip_n = output[0]["skip_n_vectors"]
+ match_n = output[0]["match_n_vectors"]
+ logger.trace('Classify table with table_index {} created on node {}'
+ .format(table_index, node['host']))
+ else:
+ raise RuntimeError('Unable to create classify table on node {}'
+ .format(node['host']))
+
+ return table_index, skip_n, match_n
+
+ @staticmethod
+ def vpp_creates_classify_table_hex(node, hex_mask):
"""Create classify table with hex mask.
:param node: VPP node to create classify table based on hex mask.
@@ -85,9 +116,10 @@ class Classify(object):
return table_index, skip_n, match_n
@staticmethod
- def vpp_configure_classify_session(node, acl_method, table_index, skip_n,
- match_n, ip_version, direction, address):
- """Configuration of classify session.
+ def vpp_configures_classify_session_l3(node, acl_method, table_index, skip_n,
+ match_n, ip_version, direction,
+ address):
+ """Configuration of classify session for IP address filtering.
:param node: VPP node to setup classify session.
:param acl_method: ACL method - deny/permit.
@@ -117,7 +149,36 @@ class Classify(object):
address=address)
@staticmethod
- def vpp_configure_classify_session_hex(node, acl_method, table_index,
+ def vpp_configures_classify_session_l2(node, acl_method, table_index, skip_n,
+ match_n, direction, address):
+ """Configuration of classify session for MAC address filtering.
+
+ :param node: VPP node to setup classify session.
+ :param acl_method: ACL method - deny/permit.
+ :param table_index: Classify table index.
+ :param skip_n: Number of skip vectors based on mask.
+ :param match_n: Number of match vectors based on mask.
+ :param direction: Direction of traffic - src/dst.
+ :param address: IPv4 or IPv6 address.
+ :type node: dict
+ :type acl_method: str
+ :type table_index: int
+ :type skip_n: int
+ :type match_n: int
+ :type direction: str
+ :type address: str
+ """
+ with VatTerminal(node) as vat:
+ vat.vat_terminal_exec_cmd_from_template("classify_add_session_l2.vat",
+ acl_method=acl_method,
+ table_index=table_index,
+ skip_n=skip_n,
+ match_n=match_n,
+ direction=direction,
+ address=address)
+
+ @staticmethod
+ def vpp_configures_classify_session_hex(node, acl_method, table_index,
skip_n, match_n, hex_value):
"""Configuration of classify session with hex value.