aboutsummaryrefslogtreecommitdiffstats
path: root/resources
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
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')
-rw-r--r--resources/api/vpp/supported_crcs.yaml245
-rw-r--r--resources/libraries/python/Classify.py56
-rw-r--r--resources/libraries/python/Policer.py9
3 files changed, 46 insertions, 264 deletions
diff --git a/resources/api/vpp/supported_crcs.yaml b/resources/api/vpp/supported_crcs.yaml
index 2436ae54ed..402436cd12 100644
--- a/resources/api/vpp/supported_crcs.yaml
+++ b/resources/api/vpp/supported_crcs.yaml
@@ -30,247 +30,8 @@
# Use bash command "env LC_COLLATE=C sort -u" if not clear.
# https://logs.fd.io/production/vex-yul-rot-jenkins-1
-# /vpp-beta-merge-master-ubuntu1804/3866/archives/build-root/
-20.01-rc0~453:
- acl_add_replace: '0x13bc8539' # dev
- acl_add_replace_reply: '0xac407b0c' # dev
- acl_details: '0xf89d7a88' # perf teardown
- acl_dump: '0xef34fea4' # perf teardown
- acl_interface_list_details: '0xd5e80809' # perf teardown
- acl_interface_list_dump: '0x529cb13f' # perf teardown
- acl_interface_set_acl_list: '0x8baece38' # perf
- acl_interface_set_acl_list_reply: '0xe8d4e804' # perf
- # 6x^ tc01-64B-1c-ethip4udp-ip4base-iacl1sf-10kflows-mrr
- # tc01-64B-1c-ethip4udp-ip4base-iacl1sl-10kflows-mrr
- # ^^ ip4fwdANDiaclANDacl10AND100_flows
- avf_create: '0xdaab8ae2' # dev
- avf_create_reply: '0xfda5941f' # dev
- bond_create: '0x48883c7e' # perf
- bond_create_reply: '0x5383d31f' # perf
- bond_enslave: '0x076ecfa7' # perf
- bond_enslave_reply: '0xe8d4e804' # perf
- # 4x^ tc01-64B-1c-1lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr
- # ^ l2xcfwdANDlbond_1lANDnf_testpmd
- bridge_domain_add_del: '0xc6360720' # dev
- bridge_domain_add_del_reply: '0xe8d4e804' # dev
- # bridge_domain_dump / details # honeycomb
- classify_add_del_session: '0x85fd79f4' # dev
- classify_add_del_session_reply: '0xe8d4e804' # dev
- classify_add_del_table: '0x9bd794ae' # dev
- classify_add_del_table_reply: '0x05486349' # dev
- # classify_session_dump / details # honeycomb
- # classify_table_by_interface / reply # honeycomb
- # classify_table_info / reply # honeycomb
- cli_inband: '0xf8377302' # dev setup
- cli_inband_reply: '0x05879051' # dev setup
- cop_interface_enable_disable: '0x5501adee' # dev
- cop_interface_enable_disable_reply: '0xe8d4e804' # dev
- cop_whitelist_enable_disable: '0xdebe13ea' # dev
- cop_whitelist_enable_disable_reply: '0xe8d4e804' # dev
- create_loopback: '0x42bb5d22' # dev
- create_loopback_reply: '0x5383d31f' # dev
- create_subif: '0xcb371063' # perf
- create_subif_reply: '0x5383d31f' # perf
- # ^^ tc01-64B-1c-dot1ad-l2xcbase-mrr
- # ^ 3n: dot1adANDl2xcfwd
- create_vhost_user_if: '0xa3438cd4' # dev
- create_vhost_user_if_reply: '0xfda5941f' # dev
- create_vlan_subif: '0xaf34ac8b' # dev
- create_vlan_subif_reply: '0x5383d31f' # dev
- # dhcp_proxy_dump / details # honeycomb
- gbp_bridge_domain_add: '0x70f1069c' # dev
- gbp_bridge_domain_add_reply: '0xe8d4e804' # dev
- gbp_contract_add_del: '0x5b63d90a' # dev
- gbp_contract_add_del_reply: '0x1992deab' # dev
- gbp_endpoint_add: '0xf0efa120' # dev
- gbp_endpoint_add_reply: '0x1dd3ff3e' # dev
- gbp_endpoint_group_add: '0x1031b376' # dev
- gbp_endpoint_group_add_reply: '0xe8d4e804' # dev
- gbp_ext_itf_add_del: '0x6995e85f' # dev
- gbp_ext_itf_add_del_reply: '0xe8d4e804' # dev
- gbp_route_domain_add: '0x1560adc7' # dev
- gbp_route_domain_add_reply: '0xe8d4e804' # dev
- gbp_subnet_add_del: '0xf42b9430' # dev
- gbp_subnet_add_del_reply: '0xe8d4e804' # dev
- gpe_enable_disable: '0xeb0e943b' # dev
- gpe_enable_disable_reply: '0xe8d4e804' # dev
- # gre_tunnel_add_del / reply # unused L1 keyword: create_gre_tunnel_interface
- hw_interface_set_mtu: '0xe6746899' # dev
- hw_interface_set_mtu_reply: '0xe8d4e804' # dev
- input_acl_set_interface: '0xe09537b0' # dev
- input_acl_set_interface_reply: '0xe8d4e804' # dev
- ip_address_details: '0x7002eee7' # dev
- ip_address_dump: '0x6b7bcd0a' # dev
- ip_neighbor_add_del: '0x029dad44' # dev
- ip_neighbor_add_del_reply: '0x1992deab' # dev
- # ip_probe_neighbor / reply # unused L1 keyword vpp_ip_probe
- ip_route_add_del: '0x5ceee41c' # dev
- ip_route_add_del_reply: '0x1992deab' # dev
- # ip_source_check_interface_add_del / reply # unused L1 keyword vpp_ip_source_check_setup
- ip_table_add_del: '0xe5d378f2' # dev
- ip_table_add_del_reply: '0xe8d4e804' # dev
- ipsec_interface_add_del_spd: '0x1e3b8286' # dev
- ipsec_interface_add_del_spd_reply: '0xe8d4e804' # dev
- ipsec_sad_entry_add_del: '0xa25ab61e' # dev
- ipsec_sad_entry_add_del_reply: '0x9ffac24b' # dev
- ipsec_select_backend: '0x4fd24836' # perf
- ipsec_select_backend_reply: '0xe8d4e804' # perf
- # ^^ tc01-64B-1c-ethip4ipsec1tnlhw-ip4base-int-aes256gcm-mrr
- # ^ nic_intel-xl710ANDipsechwANDipsecintANDtnl_1ANDaes_256_gcm
- ipsec_spd_add_del: '0x9ffdf5da' # dev
- ipsec_spd_add_del_reply: '0xe8d4e804' # dev
- ipsec_spd_entry_add_del: '0xdb217840' # dev
- ipsec_spd_entry_add_del_reply: '0x9ffac24b' # dev
- ipsec_tunnel_if_add_del: '0xd5a98274' # perf
- ipsec_tunnel_if_add_del_reply: '0xfda5941f' # perf
- # ^^ tc01-64B-1c-ethip4ipsec1tnlhw-ip4base-int-aes256gcm-mrr
- # ^ See select_backend.
- # l2_fib_table_dump / details # honeycomb
- l2_interface_vlan_tag_rewrite: '0xb90be6b4' # dev
- l2_interface_vlan_tag_rewrite_reply: '0xe8d4e804' # dev
- l2_patch_add_del: '0x62506e63' # perf
- l2_patch_add_del_reply: '0xe8d4e804' # perf
- # ^^ tc01-64B-1c-avf-eth-l2patch-mrr # currently failing after calls
- # ^ l2patchANDdrv_avf
- # l2fib_add_del / reply # unused L1 keyword: vpp_add_l2fib_entry
- lb_conf: '0x22ddb739' # perf
- lb_conf_reply: '0xe8d4e804' # perf
- lb_add_del_vip: '0xd15b7ddc' # perf
- lb_add_del_vip_reply: '0xe8d4e804' # perf
- lb_add_del_as: '0x78628987' # perf
- lb_add_del_as_reply: '0xe8d4e804' # perf
- lb_add_del_intf_nat4: '0x47d6e753' # perf
- lb_add_del_intf_nat4_reply: '0xe8d4e804' # perf
- # 8x^ tc01-64B-1c-ethip4-loadbalancer-nat4
- # ^ 2n: loadbalancer_nat4
- lisp_add_del_adjacency: '0xf047390d' # dev
- lisp_add_del_adjacency_reply: '0xe8d4e804' # dev
- lisp_add_del_local_eid: '0xe6d00717' # dev
- lisp_add_del_local_eid_reply: '0xe8d4e804' # dev
- lisp_add_del_locator: '0x006a4240' # dev
- lisp_add_del_locator_reply: '0xe8d4e804' # dev
- lisp_add_del_locator_set: '0x06968e38' # dev
- lisp_add_del_locator_set_reply: '0xb6666db4' # dev
- # lisp_add_del_map_resolver / reply # unused L2 keyword: Configure LISP map resolver address
- lisp_add_del_remote_mapping: '0xb879c3a9' # dev
- lisp_add_del_remote_mapping_reply: '0xe8d4e804' # dev
- lisp_eid_table_add_del_map: '0x59e9975e' # perf
- lisp_eid_table_add_del_map_reply: '0xe8d4e804' # perf
- # ^^ tc01-64B-1c-ethip4ipsectptlispgpe-ip4base-aes128cbc-hmac256sha-ndrpdr # currently failing before calls
- # ^ ipsecANDlispgpe
- # lisp_eid_table_dump / details # unused L2 keyword: LISP eid address should be set correctly to eid table
- lisp_enable_disable: '0xeb0e943b' # dev
- lisp_enable_disable_reply: '0xe8d4e804' # dev
- # lisp_locator_set_dump / details # unused L2 keyword: LISP locator_set shpuld be configured correctly
- # lisp_map_server_dump / details # honeycomb
- # lisp_map_resolver_dump / details # unused L2 keyword: LISP map resolver address should be configured correctly
- macip_acl_add: '0x0c680ca5' # perf
- macip_acl_add_reply: '0xac407b0c' # perf
- macip_acl_details: '0xe164e69a' # perf teardown
- macip_acl_dump: '0xef34fea4' # perf teardown
- macip_acl_interface_add_del: '0x6a6be97c' # perf
- macip_acl_interface_add_del_reply: '0xe8d4e804' # perf
- macip_acl_interface_get: '0x51077d14' # perf teardown
- macip_acl_interface_get_reply: '0xaccf9b05' # perf teardown
- # 8x^ tc01-64B-1c-eth-l2bdbasemaclrn-macip-iacl1sl-100flows-mrr
- # ^ macipANDacl1AND100_flows
- memif_create: '0xb1b25061' # dev
- memif_create_reply: '0x5383d31f' # dev
- memif_details: '0xd0382c4c' # dev
- memif_dump: '0x51077d14' # dev
- memif_socket_filename_add_del: '0xa2ce1a10' # dev
- memif_socket_filename_add_del_reply: '0xe8d4e804' # dev
- nat44_interface_add_del_feature: '0xf3699b83' # perf
- nat44_interface_add_del_feature_reply: '0xe8d4e804' # perf
- nat_det_add_del_map: '0x112fde05' # perf
- nat_det_add_del_map_reply: '0xe8d4e804' # perf
- nat_show_config: '0x51077d14' # perf teardown
- nat_show_config_reply: '0x006a0786' # perf teardown
- # 6x^ tc01-64B-1c-ethip4udp-ip4base-nat44-mrr
- # ^ nat44NOTscaleNOTsrc_user_1
- policer_add_del: '0xdfea2be8' # dev
- policer_add_del_reply: '0xa177cef2' # dev
- policer_classify_set_interface: '0xe09537b0' # dev
- policer_classify_set_interface_reply: '0xe8d4e804' # dev
- # 4x^ tc01-64B-ethip4-ip4base-ipolicemarkbase-dev
- rdma_create: '0x541ffa8e' # perf
- rdma_create_reply: '0xfda5941f' # perf
- # show_lisp_map_register_state / reply # honeycomb
- # show_lisp_map_request_mode / reply # honeycomb
- # show_lisp_pitr / reply # honeycomb
- # show_lisp_rloc_probe_state / reply # honeycomb
- # show_lisp_status / reply # unused L2 keywords: LISP should be enabled / disabled
- # show_lisp_use_petr / reply # honeycomb
- show_threads: '0x51077d14' # dev
- show_threads_reply: '0xf5e0b66f' # dev
- show_version: '0x51077d14' # dev setup
- show_version_reply: '0xc919bde1' # dev setup
- sr_localsid_add_del: '0xb30489eb' # perf
- sr_localsid_add_del_reply: '0xe8d4e804' # perf
- sr_localsids_details: '0x0791babc' # perf teardown
- sr_localsids_dump: '0x51077d14' # perf teardown
- sr_policies_details: '0x5087f460' # perf teardown
- sr_policies_dump: '0x51077d14' # perf teardown
- sr_policy_add: '0x4b6e2484' # perf
- sr_policy_add_reply: '0xe8d4e804' # perf
- sr_set_encap_source: '0xd05bb4de' # perf
- sr_set_encap_source_reply: '0xe8d4e804' # perf
- sr_steering_add_del: '0x28b5dcab' # perf
- sr_steering_add_del_reply: '0xe8d4e804' # perf
- sr_steering_pol_details: '0x5627d483' # perf teardown
- sr_steering_pol_dump: '0x51077d14' # perf teardown
- # 14x^ tc01-78B-1c-ethip6ip6-ip6base-srv6enc1sid-mrr
- # ^ srv6_1sid
- sw_interface_add_del_address: '0x5803d5c4' # dev
- sw_interface_add_del_address_reply: '0xe8d4e804' # dev
- sw_interface_bond_details: '0xf5ef2106' # perf
- sw_interface_bond_dump: '0x51077d14' # perf
- # ^^ see bond_*
- sw_interface_details: '0x17b69fa2' # dev setup
- sw_interface_dump: '0xaa610c27' # dev setup
- # sw_interface_get_table / reply # honeycomb
- sw_interface_ip6nd_ra_config: '0xc3f02daa' # dev
- sw_interface_ip6nd_ra_config_reply: '0xe8d4e804' # dev
- sw_interface_rx_placement_details: '0xf6d7d024' # perf
- sw_interface_rx_placement_dump: '0xf9e6675e' # perf
- # ^^ tc01-64B-1c-dot1q-l2bdbasemaclrn-eth-2memif-1dcr-mrr
- # ^ dot1qANDl2bdmaclrnANDbaseANDmemif
- sw_interface_set_flags: '0x6a2b491a' # dev
- sw_interface_set_flags_reply: '0xe8d4e804' # dev
- sw_interface_set_l2_bridge: '0x5579f809' # dev
- sw_interface_set_l2_bridge_reply: '0xe8d4e804' # dev
- sw_interface_set_l2_xconnect: '0x95de3988' # dev
- sw_interface_set_l2_xconnect_reply: '0xe8d4e804' # dev
- sw_interface_set_rx_placement: '0xdb65f3c9' # perf
- sw_interface_set_rx_placement_reply: '0xe8d4e804' # perf
- # ^^ see tc01-64B-1c-dot1q-l2bdbasemaclrn-eth-2memif-1dcr-mrr above
- sw_interface_set_table: '0xdf42a577' # dev
- sw_interface_set_table_reply: '0xe8d4e804' # dev
- sw_interface_set_unnumbered: '0x938ef33b' # perf
- sw_interface_set_unnumbered_reply: '0xe8d4e804' # perf
- # ^^ see ipsec_tunnel_if_add_del
- sw_interface_set_vxlan_bypass: '0xe74ca095' # dev
- sw_interface_set_vxlan_bypass_reply: '0xe8d4e804' # dev
- sw_interface_slave_details: '0x3c4a0e23' # perf
- sw_interface_slave_dump: '0xf9e6675e' # perf
- # ^^ see bond_*
- # sw_interface_span_dump / details # honeycomb
- sw_interface_tap_v2_dump: '0x51077d14' # dev
- sw_interface_tap_v2_details: '0x5ee87a5f' # dev
- sw_interface_vhost_user_details: '0x91ff3307' # dev
- sw_interface_vhost_user_dump: '0x51077d14' # dev
- tap_create_v2: '0x8fa99320' # dev
- tap_create_v2_reply: '0xfda5941f' # dev
- vxlan_add_del_tunnel: '0x00f4bdd0' # dev
- vxlan_add_del_tunnel_reply: '0xfda5941f' # dev
- # vxlan_gpe_tunnel_dump / details # honeycomb
- # vxlan_tunnel_dump /details # unused L2 keyword: Get VXLAN dump
-# Please keep alphabetic order.
-# Use bash command "env LC_COLLATE=C sort -u" if not clear.
-
-
-# https://gerrit.fd.io/r/c/vpp/+/21551
-21551/27:
+# /vpp-merge-master-ubuntu1804/244/
+20.01-rc0~821:
acl_add_replace: '0x13bc8539' # dev
acl_add_replace_reply: '0xac407b0c' # dev
acl_details: '0xf89d7a88' # perf teardown
@@ -504,6 +265,8 @@
vxlan_add_del_tunnel_reply: '0xfda5941f' # dev
# vxlan_gpe_tunnel_dump / details # honeycomb
# vxlan_tunnel_dump /details # unused L2 keyword: Get VXLAN dump
+# Please keep alphabetic order.
+# Use bash command "env LC_COLLATE=C sort -u" if not clear.
# Hint to see the currently used command messages:
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)