summaryrefslogtreecommitdiffstats
path: root/plugins
AgeCommit message (Expand)AuthorFilesLines
2016-11-11Fix clang compile errors in pluginsNeale Ranns1-3/+3
2016-11-11feature: convert all feature nodes to new feature infraDamjan Marion8-127/+44
2016-11-09Update sample plugin and plugin skeletons: use driver feature arcDave Barach2-13/+38
2016-11-03Fail to register Java API for plugin that was not loaded (VPP-522)Marek Gradzki6-35/+38
2016-11-03Remove unused jvpp dependency on plugins' control_pingMarek Gradzki2-2/+2
2016-11-03Timestamp now a 64-bit integer: ns since 1/1/1970Dave Barach3-6/+24
2016-11-03Adding Sequence Number - Per Packet Counter(PPC) support for iOAM6.AkshayaNadahalli9-10/+618
2016-11-01VPP-437: ip6 hbh processing with FIB 2.0Shwetha3-14/+21
2016-11-01config: rename ip_config_main_t to vnet_feature_config_main_tDamjan Marion5-7/+7
2016-10-31VPP-478: SNAT address range overlappingMatus Fabian1-0/+7
2016-10-31VPP-459: SNAT dump API for in and out interfacesMatus Fabian4-61/+180
2016-10-27Per-packet IPFIX record generation pluginDave Barach12-0/+1476
2016-10-25Support IETF routing Yang models (VPP-503).Neale Ranns3-4/+4
2016-10-24Fix jvpp coverity issues #2Marek Gradzki1-14/+13
2016-10-21Java api generation for ioam trace pluginShwetha9-8/+321
2016-10-19Fix coverity issues in jvpp (newlines + CompletableDumpFuture.ctxId)Marek Gradzki1-3/+3
2016-10-18LoadBal: Use intrinsics and use protocol numberPierre Pfister3-209/+307
2016-10-13VPP-446: 1:1 SNAT Inside overlapping interfacesMatus Fabian4-18/+32
2016-10-13VPP-453: SNAT delete and dump addressesMatus Fabian3-26/+243
2016-10-10Test: Add test case for Load Balancer pluginPierre Pfister2-3/+13
2016-10-10HONEYCOMB-228 Snat plugin jvpp supportMarek Gradzki6-0/+305
2016-10-05VPP-339: SNAT static mappingMatus Fabian6-155/+2017
2016-10-05Load Balancer: Use FIB 2.0Pierre Pfister4-402/+358
2016-10-03L2 over LISP and GRE (VPP-457)Neale Ranns1-162/+163
2016-09-21A Protocol Independent Hierarchical FIB (VPP-352)Neale Ranns10-427/+734
2016-09-20Add structure to some of the documentation; VPP-223Chris Luke2-3/+2
2016-09-07Fix Coverity issue in trace_util.c (REVERSE_INULL), thanks to Damjan for high...Vengada Govindan1-6/+7
2016-09-06Move iOAM Trace as a pluginVengada Govindan10-2/+1463
2016-09-01VPP-341: iOAM plugin documentationShwetha2-0/+483
2016-09-01Fix for vl_client_get_first_plugin_msg_id:266: plugin 'export_eb694f98' not r...Shwetha1-1/+1
2016-08-25VPP Python language binding - plugin supportOle Troan2-2/+20
2016-08-22Raw export of IP6 packet with iOAM metadataShwetha9-0/+1394
2016-08-19VPP-337 Add per interface IN filteringDave Barach3-10/+11
2016-08-15VPP-189 Fix another batch of coverity warningsDave Barach4-6/+6
2016-08-11VPP-130: LoadBal: Add lookup bypass and fix adjacency format functionPierre Pfister4-5/+125
2016-08-11Custom adjacency formatting fix (Revived)Pierre Pfister1-3/+3
2016-08-11VPP-130: MagLev-like Load BalancerPierre Pfister17-0/+2868
2016-07-29plugins/vcgn-plugin: Fix vpp hang with pthread spinlockMichael Qiu1-8/+12
2016-07-29plugin/vcgn:Remove local defined ip4_interface_first_addressMichael Qiu1-19/+1
2016-07-28Add IP adjacency registration functionPierre Pfister1-5/+17
2016-07-20ILA: Add direction option to disable ila2sir or sir2ilaPierre Pfister2-34/+103
2016-07-17Add ILA pluginPierre Pfister6-0/+1047
2016-07-08Remove unnecessary and obsolete configure.ac directivesDamjan Marion2-2/+2
2016-07-08Multiple changes in the plugin build infraDamjan Marion15-314/+79
2016-07-02Finish cleanup of .../plugins/{configure.ac, Makefile.am}Dave Barach6-87/+44
2016-07-01Simple ip4 NAT pluginDave Barach12-4/+2916
2016-06-27Plugins: Clean up the plugin directory so that each plugin has its ownOle Troan92-141/+475
2016-06-24Move vcgn as pluginShesha Sreenivasamurthy68-3/+36555
2016-06-22Fix for build failure due to iOAM plugin header file pathShwetha7-17/+17
2016-06-17VPP-76:APIs for Proof of transit feature added to iOAMShwetha10-0/+1797
="p">); inner_protocol0 = ip40->protocol; transport0 = IPIP_TRANSPORT_IP4; } /* * Find tunnel. First a lookup for P2P tunnels, then a lookup * for multipoint tunnels */ ipip_tunnel_key_t key0 = {.transport = transport0, .fib_index = vnet_buffer (b0)->ip.fib_index, .src = dst0, .dst = src0 }; ipip_tunnel_t *t0 = ipip_tunnel_db_find (&key0); if (!t0) { ip46_address_reset (&key0.dst); t0 = ipip_tunnel_db_find (&key0); if (!t0) { next0 = IPIP_INPUT_NEXT_DROP; b0->error = node->errors[IPIP_ERROR_NO_TUNNEL]; goto drop; } } tunnel_sw_if_index = t0->sw_if_index; len = vlib_buffer_length_in_chain (vm, b0); vnet_buffer (b0)->sw_if_index[VLIB_RX] = tunnel_sw_if_index; if (inner_protocol0 == IP_PROTOCOL_IPV6) next0 = IPIP_INPUT_NEXT_IP6_INPUT; else if (inner_protocol0 == IP_PROTOCOL_IP_IN_IP) next0 = IPIP_INPUT_NEXT_IP4_INPUT; if (!is_ipv6 && t0->mode == IPIP_MODE_6RD && t0->sixrd.security_check) { ip6_header_t *inner_ip60 = vlib_buffer_get_current (b0); if (sixrd_get_addr_net (t0, inner_ip60->src_address.as_u64[0]) != ip40->src_address.as_u32) { next0 = IPIP_INPUT_NEXT_DROP; b0->error = node->errors[IPIP_ERROR_NO_TUNNEL]; goto drop; } } vlib_increment_combined_counter (im->combined_sw_if_counters + VNET_INTERFACE_COUNTER_RX, thread_index, tunnel_sw_if_index, 1 /* packets */ , len /* bytes */ ); drop: if (PREDICT_FALSE (b0->flags & VLIB_BUFFER_IS_TRACED)) { ipip_rx_trace_t *tr = vlib_add_trace (vm, node, b0, sizeof (*tr)); tr->tunnel_id = tunnel_sw_if_index; if (is_ipv6) { tr->length = ip60->payload_length; tr->src.ip6.as_u64[0] = ip60->src_address.as_u64[0]; tr->src.ip6.as_u64[1] = ip60->src_address.as_u64[1]; tr->dst.ip6.as_u64[0] = ip60->dst_address.as_u64[0]; tr->dst.ip6.as_u64[1] = ip60->dst_address.as_u64[1]; } else { tr->length = ip40->length; tr->src.ip4.as_u32 = ip40->src_address.as_u32; tr->dst.ip4.as_u32 = ip40->dst_address.as_u32; } } 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, !is_ipv6 ? ipip4_input_node.index : ipip6_input_node.index, IPIP_ERROR_DECAP_PKTS, from_frame->n_vectors); return from_frame->n_vectors; } static uword ipip4_input (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * from_frame) { return ipip_input (vm, node, from_frame, /* is_ip6 */ false); } static uword ipip6_input (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * from_frame) { return ipip_input (vm, node, from_frame, /* is_ip6 */ true); } static char *ipip_error_strings[] = { #define _(sym,string) string, foreach_ipip_error #undef _ }; /* *INDENT-OFF* */ VLIB_REGISTER_NODE(ipip4_input_node) = { .function = ipip4_input, .name = "ipip4-input", /* Takes a vector of packets. */ .vector_size = sizeof(u32), .n_errors = IPIP_N_ERROR, .error_strings = ipip_error_strings, .n_next_nodes = IPIP_INPUT_N_NEXT, .next_nodes = { #define _(s, n) [IPIP_INPUT_NEXT_##s] = n, foreach_ipip_input_next #undef _ }, .format_trace = format_ipip_rx_trace, }; VLIB_REGISTER_NODE(ipip6_input_node) = { .function = ipip6_input, .name = "ipip6-input", /* Takes a vector of packets. */ .vector_size = sizeof(u32), .n_errors = IPIP_N_ERROR, .error_strings = ipip_error_strings, .n_next_nodes = IPIP_INPUT_N_NEXT, .next_nodes = { #define _(s, n) [IPIP_INPUT_NEXT_##s] = n, foreach_ipip_input_next #undef _ }, .format_trace = format_ipip_rx_trace, }; VLIB_NODE_FUNCTION_MULTIARCH(ipip4_input_node, ipip4_input) VLIB_NODE_FUNCTION_MULTIARCH(ipip6_input_node, ipip6_input) /* *INDENT-ON* */ /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */