Add client-side msg_name_and_crc -> msg_index table 70/3770/12
authorDave Barach <dave@barachs.net>
Thu, 10 Nov 2016 19:22:49 +0000 (14:22 -0500)
committerDamjan Marion <dmarion.lists@gmail.com>
Mon, 21 Nov 2016 18:11:41 +0000 (18:11 +0000)
commit557d128b68a1213e056f5eed9fe6f230ca3f3144
tree6b31ac462efacf3f6937788c9b7af1420497c9fc
parentfca670b0ec9f74aa977fe479a5517ad6367ee898
Add client-side msg_name_and_crc -> msg_index table

vppapigen now generates per-message crcs. Verified that whitespace
and real changes in message A don't change the crc for message B, etc.

Fixed the sample and flowperpkt plugins to participate. Others need
the same treatment. They don't build due to python/java language binding
build issues.

To use the scheme:

Client connects as usual.

Then call: u32 vl_api_get_msg_index(char * name_and_crc)
name_and_crc is a string like: "flowperpkt_tx_interface_add_del_753301f3",
aka the message name with _%08x <expected crc> appended.

Try these vpp-api-test commands to play with it:

vat# dump_msg_api_table
     <snip>
 [366]: punt_reply_cca27fbe
 [367]: ipsec_spd_dump_5e9ae88e
 [368]: ipsec_spd_details_6f7821b0
 [369]: sample_macswap_enable_disable_0f2813e2
 [370]: sample_macswap_enable_disable_reply_476738e5
 [371]: flowperpkt_tx_interface_add_del_753301f3
 [372]: flowperpkt_tx_interface_add_del_reply_d47e6e0b

vat# get_msg_id sample_macswap_enable_disable_reply_476738e5
 'sample_macswap_enable_disable_reply_476738e5' has message index 370

vat# get_msg_id sample_macswap_enable_disable_reply_476738e3
 'sample_macswap_enable_disable_reply_476738e3' not found

CRCs may vary, etc.

vppapigen is used to build a set of JSON representations
of each API file from vpp-api/Makefile.am and that is in
turn used by each language binding (Java, Python, Lua).

Change-Id: I3d64582e779dac5f20cddec79c562c288d8fd9c6
Signed-off-by: Dave Barach <dave@barachs.net>
Signed-off-by: Ole Troan <ot@cisco.com>
28 files changed:
build-root/emacs-lisp/plugin-main-skel.el
plugins/flowperpkt-plugin/flowperpkt/flowperpkt.c
plugins/ioam-plugin/ioam/export/ioam_export.c
plugins/ioam-plugin/ioam/lib-pot/pot_api.c
plugins/ioam-plugin/ioam/lib-trace/trace_api.c
plugins/lb-plugin/lb/api.c
plugins/sample-plugin/sample/sample.c
plugins/snat-plugin/Makefile.am
plugins/snat-plugin/snat/snat.c
vlib-api/vlibapi/api.h
vlib-api/vlibapi/api_shared.c
vlib-api/vlibmemory/memclnt.api
vlib-api/vlibmemory/memory_shared.c
vlib-api/vlibmemory/memory_vlib.c
vpp-api-test/vat/api_format.c
vpp-api/Makefile.am
vpp-api/configure.ac
vpp-api/python/Makefile.am
vpp-api/python/pneum/api-gen.py [deleted file]
vpp-api/python/pneum/pneum.c
vpp-api/python/pneum/pneum.h
vpp-api/python/pneum/test_pneum.c
vpp-api/python/vpp_papi/pneum_wrap.c
vpp/vpp-api/api.c
vppapigen/lex.c
vppapigen/lex.h
vppapigen/node.c
vppapigen/node.h