diff options
author | Dave Barach <dave@barachs.net> | 2016-08-15 15:31:15 -0400 |
---|---|---|
committer | Dave Barach <dave@barachs.net> | 2016-08-15 15:31:27 -0400 |
commit | 97d8dc2317780740af5faa3dc205d95d838fbd04 (patch) | |
tree | ba0433acbad4a3577cbdf034ccb0895dff868750 /vnet/vnet/l2/l2_patch.c | |
parent | a5abdeb296f3e395708e89d29093ab37fb6cae2f (diff) |
VPP-257 Coding standards cleanup for vnet/vnet/l2
Change-Id: Iba5f33675bb2eb806e9becdc42b11da5d3932d55
Signed-off-by: Dave Barach <dave@barachs.net>
Diffstat (limited to 'vnet/vnet/l2/l2_patch.c')
-rw-r--r-- | vnet/vnet/l2/l2_patch.c | 355 |
1 files changed, 186 insertions, 169 deletions
diff --git a/vnet/vnet/l2/l2_patch.c b/vnet/vnet/l2/l2_patch.c index 0839142b8ad..cc35d32c824 100644 --- a/vnet/vnet/l2/l2_patch.c +++ b/vnet/vnet/l2/l2_patch.c @@ -18,7 +18,8 @@ #include <vnet/ethernet/ethernet.h> #include <vppinfra/error.h> -typedef struct { +typedef struct +{ u32 cached_next_index; u32 cached_rx_sw_if_index; @@ -27,24 +28,26 @@ typedef struct { u32 *tx_sw_if_index_by_rx_sw_if_index; /* convenience variables */ - vlib_main_t * vlib_main; - vnet_main_t * vnet_main; + vlib_main_t *vlib_main; + vnet_main_t *vnet_main; } l2_patch_main_t; -typedef struct { +typedef struct +{ u32 rx_sw_if_index; u32 tx_sw_if_index; } l2_patch_trace_t; /* packet trace format function */ -static u8 * format_l2_patch_trace (u8 * s, va_list * args) +static u8 * +format_l2_patch_trace (u8 * s, va_list * args) { CLIB_UNUSED (vlib_main_t * vm) = va_arg (*args, vlib_main_t *); CLIB_UNUSED (vlib_node_t * node) = va_arg (*args, vlib_node_t *); - l2_patch_trace_t * t = va_arg (*args, l2_patch_trace_t *); - + l2_patch_trace_t *t = va_arg (*args, l2_patch_trace_t *); + s = format (s, "L2_PATCH: rx %d tx %d", t->rx_sw_if_index, - t->tx_sw_if_index); + t->tx_sw_if_index); return s; } @@ -56,35 +59,36 @@ static vlib_node_registration_t l2_patch_node; _(PATCHED, "L2 patch packets") \ _(DROPPED, "L2 patch misconfigured drops") -typedef enum { +typedef enum +{ #define _(sym,str) L2_PATCH_ERROR_##sym, foreach_l2_patch_error #undef _ - L2_PATCH_N_ERROR, + L2_PATCH_N_ERROR, } l2_patch_error_t; -static char * l2_patch_error_strings[] = { +static char *l2_patch_error_strings[] = { #define _(sym,string) string, foreach_l2_patch_error #undef _ }; -typedef enum { +typedef enum +{ L2_PATCH_NEXT_DROP, L2_PATCH_N_NEXT, } l2_patch_next_t; static uword l2_patch_node_fn (vlib_main_t * vm, - vlib_node_runtime_t * node, - vlib_frame_t * frame) + vlib_node_runtime_t * node, vlib_frame_t * frame) { - u32 n_left_from, * from, * to_next; + u32 n_left_from, *from, *to_next; l2_patch_next_t next_index; - l2_patch_main_t * l2pm = &l2_patch_main; + l2_patch_main_t *l2pm = &l2_patch_main; vlib_node_t *n = vlib_get_node (vm, l2_patch_node.index); u32 node_counter_base_index = n->error_heap_index; - vlib_error_main_t * em = &vm->error_main; + vlib_error_main_t *em = &vm->error_main; from = vlib_frame_vector_args (frame); n_left_from = frame->n_vectors; @@ -94,30 +98,29 @@ l2_patch_node_fn (vlib_main_t * vm, { u32 n_left_to_next; - vlib_get_next_frame (vm, node, next_index, - to_next, n_left_to_next); + vlib_get_next_frame (vm, node, next_index, to_next, n_left_to_next); while (n_left_from >= 4 && n_left_to_next >= 2) { - u32 bi0, bi1; - vlib_buffer_t * b0, * b1; - u32 next0, next1; - u32 sw_if_index0, sw_if_index1; - + u32 bi0, bi1; + vlib_buffer_t *b0, *b1; + u32 next0, next1; + u32 sw_if_index0, sw_if_index1; + /* Prefetch next iteration. */ { - vlib_buffer_t * p2, * p3; - + vlib_buffer_t *p2, *p3; + p2 = vlib_get_buffer (vm, from[2]); p3 = vlib_get_buffer (vm, from[3]); - + vlib_prefetch_buffer_header (p2, LOAD); vlib_prefetch_buffer_header (p3, LOAD); - /* So stupid / simple, we don't need to prefetch data */ + /* So stupid / simple, we don't need to prefetch data */ } - /* speculatively enqueue b0 and b1 to the current next frame */ + /* speculatively enqueue b0 and b1 to the current next frame */ to_next[0] = bi0 = from[0]; to_next[1] = bi1 = from[1]; from += 2; @@ -128,62 +131,62 @@ l2_patch_node_fn (vlib_main_t * vm, b0 = vlib_get_buffer (vm, bi0); b1 = vlib_get_buffer (vm, bi1); - sw_if_index0 = vnet_buffer(b0)->sw_if_index[VLIB_RX]; - sw_if_index1 = vnet_buffer(b1)->sw_if_index[VLIB_RX]; - - ASSERT(l2pm->tx_next_by_rx_sw_if_index[sw_if_index0] != ~0); - ASSERT(l2pm->tx_sw_if_index_by_rx_sw_if_index[sw_if_index0] != ~0); - ASSERT(l2pm->tx_next_by_rx_sw_if_index[sw_if_index1] != ~0); - ASSERT(l2pm->tx_sw_if_index_by_rx_sw_if_index[sw_if_index1] != ~0); - - if (PREDICT_TRUE (sw_if_index0 == l2pm->cached_rx_sw_if_index)) - next0 = l2pm->cached_next_index; - else - { - next0 = l2pm->tx_next_by_rx_sw_if_index[sw_if_index0]; - l2pm->cached_rx_sw_if_index = sw_if_index0; - l2pm->cached_next_index = next0; - } - - if (PREDICT_TRUE (sw_if_index1 == l2pm->cached_rx_sw_if_index)) - next1 = l2pm->cached_next_index; - else - next1 = l2pm->tx_next_by_rx_sw_if_index [sw_if_index1]; - - if (PREDICT_FALSE((node->flags & VLIB_NODE_FLAG_TRACE))) - { - if (b0->flags & VLIB_BUFFER_IS_TRACED) - { - l2_patch_trace_t *t = - vlib_add_trace (vm, node, b0, sizeof (*t)); - t->rx_sw_if_index = sw_if_index0; - t->tx_sw_if_index = - l2pm->tx_sw_if_index_by_rx_sw_if_index [sw_if_index0]; - } - if (b1->flags & VLIB_BUFFER_IS_TRACED) - { - l2_patch_trace_t *t = - vlib_add_trace (vm, node, b1, sizeof (*t)); - t->rx_sw_if_index = sw_if_index1; - t->tx_sw_if_index = - l2pm->tx_sw_if_index_by_rx_sw_if_index [sw_if_index1]; - } - } - - /* verify speculative enqueues, maybe switch current next frame */ - vlib_validate_buffer_enqueue_x2 (vm, node, next_index, - to_next, n_left_to_next, - bi0, bi1, next0, next1); - } - + sw_if_index0 = vnet_buffer (b0)->sw_if_index[VLIB_RX]; + sw_if_index1 = vnet_buffer (b1)->sw_if_index[VLIB_RX]; + + ASSERT (l2pm->tx_next_by_rx_sw_if_index[sw_if_index0] != ~0); + ASSERT (l2pm->tx_sw_if_index_by_rx_sw_if_index[sw_if_index0] != ~0); + ASSERT (l2pm->tx_next_by_rx_sw_if_index[sw_if_index1] != ~0); + ASSERT (l2pm->tx_sw_if_index_by_rx_sw_if_index[sw_if_index1] != ~0); + + if (PREDICT_TRUE (sw_if_index0 == l2pm->cached_rx_sw_if_index)) + next0 = l2pm->cached_next_index; + else + { + next0 = l2pm->tx_next_by_rx_sw_if_index[sw_if_index0]; + l2pm->cached_rx_sw_if_index = sw_if_index0; + l2pm->cached_next_index = next0; + } + + if (PREDICT_TRUE (sw_if_index1 == l2pm->cached_rx_sw_if_index)) + next1 = l2pm->cached_next_index; + else + next1 = l2pm->tx_next_by_rx_sw_if_index[sw_if_index1]; + + if (PREDICT_FALSE ((node->flags & VLIB_NODE_FLAG_TRACE))) + { + if (b0->flags & VLIB_BUFFER_IS_TRACED) + { + l2_patch_trace_t *t = + vlib_add_trace (vm, node, b0, sizeof (*t)); + t->rx_sw_if_index = sw_if_index0; + t->tx_sw_if_index = + l2pm->tx_sw_if_index_by_rx_sw_if_index[sw_if_index0]; + } + if (b1->flags & VLIB_BUFFER_IS_TRACED) + { + l2_patch_trace_t *t = + vlib_add_trace (vm, node, b1, sizeof (*t)); + t->rx_sw_if_index = sw_if_index1; + t->tx_sw_if_index = + l2pm->tx_sw_if_index_by_rx_sw_if_index[sw_if_index1]; + } + } + + /* verify speculative enqueues, maybe switch current next frame */ + vlib_validate_buffer_enqueue_x2 (vm, node, next_index, + to_next, n_left_to_next, + bi0, bi1, next0, next1); + } + while (n_left_from > 0 && n_left_to_next > 0) { - u32 bi0; - vlib_buffer_t * b0; - u32 next0; - u32 sw_if_index0; + u32 bi0; + vlib_buffer_t *b0; + u32 next0; + u32 sw_if_index0; - /* speculatively enqueue b0 to the current next frame */ + /* speculatively enqueue b0 to the current next frame */ bi0 = from[0]; to_next[0] = bi0; from += 1; @@ -193,33 +196,33 @@ l2_patch_node_fn (vlib_main_t * vm, b0 = vlib_get_buffer (vm, bi0); - sw_if_index0 = vnet_buffer(b0)->sw_if_index[VLIB_RX]; - - ASSERT(l2pm->tx_next_by_rx_sw_if_index[sw_if_index0] != ~0); - ASSERT(l2pm->tx_sw_if_index_by_rx_sw_if_index[sw_if_index0] != ~0); - - if (PREDICT_TRUE (sw_if_index0 == l2pm->cached_rx_sw_if_index)) - next0 = l2pm->cached_next_index; - else - { - next0 = l2pm->tx_next_by_rx_sw_if_index [sw_if_index0]; - l2pm->cached_rx_sw_if_index = sw_if_index0; - l2pm->cached_next_index = next0; - } - - if (PREDICT_FALSE((node->flags & VLIB_NODE_FLAG_TRACE))) - { - if (b0->flags & VLIB_BUFFER_IS_TRACED) - { - l2_patch_trace_t *t = - vlib_add_trace (vm, node, b0, sizeof (*t)); - t->rx_sw_if_index = sw_if_index0; - t->tx_sw_if_index = - l2pm->tx_sw_if_index_by_rx_sw_if_index [sw_if_index0]; - } - } - - /* verify speculative enqueue, maybe switch current next frame */ + sw_if_index0 = vnet_buffer (b0)->sw_if_index[VLIB_RX]; + + ASSERT (l2pm->tx_next_by_rx_sw_if_index[sw_if_index0] != ~0); + ASSERT (l2pm->tx_sw_if_index_by_rx_sw_if_index[sw_if_index0] != ~0); + + if (PREDICT_TRUE (sw_if_index0 == l2pm->cached_rx_sw_if_index)) + next0 = l2pm->cached_next_index; + else + { + next0 = l2pm->tx_next_by_rx_sw_if_index[sw_if_index0]; + l2pm->cached_rx_sw_if_index = sw_if_index0; + l2pm->cached_next_index = next0; + } + + if (PREDICT_FALSE ((node->flags & VLIB_NODE_FLAG_TRACE))) + { + if (b0->flags & VLIB_BUFFER_IS_TRACED) + { + l2_patch_trace_t *t = + vlib_add_trace (vm, node, b0, sizeof (*t)); + t->rx_sw_if_index = sw_if_index0; + t->tx_sw_if_index = + l2pm->tx_sw_if_index_by_rx_sw_if_index[sw_if_index0]; + } + } + + /* verify speculative enqueue, maybe switch current next frame */ vlib_validate_buffer_enqueue_x1 (vm, node, next_index, to_next, n_left_to_next, bi0, next0); @@ -228,19 +231,20 @@ l2_patch_node_fn (vlib_main_t * vm, vlib_put_next_frame (vm, node, next_index, n_left_to_next); } - em->counters[node_counter_base_index + L2_PATCH_ERROR_PATCHED] += + em->counters[node_counter_base_index + L2_PATCH_ERROR_PATCHED] += frame->n_vectors; return frame->n_vectors; } +/* *INDENT-OFF* */ VLIB_REGISTER_NODE (l2_patch_node, static) = { .function = l2_patch_node_fn, .name = "l2_patch", .vector_size = sizeof (u32), .format_trace = format_l2_patch_trace, .type = VLIB_NODE_TYPE_INTERNAL, - + .n_errors = ARRAY_LEN(l2_patch_error_strings), .error_strings = l2_patch_error_strings, @@ -251,16 +255,17 @@ VLIB_REGISTER_NODE (l2_patch_node, static) = { [L2_PATCH_NEXT_DROP] = "error-drop", }, }; +/* *INDENT-ON* */ VLIB_NODE_FUNCTION_MULTIARCH (l2_patch_node, l2_patch_node_fn) - -int vnet_l2_patch_add_del (u32 rx_sw_if_index, u32 tx_sw_if_index, int is_add) + int vnet_l2_patch_add_del (u32 rx_sw_if_index, u32 tx_sw_if_index, + int is_add) { - l2_patch_main_t * l2pm = &l2_patch_main; - vnet_hw_interface_t * rxhi, *txhi; + l2_patch_main_t *l2pm = &l2_patch_main; + vnet_hw_interface_t *rxhi, *txhi; u32 tx_next_index; - /* + /* * We assume that the API msg handler has used 2x VALIDATE_SW_IF_INDEX * macros... */ @@ -278,50 +283,49 @@ int vnet_l2_patch_add_del (u32 rx_sw_if_index, u32 tx_sw_if_index, int is_add) if (is_add) { tx_next_index = vlib_node_add_next (l2pm->vlib_main, - l2_patch_node.index, - txhi->output_node_index); + l2_patch_node.index, + txhi->output_node_index); vec_validate_init_empty (l2pm->tx_next_by_rx_sw_if_index, rx_sw_if_index, ~0); - + l2pm->tx_next_by_rx_sw_if_index[rx_sw_if_index] = tx_next_index; vec_validate_init_empty (l2pm->tx_sw_if_index_by_rx_sw_if_index, rx_sw_if_index, ~0); - l2pm->tx_sw_if_index_by_rx_sw_if_index[rx_sw_if_index] - = txhi->sw_if_index; - - ethernet_set_flags (l2pm->vnet_main, rxhi->hw_if_index, - ETHERNET_INTERFACE_FLAG_ACCEPT_ALL); - - vnet_hw_interface_rx_redirect_to_node (l2pm->vnet_main, - rxhi->hw_if_index, - l2_patch_node.index); + l2pm->tx_sw_if_index_by_rx_sw_if_index[rx_sw_if_index] + = txhi->sw_if_index; + + ethernet_set_flags (l2pm->vnet_main, rxhi->hw_if_index, + ETHERNET_INTERFACE_FLAG_ACCEPT_ALL); + + vnet_hw_interface_rx_redirect_to_node (l2pm->vnet_main, + rxhi->hw_if_index, + l2_patch_node.index); } else { - ethernet_set_flags (l2pm->vnet_main, rxhi->hw_if_index, - 0 /* disable promiscuous mode */); + ethernet_set_flags (l2pm->vnet_main, rxhi->hw_if_index, + 0 /* disable promiscuous mode */ ); - vnet_hw_interface_rx_redirect_to_node (l2pm->vnet_main, - rxhi->hw_if_index, - ~0 /* disable */); + vnet_hw_interface_rx_redirect_to_node (l2pm->vnet_main, + rxhi->hw_if_index, + ~0 /* disable */ ); if (vec_len (l2pm->tx_next_by_rx_sw_if_index) > rx_sw_if_index) - { - l2pm->tx_next_by_rx_sw_if_index[rx_sw_if_index] = ~0; - l2pm->tx_sw_if_index_by_rx_sw_if_index[rx_sw_if_index] = ~0; - } + { + l2pm->tx_next_by_rx_sw_if_index[rx_sw_if_index] = ~0; + l2pm->tx_sw_if_index_by_rx_sw_if_index[rx_sw_if_index] = ~0; + } } - + return 0; } static clib_error_t * test_patch_command_fn (vlib_main_t * vm, - unformat_input_t * input, - vlib_cli_command_t * cmd) + unformat_input_t * input, vlib_cli_command_t * cmd) { - l2_patch_main_t * l2pm = &l2_patch_main; - unformat_input_t _line_input, * line_input = &_line_input; + l2_patch_main_t *l2pm = &l2_patch_main; + unformat_input_t _line_input, *line_input = &_line_input; u32 rx_sw_if_index, tx_sw_if_index; int rv; int rx_set = 0; @@ -329,20 +333,21 @@ test_patch_command_fn (vlib_main_t * vm, int is_add = 1; /* Get a line of input. */ - if (! unformat_user (input, unformat_line_input, line_input)) + if (!unformat_user (input, unformat_line_input, line_input)) return 0; while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT) { if (unformat (line_input, "rx %U", unformat_vnet_sw_interface, - l2pm->vnet_main, &rx_sw_if_index)) - rx_set = 1; + l2pm->vnet_main, &rx_sw_if_index)) + rx_set = 1; else if (unformat (line_input, "tx %U", unformat_vnet_sw_interface, - l2pm->vnet_main, &tx_sw_if_index)) - tx_set = 1; + l2pm->vnet_main, &tx_sw_if_index)) + tx_set = 1; else if (unformat (line_input, "del")) - is_add = 0; - else break; + is_add = 0; + else + break; } if (rx_set == 0) @@ -365,35 +370,36 @@ test_patch_command_fn (vlib_main_t * vm, return clib_error_return (0, "tx interface not a physical port"); default: - return clib_error_return - (0, "WARNING: vnet_l2_patch_add_del returned %d", rv); + return clib_error_return + (0, "WARNING: vnet_l2_patch_add_del returned %d", rv); } - + return 0; } +/* *INDENT-OFF* */ VLIB_CLI_COMMAND (test_patch_command, static) = { .path = "test l2patch", - .short_help = + .short_help = "rx <intfc> tx <intfc> [del]", .function = test_patch_command_fn, }; +/* *INDENT-ON* */ -// Display the contents of the l2patch table. +/** Display the contents of the l2patch table. */ static clib_error_t * -show_l2patch (vlib_main_t * vm, - unformat_input_t * input, - vlib_cli_command_t * cmd) +show_l2patch (vlib_main_t * vm, + unformat_input_t * input, vlib_cli_command_t * cmd) { - l2_patch_main_t * l2pm = &l2_patch_main; + l2_patch_main_t *l2pm = &l2_patch_main; u32 rx_sw_if_index; u32 no_entries = 1; - ASSERT(vec_len(l2pm->tx_next_by_rx_sw_if_index) == - vec_len(l2pm->tx_sw_if_index_by_rx_sw_if_index)); - - for (rx_sw_if_index = 0; - rx_sw_if_index < vec_len (l2pm->tx_sw_if_index_by_rx_sw_if_index); + ASSERT (vec_len (l2pm->tx_next_by_rx_sw_if_index) == + vec_len (l2pm->tx_sw_if_index_by_rx_sw_if_index)); + + for (rx_sw_if_index = 0; + rx_sw_if_index < vec_len (l2pm->tx_sw_if_index_by_rx_sw_if_index); rx_sw_if_index++) { u32 tx_sw_if_index = @@ -404,8 +410,8 @@ show_l2patch (vlib_main_t * vm, vlib_cli_output (vm, "%26U -> %U", format_vnet_sw_if_index_name, l2pm->vnet_main, rx_sw_if_index, - format_vnet_sw_if_index_name, - l2pm->vnet_main,tx_sw_if_index); + format_vnet_sw_if_index_name, + l2pm->vnet_main, tx_sw_if_index); } } @@ -415,20 +421,31 @@ show_l2patch (vlib_main_t * vm, return 0; } +/* *INDENT-OFF* */ VLIB_CLI_COMMAND (show_l2patch_cli, static) = { .path = "show l2patch", .short_help = "Show l2 interface cross-connect entries", .function = show_l2patch, }; +/* *INDENT-ON* */ -clib_error_t *l2_patch_init (vlib_main_t *vm) +clib_error_t * +l2_patch_init (vlib_main_t * vm) { - l2_patch_main_t * mp = &l2_patch_main; - + l2_patch_main_t *mp = &l2_patch_main; + mp->vlib_main = vm; - mp->vnet_main = vnet_get_main(); + mp->vnet_main = vnet_get_main (); return 0; } VLIB_INIT_FUNCTION (l2_patch_init); + +/* + * fd.io coding-style-patch-verification: ON + * + * Local Variables: + * eval: (c-set-style "gnu") + * End: + */ |