From: David Gibson <david@gibson.dropbear.id.au>
To: passt-dev@passt.top, Stefano Brivio <sbrivio@redhat.com>
Cc: David Gibson <david@gibson.dropbear.id.au>
Subject: [PATCH v2 8/8] tcp, udp: Don't exclude ports in {tcp,udp}_port_rebind()
Date: Fri, 31 Oct 2025 15:19:30 +1100 [thread overview]
Message-ID: <20251031041930.1272259-9-david@gibson.dropbear.id.au> (raw)
In-Reply-To: <20251031041930.1272259-1-david@gibson.dropbear.id.au>
To avoid circular forwarding, {tcp,udp}_port_rebind() refuse to listen on
ports that we're already listening on in the reverse direction. This is
redundant, because we already remove such ports from the forward map when
we scan. This was needed previously, because our reverse maps might have
been one cycle out of date, so could be missing a newly appeared port.
We've now rearranged the port scanning code to avoid that, so we don't need
the check in tcp_port_rebind() any more.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
tcp.c | 5 -----
udp.c | 6 ------
2 files changed, 11 deletions(-)
diff --git a/tcp.c b/tcp.c
index c35c1c3f..e91c0cf5 100644
--- a/tcp.c
+++ b/tcp.c
@@ -2832,7 +2832,6 @@ int tcp_init(struct ctx *c)
static void tcp_port_rebind(struct ctx *c, bool outbound)
{
const uint8_t *fmap = outbound ? c->tcp.fwd_out.map : c->tcp.fwd_in.map;
- const uint8_t *rmap = outbound ? c->tcp.fwd_in.map : c->tcp.fwd_out.map;
int (*socks)[IP_VERSIONS] = outbound ? tcp_sock_ns : tcp_sock_init_ext;
unsigned port;
@@ -2851,10 +2850,6 @@ static void tcp_port_rebind(struct ctx *c, bool outbound)
continue;
}
- /* Don't loop back our own ports */
- if (bitmap_isset(rmap, port))
- continue;
-
if ((c->ifi4 && socks[port][V4] == -1) ||
(c->ifi6 && socks[port][V6] == -1)) {
if (outbound)
diff --git a/udp.c b/udp.c
index 8cff8809..9c009502 100644
--- a/udp.c
+++ b/udp.c
@@ -1204,8 +1204,6 @@ static void udp_port_rebind(struct ctx *c, bool outbound)
int (*socks)[NUM_PORTS] = outbound ? udp_splice_ns : udp_splice_init;
const uint8_t *fmap
= outbound ? c->udp.fwd_out.map : c->udp.fwd_in.map;
- const uint8_t *rmap
- = outbound ? c->udp.fwd_in.map : c->udp.fwd_out.map;
unsigned port;
for (port = 0; port < NUM_PORTS; port++) {
@@ -1223,10 +1221,6 @@ static void udp_port_rebind(struct ctx *c, bool outbound)
continue;
}
- /* Don't loop back our own ports */
- if (bitmap_isset(rmap, port))
- continue;
-
if ((c->ifi4 && socks[V4][port] == -1) ||
(c->ifi6 && socks[V6][port] == -1))
udp_sock_init(c, outbound, NULL, NULL, port);
--
2.51.0
next prev parent reply other threads:[~2025-10-31 4:19 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-31 4:19 [PATCH v2 0/8] Cleanups to auto port scanning David Gibson
2025-10-31 4:19 ` [PATCH v2 1/8] icmp: Remove vestiges of ICMP timer David Gibson
2025-10-31 4:19 ` [PATCH v2 2/8] tcp, udp, fwd: Run all port scanning from a single timer David Gibson
2025-10-31 4:19 ` [PATCH v2 3/8] fwd: Consolidate scans (not rebinds) in fwd.c David Gibson
2025-10-31 4:19 ` [PATCH v2 4/8] fwd: Move port exclusion handling from procfs_scan_listen() to callers David Gibson
2025-10-31 4:19 ` [PATCH v2 5/8] fwd: Share port scanning logic between init and timer cases David Gibson
2025-10-31 4:19 ` [PATCH v2 6/8] fwd: Check forwarding mode in fwd_scan_ports_*() rather than caller David Gibson
2025-10-31 4:19 ` [PATCH v2 7/8] fwd: Update all port maps before applying exclusions David Gibson
2025-10-31 4:19 ` David Gibson [this message]
2025-11-01 7:22 ` [PATCH v2 0/8] Cleanups to auto port scanning Stefano Brivio
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251031041930.1272259-9-david@gibson.dropbear.id.au \
--to=david@gibson.dropbear.id.au \
--cc=passt-dev@passt.top \
--cc=sbrivio@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://passt.top/passt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for IMAP folder(s).