aboutgitcodebugslistschat
path: root/udp.c
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2024-03-06 16:34:28 +1100
committerStefano Brivio <sbrivio@redhat.com>2024-03-13 14:37:25 +0100
commit413c15988ea381fbafa4eedbf821fe51f6d1651a (patch)
treecbab7f94c3d389b2b240bab2ffad034d9f706905 /udp.c
parentae69838db0091441ce1dd52314ffb20b5472659f (diff)
downloadpasst-413c15988ea381fbafa4eedbf821fe51f6d1651a.tar
passt-413c15988ea381fbafa4eedbf821fe51f6d1651a.tar.gz
passt-413c15988ea381fbafa4eedbf821fe51f6d1651a.tar.bz2
passt-413c15988ea381fbafa4eedbf821fe51f6d1651a.tar.lz
passt-413c15988ea381fbafa4eedbf821fe51f6d1651a.tar.xz
passt-413c15988ea381fbafa4eedbf821fe51f6d1651a.tar.zst
passt-413c15988ea381fbafa4eedbf821fe51f6d1651a.zip
udp: Use existing helper for UDP checksum on inbound IPv6 packets
Currently we open code the calculation of the UDP checksum in udp_update_hdr6(). We calling a helper to handle the IPv6 pseudo-header, and preset the checksum field to 0 so an uninitialised value doesn't get folded in. We already have a helper to do this: csum_udp6() which we use in some slow paths. Use it here as well. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'udp.c')
-rw-r--r--udp.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/udp.c b/udp.c
index fe3a6cd..45b7cc9 100644
--- a/udp.c
+++ b/udp.c
@@ -671,10 +671,7 @@ static size_t udp_update_hdr6(const struct ctx *c, struct udp6_l2_buf_t *b,
b->uh.source = b->s_in6.sin6_port;
b->uh.dest = htons(dstport);
b->uh.len = b->ip6h.payload_len;
- b->uh.check = 0;
- b->uh.check = csum(&b->uh, payload_len,
- proto_ipv6_header_psum(payload_len, IPPROTO_UDP,
- src, dst));
+ csum_udp6(&b->uh, src, dst, b->data, datalen);
return tap_iov_len(c, &b->taph, payload_len + sizeof(b->ip6h));
}