summaryrefslogtreecommitdiffstats
path: root/test
AgeCommit message (Expand)AuthorFilesLines
2017-06-07make test: improve debugabilityKlement Sekera2-2/+3
2017-06-06Packets recieved on VLAN-0 map to the main interfaceNeale Ranns2-2/+106
2017-06-06Rework vxlan-gpe to support FIB 2.0 and bypass modeHongjun Ni2-0/+348
2017-06-05SNAT: fix ICMP hairpinningMatus Fabian1-2/+164
2017-06-01IP Mcast - recalculate on interface up/dowmNeale Ranns1-18/+24
2017-06-01make test: add suddenly missing dependency (six module)Klement Sekera1-1/+1
2017-05-30Flowprobe: Stateful flows and IPv6, L4 recordingOle Troan2-173/+967
2017-05-26MPLS lookup DPO does not pop the label (nor does it handle replicate)Neale Ranns1-0/+20
2017-05-26ARP/ND use path_remove to complement path_addNeale Ranns2-0/+196
2017-05-25MPLS hash function improvementsNeale Ranns3-41/+142
2017-05-24SNAT: fix IPFIX data src and dst portMatus Fabian1-4/+29
2017-05-24Missing VLIB node for IPv6 disposition from mcast MPLS LSPNeale Ranns2-8/+78
2017-05-24Leak locks and tables in the ClassifierNeale Ranns1-2/+33
2017-05-24TEST/L2BD:fix flush testsEyal Bari1-66/+107
2017-05-23Labelled attached paths via an MPLS tunnelNeale Ranns1-2/+25
2017-05-22Skip L2 FIB flush testsNeale Ranns1-0/+9
2017-05-17VPP-719: Accept ARP replies from VRRP hw addrMatthew Smith1-0/+75
2017-05-17ARP learning fixes (VPP-843)Neale Ranns1-8/+30
2017-05-16L2FIB: add flush testEyal Bari2-103/+219
2017-05-15Add GTP-U plugin. VPP-694Hongjun Ni2-0/+321
2017-05-11make test: support coverage for out-of-tree pluginsKlement Sekera1-0/+6
2017-05-10L2BD/TEST:fix l2bd multiinstance testEyal Bari1-104/+94
2017-05-07Avoid active connection prevent timeout of idle conns after itAndrew Yourtchenko1-0/+304
2017-05-05SNAT: Additional tests for SNAT interfaces without a configured ip addressMartin Gálik1-1/+161
2017-05-02BFD: don't crash if interface is deletedKlement Sekera1-0/+30
2017-04-27CGN: Send ICMP error packet if user is out of sessions availableMartin Gálik1-1/+13
2017-04-26IP Flow Hash Config fixesNeale Ranns3-0/+305
2017-04-26CGN: Session dump, test naming for ports fixedMartin Gálik2-40/+73
2017-04-26CGNAT: close session API and CLI commands.Martin Gálik2-0/+61
2017-04-24make test: mark all BFD tests as extendedKlement Sekera1-0/+5
2017-04-24Improve Load-Balance MAPsNeale Ranns2-17/+395
2017-04-21CGN: IPFIX loggingMatus Fabian1-1/+37
2017-04-20make test: improve bfd reliabilityKlement Sekera2-19/+41
2017-04-20Clean up old datapath code in ACL plugin.Andrew Yourtchenko1-48/+0
2017-04-19Learn IP6 link-local ND entries from NSs sourced from link-local addressNeale Ranns5-37/+118
2017-04-19make test: python interpreter customizationvagrant1-6/+18
2017-04-19Support ping from outside network in 1:1 NAT (VPP-695)Juraj Sloboda1-1/+31
2017-04-19CGN: additional testsMartin Gálik1-1/+466
2017-04-18ACL-plugin does not match UDP next-header, VPP-687Pavel Kotucek1-7/+79
2017-04-12make test: don't rely on cPython GC to close fdsKlement Sekera1-8/+9
2017-04-12CGN: configurable timeoutsMatus Fabian2-0/+46
2017-04-10make test: automatic "vpp finishes startup" checkKlement Sekera3-13/+59
2017-04-07VXLAN/TEST:validate vxlan del reply has valid sw_if_indexEyal Bari1-1/+3
2017-04-07MPLS McastNeale Ranns5-27/+351
2017-04-06acl-plugin: make the IPv4/IPv6 non-first fragment handling in line with ACL (...Andrew Yourtchenko2-9/+91
2017-04-06BFD-FIB interactionsNeale Ranns3-4/+107
2017-04-05GRE over IPv6Ciara Loftus2-7/+177
2017-04-03make test: relax BFD time intervalsKlement Sekera2-8/+10
2017-04-03make test: tweak helper scriptsKlement Sekera2-3/+8
2017-04-02make test: add scripts for easy test loopingKlement Sekera2-0/+122
pan>->n_vectors; } #endif #if NSTAGES == 3 static STAGE_INLINE uword dispatch_pipeline (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) { u32 *from; u32 n_left_from; int pi; vlib_buffer_t *bufs[VLIB_FRAME_SIZE]; u16 nexts[VLIB_FRAME_SIZE]; AUX_DATA_DECL; n_left_from = frame->n_vectors; from = vlib_frame_vector_args (frame); vlib_get_buffers (vm, from, bufs, n_left_from); for (pi = 0; pi < NSTAGES - 1; pi++) { if (pi == n_left_from) break; stage0 (vm, node, bufs[pi] AUX_DATA_PTR (pi)); if (pi - 1 >= 0) stage1 (vm, node, bufs[pi - 1]); } for (; pi < n_left_from; pi++) { stage0 (vm, node, bufs[pi] AUX_DATA_PTR (pi)); stage1 (vm, node, bufs[pi - 1] AUX_DATA_PTR (pi - 1)); nexts[pi - 2] = last_stage (vm, node, bufs[pi - 2] AUX_DATA_PTR (pi - 2)); } for (; pi < (n_left_from + (NSTAGES - 1)); pi++) { if (((pi - 1) >= 0) && ((pi - 1) < n_left_from)) stage1 (vm, node, bufs[pi - 1] AUX_DATA_PTR (pi - 1)); if (((pi - 2) >= 0) && ((pi - 2) < n_left_from)) nexts[pi - 2] = last_stage (vm, node, bufs[pi - 2] AUX_DATA_PTR (pi - 2)); } vlib_buffer_enqueue_to_next (vm, node, from, nexts, frame->n_vectors); return frame->n_vectors; } #endif #if NSTAGES == 4 static STAGE_INLINE uword dispatch_pipeline (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) { u32 *from; u32 n_left_from; int pi; vlib_buffer_t *bufs[VLIB_FRAME_SIZE]; u16 nexts[VLIB_FRAME_SIZE]; AUX_DATA_DECL; n_left_from = frame->n_vectors; from = vlib_frame_vector_args (frame); vlib_get_buffers (vm, from, bufs, n_left_from); for (pi = 0; pi < NSTAGES - 1; pi++) { if (pi == n_left_from) break; stage0 (vm, node, bufs[pi] AUX_DATA_PTR (pi)); if (pi - 1 >= 0) stage1 (vm, node, bufs[pi - 1] AUX_DATA_PTR (pi - 1)); if (pi - 2 >= 0) stage2 (vm, node, bufs[pi - 2] AUX_DATA_PTR (pi - 2)); } for (; pi < n_left_from; pi++) { stage0 (vm, node, bufs[pi] AUX_DATA_PTR (pi)); stage1 (vm, node, bufs[pi - 1] AUX_DATA_PTR (pi - 1)); stage2 (vm, node, bufs[pi - 2] AUX_DATA_PTR (pi - 2)); nexts[pi - 3] = last_stage (vm, node, bufs[pi - 3] AUX_DATA_PTR (pi - 3)); } for (; pi < (n_left_from + (NSTAGES - 1)); pi++) { if (((pi - 1) >= 0) && ((pi - 1) < n_left_from)) stage1 (vm, node, bufs[pi - 1] AUX_DATA_PTR (pi - 1)); if (((pi - 2) >= 0) && ((pi - 2) < n_left_from)) stage2 (vm, node, bufs[pi - 2] AUX_DATA_PTR (pi - 2)); if (((pi - 3) >= 0) && ((pi - 3) < n_left_from)) nexts[pi - 3] = last_stage (vm, node, bufs[pi - 3] AUX_DATA_PTR (pi - 3)); } vlib_buffer_enqueue_to_next (vm, node, from, nexts, frame->n_vectors); return frame->n_vectors; } #endif #if NSTAGES == 5 static STAGE_INLINE uword dispatch_pipeline (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) { u32 *from; u32 n_left_from; int pi; vlib_buffer_t *bufs[VLIB_FRAME_SIZE]; u16 nexts[VLIB_FRAME_SIZE]; AUX_DATA_DECL; n_left_from = frame->n_vectors; from = vlib_frame_vector_args (frame); vlib_get_buffers (vm, from, bufs, n_left_from); for (pi = 0; pi < NSTAGES - 1; pi++) { if (pi == n_left_from) break; stage0 (vm, node, bufs[pi] AUX_DATA_PTR (pi)); if (pi - 1 >= 0) stage1 (vm, node, bufs[pi - 1] AUX_DATA_PTR (pi - 1)); if (pi - 2 >= 0) stage2 (vm, node, bufs[pi - 2] AUX_DATA_PTR (pi - 2)); if (pi - 3 >= 0) stage3 (vm, node, bufs[pi - 3] AUX_DATA_PTR (pi - 3)); } for (; pi < n_left_from; pi++) { stage0 (vm, node, bufs[pi] AUX_DATA_PTR (pi)); stage1 (vm, node, bufs[pi - 1] AUX_DATA_PTR (pi - 1)); stage2 (vm, node, bufs[pi - 2] AUX_DATA_PTR (pi - 2)); stage3 (vm, node, bufs[pi - 3] AUX_DATA_PTR (pi - 3)); nexts[pi - 4] = last_stage (vm, node, bufs[pi - 4] AUX_DATA_PTR (pi - 4)); } for (; pi < (n_left_from + (NSTAGES - 1)); pi++) { if (((pi - 1) >= 0) && ((pi - 1) < n_left_from)) stage1 (vm, node, bufs[pi - 1] AUX_DATA_PTR (pi - 1)); if (((pi - 2) >= 0) && ((pi - 2) < n_left_from)) stage2 (vm, node, bufs[pi - 2] AUX_DATA_PTR (pi - 2)); if (((pi - 3) >= 0) && ((pi - 3) < n_left_from)) stage3 (vm, node, bufs[pi - 3] AUX_DATA_PTR (pi - 3)); if (((pi - 4) >= 0) && ((pi - 4) < n_left_from)) nexts[pi - 4] = last_stage (vm, node, bufs[pi - 4] AUX_DATA_PTR (pi - 4)); } vlib_buffer_enqueue_to_next (vm, node, from, nexts, frame->n_vectors); return frame->n_vectors; } #endif #if NSTAGES == 6 static STAGE_INLINE uword dispatch_pipeline (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) { u32 *from; u32 n_left_from; int pi; vlib_buffer_t *bufs[VLIB_FRAME_SIZE]; u16 nexts[VLIB_FRAME_SIZE]; AUX_DATA_DECL; n_left_from = frame->n_vectors; from = vlib_frame_vector_args (frame); vlib_get_buffers (vm, from, bufs, n_left_from); for (pi = 0; pi < NSTAGES - 1; pi++) { if (pi == n_left_from) break; stage0 (vm, node, bufs[pi] AUX_DATA_PTR (pi)); if (pi - 1 >= 0) stage1 (vm, node, bufs[pi - 1] AUX_DATA_PTR (pi - 1)); if (pi - 2 >= 0) stage2 (vm, node, bufs[pi - 2] AUX_DATA_PTR (pi - 2)); if (pi - 3 >= 0) stage3 (vm, node, bufs[pi - 3] AUX_DATA_PTR (pi - 3)); if (pi - 4 >= 0) stage4 (vm, node, bufs[pi - 4] AUX_DATA_PTR (pi - 4)); } for (; pi < n_left_from; pi++) { stage0 (vm, node, bufs[pi] AUX_DATA_PTR (pi)); stage1 (vm, node, bufs[pi - 1] AUX_DATA_PTR (pi - 1)); stage2 (vm, node, bufs[pi - 2] AUX_DATA_PTR (pi - 2)); stage3 (vm, node, bufs[pi - 3] AUX_DATA_PTR (pi - 3)); stage4 (vm, node, bufs[pi - 4] AUX_DATA_PTR (pi - 4)); nexts[pi - 5] = last_stage (vm, node, bufs[pi - 5] AUX_DATA_PTR (pi - 5)); } for (; pi < (n_left_from + (NSTAGES - 1)); pi++) { if (((pi - 1) >= 0) && ((pi - 1) < n_left_from)) stage1 (vm, node, bufs[pi - 1] AUX_DATA_PTR (pi - 1)); if (((pi - 2) >= 0) && ((pi - 2) < n_left_from)) stage2 (vm, node, bufs[pi - 2] AUX_DATA_PTR (pi - 2)); if (((pi - 3) >= 0) && ((pi - 3) < n_left_from)) stage3 (vm, node, bufs[pi - 3] AUX_DATA_PTR (pi - 3)); if (((pi - 4) >= 0) && ((pi - 4) < n_left_from)) stage4 (vm, node, bufs[pi - 4] AUX_DATA_PTR (pi - 4)); if (((pi - 5) >= 0) && ((pi - 5) < n_left_from)) nexts[pi - 5] = last_stage (vm, node, bufs[pi - 5] AUX_DATA_PTR (pi - 5)); } vlib_buffer_enqueue_to_next (vm, node, from, nexts, frame->n_vectors); return frame->n_vectors; } #endif /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */