aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/l2
AgeCommit message (Expand)AuthorFilesLines
2017-10-24Update L2 header offset after VLAN tag rewriteNeale Ranns1-1/+3
2017-10-24Add extern to *_main global variable declarations in header files.Dave Wallace3-2/+4
2017-10-09vppapigen: support per-file (major,minor,patch) version stampsDave Barach1-0/+2
2017-10-03Update L2FIB entry timestamp only if BD aging enabled (VPP-1002)John Lo2-3/+5
2017-10-03Repair vlib API socket serverDave Barach1-5/+7
2017-10-02L2-FIB:add mac learn events testEyal Bari1-56/+49
2017-09-15Update of free text tag patch for BDJerome Tollet3-4/+7
2017-09-07Support for bridge domain free text tagJerome Tollet4-2/+66
2017-09-03Improve L2FIB PDR/NDR performance (VPP-963)John Lo4-18/+30
2017-08-22Increase default MAC learn limit and check it in learn-update pathJohn Lo5-4/+8
2017-08-03Add support for API client to receive L2 MAC eventsJohn Lo8-160/+494
2017-07-31CLI:add l2 input/outut to "sh int features"Eyal Bari5-1/+51
2017-07-24SPAN:add l2 mirrorEyal Bari3-10/+16
2017-07-23Improve L2 Input/Output Feature Infrastructure and UsageJohn Lo13-319/+154
2017-07-20L2FWD:move vec_validate out of access functionEyal Bari2-2/+9
2017-07-19Add a bihash prefetchable bucket-level cacheDave Barach1-4/+4
2017-07-14Introduce l{2,3,4}_hdr_offset fields in the buffer metadataDamjan Marion1-1/+1
2017-07-13Fix crash with worker threads on 4K VXLAN/BD setup (VPP-907)John Lo7-167/+49
2017-07-11L2INPUT:fix features mask cailculationEyal Bari1-6/+10
2017-06-27L2-LEARN:fix l2fib entry seq num not updated on hit (VPP-888)Eyal Bari5-87/+64
2017-06-19L2FWD:fix seq_num overwritten + validate l2fib entries when forwardingEyal Bari7-53/+87
2017-06-14ETH:fix l2_len/vlan count mismatch for > 2 tagsEyal Bari2-15/+3
2017-06-12L2FIB:fix crash in show with deleted subif entriesEyal Bari1-4/+7
2017-05-20API: Cleaning up message naming that does not follow the conventionsOle Troan2-52/+41
2017-05-19Enforce Bridge Domain ID range to match 24-bit VNI rangeJohn Lo3-7/+20
2017-05-15L2BD/API:fix bd dump to ignore unknown bd_idEyal Bari1-19/+20
2017-05-08L2FIB:CLI/API to flush all non-static entriesEyal Bari6-86/+156
2017-05-05Fix L2FIB learn counter and memory cleanup of mac_by_ip6 hash tableJohn Lo2-5/+16
2017-05-03L2FIB:flush interface learned macs on downEyal Bari4-39/+42
2017-05-02Prevent Bridge Domain operations on BD 0.Jon Loeliger2-2/+62
2017-04-28Fix memory leak on deletion of BD (bridge domain)John Lo1-3/+9
2017-04-25"autoreply" flag: autogenerate standard xxx_reply_t messagesDave Barach1-88/+8
2017-04-24BD:unify bridge domain creation codeEyal Bari3-106/+86
2017-04-06VPP-686: create bridge-domainChoonho Son1-2/+4
2017-04-06Use thread local storage for thread indexDamjan Marion3-11/+11
2017-04-05L2FIB:add l2fib_flush_bd l2fib_flush_int apisEyal Bari2-0/+82
2017-04-04BD/API:add bridge_domain_set_mac_age apiEyal Bari4-10/+55
2017-04-01CLI: create/delete bridge-domainChoonho Son2-1/+201
2017-03-28Implement MAC Flush for BD or Interface from the L2FIBJohn Lo8-46/+253
2017-03-16vlib: make runtime_data thread-localDamjan Marion2-0/+31
2017-03-07fix gcc 5.4 warning: argument to 'sizeof' in 'memcpy' call is the same expres...Gabriel Ganne2-10/+8
2017-03-03VPP-651: Ensure sw_if_index to node mapping for L2 output path is only done v...Andrew Yourtchenko3-3/+17
2017-03-02Clean up binary api message handler registration issuesDave Barach1-22/+0
2017-03-02bridge domain: fix members reordered when removingEyal Bari1-1/+1
2017-02-28Clear L2 output config on interface mode change to L3 (VPP-651)John Lo1-4/+11
2017-02-22VPP-635: CLI Memory leak with invalid parameterBilly McFall2-15/+45
2017-02-21VPP-540 : pbb tag rewrite detailsPavel Kotucek3-52/+140
2017-02-17l2 input: avoid per-packet trace checks in the fast pathDave Barach4-25/+54
2017-01-27API refactoring : l2 (add)Pavel Kotucek2-1/+147
2017-01-10API refactoring : l2, mpls, srPavel Kotucek2-3/+599
>, bi0); biftp0 = vlib_buffer_get_current (b0); vlib_buffer_advance(b0, sizeof(bift0)); bift0 = clib_net_to_host_u32(*biftp0); /* * Do the lookup based on the first 20 bits, i.e. the * encoding of the set, sub-domain and BSL */ dpo0 = bier_bift_dp_lookup(bift0); /* * save the TTL for later during egress */ vnet_buffer(b0)->mpls.ttl = vnet_mpls_uc_get_ttl(bift0); next0 = dpo0->dpoi_next_node; vnet_buffer(b0)->ip.adj_index[VLIB_TX] = dpo0->dpoi_index; if (PREDICT_FALSE(b0->flags & VLIB_BUFFER_IS_TRACED)) { bier_bift_input_trace_t *tr; tr = vlib_add_trace(vm, node, b0, sizeof (*tr)); tr->bift_id = bift0; } vlib_validate_buffer_enqueue_x1(vm, node, next_index, to_next, n_left_to_next, bi0, next0); } vlib_put_next_frame(vm, node, next_index, n_left_to_next); } vlib_node_increment_counter(vm, bier_bift_input_node.index, BIER_INPUT_ERROR_PKTS_VALID, from_frame->n_vectors); return (from_frame->n_vectors); } static u8 * format_bier_bift_input_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 *); bier_bift_input_trace_t * t = va_arg (*args, bier_bift_input_trace_t *); s = format (s, "BIFT-ID:[%U]", format_bier_bift_id, vnet_mpls_uc_get_label(t->bift_id)); return s; } VLIB_REGISTER_NODE (bier_bift_input_node) = { .function = bier_bift_input, .name = "bier-bift-input", /* Takes a vector of packets. */ .vector_size = sizeof (u32), .n_errors = BIER_INPUT_N_ERROR, .error_strings = bier_error_strings, .n_next_nodes = 0, .format_trace = format_bier_bift_input_trace, }; clib_error_t * show_bier_bift_cmd (vlib_main_t * vm, unformat_input_t * input, vlib_cli_command_t * cmd) { clib_error_t * error = NULL; u32 hdr_len, set, sub_domain; set = hdr_len = sub_domain = ~0; while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) { if (unformat (input, "sd %d", &sub_domain)) { ; } else if (unformat (input, "set %d", &set)) { ; } else if (unformat (input, "bsl %d", &hdr_len)) { ; } else { error = unformat_parse_error (input); goto done; } } if (NULL == bier_bift_table) { vlib_cli_output(vm, "no BIFT entries"); goto done; } if (~0 == set) { u32 ii; for (ii = 0; ii < BIER_BIFT_N_ENTRIES; ii++) { if (!dpo_is_drop(&bier_bift_table->bblt_dpos[ii])) { bier_hdr_len_id_t bsl; bier_bift_id_decode(ii, &set, &sub_domain, &bsl); vlib_cli_output(vm, "set: %d, sub-domain:%d, BSL:%U", set, sub_domain, format_bier_hdr_len_id, bsl); vlib_cli_output(vm, " %U", format_dpo_id, &bier_bift_table->bblt_dpos[ii], 0); } } } else { bier_bift_id_t id; id = bier_bift_id_encode(set, sub_domain, bier_hdr_bit_len_to_id(hdr_len)); if (!dpo_is_drop(&bier_bift_table->bblt_dpos[id])) { vlib_cli_output(vm, "set: %d, sub-domain:%d, BSL:%U", set, sub_domain, format_bier_hdr_len_id, hdr_len); vlib_cli_output(vm, " %U", format_dpo_id, &bier_bift_table->bblt_dpos[id], 0); } } done: return (error); } VLIB_CLI_COMMAND (show_bier_bift_command, static) = { .path = "show bier bift", .short_help = "show bier bift [set <value> sd <value> bsl <value>]", .function = show_bier_bift_cmd, };