From ed47b4cd4e1793ba9b3974f3026e8161d3b598a4 Mon Sep 17 00:00:00 2001 From: Dave Barach Date: Mon, 29 Aug 2016 16:31:47 -0400 Subject: [PATCH] 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 --- vnet/vnet/l2/l2_classify.c | 19 +++++++++++-------- 1 file 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* */ -- 2.16.6