vpp.git
3 months agohsa: http client set connect_sep to null on init 57/43457/2
Matus Fabian [Fri, 18 Jul 2025 09:43:10 +0000 (05:43 -0400)]
hsa: http client set connect_sep to null on init

Set connect_sep in http (cli) client to SESSION_ENDPOINT_CFG_NULL on
init to be sure that parrent_handle is invalid if not used.

Type: improvement

Change-Id: Ia42cbe8ea90402d20b07f933b5308642a098235f
Signed-off-by: Matus Fabian <[email protected]>
3 months agohttp: h2 coverity fix 46/43446/4
Matus Fabian [Thu, 17 Jul 2025 13:42:54 +0000 (09:42 -0400)]
http: h2 coverity fix

Type: fix

Change-Id: Ib5ac44ae95a7e0c62830b8a93803312cbc875f88
Signed-off-by: Matus Fabian <[email protected]>
3 months agohs-test: h2 client testing with h2spec 45/43445/4
Matus Fabian [Thu, 17 Jul 2025 12:58:08 +0000 (08:58 -0400)]
hs-test: h2 client testing with h2spec

Type: test

Change-Id: If588fa070adebb631bf71fc8c3e82a00ba628a69
Signed-off-by: Matus Fabian <[email protected]>
3 months agohttp: h2 client error handling improvement 44/43444/2
Matus Fabian [Thu, 17 Jul 2025 12:57:09 +0000 (08:57 -0400)]
http: h2 client error handling improvement

Type: improvement

Change-Id: If989e6f1f2e23abae0214f467e8a285256ab1d17
Signed-off-by: Matus Fabian <[email protected]>
3 months agobuild: update openssl to 3.5.1 in vpp-opt-deps 51/43451/2
Dave Wallace [Thu, 17 Jul 2025 20:00:49 +0000 (16:00 -0400)]
build: update openssl to 3.5.1 in vpp-opt-deps

Type: improvement

Change-Id: Ibe396e088c6d9620bbd2fdf85629de8c139ef650
Signed-off-by: Dave Wallace <[email protected]>
3 months agotls session: track internal tls objects in ckpair 37/43437/5
Florin Coras [Fri, 11 Jul 2025 21:53:35 +0000 (17:53 -0400)]
tls session: track internal tls objects in ckpair

Type: improvement

Change-Id: Ia38d355facd7af407a26c386327e8ea1a9aec116
Signed-off-by: Florin Coras <[email protected]>
3 months agosession: remove unused attach options 43/43443/3
Florin Coras [Thu, 17 Jul 2025 06:22:14 +0000 (02:22 -0400)]
session: remove unused attach options

- ACCEPT_COOKIE
- PRIVATE_SEGMENT_COUNT

They are not handled by session layer even if configured by
applications.

Type: improvement

Change-Id: I673f8da6e83181be018489b85082dfd1b1dab87b
Signed-off-by: Florin Coras <[email protected]>
3 months agohsa: http client send signal on transport reset 41/43441/2
Matus Fabian [Wed, 16 Jul 2025 16:09:51 +0000 (12:09 -0400)]
hsa: http client send signal on transport reset

we don't need to wait for timeout

Type: improvement

Change-Id: I7aef2581c1ac48d4b147914ccae8aa5bedb363ca
Signed-off-by: Matus Fabian <[email protected]>
3 months agohttp: h2 client handle GOAWAY NO_ERROR 40/43440/4
Matus Fabian [Wed, 16 Jul 2025 15:01:31 +0000 (11:01 -0400)]
http: h2 client handle GOAWAY NO_ERROR

Type: improvement

Change-Id: I244528cdab03c3f17d17f98fd9182399b2ac6a17
Signed-off-by: Matus Fabian <[email protected]>
3 months agohsa: do not configure cert for tls ao 42/43442/1
Florin Coras [Wed, 16 Jul 2025 21:48:25 +0000 (14:48 -0700)]
hsa: do not configure cert for tls ao

No need to configure cert for tls active opens as we don't support mtls
for now.

Type: improvement

Change-Id: Ied0a0152ec965e10f1a743a15188a4679ebb0b11
Signed-off-by: Florin Coras <[email protected]>
3 months agohsa: measure rtt in echo client 89/43289/7
Semir Sionek [Wed, 25 Jun 2025 12:16:41 +0000 (12:16 +0000)]
hsa: measure rtt in echo client

For TCP, rtt is extracted from transport info. For UDP & echo-bytes
option, we're measuring the time between sending & receiving the first
packet.
When using multiple clients, min/avg/max rtt values are displayed.

Type: improvement
Change-Id: I617527ca55726571638996dbcff05c2292f0ad18
Signed-off-by: Semir Sionek <[email protected]>
3 months agohttp: http2 client side 32/43432/10
Matus Fabian [Thu, 10 Jul 2025 16:39:37 +0000 (12:39 -0400)]
http: http2 client side

- only with TLS
- request are serialized within one app session (no multiplexing)
- http version can be specified in http client

Type: feature

Change-Id: I2fe11bd3252985d1bd1732616837f7a91f37f6a3
Signed-off-by: Matus Fabian <[email protected]>
3 months agovirtio: add option to set interface name 29/43429/2
Damjan Marion [Thu, 10 Jul 2025 11:39:27 +0000 (13:39 +0200)]
virtio: add option to set interface name

Type: feature
Change-Id: I99421fc1f946e65a8e23a74c04593fe1ca4f4857
Signed-off-by: Damjan Marion <[email protected]>
3 months agotap: add option to specify interface name 28/43428/2
Damjan Marion [Thu, 10 Jul 2025 09:47:05 +0000 (11:47 +0200)]
tap: add option to specify interface name

Type: feature
Change-Id: If3f8b082a2750f2786724f0e55f501df3c7d4991
Signed-off-by: Damjan Marion <[email protected]>
3 months agohs-test: KinD cluster build script improvements 83/43383/2
Adrian Villin [Mon, 14 Jul 2025 10:49:59 +0000 (12:49 +0200)]
hs-test: KinD cluster build script improvements

- new makefile targets, cleanup
- cluster can be rebuilt without shutting down

Type: improvement

Change-Id: I020e396a6410786ae29b9146a358d60503ac5662
Signed-off-by: Adrian Villin <[email protected]>
3 months agotls: fix cert and pkey leak 34/43434/4
Florin Coras [Fri, 11 Jul 2025 03:27:08 +0000 (20:27 -0700)]
tls: fix cert and pkey leak

Free cert and pkey once assigned to make sure they're freed one the
ssl structs are freed.

Type: fix

Change-Id: I41546c8ae7bad169a1462b3b9a3807e4644a1c2c
Signed-off-by: Florin Coras <[email protected]>
3 months agohsa: http cli client improvement 36/43436/3
Matus Fabian [Fri, 11 Jul 2025 13:13:34 +0000 (09:13 -0400)]
hsa: http cli client improvement

notify http transport when body data is read and transport requested
notification (e.g. used by h2 flow control)

switch to new format of host and target path parsing

Type: improvement

Change-Id: Ie209f1e6fa244f44baa51b4e9a7c66b51b7e5a50
Signed-off-by: Matus Fabian <[email protected]>
3 months agoquic: don't crash when no quic engine is available 27/43227/18
Dave Wallace [Wed, 18 Jun 2025 20:20:51 +0000 (16:20 -0400)]
quic: don't crash when no quic engine is available

- When there is no quic engine available, vpp crashes with an
  assert on startup which is not production friendly.
  Instead, emit warning message to stderr.
- Fix crash in session_transport_closing_notify if
  a remote closed notification happens on an invalid
  session in the quicly engine.
- Fix compilation errors when QUIC_DEBUG is set to 2
- Fix crash in 'show quic crypto context' command when
  quic engine is not present.
- Add quic engine type to 'show quic' output.

Type: fix

Change-Id: I83b9e69873fa3cd61d1d852b78ed1ccd2112825c
Signed-off-by: Dave Wallace <[email protected]>
3 months agohs-test: memleak tests fixes & json raport generation 31/43431/5
Semir Sionek [Thu, 10 Jul 2025 13:28:04 +0000 (09:28 -0400)]
hs-test: memleak tests fixes & json raport generation

Type: improvement
Change-Id: Ie2c18224d7073dd4821cb7716eb124f26dbe44ec
Signed-off-by: Semir Sionek <[email protected]>
3 months agohsa: http cli server add http1-only option 30/43430/1
Matus Fabian [Thu, 10 Jul 2025 11:44:07 +0000 (07:44 -0400)]
hsa: http cli server add http1-only option

Type: improvement

Change-Id: I2d3656ee7e154a44efab7501399de4b1fc696dc7
Signed-off-by: Matus Fabian <[email protected]>
3 months agohttp: Tunneling UDP over HTTP/2 76/43176/8
Matus Fabian [Fri, 13 Jun 2025 15:39:23 +0000 (11:39 -0400)]
http: Tunneling UDP over HTTP/2

Type: feature

Change-Id: I94f6af893872ae28669b7b9c30d61e58c0b65422
Signed-off-by: Matus Fabian <[email protected]>
3 months agomemif: avoid double-close of the socket on client abort with un-read data 80/43380/4
Andrew Yourtchenko [Fri, 4 Jul 2025 16:07:27 +0000 (18:07 +0200)]
memif: avoid double-close of the socket on client abort with un-read data

In some cases, there are two times the clib_file_del is called:

1) from memif_disconnect -> memif_socket_close call site in memif_master_conn_fd_error
2) the supposedly defensive code at the end of memif_master_conn_fd_error.

This was observed upon using of an artisanal memif client, which did not correctly drain the data written by VPP to the notification socket - a simple Ctrl-C in the client was enough to trivially reproduce the issue.
In real world scenario using the stock client this is expected to be a fairly narrow race condition.

The issue can be demonstrated as follows:

diff --git a/src/vlib/file.c b/src/vlib/file.c
index 286b0d1f2..29138f485 100644
--- a/src/vlib/file.c
+++ b/src/vlib/file.c
@@ -200,6 +200,8 @@ epoll:
     {
       clib_file_t *f = e->data.ptr;
       clib_error_t *err;
+      clib_warning("EPOLL: count %d, fd index: %d, events: %x", n_fds_ready, f->index, e->events);
+

       if (PREDICT_FALSE (!f->active))
        {

vlib_file_poll:203: EPOLL: count 1, fd index: 6, events: 1
vlib_file_poll:203: EPOLL: count 1, fd index: 7, events: 1
vlib_file_poll:203: EPOLL: count 1, fd index: 7, events: 4
vlib_file_poll:203: EPOLL: count 1, fd index: 7, events: 1
vlib_file_poll:203: EPOLL: count 1, fd index: 7, events: 4
vlib_file_poll:203: EPOLL: count 1, fd index: 7, events: 1
vlib_file_poll:203: EPOLL: count 1, fd index: 7, events: 4
vlib_file_poll:203: EPOLL: count 1, fd index: 7, events: 1
vlib_file_poll:203: EPOLL: count 1, fd index: 7, events: 4
vlib_file_poll:203: EPOLL: count 1, fd index: 7, events: 1
vlib_file_poll:203: EPOLL: count 1, fd index: 7, events: 4
vlib_file_poll:203: EPOLL: count 1, fd index: 7, events: 1
vlib_file_poll:203: EPOLL: count 1, fd index: 7, events: 4
vlib_file_poll:203: EPOLL: count 1, fd index: 7, events: 11
memif_plugin       [error ]: memif0/0: default_socket_recvmsg: disconnected

Failing case, where the client did not drain the data sent to it:

DBGvpp# create interface memif master
DBGvpp# set int ip address memif0/0 192.0.2.1/24
DBGvpp# set interface state memif0/0 up
DBGvpp# vlib_file_poll:203: EPOLL: count 1, fd index: 6, events: 1
vlib_file_poll:203: EPOLL: count 1, fd index: 7, events: 1
vlib_file_poll:203: EPOLL: count 1, fd index: 7, events: 4
vlib_file_poll:203: EPOLL: count 1, fd index: 7, events: 1
vlib_file_poll:203: EPOLL: count 1, fd index: 7, events: 4
vlib_file_poll:203: EPOLL: count 1, fd index: 7, events: 1
vlib_file_poll:203: EPOLL: count 1, fd index: 7, events: 4
vlib_file_poll:203: EPOLL: count 1, fd index: 7, events: 1
vlib_file_poll:203: EPOLL: count 1, fd index: 7, events: 4
vlib_file_poll:203: EPOLL: count 1, fd index: 7, events: 1
vlib_file_poll:203: EPOLL: count 1, fd index: 7, events: 4
vlib_file_poll:203: EPOLL: count 1, fd index: 7, events: 1
vlib_file_poll:203: EPOLL: count 1, fd index: 7, events: 4
vlib_file_poll:203: EPOLL: count 1, fd index: 7, events: 19
memif_plugin       [warn  ]: Error on unknown file descriptor 21
vlib/file          [error ]: vlib_file_update: epoll_ctl() failed, errno 9
/home/ayourtch/vpp/src/vppinfra/pool.h:291 (_pool_put_index) assertion `!pool_is_free_index (p, index)' fails
received signal SIGABRT, PC 0xffffa7f10a50

Type: fix
Change-Id: I13247c431605470c6a59d7d4630cefa999733107
Signed-off-by: Andrew Yourtchenko <[email protected]>
3 months agohs-test: fix go version mismatch 22/43422/3
Matus Fabian [Wed, 9 Jul 2025 09:46:09 +0000 (05:46 -0400)]
hs-test: fix go version mismatch

Type: test

Change-Id: Idce98c261c50ef0da2a4b7c4ee9146faa2194c4b
Signed-off-by: Matus Fabian <[email protected]>
3 months agoarp: fix dump API 24/43424/1
Klement Sekera [Wed, 9 Jul 2025 12:34:11 +0000 (14:34 +0200)]
arp: fix dump API

Add missing fib index to table id conversion in dump API.

Type: fix
Change-Id: Id5f7325ca31875abb39b33156f3938a051888ad3
Signed-off-by: Klement Sekera <[email protected]>
3 months agohs-test: fix install-kind-deps and kubeconfig path 81/43381/3
Adrian Villin [Tue, 8 Jul 2025 08:45:55 +0000 (10:45 +0200)]
hs-test: fix install-kind-deps and kubeconfig path

Type: test

Change-Id: Ic9f883e510e275e862c700e4aae4630ad3dcfee8
Signed-off-by: Adrian Villin <[email protected]>
3 months agolinux-cp: do not lock table when it's not needed 36/43036/7
Stanislav Zaikin [Mon, 26 May 2025 07:52:57 +0000 (09:52 +0200)]
linux-cp: do not lock table when it's not needed

Do not lock table when lcp is not installing routes (e.g. zero nexthops
or ipv6 multicast routes), otherwise it will stay locked forever.

Type: fix

Signed-off-by: Stanislav Zaikin <[email protected]>
Change-Id: I4070ce0e0823b5afbd56c5cd79ae39a02c7d4300

3 months agofib: take barrier on LB pool put 72/43372/2
Vladimir Zhigulin [Fri, 4 Jul 2025 08:47:14 +0000 (10:47 +0200)]
fib: take barrier on LB pool put

Fixes ASAN crash after fib update with multiple
workers

Type: fix

Change-Id: I3d0112b608ffa5b5559311c6d494d27d6c1db511
Signed-off-by: Vladimir Zhigulin <[email protected]>
3 months agohs-test: use current VPP dir for CalicoVPP build 78/43378/6
Adrian Villin [Tue, 1 Jul 2025 10:42:07 +0000 (12:42 +0200)]
hs-test: use current VPP dir for CalicoVPP build

- make setup-cluster will use current VPP dir instead of CalicoVPP's dir
- VPP will be built only once
- changed build targets to build VPP as a non-root user (to avoid
  permission issues when building CalicoVPP)

Type: improvement

Change-Id: Iba90219660c1259da6ad81fe002f99b6d43ea248
Signed-off-by: Adrian Villin <[email protected]>
3 months agovlib: handle worker sync in wait one loop 70/43370/2
Florin Coras [Thu, 3 Jul 2025 22:00:39 +0000 (18:00 -0400)]
vlib: handle worker sync in wait one loop

Type: improvement

Change-Id: I8dcd9b7d305878eb385eb27481be6a241b4a024c
Signed-off-by: Florin Coras <[email protected]>
3 months agosession: move app crypto to separate files 42/43042/5
Florin Coras [Tue, 27 May 2025 19:30:33 +0000 (15:30 -0400)]
session: move app crypto to separate files

Type: refactor

Change-Id: Iac10665d3060e4c585e3ee1f94743809ab09d9db
Signed-off-by: Florin Coras <[email protected]>
3 months agosession: cli to add/del collector to app 35/43235/2
Florin Coras [Sat, 21 Jun 2025 05:12:48 +0000 (22:12 -0700)]
session: cli to add/del collector to app

Type: improvement

Change-Id: Ie1ec27eab7d297f20ec7cad46d2e90b9965f896a
Signed-off-by: Florin Coras <[email protected]>
3 months agohs-test: fix Http2ServerMemLeakTest 79/43379/1
Adrian Villin [Wed, 2 Jul 2025 14:42:10 +0000 (16:42 +0200)]
hs-test: fix Http2ServerMemLeakTest

Type: test

Change-Id: Id8745fd8c67924cb5067c54695d3594220c590ed
Signed-off-by: Adrian Villin <[email protected]>
3 months agohs-test: h2 memory leak test 38/43338/2
Matus Fabian [Fri, 27 Jun 2025 11:43:09 +0000 (13:43 +0200)]
hs-test: h2 memory leak test

Type: test

Change-Id: Ib68aabecafc4e17acae9942b6791d4aeb4833f96
Signed-off-by: Matus Fabian <[email protected]>
3 months agohttp: fix http header table hash keys leak 37/43337/2
Matus Fabian [Fri, 27 Jun 2025 11:40:51 +0000 (13:40 +0200)]
http: fix http header table hash keys leak

Type: fix

Change-Id: I60ebf767a1f96a1290b7738d6859241739ce452c
Signed-off-by: Matus Fabian <[email protected]>
3 months agoocteon: use plain strcmp 68/43368/2
Damjan Marion [Tue, 1 Jul 2025 15:28:31 +0000 (17:28 +0200)]
octeon: use plain strcmp

Some gcc versions have issues with clib_strcmp...

Type: fix
Change-Id: Idfdcb7d13f14eadb7a7f210743a783172e2d5774
Signed-off-by: Damjan Marion <[email protected]>
3 months agovppinfra: avoid string truncation errors by some gcc versions 61/43361/2
Damjan Marion [Mon, 30 Jun 2025 13:53:21 +0000 (15:53 +0200)]
vppinfra: avoid string truncation errors by some gcc versions

Type: fix
Change-Id: If33251e1eac7e437ae803363d960896da02ae567
Signed-off-by: Damjan Marion <[email protected]>
3 months agotls: fix coverity warning 96/43296/5
Florin Coras [Thu, 26 Jun 2025 03:16:36 +0000 (20:16 -0700)]
tls: fix coverity warning

Type: fix

Change-Id: I2505613734667ae59fc51bd42f8dcd15206cded1
Signed-off-by: Florin Coras <[email protected]>
3 months agohs-test: individual http1 suite 76/43376/2
Adrian Villin [Fri, 27 Jun 2025 12:18:43 +0000 (14:18 +0200)]
hs-test: individual http1 suite

- Http1Suite is the same as NoTopoSuite with some things removed
- renamed http related files

Type: test

Change-Id: Ifb0ff0ba9a1151ff025faa6edd208f183830d2f5
Signed-off-by: Adrian Villin <[email protected]>
3 months agogso: fix ip fragment support for gso packet 36/43336/3
Mohsin Kazmi [Thu, 26 Jun 2025 10:14:18 +0000 (10:14 +0000)]
gso: fix ip fragment support for gso packet

Type: fix

GSO packets must be fragmented if the egress interface does not
support GSO offload and its MTU is smaller than the combined
size of the GSO chunk and protocol headers.

Signed-off-by: Mohsin Kazmi <[email protected]>
Change-Id: I94dff39c475a6ba31b1d8f4517e84be3ab506607

3 months agoioam: remove use of local_next_by_ip_protocol struct 57/43257/2
Mohsin Kazmi [Fri, 20 Jun 2025 17:06:22 +0000 (17:06 +0000)]
ioam: remove use of local_next_by_ip_protocol struct

Type: fix

ioam plugin is using data structure which is specific
to ip4 and ip6 lookup nodes.
This patch also use the IP_PROTOCOL defines instead of
custom define in srv6 code.

Signed-off-by: Mohsin Kazmi <[email protected]>
Change-Id: Iafd2a8416dd1f44ef7afd07c92915cd7dd6400a6

3 months agotls: fix compilation issue with openssl-1.1 62/43362/2
Varun Rapelly [Mon, 30 Jun 2025 15:35:59 +0000 (15:35 +0000)]
tls: fix compilation issue with openssl-1.1

This patch fixes compilation issue observed with openssl-1.1
with 'SSL_CTX_set_async_callback'.

Type: fix

Change-Id: I3d65f69056034b4afcebd7813c34f9ecebd299e0
Signed-off-by: Varun Rapelly <[email protected]>
3 months agoena: use snprintf instead of strncpy 91/43291/4
Damjan Marion [Wed, 25 Jun 2025 13:09:31 +0000 (15:09 +0200)]
ena: use snprintf instead of strncpy

.. and silence gcc-11

Type: fix
Change-Id: Iad2671baf7d29aa861e74aafe952591e7205732d
Signed-off-by: Damjan Marion <[email protected]>
3 months agosvm: don't use __WORDSIZE 90/43290/2
Damjan Marion [Wed, 25 Jun 2025 12:20:57 +0000 (14:20 +0200)]
svm: don't use __WORDSIZE

It is glibc specific, breaks MUSL

Type: fix
Change-Id: I4f898ec14a9776e298bdf529545adef70f15ddf5
Signed-off-by: Damjan Marion <[email protected]>
3 months agopolicer: don't compute CPU clock frequency for each API call 17/43217/10
Arthur de Kerhor [Tue, 17 Jun 2025 14:30:51 +0000 (16:30 +0200)]
policer: don't compute CPU clock frequency for each API call

In some virtualized environments, where we can't get TSC from
clib_get_cpuid, os_cpu_clock_frequency can take more than 1ms
to return. As the TSC value is invariant over time, it can be
cached in policer_init instead of being recalculated everytime
a policer is created/updated.

Type: improvement
Change-Id: Icfd00feac76f35d562546a17e4830efb91dba219
Signed-off-by: Arthur de Kerhor <[email protected]>
3 months agohsa: introduce max-tx-chunk parameter to built-in echo client 24/43224/5
Semir Sionek [Wed, 18 Jun 2025 12:25:02 +0000 (12:25 +0000)]
hsa: introduce max-tx-chunk parameter to built-in echo client

...which enables the user to control the size of the data chunk being
written, unless the size needs to be reduced due to other reasons.

Type: improvement
Change-Id: I660e3482047ae2a13b337df1abb405ecef3cf0d0
Signed-off-by: Semir Sionek <[email protected]>
3 months agomisc: VPP 25.06 Release Notes 43/43243/2
Andrew Yourtchenko [Wed, 11 Jun 2025 16:07:51 +0000 (18:07 +0200)]
misc: VPP 25.06 Release Notes

Type: docs
Change-Id: Id32389963ab02af9ee70dcc040505b12bbc0e9db
Signed-off-by: Andrew Yourtchenko <[email protected]>
(cherry picked from commit 1573e751c5478d3914d26cdde153390967932d6b)

3 months agodns: fix recursive locking 92/43292/2
Benoît Ganne [Wed, 25 Jun 2025 14:39:54 +0000 (16:39 +0200)]
dns: fix recursive locking

All callers to delete_random_entry() are already holding the lock to
the DNS cache. Thanks to Rain for the report.

Type: fix

Change-Id: Id051427016f9b7444b812019ccc0f5085fd3e469
Signed-off-by: Benoît Ganne <[email protected]>
4 months agohsa: fix echo client vm use for time 93/43293/2
Florin Coras [Wed, 25 Jun 2025 16:23:13 +0000 (09:23 -0700)]
hsa: fix echo client vm use for time

Type: fix

Change-Id: Iecabf8a8c6b0bd262be32ef144281a5f0c052381
Signed-off-by: Florin Coras <[email protected]>
4 months agohttp: fix h2 settings leak 94/43294/3
Florin Coras [Wed, 25 Jun 2025 18:03:43 +0000 (11:03 -0700)]
http: fix h2 settings leak

Type: fix

Change-Id: I680eb6bafb4b6218e60523e2abc2962f2f5cbefc
Signed-off-by: Florin Coras <[email protected]>
4 months agohsa: fix echo-bytes echo client runs over UDP 85/43285/3
Semir Sionek [Tue, 24 Jun 2025 12:19:04 +0000 (12:19 +0000)]
hsa: fix echo-bytes echo client runs over UDP

Previously counting received bytes didn't take into account the
datagram header size, leading to a bigger than expected size and an
overflow of es->bytes_to_receive.

Type: fix
Change-Id: If31d4ed5f989645388dbf9c1b9829c6f2e4e8c62
Signed-off-by: Semir Sionek <[email protected]>
4 months agohsa: http client formatting of headers improvement 88/43288/2
Matus Fabian [Wed, 25 Jun 2025 09:53:23 +0000 (09:53 +0000)]
hsa: http client formatting of headers improvement

Do not print response headers as raw bytes recieved from http transport
but use format_http_header_table which will work nice with http/2 too.

Type: improvement

Change-Id: I48b75c024e361879b611588fc3345ef343cb4a1b
Signed-off-by: Matus Fabian <[email protected]>
4 months agohttp: test code coverage improvement 95/43295/2
Matus Fabian [Wed, 25 Jun 2025 17:38:45 +0000 (17:38 +0000)]
http: test code coverage improvement

Type: test

Change-Id: Iae1487d74db77c438b2fd531f4a675a5994f91af
Signed-off-by: Matus Fabian <[email protected]>
4 months agovppinfra: introduce bihash_56_8 86/43286/4
Mohammed Hawari [Tue, 24 Jun 2025 16:20:25 +0000 (18:20 +0200)]
vppinfra: introduce bihash_56_8

Change-Id: I4d3cb6194c02ae53ead8f5ede35c3204d336a25f
Type: improvement
Signed-off-by: Mohammed Hawari <[email protected]>
4 months agotls: check error when SSL_shutdown fails 87/43287/3
Brian Morris [Tue, 24 Jun 2025 20:55:29 +0000 (20:55 +0000)]
tls: check error when SSL_shutdown fails

this pulls the error from the per-thread error queue, which if not empty could cause the wrong error to be returned elsewhere

Type: fix

Change-Id: Ie8741f32de61ef1f469e694ac27ee937a45f5b01
Signed-off-by: Brian Morris <[email protected]>
4 months agogre: Add support for GRE keys in the GRE plugin 40/42440/25
Masih Nilforoush [Thu, 27 Feb 2025 13:44:44 +0000 (14:44 +0100)]
gre: Add support for GRE keys in the GRE plugin

The added feature enables the GRE plugin to create tunnels between the same endpoints,
distinguishing them by the "key" value. It uses the standard 'key'
parameter in the GRE header.
Changes have been made to add support for CLI and API to create tunnels with a "key" value.

The CLI syntax is as follows:
   create gre tunnel src src_IP_Address dst dst_IP_Address key key_value

All existing GRE functionalities, such as tunnel type and mode, remain unchanged.
GRE key support has been implemented for all non-ERSPAN tunnel types, including both IPv4 and IPv6.
Additionally, modifications were made to the GRE packet header, data structure, and inbound/outbound
packet processing to accommodate key configuration through CLI and API.

Type: feature
Change-Id: I222d585007fa264e7cc12c79d6ba9c63c044f133
Signed-off-by: Masih Nilforoush <[email protected]>
4 months agohttp: h2 decoding response 78/43278/3
Matus Fabian [Mon, 23 Jun 2025 17:15:04 +0000 (17:15 +0000)]
http: h2 decoding response

Type: improvement

Change-Id: I5e582e6fec972d6d61683a7a76c2a3f222a9030b
Signed-off-by: Matus Fabian <[email protected]>
4 months agohs-test: support building master CalicoVPP (KinD) 59/43259/3
Adrian Villin [Tue, 24 Jun 2025 08:23:22 +0000 (10:23 +0200)]
hs-test: support building master CalicoVPP (KinD)

- we can now build master CalicoVPP with master VPP using:
  'make setup-cluster BASE=master'
- TODO: docs, use the same VPP build in CalicoVPP as in HST images
  (so that VPP isn't built twice)

Type: test

Change-Id: If5ba154a2f6868db04c17742f4e531269e57a56e
Signed-off-by: Adrian Villin <[email protected]>
4 months agohs-test: fix mw tests that rely on tap interfaces 79/43279/8
Florin Coras [Mon, 23 Jun 2025 20:22:02 +0000 (13:22 -0700)]
hs-test: fix mw tests that rely on tap interfaces

Make sure taps have multiple queues and consistent qp mode enabled.
Type: test

Change-Id: Icf00290fad1934adcbfcfe56530d37f0793b0bca
Signed-off-by: Florin Coras <[email protected]>
Signed-off-by: Matus Fabian <[email protected]>
4 months agohttp: h2 encoding request 32/43232/3
Matus Fabian [Fri, 20 Jun 2025 17:03:59 +0000 (17:03 +0000)]
http: h2 encoding request

Type: improvement

Change-Id: I4609c3a89c4df0883aa25f07623dad68c539d70d
Signed-off-by: Matus Fabian <[email protected]>
4 months agotls: add async support for SSL client 34/43234/2
Varun Rapelly [Sat, 21 Jun 2025 04:15:11 +0000 (04:15 +0000)]
tls: add async support for SSL client

This patch enables async processing support for SSL clients.

Type: improvement

Change-Id: I8d9462b439ff6e0962ee30cb8b596a2744a1aa33
Signed-off-by: Varun Rapelly <[email protected]>
4 months agovcl: add reattach spinlock 76/43276/2
Florin Coras [Sat, 21 Jun 2025 22:42:58 +0000 (15:42 -0700)]
vcl: add reattach spinlock

Avoid potential deadlock if app is sigtermed and wants workers lock to
cleanup worker while reattaching.

Type: improvement

Change-Id: I97f5935d309de83717e5a0a82055c91e07c4cb17
Signed-off-by: Florin Coras <[email protected]>
4 months agohttp_static: improve cli short help 33/43233/3
Florin Coras [Sat, 21 Jun 2025 02:04:43 +0000 (19:04 -0700)]
http_static: improve cli short help

- make sure all params are present in both create and add/del listener
- rename max-body-size to max-req-body-size as it should be easier to
  glean the purpose of the config

Type: refactor

Change-Id: I0f30eebe0b001e48ff640552396087e5da35334d
Signed-off-by: Florin Coras <[email protected]>
4 months agohttp: fix path formatting in request templates 31/43231/3
Matus Fabian [Fri, 20 Jun 2025 13:30:28 +0000 (13:30 +0000)]
http: fix path formatting in request templates

Client app pass path as data bytes and length, not null terminated
string. Fix also msg.data.target_path_len value in http client and http
cli client, set it to string length not vec_len.

Type: fix

Change-Id: Icab6d830812bbfc2e6df82564d6d087476769111
Signed-off-by: Matus Fabian <[email protected]>
4 months agohs-test: add udp mw test 19/43219/6
Florin Coras [Wed, 18 Jun 2025 03:04:25 +0000 (23:04 -0400)]
hs-test: add udp mw test

Type: test

Change-Id: I30a2541bda71aae4cbf2be76f428d23309470631
Signed-off-by: Florin Coras <[email protected]>
4 months agovcl: improve vls locking for mt apps 18/43218/6
Florin Coras [Wed, 18 Jun 2025 01:20:23 +0000 (21:20 -0400)]
vcl: improve vls locking for mt apps

For mt single vcl worker apps, only guard vcl session pool, as opposed
to vls pool, to allow workers to perform updates.

Also convert spool mutex into rwlock and make sure all operations that
interact with vcl session pools grab at least the reader lock.

Type: improvement

Change-Id: Ief41912bc84881772d2279cd84dabb983a91b4cb
Signed-off-by: Florin Coras <[email protected]>
4 months agohttp: client can receive response while sending 29/43229/2
Matus Fabian [Thu, 19 Jun 2025 13:48:04 +0000 (13:48 +0000)]
http: client can receive response while sending

Client can receive response (error) from server while still sending
body bytes, handle this as exception in state machine instead of error.

Type: improvement

Change-Id: I6aa3f7f5aaa299ac781109dd75295a7eb3a42cf9
Signed-off-by: Matus Fabian <[email protected]>
4 months agovppinfra: don't use internal __CPU_* macros 23/43223/2
Damjan Marion [Wed, 18 Jun 2025 12:26:47 +0000 (14:26 +0200)]
vppinfra: don't use internal __CPU_* macros

Breaks non-glibc builds...

Type: improvement
Change-Id: If48a444ff358ef85973504795c06287269ed5c55
Signed-off-by: Damjan Marion <[email protected]>
4 months agovppinfra: install ring.h 71/43071/3
Mohammed Hawari [Tue, 3 Jun 2025 15:05:46 +0000 (17:05 +0200)]
vppinfra: install ring.h

Change-Id: I920bef41426c10a4560cc3e923ca747054a5aeec
Type: improvement
Signed-off-by: Mohammed Hawari <[email protected]>
4 months agohs-test: change local registry port 56/43256/2
Adrian Villin [Wed, 18 Jun 2025 15:49:55 +0000 (17:49 +0200)]
hs-test: change local registry port

- changed to 5001, CalicoVPP uses port 5000

Type: test

Change-Id: Ic45c613d684685f21e49612c4e6454c302bbabb6
Signed-off-by: Adrian Villin <[email protected]>
4 months agohsa: fix http client logging with file 25/43225/2
Florin Coras [Wed, 18 Jun 2025 19:18:08 +0000 (15:18 -0400)]
hsa: fix http client logging with file

Print response status and headers as vectors.

Type: fix

Change-Id: I7321776e4914c139d85cd3f45ee67afd0850caee
Signed-off-by: Florin Coras <[email protected]>
4 months agohsa: fix http client path formating for fopen 26/43226/2
Matus Fabian [Wed, 18 Jun 2025 19:34:01 +0000 (15:34 -0400)]
hsa: fix http client path formating for fopen

format full path into variable, null terminate and free it after use
in hc_session_connected_callback

Type: fix

Change-Id: I3ed64dd247bf5ac9af8fa65517b6308a98205fd4
Signed-off-by: Matus Fabian <[email protected]>
4 months agobuild: add knob to disable vcl 22/43222/2
Damjan Marion [Wed, 18 Jun 2025 12:20:35 +0000 (14:20 +0200)]
build: add knob to disable vcl

VCL doesn't work with musl.

Type: improvement
Change-Id: I5cb69da680dc98d14d88e340b4db6b5a8584ff23
Signed-off-by: Damjan Marion <[email protected]>
4 months agovcl: improve vls pthread cleanup handling 16/43216/8
Florin Coras [Mon, 16 Jun 2025 16:47:49 +0000 (12:47 -0400)]
vcl: improve vls pthread cleanup handling

Try to drop locks if interrupted with locks grabbed.

Type: fix

Change-Id: I8d4996b6f35a8a2610327fb11e80e9951808b535
Signed-off-by: Florin Coras <[email protected]>
4 months agohsa: make http client do chunked reads/writes to file 52/43152/5
Semir Sionek [Thu, 12 Jun 2025 11:21:01 +0000 (11:21 +0000)]
hsa: make http client do chunked reads/writes to file

When using the save-to arg, the http client saves the body of the
response to file. With the current mechanism it would allocate a buffer
as big as the body (up to the limit), iteratively fill it and dump
everything (along with the headers) into the file. This would limit how
big of a response can be saved due to memory constraints and settings,
as well as not reproduce it accurately (e.g the file would need to be
trimmed from the saved headers.

With the new approach, if the response is too big for the max-body-size
settings, we reduce the buffer size to the fifo size, fill it up and
write it to file. We keep the file pointer and write to it, until we have
the response fully saved. The headers are now being displayed through
the cli, similarly to the verbose mode.

Type: improvement
Change-Id: I6a72749bc9c1175aba7769d83984d1d4a40ee9f0
Signed-off-by: Semir Sionek <[email protected]>
4 months agohttp: http/2 extended connect method 47/43147/5
Matus Fabian [Wed, 11 Jun 2025 15:02:25 +0000 (11:02 -0400)]
http: http/2 extended connect method

Type: feature

Change-Id: I42e94b6282fa693d3c69f938ec9d3a290b71b9fa
Signed-off-by: Matus Fabian <[email protected]>
4 months agohttp: implement HTTP PUT method 57/43157/8
Andrew Yourtchenko [Fri, 13 Jun 2025 14:13:27 +0000 (16:13 +0200)]
http: implement HTTP PUT method

This implements the HTTP PUT request with the ability
to stream the data in chunks, rather than sending
the entire request body at once.

Type: feature
Change-Id: Ib04103a4bacf76a3c0bf9483a63a2edb693276c6
Signed-off-by: Andrew Yourtchenko <[email protected]>
4 months agoudp: add basic unit test 82/43182/3
Florin Coras [Mon, 16 Jun 2025 03:50:26 +0000 (20:50 -0700)]
udp: add basic unit test

For now test if binds work as expected.

Type: improvement

Signed-off-by: Florin Coras <[email protected]>
Change-Id: I3227c5b298763dd8d48ef1bf4858cb66df9aeafd

4 months agovcl: validate ldp select bitmap only if bits set 79/43179/2
Florin Coras [Sat, 14 Jun 2025 22:19:14 +0000 (18:19 -0400)]
vcl: validate ldp select bitmap only if bits set

Type: fix

Change-Id: Ic873cb9511cf70619722e7b0f58211ad2a2a6772
Signed-off-by: Florin Coras <[email protected]>
4 months agohs-test: WaitForCoreDump improvement 83/43183/1
Matus Fabian [Mon, 16 Jun 2025 12:17:02 +0000 (08:17 -0400)]
hs-test: WaitForCoreDump improvement

- multiple core files support
- choose correct app binary in gdb bt (before vpp only)
- paltform independent solib-search-path (before x86_64 only)

Type: test

Change-Id: I70f48defcdfc6821e321b4b15ba95ad245407db0
Signed-off-by: Matus Fabian <[email protected]>
4 months agointerface: add support for proper checksum handling 25/42425/8
Mohsin Kazmi [Mon, 17 Mar 2025 13:37:18 +0000 (13:37 +0000)]
interface: add support for proper checksum handling

Type: improvement

Signed-off-by: Mohsin Kazmi <[email protected]>
Change-Id: I035acc97abb1ce63ce09019b790ee81c803d5d90

4 months agoarp: checks for null in add neighbor 45/43045/12
Anna Neiman [Tue, 27 May 2025 12:28:53 +0000 (15:28 +0300)]
arp: checks for null in add neighbor

Type: fix

Details:

I have the situation that ip_neighbor_learn  is called for an already deleted interface.
The reproduction sequence is following
1.  arp_input -> arp_reply  on some worker
2.  call ip_neighbor_learn_dp , so request to perform  ip_neighbor_learn on the vpp_main thread
3.  the vpp_main thread is very busy - at the same moment we remove most of l2 interfaces and vrfs under barrier sync, including the TX interface of arp_reply
4.  call ip_neighbor_learn in the  main thread , when the appropriate interface is already deleted

Change-Id: I69b167ba919d57f19d6b941260243bca889c31c1
Signed-off-by: Anna Neiman <[email protected]>
4 months agohsa: mt support for cl udp test 78/43178/6
Florin Coras [Fri, 13 Jun 2025 21:26:54 +0000 (17:26 -0400)]
hsa: mt support for cl udp test

Also add tests for
- multi worker cl connects/binds
- 2 multi worker servers binding the same port

Type: improvement

Change-Id: I222756b7664ffdba83cb69bb0c730526dad3065c
Signed-off-by: Florin Coras <[email protected]>
4 months agovcl: make vcl_evt code compile 77/43177/3
Steven Luong [Fri, 13 Jun 2025 18:07:47 +0000 (11:07 -0700)]
vcl: make vcl_evt code compile

To include vcl_evt code in the build,
make build VPP_EXTRA_CMAKE_ARGS=-DVPP_VCL_ELOG=ON

Type: fix

Change-Id: I45bd093001de6e3dd4d6894726a470cf1ded952b
Signed-off-by: Steven Luong <[email protected]>
4 months agohsa: improve handling of SESSION_E_REFUSED in http client 54/43154/2
Semir Sionek [Fri, 13 Jun 2025 13:16:47 +0000 (13:16 +0000)]
hsa: improve handling of SESSION_E_REFUSED in http client

In that case (e.g trying to connect on a closed port), a connection
is refused and no session is allocated. As such, we cannot use the
struct to obtain the worker or vlib_main_t.

Type: fix
Change-Id: I9b44ccb42ba56a75b8ecc39501a7386ba2e84981
Signed-off-by: Semir Sionek <[email protected]>
4 months agotests: run docker login script hs-test jobs 53/43153/2
Dave Wallace [Fri, 13 Jun 2025 04:09:20 +0000 (00:09 -0400)]
tests: run docker login script hs-test jobs

- login to docker hub in the CI to avoid hitting
  the docker hub rate-limiter

Type: test

Change-Id: I4f6a854136b9bae9da1493a2aaa88576a64b314d
Signed-off-by: Dave Wallace <[email protected]>
4 months agovlib: increase CPU base frequency precision 44/43144/3
Sivaprasad Tummala [Wed, 11 Jun 2025 10:21:43 +0000 (10:21 +0000)]
vlib: increase CPU base frequency precision

Updated the 'show cpu' CLI command to print the base frequency with 4 decimal
places instead of 2 (e.g., 2.69 GHz → 2.6945 GHz) for improved accuracy when
inspecting CPU timing characteristics

Type: improvement

Change-Id: I8f3384204ddcb8033aae9a1e1f6d06bed46478ab
Signed-off-by: Sivaprasad Tummala <[email protected]>
4 months agoaf_packet: fix rx/tx queue cli config 50/43150/4
Florin Coras [Thu, 12 Jun 2025 06:26:00 +0000 (02:26 -0400)]
af_packet: fix rx/tx queue cli config

Type: fix

Change-Id: I45da2ee461c9b0a76eaee341eacd1449e88b87c6
Signed-off-by: Florin Coras <[email protected]>
4 months agodocs: minor improvement to core-pinning documentation 01/43101/4
Hadi Rayan Al-Sandid [Fri, 6 Jun 2025 14:18:41 +0000 (16:18 +0200)]
docs: minor improvement to core-pinning documentation

Type: docs
Change-Id: I05691e77855832ebbd9a3f9ee7de8a4edc1d75fe
Signed-off-by: Hadi Rayan Al-Sandid <[email protected]>
4 months agosflow : documentation 08/43108/6
Neil McKee [Mon, 9 Jun 2025 03:55:14 +0000 (20:55 -0700)]
sflow : documentation

Update sFlow plugin documentation to reflect the addition of
egress-sampling and drop-monitoring.

Link the plugin documentation into the table of contents.

Type: docs
Change-Id: I6bd0e57860ec569fe955fb3f844aa4f24e8d8e25
Signed-off-by: Neil McKee <[email protected]>
4 months agohsa: in http client print the response body only for text/* 72/43072/16
Semir Sionek [Tue, 3 Jun 2025 15:07:28 +0000 (15:07 +0000)]
hsa: in http client print the response body only for text/*

Type: improvement
Change-Id: I9a2e6b9344b64018b0c6872dbd051d7c39c7a0c3
Signed-off-by: Semir Sionek <[email protected]>
4 months agohs-test: configurable Ginkgo timeout 59/43159/5
Adrian Villin [Thu, 12 Jun 2025 12:35:49 +0000 (14:35 +0200)]
hs-test: configurable Ginkgo timeout

- global Ginkgo timeout can now be set using GINKGO_TIMEOUT
- fixes coverage job timing out because of Ginkgo's default 1h timeout

Type: fix

Change-Id: Ie1386e3eab31ff843a94b991e43b5270772b7732
Signed-off-by: Adrian Villin <[email protected]>
4 months agovcl: avoid reading fifo if vcl detached from vpp 49/43149/2
Florin Coras [Thu, 12 Jun 2025 04:45:12 +0000 (00:45 -0400)]
vcl: avoid reading fifo if vcl detached from vpp

Type: fix

Change-Id: Ie357602140993244e81edb97fac48339a88ecbe8
Signed-off-by: Florin Coras <[email protected]>
4 months agohs-test: support for multiple multi-core containers 56/43156/9
Adrian Villin [Tue, 10 Jun 2025 13:33:35 +0000 (15:33 +0200)]
hs-test: support for multiple multi-core containers

- framework will now allocate multiple cores for every vpp container
  when running an MTTest
- added missing test timeout in H2SpecSuite

Type: improvement

Change-Id: I31317560b54b494ab14c8b5f4d7caed9fd3315b0
Signed-off-by: Adrian Villin <[email protected]>
4 months agohs-test: support for multiple rx/tx af_packet queues 36/43136/8
Florin Coras [Tue, 10 Jun 2025 05:14:30 +0000 (01:14 -0400)]
hs-test: support for multiple rx/tx af_packet queues

Type: test

Change-Id: I13d12ea2558fa6ef3849a69a85d970256af52031
Signed-off-by: Florin Coras <[email protected]>
4 months agoaf_packet: include if name in fanout id 51/43151/2
Florin Coras [Thu, 12 Jun 2025 07:51:46 +0000 (03:51 -0400)]
af_packet: include if name in fanout id

Useful when running multiple vpps with veth interfaces with same device
ids and multiple rx/tx queues configured

Type: improvement

Change-Id: I9fd23ad941883850f694c973db8cb8345dd901c2
Signed-off-by: Florin Coras <[email protected]>
4 months agohs-test: ConnectUdpClient fix deadline in Dial 40/43140/3
Matus Fabian [Tue, 10 Jun 2025 22:35:09 +0000 (18:35 -0400)]
hs-test: ConnectUdpClient fix deadline in Dial

Type: test

Change-Id: If2c3061e2c7349c4fd785d6cf417e9b2f0b387a0
Signed-off-by: Matus Fabian <[email protected]>
4 months agohttp: remove spurious h2 init message 42/43142/2
Florin Coras [Wed, 11 Jun 2025 03:02:20 +0000 (20:02 -0700)]
http: remove spurious h2 init message

Type: improvement

Change-Id: I25b0911163a6b6bf8a4f013acc047e5ad3458dc6
Signed-off-by: Florin Coras <[email protected]>
4 months agohttp: http/2 connect method 59/43059/14
Matus Fabian [Fri, 30 May 2025 14:51:59 +0000 (10:51 -0400)]
http: http/2 connect method

Type: feature

Change-Id: I7dc27a93388a6d680f2a87ccbd2704bb76a91357
Signed-off-by: Matus Fabian <[email protected]>
4 months agohttp_static: use authority in redirects 46/43146/2
Matus Fabian [Wed, 11 Jun 2025 11:27:54 +0000 (07:27 -0400)]
http_static: use authority in redirects

Use authority in redirects instead of IP address of the listener.

Type: improvement

Change-Id: Id6dedcb59f4d3e9775ce74be483395ee782ac5d5
Signed-off-by: Matus Fabian <[email protected]>
4 months agohttp: fix Host header usage in http1_target_fixup 45/43145/2
Matus Fabian [Wed, 11 Jun 2025 10:37:18 +0000 (06:37 -0400)]
http: fix Host header usage in http1_target_fixup

Type: fix

Change-Id: I034d40872515dcb192ea5cdd244737fafdb12217
Signed-off-by: Matus Fabian <[email protected]>