From 2c6590d6a0883954f1f060ea8f2ce53179e12b27 Mon Sep 17 00:00:00 2001 From: David Gibson Date: Thu, 13 Nov 2025 12:34:13 +1100 Subject: udp: Use IP_FREEBIND for flow sockets as well as listening sockets The --freebind option allows pasta to listen on addresses that aren't registered on the host, which has a number of use cases. However, we omitted this option for UDP "flow sockets" which are created once a flow is started, connect()ed specifically to the peer. Flow sockets are also bound, and if the peer has contacted a freebind address, we need IP_FREEBIND to do so. Link: https://bugs.passt.top/show_bug.cgi?id=174 Signed-off-by: David Gibson Signed-off-by: Stefano Brivio --- util.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/util.c b/util.c index 44c21a3..ab23463 100644 --- a/util.c +++ b/util.c @@ -67,9 +67,8 @@ int sock_l4_sa(const struct ctx *c, enum epoll_type type, freebind = c->freebind; break; case EPOLL_TYPE_UDP_LISTEN: - freebind = c->freebind; - /* fallthrough */ case EPOLL_TYPE_UDP: + freebind = c->freebind; proto = IPPROTO_UDP; socktype = SOCK_DGRAM | SOCK_NONBLOCK; break; -- cgit v1.2.3