summaryrefslogtreecommitdiffstats
path: root/test/ext/vom_test.cpp
AgeCommit message (Collapse)AuthorFilesLines
2019-07-31qos: Store functionNeale Ranns1-0/+18
Type: feature store: write a QoS value into the buffer meta-data record: Extract a QoS value from a packet header and store it. mark: Make a change to the content of a packet header by writing a stored QoS value Change-Id: I07d1e87dd1ca90d40ac1ae1774fee1b272cab83f Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-07-25vom: QoS supportNeale Ranns1-0/+79
Type: feature Change-Id: If517d10c318fc17fdbd797fac8d974d9851f6442 Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-06-27vom: get the tests working againNeale Ranns1-0/+5
Type: fix Fixes: 097fa66b Change-Id: Ib73714665e3325c7e1e8f939275933a4d219f96b Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-06-26vom: fix test build failureNeale Ranns1-17/+20
Type: fix Fixes: 097fa66b Change-Id: Id5ae4029f27af6cba76d6527c0d3d7212ab84f3e Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-06-07VOM-test: fix the UT post BVI and Bridge-domain changesNeale Ranns1-7/+27
Change-Id: Ibd9059e616f46f7017e397262bf4c0606d81eb0c Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-02-22VOM: De-template the ACL code.Neale Ranns1-1/+2
there's something going wrong with the dependency ordering. i have added hacks in the past, but these are not reliable across compiler versions. Change-Id: I34b4aae4c7ed7beaa424cd692ff34cba21ba802a Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-02-22VOM: fix tests and namespacify l2_vtrNeale Ranns1-5/+6
Change-Id: Ie59220a622c3a5195485cd6857b45f57d6eeaf95 Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-02-13VOM: neighbour API flagsNeale Ranns1-2/+6
Change-Id: Ia664cd4c77f1c5b4bc46c5e191bb57704b3ccc46 Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-01-10VOM: IP route ECMP supportNeale Ranns1-9/+29
Change-Id: Iede0c30aacfe7289f428062bb9540410097c40e2 Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-01-07VOM: mroutesNeale Ranns1-0/+41
- fixes in ip.api for dumping mroute path flags Change-Id: I13b0cfb15d374250ed71bd4e13dda9b798c18204 Signed-off-by: Neale Ranns <nranns@cisco.com>
2018-12-18VAPI/VOM: Removing legacy stats tests, add string type.Ole Troan1-3/+3
Fix misc VAPI/VOM generation and test cases. Change-Id: I1abf9ecdb6f8a2129f11e0a9ed1c0fe04cdf5c47 Signed-off-by: Ole Troan <ot@cisco.com>
2018-12-13vom: Add support for new statsMohsin Kazmi1-1/+1
This patch deprecates old stats and adds support for new stats. This implements the PULL design where client will enable stats on objects (i.e. interfaces, etc), register a call back function which will run once stats will be ready for enabled object and call HW::read_stats() periodically to read stats for enabled objects from VPP. Change-Id: I32525a417427be87408d01f8bc93a731602ff690 Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2018-12-12VOM: vxlan-tunnel takes egress interface for multicastNeale Ranns1-1/+2
Change-Id: I23b44d883fbd7919bf55b96b180f97837fd6dae9 Signed-off-by: Neale Ranns <nranns@cisco.com>
2018-12-10VOM: vxlan-gbpNeale Ranns1-1/+1
Change-Id: I5f4464435f1346207f2f9b497369795eb82b58b6 Signed-off-by: Neale Ranns <nranns@cisco.com>
2018-11-01vom: Add igmp 'host' support in vomMohsin Kazmi1-0/+65
Change-Id: Ibdb19d21b8ec7fb340a057e32df207b7723dba9b Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2018-09-29vom: Fix the l2 port type in bridge domainMohsin Kazmi1-12/+38
Change-Id: I8aba11142daeacce892ec529c2229ec54ee427e2 Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2018-09-27vom: Add ip punt redirectMohsin Kazmi1-0/+62
Change-Id: I5c7b925b22b53f18b0c45374883a6a4bff580c75 Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2018-07-17VOM: support for pipesNeale Ranns1-0/+78
Change-Id: I5c381dfe2f926f94a34ee8ed8f1b9ec6038d5fe2 Signed-off-by: Neale Ranns <neale.ranns@cisco.com>
2018-07-03vom: Add cross connect supportMohsin Kazmi1-0/+64
Change-Id: Ia316730d8f9fe9836200aa96e0b5fd827dc71c98 Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2018-05-25ARP proxy dumpsNeale Ranns1-1/+1
Change-Id: I8335ebf266becf2f42bb3f28a17dfed8d9b08f97 Signed-off-by: Neale Ranns <nranns@cisco.com>
2018-04-13GBP V2Neale Ranns1-6/+21
update the GBP plugin to implement the full NAT feature set of opflex agent Change-Id: Ic06a039c889445ed0b9087fa1f292634192b0f8d Signed-off-by: Neale Ranns <neale.ranns@cisco.com>
2018-03-27VOM: bond: Add support for LACPMohsin Kazmi1-0/+93
Change-Id: I0245263b212142858d3305b0f365d8342912dbb9 Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2018-03-14VOM: acl: Add support for acl ethertype unbind and dumpMohsin Kazmi1-0/+5
Change-Id: I667b9ccabe54c8f9cff5b1a2e63864965f5064f5 Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2018-02-22VOM: vhost-use interfacesNeale Ranns1-1/+29
Change-Id: Iee1574d1f0f081ccc4a90fd9825a0b5e254aa642 Signed-off-by: Neale Ranns <neale.ranns@cisco.com> Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2018-02-19VOM: acl: Some necessary fixesMohsin Kazmi1-0/+7
It: 1. changes ethertype_rule_t to hold actual objects instead of reference to them. 2. fixes acl_ethertype 'update' function 3. fixes pretty-print of acl-list-update. 4. adds l3-acl update unit test. Change-Id: Iec72212806e96bd0574b46b563de79f0744cb248 Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2018-02-13VOM: ACL: Add Object Model for acl ethertypeMohsin Kazmi1-0/+16
Change-Id: I2b572ebd4b7bb26381f127912a4cc0825c04fc34 Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2017-12-08VOM: prefix bit fiddlingNeale Ranns1-1/+39
Change-Id: I4fbf4a574f455628d56e78cefc1a76adc06bc801 Signed-off-by: Neale Ranns <neale.ranns@cisco.com>
2017-12-02VOM: l2fib: Add bvi flag supportMohsin Kazmi1-4/+46
Change-Id: I03d7508649e80a538fcf9541815e2c29224bc87a Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2017-11-29VOM: logging, populate and stats fixesNeale Ranns1-3/+1
logging: allow a client to register a callback handler to recieve log messages that way the client can maintain a correctly sequenced log populate: fix the creation of interface and the setting of the handle stats: the reset promise idea is not defined behaviour. Use an eanble/disable command pair Change-Id: I347720bb65df2874c7619e722d593bc863ee2bf1 Signed-off-by: Neale Ranns <neale.ranns@cisco.com>
2017-11-24VOM: Additions to allow uses to UT applications that use VOMNeale Ranns1-2/+2
- find object by key - compare objects Change-Id: I36ec8612be9482bcef7ceced2a59f7403f77b3e8 Signed-off-by: Neale Ranns <neale.ranns@cisco.com>
2017-11-15VOM: interface RD update reconfigures L3 bindingsNeale Ranns1-0/+87
Change-Id: I273e1ea28c3c146e4a88d031c790c1cc56dccf00 Signed-off-by: Neale Ranns <neale.ranns@cisco.com>
2017-11-14VOM: bridge-domain learning mode and route help commandsNeale Ranns1-3/+3
Change-Id: I2fa219d6530f1e7a3b8ae32d35a0c60ba57c5129 Signed-off-by: Neale Ranns <neale.ranns@cisco.com>
2017-11-06VOM reshuffleNeale Ranns1-282/+305
split the VOM into two halves; a top/front-end and a bottom/backend. Only the backend includes the auto-generated VAPI. This serves two purposes: 1 - improves ompile times for VOM, since the VAPI is included only in the backend. 2 - does not expose VAPI to users of VOM Change-Id: I17b93aeaef10c0eba8612016d9034aca5628d9f7 Signed-off-by: Neale Ranns <neale.ranns@cisco.com> Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2017-11-01VPP Object Model (VOM)Neale Ranns1-0/+1447
The VOM is a C++ library for use by clients/agents of VPP for programming state. It uses the binary APIs to do so. Various other common client side functions are also provided. Please see om.hpp for a more detailed description. Change-Id: Ib756bfe99817093815a9e26ccf464aa5583fc523 Signed-off-by: Neale Ranns <neale.ranns@cisco.com> Co-authored-by: Mohsin Kazmi <sykazmi@cisco.com>
lass="n">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: */