diff options
| author | David Gibson <david@gibson.dropbear.id.au> | 2025-11-19 15:26:34 +1100 |
|---|---|---|
| committer | Stefano Brivio <sbrivio@redhat.com> | 2025-11-21 04:17:22 +0100 |
| commit | be1583f6ea608ed4f7b1409e7ed35237c79a14df (patch) | |
| tree | 8deb281ee0a28bed73758c28fb5707c59624ae78 | |
| parent | fd3fc8d33d6c4344c59a60af16b074515b3da739 (diff) | |
| download | passt-be1583f6ea608ed4f7b1409e7ed35237c79a14df.tar passt-be1583f6ea608ed4f7b1409e7ed35237c79a14df.tar.gz passt-be1583f6ea608ed4f7b1409e7ed35237c79a14df.tar.bz2 passt-be1583f6ea608ed4f7b1409e7ed35237c79a14df.tar.lz passt-be1583f6ea608ed4f7b1409e7ed35237c79a14df.tar.xz passt-be1583f6ea608ed4f7b1409e7ed35237c79a14df.tar.zst passt-be1583f6ea608ed4f7b1409e7ed35237c79a14df.zip | |
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 <david@gibson.dropbear.id.au>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
| -rw-r--r-- | fwd.c | 6 | ||||
| -rw-r--r-- | util.c | 1 |
2 files changed, 3 insertions, 4 deletions
@@ -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); @@ -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; |
