summaryrefslogtreecommitdiffstats
path: root/src/plugins/acl
AgeCommit message (Expand)AuthorFilesLines
2020-02-25feature: provide a u16 version of vnet_feature_nextNeale Ranns1-3/+2
2020-02-11vppinfra: remove the historical mheap memory allocatorDave Barach2-50/+3
2020-01-13acl: Remove unsued typeNeale Ranns2-53/+31
2020-01-08acl: add FEATURE.yamlAndrew Yourtchenko1-0/+26
2019-12-17ip: Protocol Independent IP NeighborsNeale Ranns2-4/+3
2019-12-14tests: changes for scapy 2.4.3 migrationsnaramre1-1/+1
2019-12-03classify: API cleanupJakub Grajciar1-90/+8
2019-11-05misc: Fix python scripts shebang lineRenato Botelho do Couto5-5/+5
2019-10-31acl: add missing square brackets to vat_help option in acl apiJieqiang Wang1-2/+2
2019-10-21acl: l2 classify test support python3Ole Troan1-2/+2
2019-10-17tests: python3 changes for span and aclplugin testsnaramre2-7/+7
2019-10-10acl: remove api boilerplateOle Troan5-172/+44
2019-10-03acl: fix intermittent test failureAndrew Yourtchenko1-9/+9
2019-09-27acl: remove api boilerplateOle Troan2-92/+12
2019-09-16api: autogenerate api trace print/endianOle Troan3-1/+55
2019-08-28acl: perform a sanity check of ACL rules before creating ACLAndrew Yourtchenko1-0/+81
2019-08-22tests: move plugin tests to src/plugins/*/testDave Wallace5-0/+4785
2019-08-20vppapigen: remove support for legacy typedefsPaul Vinciguerra2-57/+2
2019-08-16acl: fix stats-segment counters validation on acl updateAndrew Yourtchenko2-8/+46
2019-07-29api acl: breakout acl_types.api for reuse by othersPaul Vinciguerra2-79/+101
2019-07-24acl: implement countersAndrew Yourtchenko5-9/+183
2019-07-09acl: perform the ACL-as-a-service user registrations in global heapAndrew Yourtchenko2-10/+14
2019-07-09vat: unload unused vat pluginsDave Barach1-18/+2
2019-05-03plugins: clean up plugin descriptionsDave Wallace1-1/+1
2019-04-10API: Fix shared memory only action handlers.Ole Troan1-7/+5
2019-03-22acl-plugin: get rid of doubly-linked list fields in hash applied ACEsAndrew Yourtchenko2-99/+35
2019-03-22acl-plugin: tuplemerge: fix a crash during soak test with split partitionAndrew Yourtchenko1-7/+11
2019-03-22acl-plugin: get rid of a separate "count" field in the linear acl structAndrew Yourtchenko4-18/+18
2019-02-19acl-plugin: split the dataplane function into two, save 10sec in compile timeAndrew Yourtchenko1-87/+110
2019-02-14Add -fno-common compile optionBenoƮt Ganne1-1/+1
2018-12-11New api in order to get max entries of connection table is added.Khers3-5/+83
2018-11-23acl-plugin: fix coverity error that the fix related for [VPP-1502] has triggeredAndrew Yourtchenko1-9/+13
2018-11-22acl-plugin: optimize hash memory usage + fix the startup config parsing for m...Andrew Yourtchenko3-7/+33
2018-11-20acl-plugin: performance optimizations for established connectionsAndrew Yourtchenko3-197/+541
2018-11-15acl-plugin: fix coverity error 188909 in unit-test codeAndrew Yourtchenko1-1/+0
2018-11-14Remove c-11 memcpy checks from perf-critical codeDave Barach1-3/+3
2018-11-05acl-plugin: 5-tuple parse: get rid of memcpy and move to flags vs. bitfieldsAndrew Yourtchenko3-80/+77
2018-10-26acl-plugin: fix the node multiarch function selectionAndrew Yourtchenko2-33/+22
2018-10-25acl-plugin: "show acl-plugin acl" ACE# is truncated to 4 digits in outputAndrew Yourtchenko1-1/+1
2018-10-24acl-plugin: introduce a format function for l4 session keyAndrew Yourtchenko3-48/+77
2018-10-23c11 safe string handling supportDave Barach4-61/+61
2018-10-20acl-plugin: use the L2 feature arc infrastructure instead of L2 classifier fo...Andrew Yourtchenko3-699/+304
2018-10-19vppinfra: add atomic macros for __sync builtinsSirshak Das1-3/+3
2018-10-17acl-plugin: tuplemerge: refresh the pointer to hash-readied ACL entries per e...Andrew Yourtchenko1-0/+2
2018-10-10acl-plugin: reduce the syslog level for debug messagesAndrew Yourtchenko1-5/+6
2018-10-04acl-plugin: tuplemerge: avoid batch-resize of the applied entries vector - VP...Andrew Yourtchenko1-2/+6
2018-09-26acl-plugin: fix the stateful ICMP handling and add testcasesAndrew Yourtchenko1-39/+40
2018-09-25acl-plugin: optimize session idle timer checksAndrew Yourtchenko5-32/+93
2018-09-24Trivial: Clean up some typos.Paul Vinciguerra9-14/+14
2018-09-14acl-plugin: do not do clib_smp_atomic_add on per-worker countersAndrew Yourtchenko1-2/+2
ss="p">[VLIB_TX]; uei1 = vnet_buffer (b1)->ip.adj_index[VLIB_TX]; vlib_increment_combined_counter (cm, thread_index, uei0, 1, vlib_buffer_length_in_chain (vm, b0)); vlib_increment_combined_counter (cm, thread_index, uei1, 1, vlib_buffer_length_in_chain (vm, b1)); /* Rewrite packet header and updates lengths. */ ue0 = udp_encap_get (uei0); ue1 = udp_encap_get (uei1); /* Paint */ if (is_encap_v6) { const u8 n_bytes = sizeof (udp_header_t) + sizeof (ip6_header_t); ip_udp_encap_two (vm, b0, b1, (u8 *) & ue0->ue_hdrs, (u8 *) & ue1->ue_hdrs, n_bytes, 0); if (PREDICT_FALSE (b0->flags & VLIB_BUFFER_IS_TRACED)) { udp6_encap_trace_t *tr = vlib_add_trace (vm, node, b0, sizeof (*tr)); tr->udp = ue0->ue_hdrs.ip6.ue_udp; tr->ip = ue0->ue_hdrs.ip6.ue_ip6; } if (PREDICT_FALSE (b1->flags & VLIB_BUFFER_IS_TRACED)) { udp6_encap_trace_t *tr = vlib_add_trace (vm, node, b1, sizeof (*tr)); tr->udp = ue1->ue_hdrs.ip6.ue_udp; tr->ip = ue1->ue_hdrs.ip6.ue_ip6; } } else { const u8 n_bytes = sizeof (udp_header_t) + sizeof (ip4_header_t); ip_udp_encap_two (vm, b0, b1, (u8 *) & ue0->ue_hdrs, (u8 *) & ue1->ue_hdrs, n_bytes, 1); if (PREDICT_FALSE (b0->flags & VLIB_BUFFER_IS_TRACED)) { udp4_encap_trace_t *tr = vlib_add_trace (vm, node, b0, sizeof (*tr)); tr->udp = ue0->ue_hdrs.ip4.ue_udp; tr->ip = ue0->ue_hdrs.ip4.ue_ip4; } if (PREDICT_FALSE (b1->flags & VLIB_BUFFER_IS_TRACED)) { udp4_encap_trace_t *tr = vlib_add_trace (vm, node, b1, sizeof (*tr)); tr->udp = ue1->ue_hdrs.ip4.ue_udp; tr->ip = ue1->ue_hdrs.ip4.ue_ip4; } } next0 = ue0->ue_dpo.dpoi_next_node; next1 = ue1->ue_dpo.dpoi_next_node; vnet_buffer (b0)->ip.adj_index[VLIB_TX] = ue0->ue_dpo.dpoi_index; vnet_buffer (b1)->ip.adj_index[VLIB_TX] = ue1->ue_dpo.dpoi_index; 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, next0, uei0; vlib_buffer_t *b0; udp_encap_t *ue0; bi0 = to_next[0] = from[0]; from += 1; n_left_from -= 1; to_next += 1; n_left_to_next -= 1; b0 = vlib_get_buffer (vm, bi0); uei0 = vnet_buffer (b0)->ip.adj_index[VLIB_TX]; /* Rewrite packet header and updates lengths. */ ue0 = udp_encap_get (uei0); vlib_increment_combined_counter (cm, thread_index, uei0, 1, vlib_buffer_length_in_chain (vm, b0)); /* Paint */ if (is_encap_v6) { const u8 n_bytes = sizeof (udp_header_t) + sizeof (ip6_header_t); ip_udp_encap_one (vm, b0, (u8 *) & ue0->ue_hdrs.ip6, n_bytes, 0); if (PREDICT_FALSE (b0->flags & VLIB_BUFFER_IS_TRACED)) { udp6_encap_trace_t *tr = vlib_add_trace (vm, node, b0, sizeof (*tr)); tr->udp = ue0->ue_hdrs.ip6.ue_udp; tr->ip = ue0->ue_hdrs.ip6.ue_ip6; } } else { const u8 n_bytes = sizeof (udp_header_t) + sizeof (ip4_header_t); ip_udp_encap_one (vm, b0, (u8 *) & ue0->ue_hdrs.ip4, n_bytes, 1); if (PREDICT_FALSE (b0->flags & VLIB_BUFFER_IS_TRACED)) { udp4_encap_trace_t *tr = vlib_add_trace (vm, node, b0, sizeof (*tr)); tr->udp = ue0->ue_hdrs.ip4.ue_udp; tr->ip = ue0->ue_hdrs.ip4.ue_ip4; } } next0 = ue0->ue_dpo.dpoi_next_node; vnet_buffer (b0)->ip.adj_index[VLIB_TX] = ue0->ue_dpo.dpoi_index; 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); } return frame->n_vectors; } static uword udp4_encap (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) { return udp_encap_inline (vm, node, frame, 0); } static uword udp6_encap (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) { return udp_encap_inline (vm, node, frame, 1); } /* *INDENT-OFF* */ VLIB_REGISTER_NODE (udp4_encap_node) = { .function = udp4_encap, .name = "udp4-encap", .vector_size = sizeof (u32), .format_trace = format_udp4_encap_trace, .n_next_nodes = 0, }; VLIB_NODE_FUNCTION_MULTIARCH (udp4_encap_node, udp4_encap); VLIB_REGISTER_NODE (udp6_encap_node) = { .function = udp6_encap, .name = "udp6-encap", .vector_size = sizeof (u32), .format_trace = format_udp6_encap_trace, .n_next_nodes = 0, }; VLIB_NODE_FUNCTION_MULTIARCH (udp6_encap_node, udp6_encap); /* *INDENT-ON* */ /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */