aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries
diff options
context:
space:
mode:
authorJan Gelety <jgelety@cisco.com>2019-09-11 19:49:29 +0200
committerJan Gelety <jgelety@cisco.com>2019-12-10 11:04:18 +0000
commit8fc9b28d7a0381981e2cb614b02783b8238f65f2 (patch)
treec6b82bf9882272bf92a55bd9e498b284a5a248b6 /resources/libraries
parentf7e953e01896a70bef6da0845935da25cd3122f5 (diff)
CSIT-1597 API cleanup: classify
- cover API changes in VPP: https://gerrit.fd.io/r/c/vpp/+/21551 - move vpp stable build to 20.01-rc0~821 - tap tests tagged 'EXPECTED_FAILING' until necessary vpp api change https://gerrit.fd.io/r/c/vpp/+/21706 and csit code is adapted Change-Id: If4b9b7b5bc207612d08aa8aa4469a5361e058fc3 Signed-off-by: Jan Gelety <jgelety@cisco.com>
Diffstat (limited to 'resources/libraries')
-rw-r--r--resources/libraries/python/Classify.py56
-rw-r--r--resources/libraries/python/Policer.py9
2 files changed, 42 insertions, 23 deletions
diff --git a/resources/libraries/python/Classify.py b/resources/libraries/python/Classify.py
index 4d05079eec..016dc572b5 100644
--- a/resources/libraries/python/Classify.py
+++ b/resources/libraries/python/Classify.py
@@ -170,7 +170,7 @@ class Classify:
"""Add or delete a classify table.
:param node: VPP node to create classify table.
- :param is_add: If 1 the table is added, if 0 the table is deleted.
+ :param is_add: If True the table is added, if False table is deleted.
:param mask: ACL mask in hexstring format.
:param match_n_vectors: Number of vectors to match (Default value = ~0).
:param table_index: Index of the classify table. (Default value = ~0)
@@ -194,8 +194,8 @@ class Classify:
This is valid only if current_data_flag is set to 1.
(Default value = 0)
:type node: dict
- :type is_add: int
- :type mask: bytes
+ :type is_add: bool
+ :type mask: str
:type match_n_vectors: int
:type table_index: int
:type nbuckets: int
@@ -214,6 +214,7 @@ class Classify:
cmd = u"classify_add_del_table"
args = dict(
is_add=is_add,
+ del_chain=False,
table_index=table_index,
nbuckets=nbuckets,
memory_size=memory_size,
@@ -243,7 +244,8 @@ class Classify:
"""Add or delete a classify session.
:param node: VPP node to create classify session.
- :param is_add: If 1 the session is added, if 0 the session is deleted.
+ :param is_add: If True the session is added, if False the session
+ is deleted.
:param table_index: Index of the table to add/del the session.
:param match: For add, match value for session, required, needs to
include bytes in front with length of skip_n_vectors of target table
@@ -260,15 +262,14 @@ class Classify:
2: Classified IP packets will be looked up from the specified ipv6
fib table (configured by metadata as VRF id).
Only valid for L3 input ACL node
- 3: Classified packet will be steered to source routig policy of
+ 3: Classified packet will be steered to source routing policy of
given index (in metadata).
This is only valid for IPv6 packets redirected to a source
routing node.
- :param metadata: Valid only if action != 0
- VRF id if action is 1 or 2. SR policy index if action is 3.
- (Default value = 0)
+ :param metadata: Valid only if action != 0. VRF id if action is 1 or 2.
+ SR policy index if action is 3. (Default value = 0)
:type node: dict
- :type is_add: int
+ :type is_add: bool
:type table_index: int
:type match: bytes
:type opaque_index: int
@@ -426,7 +427,7 @@ class Classify:
return Classify._classify_add_del_table(
node,
- is_add=1,
+ is_add=True,
mask=mask,
match_n_vectors=match_n,
skip_n_vectors=skip_n
@@ -435,8 +436,8 @@ class Classify:
@staticmethod
def vpp_configures_classify_session_l3(
node, acl_method, table_index, skip_n, match_n, ip_version,
- direction, address, hit_next_index=Constants.BITWISE_NON_ZERO,
- opaque_index=Constants.BITWISE_NON_ZERO):
+ direction, address, hit_next_index=None,
+ opaque_index=Constants.BITWISE_NON_ZERO, action=0, metadata=0):
"""Configuration of classify session for IP address filtering.
:param node: VPP node to setup classify session.
@@ -448,8 +449,21 @@ class Classify:
:param direction: Direction of traffic - src/dst.
:param address: IPv4 or IPv6 address.
:param hit_next_index: hit_next_index of new session.
- (Default value = ~0)
+ (Default value = None)
:param opaque_index: opaque_index of new session. (Default value = ~0)
+ :param action: 0: No action (by default) metadata is not used.
+ 1: Classified IP packets will be looked up from the specified ipv4
+ fib table (configured by metadata as VRF id).
+ Only valid for L3 input ACL node
+ 2: Classified IP packets will be looked up from the specified ipv6
+ fib table (configured by metadata as VRF id).
+ Only valid for L3 input ACL node
+ 3: Classified packet will be steered to source routing policy of
+ given index (in metadata).
+ This is only valid for IPv6 packets redirected to a source
+ routing node.
+ :param metadata: Valid only if action != 0. VRF id if action is 1 or 2.
+ SR policy index if action is 3. (Default value = 0)
:type node: dict
:type acl_method: str
:type table_index: int
@@ -460,15 +474,17 @@ class Classify:
:type address: str
:type hit_next_index: int
:type opaque_index: int
+ :type action: int
+ :type metadata: int
:raises ValueError: If the parameter 'direction' has incorrect value.
"""
match_f = dict(
ip4=Classify._build_ip_match,
ip6=Classify._build_ip6_match
)
- action = dict(
- permit=0,
- deny=1
+ acl_hit_next_index = dict(
+ permit=Constants.BITWISE_NON_ZERO,
+ deny=0
)
if ip_version in (u"ip4", u"ip6"):
@@ -493,12 +509,14 @@ class Classify:
Classify._classify_add_del_session(
node,
- is_add=1,
+ is_add=True,
table_index=table_index,
- hit_next_index=hit_next_index,
+ hit_next_index=hit_next_index if hit_next_index is not None
+ else acl_hit_next_index[acl_method],
opaque_index=opaque_index,
match=match,
- action=action[acl_method]
+ action=action,
+ metadata=metadata
)
@staticmethod
diff --git a/resources/libraries/python/Policer.py b/resources/libraries/python/Policer.py
index d5500e1d89..2c4cc66d2c 100644
--- a/resources/libraries/python/Policer.py
+++ b/resources/libraries/python/Policer.py
@@ -180,7 +180,7 @@ class Policer:
def policer_classify_set_interface(
node, interface, ip4_table_index=Constants.BITWISE_NON_ZERO,
ip6_table_index=Constants.BITWISE_NON_ZERO,
- l2_table_index=Constants.BITWISE_NON_ZERO, is_add=1):
+ l2_table_index=Constants.BITWISE_NON_ZERO, is_add=True):
"""Set/unset policer classify interface.
:param node: VPP node.
@@ -192,12 +192,13 @@ class Policer:
(Default value = ~0)
:param l2_table_index: L2 classify table index (~0 to skip).
(Default value = ~0)
- :param is_add: Set if non-zero, else unset.
+ :param is_add: Set if True, else unset.
:type node: dict
:type interface: str or int
:type ip4_table_index: int
:type ip6_table_index: int
:type l2_table_index: int
+ :type is_add: bool
"""
if isinstance(interface, str):
sw_if_index = Topology.get_interface_sw_index(node, interface)
@@ -206,8 +207,8 @@ class Policer:
cmd = u"policer_classify_set_interface"
args = dict(
- is_add=int(is_add),
- sw_if_index=sw_if_index,
+ is_add=is_add,
+ sw_if_index=int(sw_if_index),
ip4_table_index=int(ip4_table_index),
ip6_table_index=int(ip6_table_index),
l2_table_index=int(l2_table_index)