summaryrefslogtreecommitdiffstats
path: root/src/tools
AgeCommit message (Collapse)AuthorFilesLines
2019-10-09api: autogenerate event handler functions for *_test.cOle Troan1-0/+17
Type: fix Signed-off-by: Ole Troan <ot@cisco.com> Change-Id: If75f63244f37ae3312832ca015f738c51ee7da1f Signed-off-by: Ole Troan <ot@cisco.com>
2019-09-25api: split api generated filesOle Troan3-74/+261
Split generation of API message enum and the typedefs into separate files, so that the type file can be included from elsewhere. Generate a C file for VPP that contains the API registration, this was previously done via X macros by the C pre- processor. This allows deleting lots of skeleton/copy paste code for each feature. plugins/flowprobe plugins/map examples/sample-plugin vnet/ipip used as Guinea pigs. Generate a C Test file for VAT, that does the same for VAT plugins. Also add support for a per-message CLI option, that is currently limited to VAT help text. option vat_help = "<help text>"; Type: refactor Change-Id: I245e3104bb76f7e1fb69a59ab20cc7c8dfcdd460 Signed-off-by: Ole Troan <ot@cisco.com>
2019-09-19api: split vl_api_prefix into twoOle Troan3-47/+39
One type for address with prefix and one type for prefix. Type: fix Signed-off-by: Ole Troan <ot@cisco.com> Change-Id: Icfec51d9b7d5cde1d69fbecdd97498688ab7b295 Signed-off-by: Ole Troan <ot@cisco.com> Signed-off-by: Klement Sekera <ksekera@cisco.com> Signed-off-by: Ole Troan <ot@cisco.com>
2019-09-18vppapigen: fix missing vla check for union classOle Troan2-52/+87
Type: fix Signed-off-by: Ole Troan <ot@cisco.com> Change-Id: Ie775cf3469d761847ac39cf0d80a3ec6463b7928
2019-09-18vppapigen: fix tests and run on verifyPaul Vinciguerra2-26/+56
- changes vppapigen to only process an import once. Type: fix Change-Id: Ifcbcfcc69fdfb80d63195a17701762d0c239d7b4 Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com> Signed-off-by: Ole Troan <ot@cisco.com>
2019-09-16api: autogenerate api trace print/endianOle Troan4-86/+434
In addition to the external vppapitrace tool, VPP itself supports dumping of API trace files. In two formats, "custom-dump" and "dump". "dump" gives a human friendly list, and "custom-dump" is meant to give a list of commands that can be fed to VAT. This patch only deals with "dump". Prior to this fix, auto-generation was only done for the basic types. This fix adds support for any type, including lists, and supports pretty-printing of enums, strings, IP addresses, MAC addresses and so on. Usage: api trace dump <api-trace-file> For example Change-Id: I4e485680e6dcfce7489299ae6cf31d835071ac40 ---------- trace 48 ----------- vl_api_sw_interface_set_flags_t: _vl_msg_id: 75 client_index: 0 context: 10 sw_if_index: 1 flags: IF_STATUS_API_FLAG_ADMIN_UP ---------- trace 49 ----------- vl_api_sw_interface_add_del_address_t: _vl_msg_id: 88 client_index: 0 context: 11 sw_if_index: 1 is_add: 1 del_all: 0 prefix: 172.16.1.1/24 ---------- trace 51 ----------- vl_api_cli_inband_t: _vl_msg_id: 819 client_index: 0 context: 13 cmd: packet-generator capture pg0 pcap /tmp/vpp-unittest-TestMAP-YhcmDX/pg0_out.pcap disable ---------- trace 58 ----------- vl_api_ip_neighbor_add_del_t: _vl_msg_id: 199 client_index: 0 context: 20 is_add: 1 neighbor: sw_if_index: 2 flags: IP_API_NEIGHBOR_FLAG_NONE mac_address: 0202.0000.ff02 ip_address: fd01:2::2 Signed-off-by: Ole Troan <ot@cisco.com> Change-Id: I5556d06008de2762e7c2d35a8b0963ae670b3db1 Type: fix Signed-off-by: Ole Troan <ot@cisco.com> Signed-off-by: Ole Troan <ot@cisco.com> Signed-off-by: Ole Troan <ot@cisco.com> Signed-off-by: Ole Troan <ot@cisco.com> Signed-off-by: Ole Troan <ot@cisco.com> Signed-off-by: Ole Troan <ot@cisco.com> Signed-off-by: Ole Troan <ot@cisco.com> Signed-off-by: Ole Troan <ot@cisco.com>
2019-09-10misc: fix shebang with missing envNathan Skrzypczak1-1/+1
This is needed for macos where /usr/bin/python[23] does not exist and /usr/bin is write protected Type: fix Change-Id: Ia1b3c732248c78482993de532fa2ea96e376d90a Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-09-03api: enforce vla is last and fixed string typeOle Troan2-11/+74
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>
2019-08-23vppapitrace: add text outputOle Troan1-8/+65
Add new argument --todump, to mimic the VPP api trace dump output. Type: feature Signed-off-by: Ole Troan <ot@cisco.com> Change-Id: Ia8c845b321ef9d55dd6e2f388165ca5498406ab6
2019-08-20vppapigen: remove support for legacy typedefsPaul Vinciguerra1-1/+3
vppapigen has remapped legacy to typedefs behind the scenes for some time now. - update .api files to use new style typedefs. - issue error on 'typeonly define' in .api files - remove unneeded macros redefining vl_noop_handler Type: refactor Change-Id: I7a8c4a6dafacee6a131f95cd0e9b03a8c60dea8b Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2019-08-20vppapigen: remove python2 supportPaul Vinciguerra1-28/+30
vppapigen has been running under python3 for months. Remove the python2 conditional code. In case of an error, explicitly log and return non-0. Type: refactor Change-Id: I20a73e0f2cb875aab6441959a85a35e88c9f8250 Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2019-08-19vppapigen map: raise ValueError when fieldname is python keywordPaul Vinciguerra1-0/+4
When working on the lb api, one of the field names was chosen as 'as' (application server). Since 'as' is a python keyword, the field was renamed to _1 in vpp_papi. This changeset instead fails early with a descriptive message, hopefully saving others time troubleshooting the issue. ValueError: Fieldname 'as' is a python keyword and is not accessible via the python API. Type: feature Change-Id: Ib048d97de0e392645540092e356cf8989848c947 Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2019-08-08api: vppapitrace JSON/API trace converterOle Troan2-0/+435
usage: vppapitrace.py [-h] [--debug] [--apidir APIDIR] {convert,replay} ... optional arguments: -h, --help show this help message and exit --debug enable debug mode --apidir APIDIR Location of JSON API definitions subcommands: valid subcommands {convert,replay} additional help convert Convert API trace to JSON or Python and back replay Replay messages to running VPP instance To convert an API trace file to JSON: vppapitrace convert /tmp/api.trace trace.json To convert an (edited) JSON file back to API trace for replay: vppapitrace convert trace.json api-edited.trace To generate a Python file that can be replayed: vppapitrace convert /tmp/api.trace trace.py vppapitrace convert trace.json trace.py Replay it to a running VPP instance: vppapitrace replay --socket /tmp/api.trace In VPP that file can be replayed with: vpp# api trace replay api-edited.trace This patch also modifies the API binary trace format, to include the message id to message name table. Change-Id: Ie6441efb53c1c93c9f778f6ae9c1758bccc8dd87 Type: refactor Signed-off-by: Ole Troan <ot@cisco.com>
2019-08-01vppapigen: revert "implement reversible repr's"Vratko Polak1-34/+15
The previous change seems to affect all CRCs. Type: fix Fixes: b504777e7f1c9728e65b874284b4dfd39359c8a8. Change-Id: I65e27ce22020e5ebc764b5a51b5fc84992ddb40a Signed-off-by: Vratko Polak <vrpolak@cisco.com>
2019-07-31vppapigen: implement reversible repr'sPaul Vinciguerra1-15/+34
Type: feature Change-Id: I92757f041cde399229c42e34515ace0fcd37908b Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2019-07-31vppapigen: add endian_string for f64Paul Vinciguerra1-0/+1
Type: fix Change-Id: I35838baea21ead4a3f45d998ff225a513781d7ee Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2019-07-24vapi: add python scripts to vpp-dev packageVratko Polak1-1/+10
As requested in https://lists.fd.io/g/vpp-api-dev/message/18 three vapi scrips are packaged, destination to share/vpp/. Also: + Add "vapi" as a separate component to maintainers file. + Add also vppapigen/generate_json.py to share/vpp/. + Improve CMakeLists.txt indentation. Type: feature Change-Id: Ia06715621aa344e8ee759410b293509a54f81fdd Signed-off-by: Vratko Polak <vrpolak@cisco.com>
2019-07-18build: add more src dirs for generate_json.pyVratko Polak1-4/+7
Because file vpe.api is in src/vpp/api/ and memclnt.api is in src/vlibmemory/. Also removed api_types, as iteration can be done over output_dir_map. Type: fix Fixes: 9529feb4525dfd13e5636640083361256121d275 Ticket: VPP-1715 Change-Id: I021afeafdf98904d076953f0b09d1e3587fd3100 Signed-off-by: Vratko Polak <vrpolak@cisco.com>
2019-07-17build: add targets for json api filesPaul Vinciguerra1-0/+94
Type: make Ticket: VPP-1715 Change-Id: I78497d679d9e793b47a06a0c5cb3b12d86b08489 Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2019-07-03vppapigen: allow decimal number in NUM tokenPaul Vinciguerra1-2/+6
Needed to set f64 default values. Type: feature Change-Id: Ic58ebc0d9d890bf0e7821894285e61a5bee13199 Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2019-06-20vppapigen: allow negative number in NUM tokenOle Troan1-1/+1
Change-Id: I964cb44f8604187390009dcef7dd766b3804c3ca Type: make Signed-off-by: Ole Troan <ot@cisco.com>
2019-06-18fib: fib api updatesNeale Ranns1-2/+0
Enhance the route add/del APIs to take a set of paths rather than just one. Most unicast routing protocols calcualte all the available paths in one run of the algorithm so updating all the paths at once is beneficial for the client. two knobs control the behaviour: is_multipath - if set the the set of paths passed will be added to those that already exist, otherwise the set will replace them. is_add - add or remove the set is_add=0, is_multipath=1 and an empty set, results in deleting the route. It is also considerably faster to add multiple paths at once, than one at a time: vat# ip_add_del_route 1.1.1.1/32 count 100000 multipath via 10.10.10.11 100000 routes in .572240 secs, 174751.80 routes/sec vat# ip_add_del_route 1.1.1.1/32 count 100000 multipath via 10.10.10.12 100000 routes in .528383 secs, 189256.54 routes/sec vat# ip_add_del_route 1.1.1.1/32 count 100000 multipath via 10.10.10.13 100000 routes in .757131 secs, 132077.52 routes/sec vat# ip_add_del_route 1.1.1.1/32 count 100000 multipath via 10.10.10.14 100000 routes in .878317 secs, 113854.12 routes/sec vat# ip_route_add_del 1.1.1.1/32 count 100000 multipath via 10.10.10.11 via 10.10.10.12 via 10.10.10.13 via 10.10.10.14 100000 routes in .900212 secs, 111084.93 routes/sec Change-Id: I416b93f7684745099c1adb0b33edac58c9339c1a Signed-off-by: Neale Ranns <neale.ranns@cisco.com> Signed-off-by: Ole Troan <ot@cisco.com> Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2019-06-14g2: clean up compile/link errorsDave Barach3-35/+33
Many missing "extern" declarations, it's hard to imagine why the related compile/link errors just showed up. Type: fix Change-Id: I0878bf5fdb10ffdd8e0c49c9e5153cddaf3bc1fd Signed-off-by: Dave Barach <dave@barachs.net>
2019-06-07API: Add support for "defaults"Ole Troan1-4/+17
Add support in the API language for specifying a field default. Add default support in Python binding. define foo { u16 mtu [default = 1500]; }; This is client side only. I.e. if the mtu argument is not passed to the foo function, the client language binding will set it default to 1500. Change-Id: I5df43f3cd87cb300b40ca38e15dcab25b40e424a Signed-off-by: Ole Troan <ot@cisco.com>
2019-06-07vppapigen: Fold up CRC from dependent types.Ole Troan3-33/+48
Change-Id: Id51f26f225cd567ca19efc2301e94fa88840ae8f Signed-off-by: Ole Troan <ot@cisco.com> Type: fix Signed-off-by: Ole Troan <ot@cisco.com>
2019-05-30ipip: refactor ipip.api with explicit typesOle Troan1-0/+1
Use explicit types vl_api_address/prefix in ipip.api. Change-Id: Ib3133cebdbe4437742924efd49cde4009c4cc31b Type: refactor Signed-off-by: Ole Troan <ot@cisco.com>
2019-05-28docs: Add VPP API language documentationOle Troan1-0/+343
Initial commit of VPP API language documentation. Change-Id: Ied67203265319a8603086486c9031e723484c501 Signed-off-by: Ole Troan <ot@cisco.com>
2019-04-29API: Add support for limits to language.Ole Troan2-6/+15
string name [limit = 64]; Meta-data to do argument validation. Change-Id: I1f3e0f09b2d5285224399413d25206f77bd3f4b1 Signed-off-by: Ole Troan <ot@cisco.com>
2019-03-28AppImage packagingDave Barach5-0/+164
Disabled by default. To kick the the tires: wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage sudo mv linuxdeploy-x86_64.AppImage /usr/local/bin/linuxdeploy sudo chmod +x linuxdeploy-x86_64.AppImage Enable VPP_BUILD_APPIMAGE e.g. in ccmake make build | make build-release The vpp AppImage lands in .../install-xxx-native/VPP-x86_64.AppImage. To run it: ./VPP-x86_64.AppImage vpp unix interactive To run it (as root) and inhale the usual startup.conf: sudo ./VPP-x86_64.AppImage \${HERE}/bin/vpp -c \${HERE}/etc/vpp/startup.conf To run vppctl, or any of the usual vpp binaries: ./VPP-x86_64.AppImage vppctl [etc] Change-Id: Ide8cf4658cbb56f1d36a1ce7fc8f7338f8d38278 Signed-off-by: Dave Barach <dave@barachs.net>
2019-03-28Typos. A bunch of typos I've been collecting.Paul Vinciguerra1-1/+1
Change-Id: I53ab8d17914e6563110354e4052109ac02bf8f3b Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2019-03-22vppapigen: allow for enum size other than u32Andrew Yourtchenko1-1/+10
Change-Id: If20d2fbab9b854b7db276c81918fdff6abcb8385 Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
2019-02-26vppapigen: Expose "option version" in generated JSON file.Ole Troan1-0/+1
Change-Id: Iaa78ee181589584885b0f377eafb89e603718bd4 Signed-off-by: Ole Troan <ot@cisco.com>
2019-02-18Resolve vppapigen DeprecationWarning.Paul Vinciguerra1-6/+7
/vpp/src/tools/vppapigen/vppapigen:823: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses Change-Id: If7729778374e9193f6381c8bd2ed34c875db3f1e Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2019-02-04g2-only: add (min,max) stats to the anomaly detectorDave Barach1-5/+25
Shows up on the status line. Change-Id: I14635f7406069a4a868bdb7c8b85da941c49dbba Signed-off-by: Dave Barach <dave@barachs.net>
2019-02-03Automated anomaly detectionDave Barach2-220/+540
Compute per-track mean, variance, and n*stddev stats for the first u32 datum in each instance of the supplied event. Search for the next instance of the indicated event which has a datum larger than mean + n*stddev. This turns out to be a very effective "Nixon Gap" finder when the selected event datum is the instantaneous vector size. Such traces can be easily captured from production vpp images. Change-Id: I876843cb2ece22f902720704ce4568d4e1173e01 Signed-off-by: Dave Barach <dave@barachs.net>
2019-02-02Python3: Move vppapigen to python3.Paul Vinciguerra2-9/+15
Change-Id: I26846d0c12211a29ccfca7c269b9094f6fdbd95c Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2018-12-19session: add cli option to dump session elogFlorin Coras2-2/+3
Change-Id: I1f42644f143bb65ee764c0f869b402595126adac Signed-off-by: Florin Coras <fcoras@cisco.com>
2018-12-13API: Use string type instead of u8.Ole Troan2-10/+17
The new string type is modelled after string in proto3. It is always variable length. Change-Id: I64884067e28a80072c8dac31b7c7c82d6e306051 Signed-off-by: Ole Troan <ot@cisco.com> Signed-off-by: Michal Cmarada <mcmarada@cisco.com> Signed-off-by: Ole Troan <ot@cisco.com>
2018-12-03API: C generator improve symbol protection.Ole Troan1-2/+2
Change-Id: I9ef042c06c12892a2bbc23cc3bac6891c77e3feb Signed-off-by: Ole Troan <ot@cisco.com>
2018-11-29vppapigen: Fix python3 compatibilityOle Troan1-24/+40
Change-Id: I9124fcb755ba43fd8f44712f0940f351c460c5b0 Signed-off-by: Ole Troan <ot@cisco.com>
2018-11-29API: Add support for type aliasesOle Troan3-3/+40
Previously all types are compound. This adds support for aliases, so one can do things like: typedef u32 interface_index; or typedef u8 ip4_address[4]; Change-Id: I0455cad0123fc88acb491d2a3ea2725426bdb246 Signed-off-by: Ole Troan <ot@cisco.com> Signed-off-by: Klement Sekera <ksekera@cisco.com>
2018-10-23c11 safe string handling supportDave Barach3-6/+6
Change-Id: Ied34720ca5a6e6e717eea4e86003e854031b6eab Signed-off-by: Dave Barach <dave@barachs.net>
2018-09-26perftool: fix c2cpelFlorin Coras1-0/+2
Change-Id: I0f39477bbf88d490409fdcd5f58df55cfe2ec531 Signed-off-by: Florin Coras <fcoras@cisco.com>
2018-09-13Fix: vppapigen make build fails on fresh installPaul Vinciguerra4-3/+3
Steps to reproduce: vagrant@localhost:/vagrant$ build-root/vagrant/build.sh ... @@@@ Building vpp in /vagrant/build-root/build-vpp-native/vpp @@@@ [51/1169] Generating API header /vagrant/build-root/build-vpp-native/vpp/vlibmemory/memclnt.api.json FAILED: cd /vagrant/build-root/build-vpp-native/vpp/vlibmemory && mkdir -p /vagrant/build-root/build-vpp-native/vpp/vlibmemory && /vagrant/src/tools/vppapigen/vppapigen --includedir /vagrant/src --input /vagrant/src/vlibmemory/memclnt.api JSON --output /vagrant/build-root/build-vpp-native/vpp/vlibmemory/memclnt.api.json AttributeError: 'module' object has no attribute 'dumps' This seems to be due to JSON.py namespace colliding with the standard lib json.py Change-Id: If389e4e05ef0c166b0c2b3bef7ec0185298679a8 Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2018-09-07cmake: set packaging component for different filesDamjan Marion1-1/+2
Change-Id: I033a1f5cdb24f77462cb5ec90a62226d93f52925 Signed-off-by: Damjan Marion <damarion@cisco.com>
2018-08-30cmake: fix vppapigen install permissonsDamjan Marion1-1/+9
Change-Id: I0f49842d3e6690d0965bd310321495a2dc4c2350 Signed-off-by: Damjan Marion <damarion@cisco.com>
2018-08-28cmake: Add perftool to cmake buildMohsin Kazmi1-0/+35
Change-Id: I921e92473a9dedde5952172d19676d47ffc4b53d Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
2018-08-28cmake: add g2 and elftool toolsDamjan Marion2-0/+53
Change-Id: I901c5a2c0ac81421a69b8ade9307c304aa38582b Signed-off-by: Damjan Marion <damarion@cisco.com>
2018-08-28cmake: install vppapigenDamjan Marion1-0/+15
Change-Id: If5bf1708a07acde73ed34639eeed95babdcf1ccd Signed-off-by: Damjan Marion <damarion@cisco.com>
2018-06-29VPPAPIGEN: use SOURCE_DATE_EPOCH for datestringNirmoy Das1-1/+2
bwiedemann@suse.com pointed me that: For reproducible builds datestring should be generated using SOURCE_DATE_EPOCH which distributions set centrally, and have build tools that consume it to produce reproducible output. https://wiki.debian.org/ReproducibleBuilds/TimestampsProposal#Python Change-Id: Iefa2b93231bbc4c8af49736be4d7a5720c46b28d Signed-off-by: Nirmoy Das <nirmoy.aiemd@gmail.com>