govpp.git
20 months agoChange module name to go.fd.io/govpp 08/36608/3 master v0.6.0-alpha
Nathan Skrzypczak [Thu, 7 Jul 2022 14:57:45 +0000 (16:57 +0200)]
Change module name to go.fd.io/govpp

We are changing the module name from git.fd.io/govpp.git to
go.fd.io/govpp to make repository migration easier.

Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
Change-Id: Idd6e0d583a92f6b82fe9adeffd026cd6b856038b

20 months agoSet current version to 0.6.0-dev 72/36772/2
Nathan Skrzypczak [Thu, 28 Jul 2022 14:54:16 +0000 (16:54 +0200)]
Set current version to 0.6.0-dev

Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
Change-Id: I38df5efcb666f64301fecd69f82210b091deef96

20 months agoGoVPP release v0.5.0 71/36771/2 v0.5.0
Nathan Skrzypczak [Thu, 28 Jul 2022 14:49:36 +0000 (16:49 +0200)]
GoVPP release v0.5.0

Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
Change-Id: Ie8586f85c0d8283ab2783240b1a460f29e627d8d

20 months agoFix stats API for vpp 22.06 73/36773/2
Lukas Vogel [Thu, 28 Jul 2022 14:50:34 +0000 (16:50 +0200)]
Fix stats API for vpp 22.06

VPP changed the error counters to be simple counters in
https://gerrit.fd.io/r/c/vpp/+/35640, that broke goVPP stats extraction.
This was partially fixed by https://gerrit.fd.io/r/c/govpp/+/36085,
however this fix didn't make it work completely.

There were some leftover conversions from dirType (== int) to StatType
(== string). Unfortunately the Go compiler does not flag those, they
would however be catched by go vet.

The fixes that are done here makes the stats extraction work for us
partially: We noticed that error counters are now of type symlink and
unfortunately updating a stat dir that contains symlink counters doesn't
work correctly. CopyEntryData, that is called when initializing the dir,
correctly handles the symlink counters. But updateStatOnIndex simply
ignores symlink counters because `dirType != entry.Type` will hold. We
didn't really figure out how to correctly handle this so this would need
to be picked up by someone who is more familiar with the code. For now
we work around this limitation by not using the GetErrorStats API and
instead manually read the dir everytime we want to access error
counters.

Co-authored-by: Sergio Gonzalez Monroy <monroy@anapaya.net>
Change-Id: I322133f362e782fea3e8a2be70967a796ba87b75
Signed-off-by: Lukas Vogel <vogel@anapaya.net>
20 months agoFix statseg v1 error offset zero 29/36729/1
Nathan Skrzypczak [Mon, 25 Jul 2022 14:23:49 +0000 (16:23 +0200)]
Fix statseg v1 error offset zero

This is the same fix as [0] for the statsseg v1 implementation
[0] https://gerrit.fd.io/r/c/govpp/+/36442

Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
Change-Id: Ie22956152a83abe6371fe89482a66f2253b8493c

20 months agoFix statseg v2 error index zero id skip 42/36442/3
Dmitry Valter [Wed, 15 Jun 2022 13:58:16 +0000 (13:58 +0000)]
Fix statseg v2 error index zero id skip

Don't skip zero id error counters as it's not a pointer.

Type: fix
Signed-off-by: Dmitry Valter <d-valter@yandex-team.ru>
Change-Id: I907bb9f110d8bf5db6326ae654206ddc83187044

22 months agoadd sknat to committers 51/36451/1
Nathan Skrzypczak [Fri, 17 Jun 2022 16:15:54 +0000 (18:15 +0200)]
add sknat to committers

Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
Change-Id: Ibc2b6db8502c964a0e9b9cb00bd87e75e67f6273

22 months agobinapi: remove internal/testbinapi 00/36300/1
Nathan Skrzypczak [Mon, 30 May 2022 15:18:34 +0000 (17:18 +0200)]
binapi: remove internal/testbinapi

This patch is a proposal to remove the necessity to version
two versions of the generated api. We would rely on `./binapi/`
for 'internal' logic, making the dependancy on VPP a bit
stronger, but removing a folder and a .json file we don't
upgrade regularly.

Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
Change-Id: I99063ed571eb193271b3cda805d692155ac90f61

22 months agoUpdate generated binapi to v22.02 & makefile changes 56/36056/4
Nathan Skrzypczak [Wed, 27 Apr 2022 16:39:03 +0000 (18:39 +0200)]
Update generated binapi to v22.02 & makefile changes

This patch does some small updates to the Makefile.
* `make gen-binapi-from-code` is removed, and moves to
`gen-binapi-local`
* `make build` is patched to build cmd & examples
* `make binapi-generator` to build the api-generator
without other binaries, as they typically require its
output to build.
* `make gen-binapi-local` runs the locally built binapi-generator
to update the local bindings. It expects ${VPP_DIR} to be set and
to point to a local vpp repository checked out with the right version
* `make gen-binapi-internal` runs the locally built binapi-generator
to update the bindings in `internal/testbinapi/binapi2001`

Regarding VPP, notable changes when moving to v22.02 are :
- ControlPing moved from vpe to memclnt
- CliInband went from vpe to vlib

Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
Change-Id: Ie5cd2d5ded7ecaffd9abc3ca675df40be272b1fa

22 months agotest: Fix test dependancy 99/36299/2
Nathan Skrzypczak [Mon, 30 May 2022 14:43:41 +0000 (16:43 +0200)]
test: Fix test dependancy

This patch updates the go.mod with missing dependancies
for running `make test`

It also addresses an issue in `proxy/server.go` where
make test would complain of the double newline at the
end of the message.

Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
Change-Id: Ia2b00ffa9ecc398ee0ff6af165141f04b0025d61

23 months agoRegenerate 'types' with APIFile/APIVersion/CrcVersion 48/36048/3
Ed Warnicke [Wed, 27 Apr 2022 00:16:20 +0000 (19:16 -0500)]
Regenerate 'types' with APIFile/APIVersion/CrcVersion

Signed-off-by: Ed Warnicke <hagbard@gmail.com>
Change-Id: I4ca28677573f6479258a67e3699b0d92bf18b009

23 months agoGenerate APIName/APIVersion/CrcVersion for 'types' 47/36047/3
Ed Warnicke [Wed, 27 Apr 2022 00:14:55 +0000 (19:14 -0500)]
Generate APIName/APIVersion/CrcVersion for 'types'

Signed-off-by: Ed Warnicke <hagbard@gmail.com>
Change-Id: I661eb993c10f73909e21dcde73466d92ff54b52d

23 months agoRegenerate binapi from Dockerfile 46/36046/3
Ed Warnicke [Wed, 27 Apr 2022 00:10:10 +0000 (19:10 -0500)]
Regenerate binapi from Dockerfile

Signed-off-by: Ed Warnicke <hagbard@gmail.com>
Change-Id: Ia9364507e55498fa6ed1315ea4d115817f98ec44

23 months agoAdd Dockerfile to ease generation of binapi/ 45/36045/3
Ed Warnicke [Tue, 26 Apr 2022 23:57:24 +0000 (18:57 -0500)]
Add Dockerfile to ease generation of binapi/

Signed-off-by: Ed Warnicke <hagbard@gmail.com>
Change-Id: I2ca5fce1717c798348bb128d5252050cf78b0df2
Signed-off-by: Ed Warnicke <hagbard@gmail.com>
23 months agogo.mod: Update for go1.18 & bump to go 1.13 35/36135/2
Nathan Skrzypczak [Wed, 11 May 2022 12:47:27 +0000 (14:47 +0200)]
go.mod: Update for go1.18 & bump to go 1.13

This patch updates the go.mod & go.sum as the build was breaking
with go1.18. It also bumps the required go version to 1.13
as -trimpath was introduced in 1.13 only.

Tested `make build` with :
- go 1.13
- go 1.17.10
- go 1.18.1

Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
Change-Id: I8790e9b46757cb740c69042f6b72419e960f5d9a

23 months agosupport error counters also as normal counters 85/36085/1
Vladimir Lavor [Thu, 5 May 2022 08:56:23 +0000 (10:56 +0200)]
support error counters also as normal counters

https://gerrit.fd.io/r/c/vpp/+/35640

Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
Change-Id: I91820bb15655e7b309af814c659eb9f5e7cd08a4

23 months agofixed data race in core.Connection.Close(). 61/35861/2
Sergey Elantsev [Fri, 1 Apr 2022 19:43:40 +0000 (22:43 +0300)]
fixed data race in core.Connection.Close().

The problem is triggered by the following events:
1. VPP stops.
2. core.Connection.healthCheckLoop() detects it and calls disconnectVPP(),
   which does close healthCheckDone channel for the first time.
   At this point Connection becomes unusable - re-entrance to
   connectLoop() will return immediately because of a closed
   healthCheckDone channel.
   But, the race is that connection may set c.vppConnected = 1
   before terminating the connect loop.
3. User calls Connection.Close(), who seed c.vppConnected = 1,
   and tries to close already closed channel, which leads to a panic.

This commit fixes this race by telling disconnectVPP() whether
it is a terminal stop triggered via Close(), or a temporary one
from connectLoop().

Change-Id: I555149da35ca3dc2b606bad59f2101266c0ef6b9
Signed-off-by: Sergey Elantsev <elantsev.s@yandex.ru>
23 months agoread memory stats from per-heap couters 71/36071/1
Vladimir Lavor [Mon, 2 May 2022 11:58:04 +0000 (13:58 +0200)]
read memory stats from per-heap couters

Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
Change-Id: Ic4a500ea83b392eb9720575d95597bc48b44c759

2 years agoProperly close the socket watcher 90/35690/3
Vladimir Lavor [Thu, 17 Mar 2022 08:33:38 +0000 (09:33 +0100)]
Properly close the socket watcher

Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
Change-Id: I40665a0413f273e52bcaeaabacdf1bd55afcfd67

2 years agoconnection: prevent channel ID overlap 50/35150/2
Lukas Vogel [Mon, 31 Jan 2022 10:33:37 +0000 (11:33 +0100)]
connection: prevent channel ID overlap

When creating a new channel and the channel ID wraps around, make sure
to not re-use a channel ID that is still in use. Re-using the channel
ID usually means that the connection health check will stop working and
other things might break as well.

Also rename maxChannelID to nextChannelID and use a lock to guard access
instead of using an atomic. The lock does anyway need to be acquired
because to put the entry in the map.

This commit was inspired by the following PR on Github:
https://github.com/FDio/govpp/pull/14.

Change-Id: I8c1a4ca63a53d07a6482b6047a3005065168c0b4
Signed-off-by: Lukas Vogel <vogel@anapaya.net>
2 years agoBegin development for v0.5.0 24/34924/1
Ondrej Fabry [Mon, 17 Jan 2022 10:44:25 +0000 (11:44 +0100)]
Begin development for v0.5.0

Change-Id: I612aca78176a9195db05387291335e5a12791f40
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
2 years agoPrepare release v0.4.0 23/34923/1 v0.4.0
Ondrej Fabry [Mon, 17 Jan 2022 10:29:24 +0000 (11:29 +0100)]
Prepare release v0.4.0

Change-Id: I5e3cefc0e8b3eda4beacd2aab680a723e78884d6
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
2 years agoUpdate README 22/34922/1
Ondrej Fabry [Mon, 17 Jan 2022 10:17:56 +0000 (11:17 +0100)]
Update README

Change-Id: Id070a39c871a1d428523cbf2eec58dcb51e2c14a
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
2 years agodoc: Update README 11/34911/1
Ondrej Fabry [Fri, 14 Jan 2022 14:02:10 +0000 (15:02 +0100)]
doc: Update README

Change-Id: I577ec64c78fe5684fcef109c216810e5fe6b4009
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
2 years agoChangelog for release 0.4.0 81/34881/1
Vladimir Lavor [Tue, 11 Jan 2022 12:40:37 +0000 (13:40 +0100)]
Changelog for release 0.4.0

Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
Change-Id: I1a260fae5633783624f28a658ebf72977effdf76

2 years agoAdd "FromIP" helper for addresses 26/34126/3
Aloys Augustin [Mon, 18 Oct 2021 12:16:59 +0000 (14:16 +0200)]
Add "FromIP" helper for addresses

Change-Id: Ib34b84b8267c95ce3bacef4806cc52a6c7c24f05
Signed-off-by: Aloys Augustin <aloaugus@cisco.com>
2 years agoFix memory leak in health check 59/34159/2
Vladimir Lavor [Tue, 19 Oct 2021 10:17:15 +0000 (12:17 +0200)]
Fix memory leak in health check

1. On connection disconnect, health check loop ends immediately
   and independently on probe interval setup
2. Proper resource cleanup

On disconnect, health check terminates itself with a delay based
on the probe interval. It causes memory usage going up if
AsyncConnect() & Disconnect() are called in a loop.

Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
Change-Id: Ibcdfec9d2d7736f9390e21039d9a917228114273

2 years agocore: close Stream after Connection.Invoke 24/33824/3
Vladimir Popov [Mon, 27 Sep 2021 04:21:20 +0000 (11:21 +0700)]
core: close Stream after Connection.Invoke

Fixes core.Stream leaking on every core.(*Connection).Invoke()
https://lists.fd.io/g/govpp-dev/topic/govpp_is_leaking_channels_on/85836420

Signed-off-by: Vladimir Popov <vladimir.popov@xored.com>
Change-Id: I8d5bcb3c3aa40ccda3fb249ee80bb82809f284b1

2 years agobinapigen: enhanced vpp version resolution 77/33677/2
Vladimir Lavor [Tue, 7 Sep 2021 13:21:19 +0000 (15:21 +0200)]
binapigen: enhanced vpp version resolution

While assuming whether the VPP is installed (in order to retrieve a version),
the generator looks directly for the VPP executable instead of the API path.

This allows to get version if generated from any directory.

Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
Change-Id: I147e4fba49c102bf5f1cbcf2784c212479dc15b6

2 years agoRefactoring and fixes 10/33610/3
mhalaj1 [Thu, 26 Aug 2021 18:15:08 +0000 (20:15 +0200)]
Refactoring and fixes

* refactor creation of new channel
* add missing closing of created streams
* correct documentation regarding thread safety of stream

Signed-off-by: mhalaj1 <matus.halaj@pantheon.tech>
Change-Id: Ic601efff298fcbdecaafab83fa236253af69de21

2 years agoregenerate binapi 05/33605/1
mhalaj1 [Thu, 26 Aug 2021 11:10:48 +0000 (13:10 +0200)]
regenerate binapi

Signed-off-by: mhalaj1 <matus.halaj@pantheon.tech>
Change-Id: I9bb6a5ca00aa542128bde0bfbbba7b57b9f16ed2

2 years agoproxy update to vpp 20.05 33/33233/4
mhalaj1 [Thu, 22 Jul 2021 09:58:59 +0000 (11:58 +0200)]
proxy update to vpp 20.05

Signed-off-by: mhalaj1 <matus.halaj@pantheon.tech>
Change-Id: I1c7b11950756d0fe789eb7badc3e883c12826671

2 years agohttps://jira.fd.io/browse/GOVPP-21 02/33002/2
Kusakabe Si [Mon, 5 Jul 2021 09:03:20 +0000 (17:03 +0800)]
https://jira.fd.io/browse/GOVPP-21

Signed-off-by: Kusakabe Si <linux@kskb.eu.org>
Change-Id: Ib1761e3b93dae70680646ce7fdd78a1168fd0b9f

2 years agofeat: api-trace 15/33015/8
Vladimir Lavor [Tue, 6 Jul 2021 12:17:36 +0000 (14:17 +0200)]
feat: api-trace

Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
Change-Id: I7de363dfb3930db13a30e97f154c57d75c07f01c

2 years agohttps://jira.fd.io/projects/GOVPP/issues/GOVPP-20 80/32880/1
Kusakabe Si [Thu, 24 Jun 2021 05:16:00 +0000 (13:16 +0800)]
https://jira.fd.io/projects/GOVPP/issues/GOVPP-20

Signed-off-by: Kusakabe Si <linux@kskb.eu.org>
Change-Id: I14ae5071414d945a45d3d104390982085f3109ab

2 years agoFix encode/decode for []bool 31/32731/1
Vladimir Lavor [Tue, 15 Jun 2021 12:10:54 +0000 (14:10 +0200)]
Fix encode/decode for []bool

Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
Change-Id: I6649d6825a208b9cd936bf8f3b80e69ff84f8b74

2 years agostatsclient: fix retrieving stats type 03/32503/3
Vladimir Lavor [Tue, 1 Jun 2021 07:21:49 +0000 (09:21 +0200)]
statsclient: fix retrieving stats type

Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
Change-Id: Id51fa03ac69a2fc29aca5ff644178cdfcabe523c

2 years agostatsclient: added symlinks 95/32295/7
Vladimir Lavor [Thu, 13 May 2021 09:15:48 +0000 (11:15 +0200)]
statsclient: added symlinks

Symlink support based on https://gerrit.fd.io/r/c/vpp/+/31636

Added new stat types `CounterStat` and `CombinedCounterStat` which
represent simple/combined value of a single item (interface, node)
as a array of values by workers.

Example:
/if/names                      NameVector [local0 tap0 tap1]
/if/ip6               SimpleCounterVector [[0 9 0] [0 25 3] [0 0 60] [0 0 0]]
/interfaces/tap0/ip6  SimpleCounterVector [[9] [25] [0] [0]]
/interfaces/tap1/ip6  SimpleCounterVector [[0] [3] [60] [0]]

Field `Symlink` added to StatEntry to mark symlink stats.

For stats v2 only

Change-Id: Iadc825f3c42b05bfc9a91462dba8a0b0068c7cd6
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
2 years agostatsclient: allow index as pattern 70/31670/6
Vladimir Lavor [Wed, 17 Mar 2021 11:27:10 +0000 (12:27 +0100)]
statsclient: allow index as pattern

* ListStats() returns stats identifiers containing the stat name and index
* New method PrepareDirOnIndex(indexes...). Instead of the name filter
  it does not browse through all available indexes
* Stats example shows how to get the last epoch value (added "e" or "epoch" command)

Change-Id: Ibb15090fb0dfdb7f9b0ecf8ac07a5eb9a9ace8f8
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
2 years agoadded api message options 12/31612/7
Vladimir Lavor [Thu, 11 Mar 2021 09:13:17 +0000 (10:13 +0100)]
added api message options

In case the API message contains option of type deprecated
or in-progress, the information is displayed in the generated
code in a form of additional comment:

// InProgress: <info>
// Deprecated: <info>

In case the <info> is not provided, a generic message is shown.
Possible future use to automatically search whether such
messages are in use.

Change-Id: Icf87cc9a2fe6bf31f7555320255c9f0736add6e1
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
2 years agoRecognize stat_dir_type_empty 24/31624/2
Vladimir Lavor [Thu, 11 Mar 2021 14:27:02 +0000 (15:27 +0100)]
Recognize stat_dir_type_empty

Do not to handle empty stats directory as unknown.
Empty dir's value is always treated as zero.

Change-Id: I40a3829675c5b7c9da80ceaa7e2d0a87fe02dc7c
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
3 years agofix INFO.yaml 93/31993/2
Vladimir Lavor [Thu, 15 Apr 2021 12:31:26 +0000 (14:31 +0200)]
fix INFO.yaml

Change-Id: Id18086b2d1df911cdc5d0092e48fd6034ddc414e
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
3 years agoAdd statsclient options and fix wait for socket 98/31698/2
Vladimir Lavor [Mon, 22 Mar 2021 12:34:37 +0000 (13:34 +0100)]
Add statsclient options and fix wait for socket

Change-Id: Ib5674fee5862a2b16f4b0044b6f6af533a7b6b33
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
3 years agoFix panic during disconnection 88/31688/1
Alexander Demidenko [Fri, 19 Mar 2021 05:11:21 +0000 (12:11 +0700)]
Fix panic during disconnection

Sometimes there are situations when the callback is called during the processing of the disconnect.
To avoid problems with races (for example, when using race-detector), use atomic pointers.

Signed-off-by: Alexander Demidenko <hurd@yandex-team.ru>
Change-Id: Ic825872ac620d68a191bc88889a096b15ea57464

3 years agoProvide error counters per worker for statsclient 81/31481/5
Vladimir Lavor [Tue, 2 Mar 2021 10:45:37 +0000 (11:45 +0100)]
Provide error counters per worker for statsclient

Instead of a single value, the ErrorCounter now contains
an array representing couter values per workers.

Change-Id: I2b869e5b228bcb3e155b1fef08a4cd00e7d2e16a
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
3 years agoAdded asynchronous connection for stats socket 52/31352/5
Vladimir Lavor [Thu, 18 Feb 2021 15:05:30 +0000 (16:05 +0100)]
Added asynchronous connection for stats socket

The stats socket now allows an option to connect asynchronously in
the same manner as the api socket  connection. New method
AsyncConnectStats returns a channel where notificaitons
of type ConnectionEvent will be sent.

Fixed the stats reconnect procedure which sometimes failed to re-eneable
the connection.

Change-Id: I0bdb19f0d57e3a1ea259b8b1ba0a5e5fa49a09db
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
3 years agobinapigen: added enumflags type 76/31076/4
Vladimir Lavor [Mon, 1 Feb 2021 13:37:26 +0000 (14:37 +0100)]
binapigen: added enumflags type

Change-Id: I2f46504bd05862e415dab518fad349d08aedf919
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
3 years agoRework test for binary API union sizes 31/30531/5
Vladimir Lavor [Tue, 22 Dec 2020 14:35:31 +0000 (15:35 +0100)]
Rework test for binary API union sizes

The test now generates various unions from union.api.json
and tests correct sizes of generated types.

Change-Id: Ifaf18a8ce650e71a8ca8b2d5cfb9d7eed2d757c6
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
3 years agoRemove socket warnings from client adapters 21/30521/1
Ondrej Fabry [Mon, 21 Dec 2020 16:38:00 +0000 (17:38 +0100)]
Remove socket warnings from client adapters

Change-Id: I5e72df39c0e4ba4f0a70d561d7f9b220b4e72a4c
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
3 years agoAdded INFO.yaml 09/30409/1
Vladimir Lavor [Mon, 14 Dec 2020 14:28:53 +0000 (15:28 +0100)]
Added INFO.yaml

Change-Id: Id63f1516678cddfef82570958be7e1871ead2c45
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
3 years agoDecode message context using the message type only 51/30251/1
Vladimir Lavor [Thu, 3 Dec 2020 13:40:09 +0000 (14:40 +0100)]
Decode message context using the message type only

In order to prevent potential future issues, the method
returning message based on its ID but ignoring its package
was optimized.

Change-Id: I12aa2b243f32f38cb3dbc7731613c7ed9fc66539
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
3 years agoFixed incorrect message error in the stream API 18/30218/3
Vladimir Lavor [Tue, 1 Dec 2020 12:57:29 +0000 (13:57 +0100)]
Fixed incorrect message error in the stream API

The message package is passed to the stream object and
used to evaluate correct reply message type

Change-Id: I2c9844d6447d024af1693205efd5721e2f89f22d
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
3 years agoUpdate changelog 46/29746/2
Vladimir Lavor [Wed, 4 Nov 2020 12:51:00 +0000 (13:51 +0100)]
Update changelog

Change-Id: I08f5ba1fb5ec02717e5715447837ca3b75fa894d
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
3 years agoStats API: added GetMemory() 59/29659/4
Vladimir Lavor [Thu, 29 Oct 2020 11:56:24 +0000 (12:56 +0100)]
Stats API: added GetMemory()

Retrieved numbers relate to the statseg heap.

Change-Id: I72750183db3524481918c71c993b39e65c28ddb6
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
3 years agoFix encoding for float64 and generate conversion for Timestamp 05/29605/2
Ondrej Fabry [Fri, 23 Oct 2020 09:40:18 +0000 (11:40 +0200)]
Fix encoding for float64 and generate conversion for Timestamp

- fixes encoding/decoding of float64 - uses little endian (contrary to all other types)
- generates helper methods for vpe_types.Timestamp type
- adds usage code to simple-client and binapi-types examples

Change-Id: I2e83eee0629eb67964049406c50c7ee0a692ccaf
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
3 years agoFix panic for Retval fields with uint kinds 06/29606/1
Ondrej Fabry [Fri, 23 Oct 2020 09:41:55 +0000 (11:41 +0200)]
Fix panic for Retval fields with uint kinds

Change-Id: I5e588d48461a0cf551552a5068218a58920e52aa
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
3 years agoStream API options 94/29394/4
Vladimir Lavor [Mon, 12 Oct 2020 12:21:05 +0000 (14:21 +0200)]
Stream API options

* Stream API uses the same default values as the Channel API
* request size, reply size and reply timeout settable using
  functional options
* Added stream client example to show the stream API usage

Change-Id: Id599134a7f520fc19f7d770ed5e3de74a7936829
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
3 years agoGenerate VPE HTTP handler 36/29436/1
Vladimir Lavor [Tue, 13 Oct 2020 11:59:25 +0000 (13:59 +0200)]
Generate VPE HTTP handler

* This should fix GoVPP build

Change-Id: If53177253ad4a6616860aad50ce54e5944bbea6e
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
3 years agoUpdated multi-vpp example 04/29204/3
Vladimir Lavor [Thu, 1 Oct 2020 14:03:28 +0000 (16:03 +0200)]
Updated multi-vpp example

* In addition to configuring multiple VPPs it now also shows
  how to connect and read stats from several VPPs at once
* Added a brief readme
* More readable example log output
* May run in a loop

Change-Id: Ifa5d54e954557e7b6569826a48c526185ec751a3
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
3 years agoCheck retval value and convert to error in generated RPC client code 19/29219/1
Ondrej Fabry [Fri, 2 Oct 2020 14:36:32 +0000 (16:36 +0200)]
Check retval value and convert to error in generated RPC client code

Change-Id: I816b4802cb5fc46239f6db0480fa4cf3645fe2f0
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
3 years agoUpdated changelog for v0.4.0 05/29105/3
Vladimir Lavor [Mon, 28 Sep 2020 12:09:35 +0000 (14:09 +0200)]
Updated changelog for v0.4.0

Change-Id: I3290bbc8cbdfb634533ceb4606e4708b1a386dce
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
3 years agoReload stats socket when VPP restarts 17/29017/1
Vladimir Lavor [Tue, 22 Sep 2020 11:44:10 +0000 (13:44 +0200)]
Reload stats socket when VPP restarts

The current implementation loads the stats socket and maps it to the
memory. If VPP restarts, the socket file is recreated while the mapped
data remain unchanged, silently failing since it does not get any updates.

This change adds socket file monitoring which reconnects and remaps
the socket file in such a case.

Change-Id: I061f7400410f4dfe5de66ba7844c4ae1567bbcbe
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
3 years agobinapigen: fix union size 84/28884/2
Vladimir Lavor [Wed, 16 Sep 2020 11:44:31 +0000 (13:44 +0200)]
binapigen: fix union size

This change fixes calculated byte size of the union
composed from another union(s).

Change-Id: I596a3c2a585cc42570b1d00dab3a5ad4993dabfa
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
3 years agoRemove unnecessary allocation 82/28682/3
Vladimir Lavor [Fri, 4 Sep 2020 12:23:10 +0000 (14:23 +0200)]
Remove unnecessary allocation

Change-Id: If77b7b37ae736fdf21f4c337350905480e6fb011
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
3 years agoFix decoding messages of identical types in stream 78/28678/2
Ondrej Fabry [Fri, 4 Sep 2020 10:45:00 +0000 (12:45 +0200)]
Fix decoding messages of identical types in stream

Change-Id: Id6f6bc3de5b9ff7230108a4171810207c94f9a38
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
3 years agoIncrease default health check parameters 75/28675/2
Ondrej Fabry [Fri, 4 Sep 2020 07:50:37 +0000 (09:50 +0200)]
Increase default health check parameters

Change-Id: I0b5fbbd98fc1bb6fc9d86ed81cb1b3f9755fed67
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
3 years agoUpdate VPP config warnings and change log level in proxy 74/28674/2
Ondrej Fabry [Fri, 4 Sep 2020 07:48:30 +0000 (09:48 +0200)]
Update VPP config warnings and change log level in proxy

Change-Id: I8f965a0758c4b7459f27a46c095dad232e331032
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
3 years agoStats APIv2 41/28641/9
Vladimir Lavor [Wed, 2 Sep 2020 13:08:22 +0000 (15:08 +0200)]
Stats APIv2

* Compatible with stats v2 API
* Compatibility with stats v1 was persisted
* 19.04 (legacy) dropped

Change-Id: I91a3ab0c007fed6d972eee01d7caf69af29305d1
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
3 years agoImprove doc & fix import ordering 62/28562/7
Nathan Skrzypczak [Fri, 21 Aug 2020 15:25:53 +0000 (17:25 +0200)]
Improve doc & fix import ordering

This also updates /binapi
and adds a new make command to generate api
files out of a local vpp repo clone

Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
Change-Id: Iff7965388a74ecd21af80f10b5a59d4ed8da6340

3 years agofixed data race in mock vpp adapter 25/28625/2
Sergey Elantsev [Sat, 22 Aug 2020 12:38:34 +0000 (15:38 +0300)]
fixed data race in mock vpp adapter

There was a race in reading VppAdapter.mode in SendMsg and
writing in MockReply/MockReplyHandler/MockReplyWithContext.
All these *Reply* methods hold VppAdapter.repliesLock, so
this fix uses this lock to safely read the value of a mode field.

Signed-off-by: Sergey Elantsev <elantsev.s@yandex.ru>
Change-Id: I6c8873b766df6ea866196a9b96a48ebd08689772

3 years agofix(binapigen): Fix name conflict for union field constructors 02/28602/1
Ondrej Fabry [Fri, 28 Aug 2020 18:42:20 +0000 (20:42 +0200)]
fix(binapigen): Fix name conflict for union field constructors

PROBLEM

Issue discovered in flow_types.api on master (20.09-rc0), where
generator encountered inconsistent naming for union type Flow,
causing name conflicts with their constructors.

SOLUTION

Previous cases of union types (address, punt) both contain suffix
"Union", thus generator now adds "Union" suffix it is not defined.
This way we won't break previously generated code for users.

Change-Id: Iffadc167774d66d8416fe36485782bb68ca2a70d
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
3 years agoBinapi generator: improved file input 16/28516/4
Vladimir Lavor [Wed, 19 Aug 2020 14:08:39 +0000 (16:08 +0200)]
Binapi generator: improved file input

In addition to the standard file name input (for example "vpe"),
binary API generator now again accepts full file path like
"/usr/share/vpp/api/core/vpe.api.json" as an input direcotry or
argument.

Change-Id: I591b5d26e7f101cdcc4af64d3bdabaab48b5b2ef
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
3 years agoExpose version info control flags 61/28561/1
Nathan Skrzypczak [Fri, 21 Aug 2020 15:30:05 +0000 (17:30 +0200)]
Expose version info control flags

Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
Change-Id: Ida098149bdf23dccafb7b1f2ac2bb83f21f918c9

3 years agoUpdate libmemif 69/28169/2
Vladimir Lavor [Tue, 4 Aug 2020 10:37:25 +0000 (12:37 +0200)]
Update libmemif

Change-Id: I5db0460f375c9e34bc09170a310d52e1a619ed34
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
3 years agoAdd SetLogger for setting global logger 71/28171/1
Ondrej Fabry [Tue, 4 Aug 2020 13:24:02 +0000 (15:24 +0200)]
Add SetLogger for setting global logger

- list prerequisites in README
- avoid calling go list by hard-coding module path

Change-Id: Ib8af1934f55b7e112a8124a20f1f4d39ce651133
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
3 years agoFix binapigen decoding and minor improvements 25/28025/1
Ondrej Fabry [Wed, 22 Jul 2020 02:40:55 +0000 (04:40 +0200)]
Fix binapigen decoding and minor improvements

- fixed allocating byte slices before copying decoded data
- simplified encoding functions
- several minor improvements

Change-Id: I6669424b89eb86333805cb1b57e4551169980cc2
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
3 years agoAdded VPP state 'NotResponding' 66/27966/1
Vladimir Lavor [Fri, 17 Jul 2020 12:00:11 +0000 (14:00 +0200)]
Added VPP state 'NotResponding'

This change allows informing client about the current
VPP state in more detail.

* In case the VPP is overloaded but keeps its configuration,
  client received 'NotResponding' event message
* If the VPP process dies (the socket is closed), the client
  receives 'Disconnected' event message

Additional fix: event messages are discarded if the buffer is
full. This could cause GoVPP to hang after some time in case
the client was not receiveing events.

Change-Id: I94a4647f6643f1d97bf52e5d7996d70229b0577d
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
3 years agoImprove binapi generator 57/27957/2
Ondrej Fabry [Fri, 17 Jul 2020 08:36:28 +0000 (10:36 +0200)]
Improve binapi generator

- simplified Size/Marshal/Unmarshal methods
- replace struc in unions with custom marshal/unmarshal
- fix imports in generated files
- fix mock adapter
- generate rpc service using low-level stream API (dumps generate control ping or stream msg..)
- move examples/binapi to binapi and generate all API for latest release
- add binapigen.Plugin for developing custom generator plugins
- optionally generate HTTP handlers (REST API) for RPC services
- add govpp program for browsing VPP API

Change-Id: I092e9ed2b0c17972b3476463c3d4b14dd76ed42b
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
3 years agosocket adapter: don't bother sending sockclnt_delete messages 60/27860/3
Dave Barach [Fri, 10 Jul 2020 16:19:01 +0000 (12:19 -0400)]
socket adapter: don't bother sending sockclnt_delete messages

vpp cleans up socket clients when the socket closes. I verified that
sending a correctly-marshalled sockclnt_delete message results in
duplicate close complaints.

The marshalling code wasn't right - the (important) client_index field
is in a non-standard position - and there's no point in sending
a message we don't need to send.

Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: Ia32980b08a99cc878835f5db21f64de391759fa4

3 years agoFix: generate (un)marshall for memory client messages 53/27853/1
Vladimir Lavor [Fri, 10 Jul 2020 11:33:05 +0000 (13:33 +0200)]
Fix: generate (un)marshall for memory client messages

* use generated Marshall/Unmarshall for socket client connection
  messages instead of the generic wrapper

Change-Id: Ie1049e080630dbc60085debc6875e17962e93a0e
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
3 years agoRemoved global binapi VPP adapter 18/27818/3
Vladimir Lavor [Thu, 9 Jul 2020 08:02:41 +0000 (10:02 +0200)]
Removed global binapi VPP adapter

* added example showing management of 2 VPP instances with different sockets
* updated changelog

Change-Id: I531eda8f055cc2a24ba2210217e70a8ad42a47c0
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
3 years agoFix README.md quickstart section 09/27809/1
Dave Barach [Tue, 7 Jul 2020 14:36:42 +0000 (10:36 -0400)]
Fix README.md quickstart section

README.md needs further cleanup

Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: Iee170f909b57548d53f8a5fa67cd387652ccac99

3 years agoBinary API generator improvements 52/27752/6
Vladimir Lavor [Wed, 1 Jul 2020 10:18:54 +0000 (12:18 +0200)]
Binary API generator improvements

* Many aliases removed, aliased types reference original types via import instead
* Added various helper methods for simpler conversion between go and vpp types

Change-Id: I7999ac8d524cece4da03e6447b13421659765095
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
3 years agoIntroduce Stream - experimental API for low-level access to VPP API 73/27673/1
Ondrej Fabry [Thu, 25 Jun 2020 09:55:58 +0000 (11:55 +0200)]
Introduce Stream - experimental API for low-level access to VPP API

Change-Id: I2698e11b76ff55d9730b47d4fee990be93349516
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
3 years agoFix codec fallback and generate type imports 47/27647/3
Ondrej Fabry [Tue, 23 Jun 2020 12:10:53 +0000 (14:10 +0200)]
Fix codec fallback and generate type imports

Change-Id: Idd76c7f19d952939caf153928ac60175845078ff
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
3 years agoRefactored binapi generator with message encoding 89/27589/2
Ondrej Fabry [Thu, 18 Jun 2020 06:22:13 +0000 (08:22 +0200)]
Refactored binapi generator with message encoding

Change-Id: I5a6abb68b9d058866f94818169300e5c2fc43895
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
3 years agoOptimize socketclient adapter and add various code improvements 71/27571/1
Ondrej Fabry [Tue, 16 Jun 2020 08:40:34 +0000 (10:40 +0200)]
Optimize socketclient adapter and add various code improvements

This commit includes:

Features
- optimized [socketclient](adapter/socketclient) adapter and add method to set client name
- added list of compatible messages to `CompatibilityError`

Fixes
- `MsgCodec` will recover panic occurring during a message decoding
- calling `Unsubscibe` will close the notification channel

Other
- improved log messages to provide more relevant info

Examples
- added more code samples of working with unions in [union example](examples/union-example)
- added profiling mode to [perf bench](examples/perf-bench) example
- improved [simple client](examples/simple-client) example to work properly even with multiple runs

Dependencies
- updated `github.com/sirupsen/logrus` dep to `v1.6.0`
- updated `github.com/lunixbochs/struc` dep to `v0.0.0-20200521075829-a4cb8d33dbbe`

Change-Id: I136a3968ccf9e93760d7ee2b9902fc7e6390a09d
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
3 years agoBump version to v0.3.5 23/27123/1 v0.3.5
Ondrej Fabry [Mon, 18 May 2020 12:46:00 +0000 (14:46 +0200)]
Bump version to v0.3.5

Change-Id: I14aa5446ad218f06a06b9e40e0adde6ca81e4819
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
3 years agoFix stats data errors and panic for VPP 20.05 21/27121/1
Ondrej Fabry [Mon, 18 May 2020 09:36:44 +0000 (11:36 +0200)]
Fix stats data errors and panic for VPP 20.05

- fixes panic occurring when updating error counters
- fixes stat data length errors when updating stats

Change-Id: If2d4bcb7df084bf1999ba469f128b7a01aa6be5e
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
4 years agoFormat generated Go source code in-process 67/26567/1 v0.3.4
Ondrej Fabry [Fri, 17 Apr 2020 12:29:26 +0000 (14:29 +0200)]
Format generated Go source code in-process

This commit:
- removes dependency on gofmt tool
- cleans up package imports
- re-generates binapi for VPP 20.01

Change-Id: Ie4347720f92a87eb278be66c9f9ed9719c7bbbc3
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
4 years agoproxy: Unexport methods that do not satisfy rpc to remove warning 49/26449/1 v0.3.3
Ondrej Fabry [Thu, 9 Apr 2020 12:36:30 +0000 (14:36 +0200)]
proxy: Unexport methods that do not satisfy rpc to remove warning

Change-Id: Icd4173edc55d83b1766f204184eb818b859e648e
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
4 years agoFix statsclient for VPP 20.05-rc0 (master) 32/26032/1 v0.3.2
Ondrej Fabry [Fri, 20 Mar 2020 09:52:19 +0000 (10:52 +0100)]
Fix statsclient for VPP 20.05-rc0 (master)

- this change fixes panic that was occurring with recent VPP  that was caused by incorrectly calculated vector length
- converting returned vector length from uint64 to uint32 results in correct length value

Change-Id: I76a4b9d147c3df3bea9d3e5ef5853e2809dc42e8
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
4 years agoFix import path in examples/binapi 79/25979/1 v0.3.1
Ondrej Fabry [Wed, 18 Mar 2020 09:18:03 +0000 (10:18 +0100)]
Fix import path in examples/binapi

Change-Id: I6af1ae2778b73f37be09c64a2948417e576f02ab
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
4 years agoRelease 0.3.0 77/25977/1 v0.3.0
Ondrej Fabry [Wed, 18 Mar 2020 07:52:42 +0000 (08:52 +0100)]
Release 0.3.0

- regenerate examples/binapi for latest VPP from stable/2001
- add import-prefix flag to set custom prefix (fallbacks to using go list)

Change-Id: Ib09f134cf9662e348be2575448964de2b9e5c1ee
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
4 years agoSupport imported type aliases 58/24658/2
Ondrej Fabry [Tue, 28 Jan 2020 17:03:58 +0000 (18:03 +0100)]
Support imported type aliases

Change-Id: I2e6ad9fb51e1cf55a52267720f2394e792946f7e
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
4 years agoUpdate jsongo dep 30/24530/1
Ondrej Fabry [Mon, 20 Jan 2020 12:54:36 +0000 (13:54 +0100)]
Update jsongo dep

Change-Id: I10dfbaa38de67835a84f5112d6b16bbe466c3bfe
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
4 years agoFix parsing default meta parameter 26/24426/1
Ondrej Fabry [Mon, 20 Jan 2020 11:38:58 +0000 (12:38 +0100)]
Fix parsing default meta parameter

Change-Id: Ibfc1f97e299256809978cb84f1685aa6729e898c
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
4 years agoImprove compatibility checking 69/23469/1
Ondrej Fabry [Fri, 15 Nov 2019 11:33:28 +0000 (12:33 +0100)]
Improve compatibility checking

- added CompatibilityError to api package to represent error with
  list of incompatible messages
- added UnknownMsgError to adapter package to represent error for
  unknown message
- added list of registered message types

Change-Id: I2623b45135521d52612ba91e4605fc064a7fc76e
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
4 years agoBegin development of next release 0.3.0 34/23234/1
Ondrej Fabry [Mon, 4 Nov 2019 23:16:25 +0000 (00:16 +0100)]
Begin development of next release 0.3.0

- update info in package ./version
- update to Go 1.13
- regenerate ./examples/binapi for latest VPP: 19.08.1-release
- clean code in proxy
- refactor Makefile

Change-Id: Ibf5c2682c2f4b3cbbea4aa1e35d3f02175d40a9b
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
4 years agoUpdate changelog for release 0.2.0 08/23208/1 v0.2.0
Ondrej Fabry [Mon, 4 Nov 2019 10:42:13 +0000 (11:42 +0100)]
Update changelog for release 0.2.0

Change-Id: Ifed742e75a48d065987d945c8667af2bdedb876a
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>