From be1583f6ea608ed4f7b1409e7ed35237c79a14df Mon Sep 17 00:00:00 2001 From: David Gibson Date: Wed, 19 Nov 2025 15:26:34 +1100 Subject: fwd: Don't explicitly exclude reverse-direction TCP ports for UDP In auto-forwarding mode, we forward UDP ports for which there isn't (yet) a listening UDP port on the other side, but where there is a listening TCP socket for the same port number. This is useful for certain protocols such as iperf3. Correspondinly, when excluding ports from forwarding, we also exclude TCP ports from the other direction. That sounds like it makes sense, but is unnecessary: for the purposes of exclusion, we don't care why we have a listening UDP socket for that port, just whether we have one. That is already incorporated into the UDP bitmap alone. Signed-off-by: David Gibson Signed-off-by: Stefano Brivio --- fwd.c | 6 ++---- util.c | 1 + 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/fwd.c b/fwd.c index c7a880e..c417e0f 100644 --- a/fwd.c +++ b/fwd.c @@ -410,10 +410,8 @@ static void fwd_scan_ports(struct ctx *c) memcpy(excl_tcp_out, c->tcp.fwd_in.map, sizeof(excl_tcp_out)); memcpy(excl_tcp_in, c->tcp.fwd_out.map, sizeof(excl_tcp_in)); - bitmap_or(excl_udp_out, PORT_BITMAP_SIZE, - c->udp.fwd_in.map, c->tcp.fwd_in.map); - bitmap_or(excl_udp_in, PORT_BITMAP_SIZE, - c->udp.fwd_out.map, c->tcp.fwd_out.map); + memcpy(excl_udp_out, c->udp.fwd_in.map, sizeof(excl_udp_out)); + memcpy(excl_udp_in, c->udp.fwd_out.map, sizeof(excl_udp_in)); fwd_scan_ports_tcp(&c->tcp.fwd_out, excl_tcp_out); fwd_scan_ports_tcp(&c->tcp.fwd_in, excl_tcp_in); diff --git a/util.c b/util.c index 7944a49..ab23463 100644 --- a/util.c +++ b/util.c @@ -338,6 +338,7 @@ bool bitmap_isset(const uint8_t *map, unsigned bit) * @a: First operand * @b: Second operand */ +/* cppcheck-suppress unusedFunction */ void bitmap_or(uint8_t *dst, size_t size, const uint8_t *a, const uint8_t *b) { unsigned long *dw = (unsigned long *)dst; -- cgit v1.2.3