Add a hook to src/vlibapi/api_shared.c to fuzz (screw up) binary API
messages, e.g. by xoring random data into them before processing. We
specifically exempt client connection messages, and inband debug CLI
messages. We step over msg_id, client index, client context, and
sw_if_index. Otherwise, "make test" vectors fail too rapidly to learn
anything.
The goal is to reduce the number of crashes caused to zero. We're
fairly close with this patch.
Add vl_msg_api_max_length(void *mp), which returns the maximum
plausible length for a binary API message.
Use it to hardern vl_api_from_api_to_new_vec(...) which takes an
additional argument - message pointer - so it can verify that
astr->length is sane. If it's not sane, return a u8 *vector of the
form "insane astr->length nnnn\0".
Verify array lengths in vl_api_dhcp6_send_client_message_t_handler(...)
and vl_api_dhcp6_pd_send_client_message_t_handler(...).
Add a fairly effective binary API fuzz hook to the unittest plugin,
and modify the "make test" framework.py to pass "api-fuzz { on|off }"
to enable API fuzzing: "make API_FUZZ=on TEST=xxx test-debug" or similar
Type: improvement
Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: I0157267652a163c01553d5267620f719cc6c3bde
Improve dependency tracking on vapi_test directory so that vapi_c_test
rebuild doesn't force vapi_cpp_test rebuild and vice versa.
Type: improvement
Signed-off-by: Klement Sekera <ksekera@cisco.com>
Change-Id: I00094c6374981333858ddbe6ae934cfda3b33a36
- Remove vl_api_from_api_string
to prevent use of not nul-terminated strings.
- Rename vl_api_from_api_to_vec -> vl_api_from_api_to_new_vec
to imply a new vector is created. NOT nul terminated.
- Add vl_api_from_api_to_new_c_string. Returns
nul terminated string in a new vector.
- Add vl_api_c_string_to_api_string. Convert nul terminated
string to vl_api_string_t
- Add vl_api_vec_to_api_string. Convert NON nul terminated
vector to vl_api_string_t
Type: fix
Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
Change-Id: Iadd59b612c0d960a34ad0dd07a9d17f56435c6ea
Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
- Note: This was not caught by CI because the VPP 'make verify'
target always build libvom.so
Type: fix
Fixes: f0797d130
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
Change-Id: I8663e317e4e793c386b09d1cb887133de1e43faf
This patch addresses the functionality that is
missing for distributed make test source files.
In addition it extends the concept of colocating
test source code with functional source code
(eg. src/vcl/test). It also cleans up deficiencies
in the make test makefiles.
NOTE: Due to the way sphinx document tools work,
all test, all of the make test python code is
gathered using soft links into the directory:
.../build-root/build-test/src
Change summary:
- Remove 'make test' help details from
main makefile help output to reduce clutter
and redundant help output
- Move all generated build output to
.../build-root/build-test
- Move test_vcl.py as first usecase for
distributed core feature make test code
- Add test-wipe-all target and fix wipe targets
to remove all generated files
- Fix 'make test-doc' to generate module
documentation for all source files
- Remove unused targets in test/doc/Makefile
- Fix 'make test-shell'
- Fix test/ext Makefile to not generate
bogus output
Type: fix
Fixes: a43c93f8554ad7418e31be3791b3fb71232f60ac
Change-Id: Icc2ddb81d474081c3ede4548ecd7a0624651f62d
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
Enforce that variable length fields are the last element of API messages.
Add a 'fixed' version of string type, since dealing with
multiple variable length strings turned out too painful
for the C language bindings.
The string type is now:
{
string name[64]; // NUL terminated C-string. Essentially decays to u8 name[64]
string name[]; // Variable length string with embedded len field (vl_api_string_t)
};
The latter notation could be made available to other types as well.
e.g.
{
vl_api_address_t addresses[];
}
instead of
{
u32 n_addr;
vl_api_address_t addresses[n_addr];
};
Type: fix
Change-Id: I18fa17ef47227633752ab50453e8d20a652a9f9b
Signed-off-by: Ole Troan <ot@cisco.com>
Explicitly using string type in API allows for autogenerating tools to print
strings instead of hex-dumping byte strings.
Type: fix
Signed-off-by: Ole Troan <ot@cisco.com>
Signed-off-by: Klement Sekera <ksekera@cisco.com>
Change-Id: I573962d6b34d5d10aab9dc6a5fdf101c9b12a6a6
Signed-off-by: Ole Troan <ot@cisco.com>
Use of consistent API types for interface.api
Type: fix
Change-Id: I88206d7d0907cffd564031f73c9a996df2e5e21a
Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
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>
This reverts commit e63325e3ca03c847963863446345e6c80a2c0cfd.
Allow time for CSIT to accommodate.
Change-Id: I59435e4ab5e05e36a2796c3bf44889b5d4823cc2
Signed-off-by: ot@cisco.com
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>
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>
instead of using build-root, use /test/venv directory for virtualenv
similarly, don't pollute build-root with test-built binaries
Change-Id: I1e63c04037eaee718b27b34ef16c9eb0252afa53
Signed-off-by: Klement Sekera <ksekera@cisco.com>
Previously all types are compound. This adds support for aliases,
so one can do things like:
typedef u32 interface_index;
or
typedef u8 ip4_address[4];
Change-Id: I0455cad0123fc88acb491d2a3ea2725426bdb246
Signed-off-by: Ole Troan <ot@cisco.com>
Signed-off-by: Klement Sekera <ksekera@cisco.com>
It is packaging responsibility to put libs in the right place.
Use of lib64 resulted in huge amount of files with hardcoded lib64.
This patch simplifies things...
Change-Id: Iab0dea0583e480907732c5d2379eb951a00fa9e6
Signed-off-by: Damjan Marion <damarion@cisco.com>
(VAPI_*BIN).d targets didnt have fake.api.vapi.h* as dependencies
this causes the compilation to proceed before the python script
generates the header files.
Explicit linking of stdc++ is required for clang as errors like
undefined reference to 'new operator' pop up.
Change-Id: I3ca0ef048f392c4a032160ce0e4f7ae759f4c79d
Signed-off-by: Sirshak Das <sirshak.das@arm.com>
Reviewed-by: Brian Brooks <brian.brooks@arm.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
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>
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>