VPPAPIGEN: vppapigen replacement in Python PLY. 81/8781/23
authorOle Troan <ot@cisco.com>
Thu, 12 Oct 2017 11:06:35 +0000 (13:06 +0200)
committerNeale Ranns <nranns@cisco.com>
Tue, 23 Jan 2018 13:03:53 +0000 (13:03 +0000)
commit9d42087149a6870965896be74dc6260f72d2cac9
treef86ed97a4b28845934aeb5fbc9dd4e33b9bdfdac
parent2aa22909c70ff5c5eed6a7f7a0f8a587c9260da8
VPPAPIGEN: vppapigen replacement in Python PLY.

This is a version of the VPP API generator in Python PLY. It supports
the existing language, and has a plugin architecture for generators.
Currently C and JSON are supported.

Changes:
 - vl_api_version to option version = "major.minor.patch"
 - enum support
 - Added error checking and reporting
 - import support (removed the C pre-processor)
 - services (tying request/reply together)

Version:
 option version = "1.0.0";

Enum:
 enum colours {
   RED,
   BLUE = 50,
 };
 define foo {
  vl_api_colours_t colours;
 };

Services:
 service {
  rpc foo returns foo_reply;
  rpc foo_dump returns stream foo_details;
  rpc want_stats returns want_stats_reply
      events ip4_counters, ip6_counters;
 };

Future planned features:
 - unions
 - bool, text
 - array support (including length)
 - proto3 output plugin
 - Refactor C/C++ generator as a plugin
 - Refactor Java generator as a plugin

Change-Id: Ifa289966c790e1b1a8e2938a91e69331e3a58bdf
Signed-off-by: Ole Troan <ot@cisco.com>
82 files changed:
Makefile
build-data/platforms.mk
build-root/Makefile
extras/rpm/vpp.spec
src/configure.ac
src/examples/sample-plugin/Makefile.am
src/examples/sample-plugin/sample/sample.api
src/plugins/acl/acl.api
src/plugins/dpdk/api/dpdk.api
src/plugins/flowprobe/flowprobe.api
src/plugins/gtpu/gtpu.api
src/plugins/ioam/export-vxlan-gpe/vxlan_gpe_ioam_export.api
src/plugins/ioam/export/ioam_export.api
src/plugins/ioam/ip6/ioam_cache.api
src/plugins/ioam/lib-pot/pot.api
src/plugins/ioam/lib-trace/trace.api
src/plugins/ioam/lib-vxlan-gpe/ioam_vxlan_gpe.api
src/plugins/ioam/udp-ping/udp_ping.api
src/plugins/kubeproxy/kp.api
src/plugins/l2e/l2e.api
src/plugins/lb/lb.api
src/plugins/memif/memif.api
src/plugins/nat/nat.api
src/plugins/pppoe/pppoe.api
src/plugins/stn/stn.api
src/suffix-rules.mk
src/tools/vppapigen/C.py [new file with mode: 0644]
src/tools/vppapigen/JSON.py [new file with mode: 0644]
src/tools/vppapigen/gram.y [deleted file]
src/tools/vppapigen/lex.c [deleted file]
src/tools/vppapigen/lex.h [deleted file]
src/tools/vppapigen/node.c [deleted file]
src/tools/vppapigen/node.h [deleted file]
src/tools/vppapigen/test_vppapigen.py [new file with mode: 0755]
src/tools/vppapigen/vppapigen [new symlink]
src/tools/vppapigen/vppapigen.py [new file with mode: 0755]
src/vlibmemory/memclnt.api
src/vnet/bfd/bfd.api
src/vnet/bier/bier.api
src/vnet/classify/classify.api
src/vnet/cop/cop.api
src/vnet/devices/af_packet/af_packet.api
src/vnet/devices/netmap/netmap.api
src/vnet/devices/tap/tapv2.api
src/vnet/devices/virtio/vhost_user.api
src/vnet/dhcp/dhcp.api
src/vnet/dns/dns.api
src/vnet/ethernet/p2p_ethernet.api
src/vnet/feature/feature.api
src/vnet/fib/fib_types.api [new file with mode: 0644]
src/vnet/flow/flow.api
src/vnet/geneve/geneve.api
src/vnet/gre/gre.api
src/vnet/interface.api
src/vnet/ip/ip.api
src/vnet/ip/punt.api
src/vnet/ipsec-gre/ipsec_gre.api
src/vnet/ipsec/ipsec.api
src/vnet/l2/l2.api
src/vnet/l2tp/l2tp.api
src/vnet/lisp-cp/lisp.api
src/vnet/lisp-cp/one.api
src/vnet/lisp-gpe/lisp_gpe.api
src/vnet/lldp/lldp.api
src/vnet/map/map.api
src/vnet/mpls/mpls.api
src/vnet/pg/pg.api
src/vnet/policer/policer.api
src/vnet/session/session.api
src/vnet/span/span.api
src/vnet/srmpls/sr_mpls.api
src/vnet/srv6/sr.api
src/vnet/tcp/tcp.api
src/vnet/udp/udp.api
src/vnet/unix/tap.api
src/vnet/vxlan-gpe/vxlan_gpe.api
src/vnet/vxlan/vxlan.api
src/vpp-api/java/Makefile.am
src/vpp/api/vpe.api
src/vpp/oam/oam.api
src/vpp/stats/stats.api
src/vppapigen.am