acl-plugin: use the L2 feature arc infrastructure instead of L2 classifier for plumbing

This makes ACL plugin use the new feature arcs, which slightly increases performance.

Since for ethertype whitelisting we were using the L2 classifier, to retain
the functionality, make a simple node doing that, and plug it into non-ip
L2 feature arc whenever needed.

Change-Id: I3add377a6c790117dd3fd056e5615cb4c4438cf4
Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
This commit is contained in:
Andrew Yourtchenko
2018-10-06 09:26:02 +02:00
committed by John Lo
parent 270055a41a
commit c1f87942da
4 changed files with 312 additions and 699 deletions

View File

File diff suppressed because it is too large Load Diff

View File

@@ -251,19 +251,6 @@ typedef struct {
/* how many sessions went into purgatory */
u64 fa_session_total_deactivations;
/* L2 datapath glue */
/* next indices within L2 classifiers for ip4/ip6 fa L2 nodes */
u32 l2_input_classify_next_acl_ip4;
u32 l2_input_classify_next_acl_ip6;
u32 l2_output_classify_next_acl_ip4;
u32 l2_output_classify_next_acl_ip6;
/* next node indices for L2 dispatch */
u32 fa_acl_in_ip4_l2_node_feat_next_node_index[32];
u32 fa_acl_in_ip6_l2_node_feat_next_node_index[32];
u32 fa_acl_out_ip4_l2_node_feat_next_node_index[32];
u32 fa_acl_out_ip6_l2_node_feat_next_node_index[32];
/* EH values that we can skip over */
uword *fa_ipv6_known_eh_bitmap;

View File

File diff suppressed because it is too large Load Diff

View File

@@ -154,6 +154,14 @@ class TestACLplugin(VppTestCase):
"""
super(TestACLplugin, self).tearDown()
if not self.vpp_dead:
cli = "show vlib graph l2-input-feat-arc"
self.logger.info(self.vapi.ppcli(cli))
cli = "show vlib graph l2-input-feat-arc-end"
self.logger.info(self.vapi.ppcli(cli))
cli = "show vlib graph l2-output-feat-arc"
self.logger.info(self.vapi.ppcli(cli))
cli = "show vlib graph l2-output-feat-arc-end"
self.logger.info(self.vapi.ppcli(cli))
self.logger.info(self.vapi.ppcli("show l2fib verbose"))
self.logger.info(self.vapi.ppcli("show acl-plugin acl"))
self.logger.info(self.vapi.ppcli("show acl-plugin interface"))