api: enforce vla is last and fixed string type 62/21762/2
authorOle Troan <[email protected]>
Fri, 23 Aug 2019 20:55:18 +0000 (22:55 +0200)
committerOle Trøan <[email protected]>
Mon, 9 Sep 2019 09:59:48 +0000 (09:59 +0000)
commit30d28bdfd8aca4d6d3c70482ad9ebfdb753610aa
tree1ae268835577d69dd982370487215d2049f87ea1
parent157f1cd34952759fd8c35976e68c9885537168ad
api: enforce vla is last and fixed string type

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 <[email protected]>
(cherry picked from commit e5ff5a36dd126ee57dca4e0b03da2f7704e0a4f5)
Signed-off-by: Ole Troan <[email protected]>
22 files changed:
src/plugins/http_static/http_static.api
src/plugins/http_static/http_static.c
src/plugins/map/map.api
src/plugins/map/map_api.c
src/plugins/nat/nat.api
src/plugins/nat/nat_api.c
src/plugins/nat/test/test_nat.py
src/tools/vppapigen/vppapigen.py
src/tools/vppapigen/vppapigen_c.py
src/vat/api_format.c
src/vnet/interface.api
src/vnet/interface_api.c
src/vnet/ip/punt.api
src/vnet/session/session.api
src/vpp-api/python/vpp_papi/tests/test_vpp_serializer.py
src/vpp-api/python/vpp_papi/vpp_serializer.py
src/vpp-api/vapi/vapi_c_gen.py
src/vpp-api/vapi/vapi_json_parser.py
src/vpp/api/api.c
src/vpp/api/vpe.api
test/ext/vapi_c_test.c
test/ext/vapi_cpp_test.cpp