api: enforce vla is last and fixed string type 92/21492/12
authorOle Troan <ot@cisco.com>
Fri, 23 Aug 2019 20:55:18 +0000 (22:55 +0200)
committerAndrew Yourtchenko <ayourtch@gmail.com>
Tue, 3 Sep 2019 20:04:13 +0000 (20:04 +0000)
commite5ff5a36dd126ee57dca4e0b03da2f7704e0a4f5
tree2108baa60e8a697624288fe2c3050be29697bc88
parentb6fde4a8bae474c6b73d08d223028f42e396d452
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 <ot@cisco.com>
25 files changed:
extras/vom/vom/interface.cpp
extras/vom/vom/interface_cmds.cpp
extras/vom/vom/interface_factory.cpp
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