aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins
AgeCommit message (Expand)AuthorFilesLines
2018-06-16NAT44: fix coverityMatus Fabian1-1/+1
2018-06-15avf: tx node fixesDamjan Marion1-9/+9
2018-06-15NAT44: endpoint dependent mode (VPP-1273)Matus Fabian7-1453/+3450
2018-06-15TLS async supportPing Yu4-23/+739
2018-06-14acl-plugin: VAT: add an option to load entire ACL from a ClassBench ruleset f...Andrew Yourtchenko1-0/+190
2018-06-14acl-plugin: use 16_8 bihash for IPv4 sessions and 40_8 bihash for IPv6 sessionsAndrew Yourtchenko7-84/+165
2018-06-13acl-plugin: change the src/dst L3 info in 5tuple struct to be always contiguo...Andrew Yourtchenko6-97/+156
2018-06-13Fix clang compilation on aarch64: extraneous parenthesesSirshak Das1-6/+16
2018-06-13vxlan:offload RX floweyal bari1-1/+1
2018-06-12avf: fix crash if device is busyJakub Grajciar1-1/+8
2018-06-12MTU assigning to itself (Coverity)Ole Troan1-4/+0
2018-06-11MTU: Software interface / Per-protocol MTU supportOle Troan1-10/+5
2018-06-11Fix multiple NAT translation with interface address as externalAlexander Chernavin1-4/+4
2018-06-10IGMP: use simple u32 bit hash keyNeale Ranns3-18/+15
2018-06-09avf: properly cofigure RSS LUTDamjan Marion2-13/+40
2018-06-09avf: add support for intel X722 NICsDamjan Marion1-0/+1
2018-06-08Add reaper functions to want events APIs (VPP-1304)Neale Ranns2-32/+43
2018-06-08LB: reply message id and table length are wrong.Hongjun Ni1-2/+2
2018-06-07dpdk: fix interface naming issueDamjan Marion1-2/+9
2018-06-07dpdk: failsafe PMD initialization codeRui Cai2-1/+26
2018-06-07Add support for DPDK 18.05Damjan Marion5-44/+119
2018-06-05bond: send gratuitous arp when the active slave went down in active-backup modeSteven2-9/+4
2018-06-05lb api: correct byte order of new_flows_table_length argumentAndrey "Zed" Zaikin1-1/+1
2018-06-04Configure or deduce CLIB_LOG2_CACHE_LINE_BYTES (VPP-1064)Dave Barach1-0/+2
2018-06-03dpdk: buffer free optimizationsDamjan Marion1-76/+61
2018-06-03dpdk: improve buffer alloc perfomanceDamjan Marion1-70/+56
2018-06-02AVF input node reworkDamjan Marion2-203/+334
2018-06-02acl-plugin: multicore: session management fixesAndrew Yourtchenko6-151/+332
2018-05-31dpdk: Decoupling the meaning of xd->device_index in dpdk_pluginRui Cai9-81/+99
2018-05-31Fix TLS issue to load certification and keyPing Yu1-0/+2
2018-05-30vppinfra: explicitely state for signed types that they are signedDamjan Marion6-10/+10
2018-05-30dpdk: rename port_id to *_instance_numDamjan Marion4-9/+10
2018-05-29Revert "dpdk: set dmamap iova address value according to eal_iova_mode"Damjan Marion1-4/+1
2018-05-29Add VLIB_NODE_FN() macro to simplify multiversioning of node functionsDamjan Marion12-202/+63
2018-05-29dpdk: Add PMD type for Cavium LiquidIO II CN23XXchuhong yao3-1/+13
2018-05-29dpdk: mempool priv intialization must be done before releasing buffers to poolSachin Saxena1-8/+7
2018-05-28NAT44: code cleanup and refactor (VPP-1285)Matus Fabian17-463/+631
2018-05-28add missing lb_put_writer_lock() to lb_vip_add() invalid args casesAndrey "Zed" Zaikin1-2/+7
2018-05-28acl-plugin: move to per-frame buffer pointer calculations and enqueue to next...Andrew Yourtchenko1-208/+191
2018-05-28dpdk: set dmamap iova address value according to eal_iova_modeSachin Saxena1-1/+4
2018-05-27acl-plugin: use clib_bihash_search_inline_2_40_8 rather than clib_bihash_sear...Andrew Yourtchenko2-5/+3
2018-05-27VPP-1294: add missing feature arc constraintDave Barach1-1/+2
2018-05-26dpdk: enable RX for no-multi-segZhiyong Yang1-0/+5
2018-05-26acl-plugin: create forward and return sessions in lieu of making a special pe...Andrew Yourtchenko5-121/+156
2018-05-25Add interface rx pcap tracingDave Barach4-66/+154
2018-05-25memif: Add support for loggingJakub Grajciar3-56/+90
2018-05-25bond: performance harvestingSteven2-28/+8
2018-05-23VPP-1283: IPv4 PMTU missing MTU value in ICMP4 message.Ole Troan1-1/+1
2018-05-23dpdk:flow add vxlan flow supportEyal Bari1-12/+77
2018-05-22avf plugin: add support for loggingJakub Grajciar2-5/+14
> n_left_to_next -= 2; b0 = vlib_get_buffer(vm, bi0); b1 = vlib_get_buffer(vm, bi1); /* get the next parent DPO for the next pop */ pwcwi0 = vnet_buffer(b0)->ip.adj_index[VLIB_TX]; pwcwi1 = vnet_buffer(b1)->ip.adj_index[VLIB_TX]; pwcw0 = pw_cw_dpo_get(pwcwi0); pwcw1 = pw_cw_dpo_get(pwcwi1); next0 = pwcw0->pwcw_parent.dpoi_next_node; next1 = pwcw1->pwcw_parent.dpoi_next_node; vnet_buffer(b0)->ip.adj_index[VLIB_TX] = pwcw0->pwcw_parent.dpoi_index; vnet_buffer(b1)->ip.adj_index[VLIB_TX] = pwcw1->pwcw_parent.dpoi_index; if (PREDICT_FALSE(b0->flags & VLIB_BUFFER_IS_TRACED)) { pw_cw_trace_t *tr = vlib_add_trace(vm, node, b0, sizeof(*tr)); tr->cw = *((pw_cw_t*) vlib_buffer_get_current(b0)); } if (PREDICT_FALSE(b1->flags & VLIB_BUFFER_IS_TRACED)) { pw_cw_trace_t *tr = vlib_add_trace(vm, node, b1, sizeof(*tr)); tr->cw = *((pw_cw_t*) vlib_buffer_get_current(b1)); } /* pop the PW CW */ vlib_buffer_advance (b0, sizeof(pw_cw_t)); vlib_buffer_advance (b1, sizeof(pw_cw_t)); 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) { pw_cw_dpo_t *pwcw0; vlib_buffer_t * b0; u32 bi0, pwcwi0; u32 next0; 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); pwcwi0 = vnet_buffer(b0)->ip.adj_index[VLIB_TX]; pwcw0 = pw_cw_dpo_get(pwcwi0); next0 = pwcw0->pwcw_parent.dpoi_next_node; vnet_buffer(b0)->ip.adj_index[VLIB_TX] = pwcw0->pwcw_parent.dpoi_index; if (PREDICT_FALSE(b0->flags & VLIB_BUFFER_IS_TRACED)) { pw_cw_trace_t *tr = vlib_add_trace(vm, node, b0, sizeof(*tr)); tr->cw = *((pw_cw_t*) vlib_buffer_get_current(b0)); } vlib_buffer_advance (b0, sizeof(pw_cw_t)); 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 from_frame->n_vectors; } static u8 * format_pw_cw_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 *); CLIB_UNUSED(pw_cw_trace_t * t); t = va_arg(*args, pw_cw_trace_t *); s = format(s, "cw:0x%x", t->cw); return (s); } VLIB_NODE_FN (pw_cw_node) (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) { return (pw_cw_pop_inline(vm, node, frame)); } VLIB_REGISTER_NODE(pw_cw_node) = { .name = "pw-cw-pop", .vector_size = sizeof(u32), .format_trace = format_pw_cw_trace, }; #ifndef CLIB_MARCH_VARIANT static void pw_cw_dpo_mem_show (void) { fib_show_memory_usage("PW-CW", pool_elts(pw_cw_dpo_pool), pool_len(pw_cw_dpo_pool), sizeof(pw_cw_dpo_t)); } const static dpo_vft_t pwcw_vft = { .dv_lock = pw_cw_dpo_lock, .dv_unlock = pw_cw_dpo_unlock, .dv_format = format_pw_cw_dpo, .dv_mem_show = pw_cw_dpo_mem_show, }; const static char* const pw_cw_proto_nodes[] = { "pw-cw-pop", NULL, }; const static char* const * const pw_cw_nodes[DPO_PROTO_NUM] = { [DPO_PROTO_IP4] = pw_cw_proto_nodes, [DPO_PROTO_IP6] = pw_cw_proto_nodes, [DPO_PROTO_MPLS] = pw_cw_proto_nodes, [DPO_PROTO_ETHERNET] = pw_cw_proto_nodes, }; void pw_cw_dpo_module_init (void) { dpo_register(DPO_PW_CW, &pwcw_vft, pw_cw_nodes); } #endif /* CLIB_MARCH_VARIANT */