diff options
author | Dave Barach <dave@barachs.net> | 2016-08-29 16:31:47 -0400 |
---|---|---|
committer | Dave Barach <dave@barachs.net> | 2016-08-29 16:32:00 -0400 |
commit | ed47b4cd4e1793ba9b3974f3026e8161d3b598a4 (patch) | |
tree | 95baa8845086431f7a6b243d0b10e439e5f588ae /vnet | |
parent | d575e69177cc1462658ec1de1149730e0ffb0425 (diff) |
VPP-360 Allow L2 classify to use dynamic graph arcs
Simple change so we can program L2 classifier per-session next-indices
and per-table miss-next-indices using dynamically-created graph arcs.
Change-Id: I9d4a3c82b83e94557075d56a6842d7075ed58905
Signed-off-by: Dave Barach <dave@barachs.net>
Diffstat (limited to 'vnet')
-rw-r--r-- | vnet/vnet/l2/l2_classify.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/vnet/vnet/l2/l2_classify.c b/vnet/vnet/l2/l2_classify.c index 721cf2066c1..737532de5ef 100644 --- a/vnet/vnet/l2/l2_classify.c +++ b/vnet/vnet/l2/l2_classify.c @@ -86,6 +86,9 @@ l2_classify_node_fn (vlib_main_t * vm, u32 misses = 0; u32 chain_hits = 0; f64 now; + u32 n_next_nodes; + + n_next_nodes = node->n_next_nodes; now = vlib_time_now (vm); @@ -291,7 +294,7 @@ l2_classify_node_fn (vlib_main_t * vm, vnet_buffer (b0)->l2_classify.opaque_index = e0->opaque_index; vlib_buffer_advance (b0, e0->advance); - next0 = (e0->next_index < L2_CLASSIFY_N_NEXT) ? + next0 = (e0->next_index < n_next_nodes) ? e0->next_index : next0; hits++; } @@ -304,7 +307,7 @@ l2_classify_node_fn (vlib_main_t * vm, t0->next_table_index); else { - next0 = (t0->miss_next_index < L2_CLASSIFY_N_NEXT) ? + next0 = (t0->miss_next_index < n_next_nodes) ? t0->miss_next_index : next0; misses++; break; @@ -318,7 +321,7 @@ l2_classify_node_fn (vlib_main_t * vm, vnet_buffer (b0)->l2_classify.opaque_index = e0->opaque_index; vlib_buffer_advance (b0, e0->advance); - next0 = (e0->next_index < L2_CLASSIFY_N_NEXT) ? + next0 = (e0->next_index < n_next_nodes) ? e0->next_index : next0; hits++; chain_hits++; @@ -393,11 +396,11 @@ VLIB_REGISTER_NODE (l2_classify_node) = { /* edit / add dispositions here */ .next_nodes = { - [L2_CLASSIFY_NEXT_DROP] = "error-drop", - [L2_CLASSIFY_NEXT_ETHERNET_INPUT] = "ethernet-input-not-l2", - [L2_CLASSIFY_NEXT_IP4_INPUT] = "ip4-input", - [L2_CLASSIFY_NEXT_IP6_INPUT] = "ip6-input", - [L2_CLASSIFY_NEXT_LI] = "li-hit", + [L2_CLASSIFY_NEXT_DROP] = "error-drop", + [L2_CLASSIFY_NEXT_ETHERNET_INPUT] = "ethernet-input-not-l2", + [L2_CLASSIFY_NEXT_IP4_INPUT] = "ip4-input", + [L2_CLASSIFY_NEXT_IP6_INPUT] = "ip6-input", + [L2_CLASSIFY_NEXT_LI] = "li-hit", }, }; /* *INDENT-ON* */ |