summaryrefslogtreecommitdiffstats
AgeCommit message (Expand)AuthorFilesLines
2019-05-17Fix punctuation fails in 2x pluginsDave Barach2-2/+2
2019-05-17Load vat plugins late in the init sequenceDave Barach1-1/+1
2019-05-1719.01.2 Release NotesAndrew Yourtchenko1-0/+9
2019-05-17UDP-Local: fix unregistered portsNeale Ranns1-64/+51
2019-05-17Fix 'terminal history off' crasherChris Luke1-7/+14
2019-05-17dpdk-ipsec: fix encrypt/decrypt single queueSergio Gonzalez Monroy6-39/+58
2019-05-17gbp: Add unit tests for contractsMohsin Kazmi1-1/+224
2019-05-16tests: refactor. Replace literal constant w/ named constant.Paul Vinciguerra14-216/+257
2019-05-16Add transport_opts to connect_sock bapiNathan Skrzypczak7-6/+28
2019-05-16docs: Update sphinx, requirements, support markdown tablesjdenisco9-30/+50
2019-05-16DOC ONLY: document VLIB_INIT_FUNCTION schemeDave Barach1-4/+49
2019-05-16init / exit function orderingDave Barach62-476/+959
2019-05-16Add default value for API Nat flagsMichal Cmarada1-0/+1
2019-05-15Add QUIC human readable error logsNathan Skrzypczak1-7/+56
2019-05-15IPSEC: remove CLI check for unsupported IPv6-AH - it is supportedNeale Ranns1-22/+0
2019-05-15Fix stats documentation with default socket nameIgor Mikhailov (imichail)1-2/+2
2019-05-15vpp_papi: remove dependency on environment var. VPP_API_DIR.Paul Vinciguerra2-16/+18
2019-05-15Remove unused function nat44_ha_resync() and error IN_PROGRESS.Jon Loeliger2-39/+0
2019-05-14tests: test_pipe.py. Fix missing import.Paul Vinciguerra1-4/+5
2019-05-14QUIC multi thread updateAloys Augustin6-281/+331
2019-05-14svm: improve fifo segment prealloc supportFlorin Coras5-200/+471
2019-05-14IPSEC coverity fixesNeale Ranns2-2/+4
2019-05-14IPSEC: remove unecessary pass by reference of sequence numberNeale Ranns4-5/+5
2019-05-14VPP-1649: fix coverity warning in api_format.cDave Barach1-1/+2
2019-05-14Preallocate mhash key_tmps vectorDave Barach3-24/+13
2019-05-14IPsec: increment tunnel intf tx countersMatthew Smith1-0/+9
2019-05-14Build packages for generic Arm architectureLijian.Zhang4-1/+19
2019-05-14rdma: update MAINTAINERS and add docBenoƮt Ganne3-0/+57
2019-05-14tests: fix TestMPLSPIC tests in test_mpls.py.Paul Vinciguerra1-28/+82
2019-05-14Coverity: Fix CID-198494 & CID-198388Dave Wallace2-2/+2
2019-05-14Unregister UDPC port only when ownedNathan Skrzypczak3-2/+9
2019-05-14make test: vcl fix OSError exception handlingDave Wallace1-1/+1
2019-05-14make test: Add QUIC external echo transfer testDave Wallace2-9/+131
2019-05-13Fix typoIgor Mikhailov (imichail)1-1/+1
2019-05-13Trivial Typo's in bier comments/docs.Paul Vinciguerra14-27/+27
2019-05-13vnet: remove macro definitionsZhiyong Yang1-3/+0
2019-05-13Fix VPP-1528 get the same IP address from DHCP server for two VPP DHCP clientsjackiechen19852-4/+2
2019-05-13remove dead code in rewrite.cNeale Ranns1-26/+0
2019-05-10cli: Add return value in cli_inbandOle Troan4-6/+47
2019-05-10Fix stat seg average vector rate computationDave Barach2-14/+53
2019-05-10tests: test/vpp_papi_provider.py Specify exception to catch.Paul Vinciguerra1-1/+1
2019-05-10Update ping cli .short_help.Paul Vinciguerra1-2/+2
2019-05-10docs: Add 1904jdenisco6-17/+133
2019-05-10Fix typo in nat44_cli.c:nat_ha_failover_command_fn.Paul Vinciguerra1-3/+3
2019-05-10zero-pad date string output.Paul Vinciguerra1-2/+2
2019-05-10vpp_transport_socket: make connect more resilientVratko Polak1-11/+32
2019-05-09session: segment manager fixesFlorin Coras4-19/+7
2019-05-09add mactime plugin unit / code coverage testsDave Barach12-30/+400
2019-05-09dpdk: fix return variable sizeZhiyong Yang1-2/+2
2019-05-09bapi: separate init shm reply from fd exchangeFlorin Coras1-1/+17
span>data); } /* speculatively enqueue b0 and b1 to the current next frame */ to_next[0] = bi0 = from[0]; to_next[1] = bi1 = from[1]; from += 2; to_next += 2; n_left_from -= 2; n_left_to_next -= 2; b0 = vlib_get_buffer (vm, bi0); sw_if_index0 = vnet_buffer (b0)->sw_if_index[VLIB_RX]; ip0 = vlib_buffer_get_current (b0); ccm0 = cm->adl_config_mains + VNET_ADL_IP4; c0 = vnet_get_config_data ( &ccm0->config_main, &adl_buffer (b0)->adl.current_config_index, &next0, sizeof (c0[0])); lb_index0 = ip4_fib_forwarding_lookup (c0->fib_index, &ip0->src_address); ASSERT (lb_index0 == ip4_fib_table_lookup_lb (ip4_fib_get(c0->fib_index), &ip0->src_address)); lb0 = load_balance_get (lb_index0); dpo0 = load_balance_get_bucket_i(lb0, 0); if (PREDICT_FALSE(dpo0->dpoi_type != DPO_RECEIVE)) { b0->error = node->errors[IP4_ADL_ALLOWLIST_ERROR_DROPPED]; allowed_packets--; next0 = RX_ADL_DROP; } b1 = vlib_get_buffer (vm, bi1); sw_if_index1 = vnet_buffer(b1)->sw_if_index[VLIB_RX]; ip1 = vlib_buffer_get_current (b1); ccm1 = cm->adl_config_mains + VNET_ADL_IP4; c1 = vnet_get_config_data (&ccm1->config_main, &adl_buffer (b1)->adl.current_config_index, &next1, sizeof (c1[0])); lb_index1 = ip4_fib_forwarding_lookup (c1->fib_index, &ip1->src_address); ASSERT (lb_index1 == ip4_fib_table_lookup_lb (ip4_fib_get(c1->fib_index), &ip1->src_address)); lb1 = load_balance_get (lb_index1); dpo1 = load_balance_get_bucket_i(lb1, 0); vlib_increment_combined_counter (vcm, thread_index, lb_index0, 1, vlib_buffer_length_in_chain (vm, b0) + sizeof(ethernet_header_t)); vlib_increment_combined_counter (vcm, thread_index, lb_index1, 1, vlib_buffer_length_in_chain (vm, b1) + sizeof(ethernet_header_t)); if (PREDICT_FALSE(dpo1->dpoi_type != DPO_RECEIVE)) { b1->error = node->errors[IP4_ADL_ALLOWLIST_ERROR_DROPPED]; allowed_packets--; next1 = RX_ADL_DROP; } if (PREDICT_FALSE((node->flags & VLIB_NODE_FLAG_TRACE) && (b0->flags & VLIB_BUFFER_IS_TRACED))) { ip4_adl_allowlist_trace_t *t = vlib_add_trace (vm, node, b0, sizeof (*t)); t->sw_if_index = sw_if_index0; t->next_index = next0; } if (PREDICT_FALSE((node->flags & VLIB_NODE_FLAG_TRACE) && (b1->flags & VLIB_BUFFER_IS_TRACED))) { ip4_adl_allowlist_trace_t *t = vlib_add_trace (vm, node, b1, sizeof (*t)); t->sw_if_index = sw_if_index1; t->next_index = next1; } /* 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; ip4_header_t * ip0; adl_config_main_t *ccm0; adl_config_data_t *c0; u32 lb_index0; const load_balance_t *lb0; const dpo_id_t *dpo0; /* speculatively enqueue b0 to the current next frame */ bi0 = from[0]; to_next[0] = bi0; from += 1; to_next += 1; n_left_from -= 1; n_left_to_next -= 1; b0 = vlib_get_buffer (vm, bi0); sw_if_index0 = vnet_buffer(b0)->sw_if_index[VLIB_RX]; ip0 = vlib_buffer_get_current (b0); ccm0 = cm->adl_config_mains + VNET_ADL_IP4; c0 = vnet_get_config_data (&ccm0->config_main, &adl_buffer (b0)->adl.current_config_index, &next0, sizeof (c0[0])); lb_index0 = ip4_fib_forwarding_lookup (c0->fib_index, &ip0->src_address); ASSERT (lb_index0 == ip4_fib_table_lookup_lb (ip4_fib_get (c0->fib_index), &ip0->src_address)); lb0 = load_balance_get (lb_index0); dpo0 = load_balance_get_bucket_i(lb0, 0); vlib_increment_combined_counter (vcm, thread_index, lb_index0, 1, vlib_buffer_length_in_chain (vm, b0) + sizeof(ethernet_header_t)); if (PREDICT_FALSE(dpo0->dpoi_type != DPO_RECEIVE)) { b0->error = node->errors[IP4_ADL_ALLOWLIST_ERROR_DROPPED]; allowed_packets--; next0 = RX_ADL_DROP; } if (PREDICT_FALSE((node->flags & VLIB_NODE_FLAG_TRACE) && (b0->flags & VLIB_BUFFER_IS_TRACED))) { ip4_adl_allowlist_trace_t *t = vlib_add_trace (vm, node, b0, sizeof (*t)); t->sw_if_index = sw_if_index0; t->next_index = next0; } /* 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); } vlib_put_next_frame (vm, node, next_index, n_left_to_next); } vlib_node_increment_counter (vm, node->node_index, IP4_ADL_ALLOWLIST_ERROR_ALLOWED, allowed_packets); return frame->n_vectors; } VLIB_REGISTER_NODE (ip4_adl_allowlist_node) = { .name = "ip4-adl-allowlist", .vector_size = sizeof (u32), .format_trace = format_ip4_adl_allowlist_trace, .type = VLIB_NODE_TYPE_INTERNAL, .n_errors = ARRAY_LEN(ip4_adl_allowlist_error_strings), .error_strings = ip4_adl_allowlist_error_strings, .n_next_nodes = ADL_RX_N_FEATURES, /* edit / add dispositions here */ .next_nodes = { [IP4_RX_ADL_ALLOWLIST] = "ip4-adl-allowlist", [IP6_RX_ADL_ALLOWLIST] = "ip6-adl-allowlist", [DEFAULT_RX_ADL_ALLOWLIST] = "default-adl-allowlist", [IP4_RX_ADL_INPUT] = "ip4-input", [IP6_RX_ADL_INPUT] = "ip6-input", [DEFAULT_RX_ADL_INPUT] = "ethernet-input", [RX_ADL_DROP] = "error-drop", }, }; static clib_error_t * ip4_allowlist_init (vlib_main_t * vm) { return 0; } VLIB_INIT_FUNCTION (ip4_allowlist_init);