api: vat2 and json autogeneration for api messages 90/29890/13
authorOle Troan <ot@cisco.com>
Wed, 18 Nov 2020 18:17:48 +0000 (19:17 +0100)
committerNeale Ranns <nranns@cisco.com>
Wed, 25 Nov 2020 08:25:50 +0000 (08:25 +0000)
commitdf87f8092f5b6b54eef0d5acf3c27c2e398a401a
tree762a3da5d6757c6f475ffce6dcfae2b65b2c3850
parentc95cfa218b214bd1c67dc165b4ed1fb7a224bdad
api: vat2 and json autogeneration for api messages

VAT2: A completely auto-generated replacement of VAT.
Reads input message in JSON from stdin and outputs received messages in JSON.

A VAT2 plugin is automatically built for a .api file.
There no longer a need for a separate _test.c.

Example:
vat2 show_version {}
{
        "_msgname":     "show_version_reply",
        "retval":       0,
        "program":      "vpe",
        "version":      "21.01-rc0~411-gf6eb348a6",
        "build_date":   "2020-11-19T09:49:25",
        "build_directory":      "/vpp/autogen3"
}

vat2 sw_interface_dump '{"sw_if_index": -1,
                         "name_filter_valid": 0,
                         "name_filter": ""}'
[{
                "_msgname":     "sw_interface_details",
                "sw_if_index":  0,
                "sup_sw_if_index":      0,
                "l2_address":   "00:00:00:00:00:00",
                "flags":        "Invalid ENUM",
                "type": "IF_API_TYPE_HARDWARE",
                "link_duplex":  "LINK_DUPLEX_API_UNKNOWN",
                "link_speed":   0,
                "link_mtu":     0,
                "mtu":  [0, 0, 0, 0],
                "sub_id":       0,
                "sub_number_of_tags":   0,
                "sub_outer_vlan_id":    0,
                "sub_inner_vlan_id":    0,
                "sub_if_flags": "Invalid ENUM",
                "vtr_op":       0,
                "vtr_push_dot1q":       0,
                "vtr_tag1":     0,
                "vtr_tag2":     0,
                "outer_tag":    0,
                "b_dmac":       "00:00:00:00:00:00",
                "b_smac":       "00:00:00:00:00:00",
                "b_vlanid":     0,
                "i_sid":        0,
                "interface_name":       "local0",
                "interface_dev_type":   "local",
                "tag":  ""
        }]

This is the first phase and vat2 is not integrated in packaging yet.

Type: feature
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: Ib45ddeafb180ea7da8c5dc274a9274d7a4edc876
Signed-off-by: Ole Troan <ot@cisco.com>
45 files changed:
extras/rpm/Makefile
src/CMakeLists.txt
src/cmake/api.cmake
src/cmake/library.cmake
src/cmake/plugin.cmake
src/plugins/acl/CMakeLists.txt
src/plugins/acl/acl.api
src/plugins/acl/acl.c
src/plugins/acl/acl_test.c
src/plugins/acl/manual_fns.h [deleted file]
src/plugins/dns/dns.api
src/plugins/dns/dns.c
src/plugins/flowprobe/flowprobe.api
src/plugins/flowprobe/flowprobe.c
src/plugins/gbp/CMakeLists.txt
src/plugins/gbp/gbp.api
src/plugins/gbp/gbp_api.c
src/plugins/gbp/gbp_api_print.h [deleted file]
src/plugins/lb/api.c
src/plugins/lb/lb.api
src/plugins/map/map_api.c
src/plugins/nat/nat44.api
src/plugins/nat/nat44_api.c
src/plugins/stn/stn.api
src/plugins/stn/stn_api.c
src/tools/vppapigen/vppapigen.py
src/tools/vppapigen/vppapigen_c.py
src/vat2/CMakeLists.txt [new file with mode: 0644]
src/vat2/jsonconvert.c [new file with mode: 0644]
src/vat2/jsonconvert.h [new file with mode: 0644]
src/vat2/main.c [new file with mode: 0644]
src/vat2/plugin.c [new file with mode: 0644]
src/vat2/vat2.h [new file with mode: 0644]
src/vat2/vat2_helpers.h [new file with mode: 0644]
src/vnet/CMakeLists.txt
src/vnet/ip/ip.api
src/vnet/l2/l2.api
src/vnet/l2/l2_api.c
src/vnet/mpls/mpls.api
src/vpp-api/client/client.c
src/vpp-api/client/vppapiclient.h
src/vpp/CMakeLists.txt
src/vppinfra/CMakeLists.txt
src/vppinfra/cJSON.c [new file with mode: 0644]
src/vppinfra/cJSON.h [new file with mode: 0644]