On Sun, Jan 11, 2026 at 12:33:39AM +0100, Stefano Brivio wrote: > On Mon, 5 Jan 2026 19:28:50 +1100 > David Gibson wrote: > > > {tcp,udp}_listen() currently return 0 on success, rather than the socket > > fd they created. Historically, that was because these functions could > > sometimes create multiple sockets. We've now refactored things to avoid > > that, so it makes more sense for them to return the socket on success. > > > > Signed-off-by: David Gibson > > --- > > conf.c | 14 +++++++------- > > tcp.c | 7 ++----- > > udp.c | 4 ++-- > > 3 files changed, 11 insertions(+), 14 deletions(-) > > > > diff --git a/conf.c b/conf.c > > index cc3c20a9..5db49653 100644 > > --- a/conf.c > > +++ b/conf.c > > @@ -149,7 +149,7 @@ static void conf_ports_range_except(const struct ctx *c, char optname, > > { > > bool bound_one = false; > > unsigned i; > > - int ret; > > + int fd; > > > > if (first == 0) { > > die("Can't forward port 0 for option '-%c %s'", > > @@ -185,23 +185,23 @@ static void conf_ports_range_except(const struct ctx *c, char optname, > > fwd->delta[i] = to - first; > > > > if (optname == 't') > > - ret = tcp_listen(c, PIF_HOST, addr, ifname, i); > > + fd = tcp_listen(c, PIF_HOST, addr, ifname, i); > > else if (optname == 'u') > > - ret = udp_listen(c, PIF_HOST, addr, ifname, i); > > + fd = udp_listen(c, PIF_HOST, addr, ifname, i); > > else > > /* No way to check in advance for -T and -U */ > > - ret = 0; > > + fd = 0; > > > > - if (ret == -ENFILE || ret == -EMFILE) { > > + if (fd == -ENFILE || fd == -EMFILE) { > > die("Can't open enough sockets for port specifier: %s", > > optarg); > > } > > > > - if (!ret) { > > + if (fd >= 0) { > > bound_one = true; > > } else if (!weak) { > > die("Failed to bind port %u (%s) for option '-%c %s'", > > - i, strerror_(-ret), optname, optarg); > > + i, strerror_(-fd), optname, optarg); > > } > > } > > > > diff --git a/tcp.c b/tcp.c > > index 67007c05..80b47f3c 100644 > > --- a/tcp.c > > +++ b/tcp.c > > @@ -2680,7 +2680,7 @@ void tcp_sock_handler(const struct ctx *c, union epoll_ref ref, > > * @ifname: Name of interface to bind to, NULL for any > > * @port: Port, host order > > * > > - * Return: 0 on success, negative error code on failure > > + * Return: Socket fd on success, negative error code on failure > > Nit, here and on udp_listen(): "socket". See also 9e0423e13541 ("style: > Fix 'Return' comment style"). Oops, fixed. -- David Gibson (he or they) | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you, not the other way | around. http://www.ozlabs.org/~dgibson