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>
This commit is contained in:
parent
ae69838db0
commit
413c15988e
1 changed files with 1 additions and 4 deletions
5
udp.c
5
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.source = b->s_in6.sin6_port;
|
||||||
b->uh.dest = htons(dstport);
|
b->uh.dest = htons(dstport);
|
||||||
b->uh.len = b->ip6h.payload_len;
|
b->uh.len = b->ip6h.payload_len;
|
||||||
b->uh.check = 0;
|
csum_udp6(&b->uh, src, dst, b->data, datalen);
|
||||||
b->uh.check = csum(&b->uh, payload_len,
|
|
||||||
proto_ipv6_header_psum(payload_len, IPPROTO_UDP,
|
|
||||||
src, dst));
|
|
||||||
|
|
||||||
return tap_iov_len(c, &b->taph, payload_len + sizeof(b->ip6h));
|
return tap_iov_len(c, &b->taph, payload_len + sizeof(b->ip6h));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue