Age | Commit message (Collapse) | Author | Files | Lines |
|
Raise IOError so that the blocking code retries not only on
optimistic locking failures but also on data segment illegal reads.
Type: fix
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: I6bb250e239486b60192004271c1690e790513318
|
|
- Generate copyright year and version
instead of using hard-coded data
Type: refactor
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
Change-Id: I6058f5025323b3aa483f5df4a2c4371e27b5914e
|
|
A given interface counter (e.g rx) can be accessed via
/interfaces/<interface_name>/<counter_name>.
Same goes with nodes: /nodes/<node_name>/<counter_name>
As interfaces may contain '/' in their names,
these are replaced by '_' in symlinks
Also added 2 tests for the stat segment
Type: feature
Signed-off-by: Arthur de Kerhor <arthurdekerhor@gmail.com>
Change-Id: I27da252e7b3dc177815616ca46b5c200a456bf0f
Signed-off-by: Ole Troan <ot@cisco.com>
|
|
In preparation for removing Python shared memory support, change the default to use sockets.
This may affect users of PAPI. E.g. if running against instances of VPP where
the API socket is in a different location or disabled.
Type: improvement
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: I96308ed70b9ff314c9b487722174f5e4b14efdd2
Signed-off-by: Ole Troan <ot@cisco.com>
|
|
make test failed on ubuntu 18.04
File "/vpp/src/vpp-api/python/vpp_papi/vpp_stats.py", line 135, in connect
socket.close(mfd)
AttributeError: module 'socket' has no attribute 'close'
Due to ubuntu 18.04 using python3.6 and
socket.close() is introduced since python3.7
Using os.close to replace socket.close as mfd is a memory fd
Type: fix
Signed-off-by: Tianyu Li <tianyu.li@arm.com>
Change-Id: I6d980fc87ae6c77bbed416879f9b2fcd0a0abe6a
|
|
Introduce a new option DEBUG=attach to run a test against existing
already running vpp. A new target 'make test-start-gdb' will spawn VPP
in gdb for this purpose. Customization options explained in test-help.
Type: improvement
Change-Id: Ia160a85b33da3b2df292d44bb95729af9dd9da96
Signed-off-by: Klement Sekera <ksekera@cisco.com>
|
|
The reimplementation of python stats module mishandled the case
where pattern to ls was not a list.
Type: fix
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: I9ba189423a76f2fd4298c4c4b19a0875f705d719
|
|
Type: refactor
Change-Id: I8b273bc3bf16aa360f031f1b2692f766e5fc4613
Signed-off-by: Damjan Marion <damarion@cisco.com>
|
|
This module implement Python access to the VPP statistics segment. It
accesses the data structures directly in shared memory.
VPP uses optimistic locking, so data structures may change underneath
us while we are reading. Data is copied out and it's important to
spend as little time as possible "holding the lock".
Counters are stored in VPP as a two dimensional array.
Index by thread and index (typically sw_if_index).
Simple counters count only packets, Combined counters count packets
and octets.
Counters can be accessed in either dimension.
stat['/if/rx'] - returns 2D lists
stat['/if/rx'][0] - returns counters for all interfaces for thread 0
stat['/if/rx'][0][1] - returns counter for interface 1 on thread 0
stat['/if/rx'][0][1]['packets'] - returns the packet counter
for interface 1 on thread 0
stat['/if/rx'][:, 1] - returns the counters for interface 1 on all threads
stat['/if/rx'][:, 1].packets() - returns the packet counters for
interface 1 on all threads
stat['/if/rx'][:, 1].sum_packets() - returns the sum of packet counters for
interface 1 on all threads
stat['/if/rx-miss'][:, 1].sum() - returns the sum of packet counters for
interface 1 on all threads for simple counters
Type: refactor
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: I1fe7f7c7d11378d06be8276db5e1900ecdb8f515
Signed-off-by: Ole Troan <ot@cisco.com>
|
|
This functionality is used in make test when DEBUG=gdb is used.
Type: fix
Signed-off-by: Klement Sekera <ksekera@cisco.com>
Change-Id: I1339e6460aa624a3bcb4b03db46991590e126f92
|
|
Type: improvement
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: I9e65c94a5a05047a5104e9361ea36eac77b40442
Signed-off-by: Ole Troan <ot@cisco.com>
|
|
Also fix the vapi parser's assumption about what
the container with CRC is supposed to look like..
Change-Id: I3a23ef6c1502232742c03d227eb3654fb757709c
Type: improvement
Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
|
|
Type: refactor
Change-Id: I1fbabb743f20e21557c69bdaf97eda6f63584903
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
|
|
Sample usage:
cls.MEMIF_DEFAULT_BUFFER_SIZE = cls.vapi.vpp.get_field_options(
'memif_create', 'buffer_size')['default']
Type: improvement
Change-Id: I298f4687623003a78c93a703d32f59a937e37bc2
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
|
|
root@ae2a2e85c5d4:/vpp/src/vpp-api/python# python3
Python 3.6.9 (default, Oct 8 2020, 12:12:24)
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import vpp_papi
>>> vpp_papi.__version__
'1.6.2'
Type: feature
Change-Id: I73025427a58214a842245fceaa77daa7acd3e6f8
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
|
|
missed in https://gerrit.fd.io/r/c/vpp/+/30238
Type: fix
Change-Id: I342868a77d7ca87896d97847ca6525ad1abcd1b6
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
|
|
See discussion in: https://gerrit.fd.io/r/c/vpp/+/19472
Type: refactor
Change-Id: Icbf686f615f13898d12fd211f68c3498d373a5d7
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
|
|
The Centos-7 compiler had problems with vapi_cpp_test.cpp.
The Centos-8 compiler does not. This change adds back the test.
==============================================================================
VAPI test
==============================================================================
run C VAPI tests 1.55 OK
run C++ VAPI tests 0.44 OK
==============================================================================
TEST RESULTS:
Scheduled tests: 2
Executed tests: 2
Passed tests: 2
==============================================================================
Type: test
Change-Id: Ic6a655ae99eb3ba0e73b7feef4436a0ca5fd92be
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
|
|
deprecated in 3/19
Type: refactor
Change-Id: Ia8eebaa0cd89d1e95166a62645400946d8db2f75
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
|
|
Allow for papi to accept the new enumflag type.
Change-Id: I8d8dc8fdb122e9a1b1881f5b2558635c75e4a299
Type: feature
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
(cherry picked from commit 299abebe2942b4c78b85f9f3b8843f8213bf1efe)
|
|
Type: refactor
Change-Id: I541759b4b788acf08599661eb9e7abc58e9283d2
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
|
|
This change enables a client to set debug levels
globally as well as individually.
exposes loggers as
vpp_papi
vpp_papi.serializer
vpp_papi.transport
Type: improvement
Change-Id: Ib6bd1a1f552b51a22c9fe3de819a5fb970963ae5
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
|
|
Char* typed shared_header value appears multiple times,
so store it is a variable.
Pointer "p" value is used more frequently casted to char*,
so use that type for it, and convert to void* only at return.
Type: style
Fixes: 41f15ae1dfd4ac1777b684fdc763d12496209418
Change-Id: I7b3f1e6a43c020acd7ae561f87d12237b07fcd66
Signed-off-by: Vratko Polak <vrpolak@cisco.com>
|
|
refactor the code so that snippets of json can be used to test vpp_papi
example unit test provided
Type: improvement
Change-Id: Ibec608fd2e5b12515aa4db17d85d4319134c22ea
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
|
|
Cast to (char *) to avoid pointer arithmetic for (void *) pointers.
Type: fix
Signed-off-by: Elias Rudberg <elias.rudberg@bahnhof.net>
Change-Id: I62607b4cbc553449e2c60d514b4b17dbb4f88216
|
|
Type: fix
Change-Id: I8bd20fb38e132f6ab8cbc0e73095b649b5946498
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
|
|
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>
|
|
remove the dependency on the aenum package which was used to
provide Enum.IntFlag which is now available in the python stdlib.
aenum is not provided as a .deb and causes issues in packaging.
Type: fix
Change-Id: Ie45ec2130a767345f0aad038451780a5ddc7e8db
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
|
|
- Refactor make test code to be co-located with
the vpp feature source code
Type: test
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
Change-Id: Ic42bbd4e13606a5fdc91143ecc6452102ec337fe
|
|
A simple counter is a two dimensional array by threads and
counter index. 28017 introduced an error missing the first
dimension.
If a vector is updated at the same time as a client reads,
an invalid pointer my result. This will be caught by the
optimistic locking after copying out the data, but if
following a pointer outside of the stat segment then
the stat client would crash. Add suitable boundary checks
for access to stat memory segment.
Fixes: 7d29e320fb2855a1ddb7a6af09078b8ed636de01
Type: fix
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: I94f124ec71d98218c4eda5d124ac5594743d93d6
|
|
The Python VPP Stats module also used the VPP heap.
Fix so it now explicitly allocates a heap.
Fixes: f68fccfe7e188fec2c9f91da38ca9acf6f67d811
Type: fix
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: I0bd4ae64d6c89cdf634d8d9a91c23ab38017c5cc
Signed-off-by: Ole Troan <ot@cisco.com>
|
|
- it is confusing from end consumer perspective that some thing
is somewhere called heap and somewhere mspace
- this is base for additional work where heap pointer is not the same
thing like mspace
Type: improvement
Change-Id: I644d5a0de17690d65d164d8cec3c5654571629ef
Signed-off-by: Damjan Marion <damarion@cisco.com>
|
|
Having the constructor in the vppapiclient library led to
conflicts with applications wanting to allocate their own heap.
Note: Change of behaviour, applications that do not use a CLIB
heap must now call vac_mem_init() before using any functions from
vppapiclient.
Type: fix
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: Ib155a54579ea5a0dbc26cb4b6daca1274e1dfdfa
|
|
Type: fix
Signed-off-by: Rajesh Goel <rajegoel@cisco.com>
Change-Id: Ib37802f4270fe894a31e871c7fbb12b5a1cdf058
|
|
Type: fix
Fixes: fdc678081ca5f0971b8bcbf312c1e83017365c33
Change-Id: I64d15b050cfd3d88923bf996cb68b13504dbf6af
Signed-off-by: Vratko Polak <vrpolak@cisco.com>
|
|
Represent pointers directly in shared memory and require clients to adjust for
shared memory segment being mapped at different base address.
Deprecated: stat_segment_pointer() / stat_segment_offset()
Added: stat_segment_adjust()
Bumped the stat segment version to 2.
Type: refactor
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: I33e756187b8903b45dcd353e6c1a101b7a4acb79
|
|
In unions all representations of the union are decoded.
Which means trying to decode something that isn't an address
might have invalid address family types.
Type: fix
Ticket: VPP-1884
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: Id3381ef8cc885952c1eb488ebc70e276eaceb366
|
|
add new api stat_segment_set_timeout_nsec to limit time waiting for vpp
in_progress state.
Change-Id: Ic78a97bc5013d67d7e4bbcc4a6f0ef918f9f9b33
Type: improvement
Signed-off-by: Ole Troan <ot@cisco.com>
|
|
Type: fix
Change-Id: I6c9999b93d4f4ad4b8540a21e793c9a90e7c8ecf
Signed-off-by: Ole Troan <ot@cisco.com>
|
|
This avoids using dirty data from shared memory by client.
Type: fix
Signed-off-by: Klement Sekera <ksekera@cisco.com>
Change-Id: I96eecf655bf344ec29609cedbd8dc891b572e207
|
|
Instead of having to wrap dump/detail calls in control ping, send details messages in between a normal
reply / request pair. As expressed in the below service statement.
Example:
service {
rpc map_domains_gets returns map_domains_get_reply
stream map_domain_details;
};
define map_domains_get
{
u32 client_index;
u32 context;
u32 cursor;
};
define map_domains_get_reply
{
u32 context;
i32 retval;
u32 cursor;
};
To avoid blocking the main thread for too long, the replies are now sent in client message queue size
chunks. The reply message returns VNET_API_ERROR_EAGAIN when there is more to read.
The API handler must also include a "cursor" that is used to the next call to the get function.
API handler example:
REPLY_AND_DETAILS_MACRO (VL_API_MAP_DOMAINS_GET_REPLY, mm->domains,
({
send_domain_details (cursor, rp, mp->context);
}));
The macro starts from cursor and iterates through the pool
until vl_api_process_may_suspend() returns true or the iteration
reaches the end of the list.
Client Example:
cursor = 0
d = []
while True:
rv, details = map_domains_get(cursor=cursor)
d += details
if rv.retval == 0 or rv.retval != -165:
break
cursor = rv.cursor
or the convenience iterator:
for x in vpp.details_iter(vpp.api.map_domains_get):
pass
or
list(details_iter(map_domains_get))
Change-Id: Iad9f6b41b0ef886adb584c97708dd91cf552749e
Type: feature
Signed-off-by: Ole Troan <ot@cisco.com>
|
|
Type: fix
Change-Id: I9cdfbffd6333d090f970422bf047aaa90c1e4c65
Signed-off-by: Damjan Marion <damarion@cisco.com>
|
|
- add option to install only host tools
- add option to specify lib and runtime dir
Type: improvement
Change-Id: I6356b52df459120fc9b0127948bae7679fb10e52
Signed-off-by: Damjan Marion <damarion@cisco.com>
|
|
Breaks on Ubuntu 20.04 otherwise.
Type: fix
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: I407215a03948d6e49152ee97099539bb625c12ef
|
|
refactored out of Neale's change:
https://gerrit.fd.io/r/c/vpp/+/26276
Type: refactor
Change-Id: Ibb0c019856dc44640e94d6d80a5d119a6296d95c
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
(cherry picked from commit a751d8d61fe5880f6d447e63b81e2df30561e9f9)
|
|
The path to VPP source might contain a '+' when building it
with Yocto/OpenEmbedded.
Type: fix
Signed-off-by: Ruslan Babayev <ruslan@babayev.com>
Change-Id: I205ac0de7d8726724af0e30f5b199391e05dc615
|
|
Add vpp specific properties to ip addresses for use in the api.
.vapi_af -- returns [ADDRESS_IP4, ADDRESS_IP6]
.vapi_af_name -- returns the string ['ip4', 'ip6']
Update tests to demonstrate usage.
Type: feature
Change-Id: I43447a1522769d99f89debdc714c51700068d771
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
|
|
Type: fix
if the ,api/.json specifies that a enum should be u8/u16 that the
generated c enum needs to be packed.
Signed-off-by: Neale Ranns <nranns@cisco.com>
Change-Id: Ia0497b45e4c510a5c63cd02e966769bf20686838
|
|
The mheap allocator has been turned off for several releases. This
commit removes the cmake config parameter, parallel support for
dlmalloc and mheap, and the mheap allocator itself.
Type: refactor
Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: I104f88a1f06e47e90e5f7fb3e11cd1ca66467903
|
|
Avoid using vec_del1() for directory vector to keep indexes valid all
the time.
There are state counters for each slave in LACP bond mode which can be
dynamically created and removed. Vector index is used to access these
counters. But also vec_del1() is used to remove counter from vector.
This function changes the index of the last element, so after this we
are unable to access ex-last element using old index.
As a result it is not possible to add-del-add two interfaces to the LACP
bond:
DBGvpp# create bond mode lacp
BondEthernet0
DBGvpp# create packet-generator interface pg1
DBGvpp# create packet-generator interface pg2
DBGvpp# bond add BondEthernet0 pg1
DBGvpp# bond add BondEthernet0 pg2
DBGvpp# bond del pg1
DBGvpp# bond del pg2
DBGvpp# bond add BondEthernet0 pg1
DBGvpp# bond add BondEthernet0 pg2
bond add: /if/lacp/1/3/partner-state is already register
Type: fix
Signed-off-by: Vladimir Isaev <visaev@netgate.com>
Change-Id: I2c86e13905eefdef6233369cd4ab5c1b53d123bd
|