1
0
mirror of https://passt.top/passt synced 2024-11-05 20:31:11 +00:00

udp: Fix maximum payload size calculation for IPv4 buffers, bump UDP_TAP_FRAMES

The issue with a higher UDP_TAP_FRAMES was actually coming from a
payload size the guest couldn't digest. Fix that, and bump
UDP_TAP_FRAMES back to 128.

Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
Stefano Brivio 2021-10-21 04:42:09 +02:00
parent dd942eaa48
commit 85a80f8f63

5
udp.c
View File

@ -120,7 +120,7 @@
#define UDP_CONN_TIMEOUT 180 /* s, timeout for ephemeral or local bind */ #define UDP_CONN_TIMEOUT 180 /* s, timeout for ephemeral or local bind */
#define UDP_SPLICE_FRAMES 128 #define UDP_SPLICE_FRAMES 128
#define UDP_TAP_FRAMES 16 #define UDP_TAP_FRAMES 128
/** /**
* struct udp_tap_port - Port tracking based on tap-facing source port * struct udp_tap_port - Port tracking based on tap-facing source port
@ -201,7 +201,8 @@ __extension__ static struct udp4_l2_buf_t {
struct ethhdr eh; struct ethhdr eh;
struct iphdr iph; struct iphdr iph;
struct udphdr uh; struct udphdr uh;
uint8_t data[USHRT_MAX - sizeof(struct udphdr)]; uint8_t data[USHRT_MAX -
(sizeof(struct iphdr) + sizeof(struct udphdr))];
} __attribute__ ((packed, aligned(__alignof__(unsigned int)))) } __attribute__ ((packed, aligned(__alignof__(unsigned int))))
udp4_l2_buf[UDP_TAP_FRAMES] = { udp4_l2_buf[UDP_TAP_FRAMES] = {
[ 0 ... UDP_TAP_FRAMES - 1 ] = { [ 0 ... UDP_TAP_FRAMES - 1 ] = {