diff options
| author | David Gibson <david@gibson.dropbear.id.au> | 2025-11-13 12:34:13 +1100 |
|---|---|---|
| committer | Stefano Brivio <sbrivio@redhat.com> | 2025-11-13 22:33:55 +0100 |
| commit | 2c6590d6a0883954f1f060ea8f2ce53179e12b27 (patch) | |
| tree | 79e7d19280fb4937eab6972d5cc800c857beda14 | |
| parent | 75b8bb966b9508693f35df30fbbfbf37aff05b15 (diff) | |
| download | passt-2c6590d6a0883954f1f060ea8f2ce53179e12b27.tar passt-2c6590d6a0883954f1f060ea8f2ce53179e12b27.tar.gz passt-2c6590d6a0883954f1f060ea8f2ce53179e12b27.tar.bz2 passt-2c6590d6a0883954f1f060ea8f2ce53179e12b27.tar.lz passt-2c6590d6a0883954f1f060ea8f2ce53179e12b27.tar.xz passt-2c6590d6a0883954f1f060ea8f2ce53179e12b27.tar.zst passt-2c6590d6a0883954f1f060ea8f2ce53179e12b27.zip | |
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 <david@gibson.dropbear.id.au>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
| -rw-r--r-- | util.c | 3 |
1 files changed, 1 insertions, 2 deletions
@@ -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; |
