aboutgitcodebugslistschat
path: root/tcp.c
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2023-12-07 16:53:50 +1100
committerStefano Brivio <sbrivio@redhat.com>2023-12-27 19:29:45 +0100
commit89fcb563fc63229aeac374a0aed057e467ba7f0a (patch)
tree061a138081ab1c6704ab9650029ee5918213706c /tcp.c
parenta672705e4d8441b44b7523dd8228cfd9ebfb2df9 (diff)
downloadpasst-89fcb563fc63229aeac374a0aed057e467ba7f0a.tar
passt-89fcb563fc63229aeac374a0aed057e467ba7f0a.tar.gz
passt-89fcb563fc63229aeac374a0aed057e467ba7f0a.tar.bz2
passt-89fcb563fc63229aeac374a0aed057e467ba7f0a.tar.lz
passt-89fcb563fc63229aeac374a0aed057e467ba7f0a.tar.xz
passt-89fcb563fc63229aeac374a0aed057e467ba7f0a.tar.zst
passt-89fcb563fc63229aeac374a0aed057e467ba7f0a.zip
tcp: Fix conceptually incorrect byte-order switch in tcp_tap_handler()
tcp_hash_lookup() expects the port numbers in host order, but the TCP header, of course, has them in network order, so we need to switch them. However we call htons() (host to network) instead of ntohs() (network to host). This works because those do the same thing in practice (they only wouldn't on very strange theoretical platforms which are neither big nor little endian). But, having this the "wrong" way around is misleading, so switch it around. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'tcp.c')
-rw-r--r--tcp.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/tcp.c b/tcp.c
index 1e4d2fa..108006e 100644
--- a/tcp.c
+++ b/tcp.c
@@ -2533,7 +2533,7 @@ int tcp_tap_handler(struct ctx *c, uint8_t pif, int af,
optlen = MIN(optlen, ((1UL << 4) /* from doff width */ - 6) * 4UL);
opts = packet_get(p, idx, sizeof(*th), optlen, NULL);
- conn = tcp_hash_lookup(c, af, daddr, htons(th->source), htons(th->dest));
+ conn = tcp_hash_lookup(c, af, daddr, ntohs(th->source), ntohs(th->dest));
/* New connection from tap */
if (!conn) {