diff options
author | Laurent Vivier <lvivier@redhat.com> | 2024-03-06 16:58:32 +1100 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2024-03-06 08:03:36 +0100 |
commit | e289d287c6594156cb02f32e64fe8def75fd1cac (patch) | |
tree | ad128c1813a8af6cc898a3e8979e7b179038af8a /checksum.h | |
parent | 907621eaae579cc7f2fe5a2fd238aa640e2e29da (diff) | |
download | passt-e289d287c6594156cb02f32e64fe8def75fd1cac.tar passt-e289d287c6594156cb02f32e64fe8def75fd1cac.tar.gz passt-e289d287c6594156cb02f32e64fe8def75fd1cac.tar.bz2 passt-e289d287c6594156cb02f32e64fe8def75fd1cac.tar.lz passt-e289d287c6594156cb02f32e64fe8def75fd1cac.tar.xz passt-e289d287c6594156cb02f32e64fe8def75fd1cac.tar.zst passt-e289d287c6594156cb02f32e64fe8def75fd1cac.zip |
checksum: add csum_iov()
Introduce the function csum_unfolded() that computes the unfolded
32-bit checksum of a data buffer, and call it from csum() that returns
the folded value.
Introduce csum_iov() that computes the checksum using csum_folded() on
all vectors of the iovec array and returns the folded result.
Signed-off-by: Laurent Vivier <lvivier@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Message-ID: <20240303135114.1023026-4-lvivier@redhat.com>
[dwg: Fixed trivial cppcheck & clang-tidy regressions]
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'checksum.h')
-rw-r--r-- | checksum.h | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -17,13 +17,15 @@ void csum_ip4_header(struct iphdr *ip4h); void csum_udp4(struct udphdr *udp4hr, struct in_addr saddr, struct in_addr daddr, const void *payload, size_t len); -void csum_icmp4(struct icmphdr *ih, const void *payload, size_t len); +void csum_icmp4(struct icmphdr *icmp4hr, const void *payload, size_t len); void csum_udp6(struct udphdr *udp6hr, const struct in6_addr *saddr, const struct in6_addr *daddr, const void *payload, size_t len); void csum_icmp6(struct icmp6hdr *icmp6hr, const struct in6_addr *saddr, const struct in6_addr *daddr, const void *payload, size_t len); +uint32_t csum_unfolded(const void *buf, size_t len, uint32_t init); uint16_t csum(const void *buf, size_t len, uint32_t init); +uint16_t csum_iov(const struct iovec *iov, size_t n, uint32_t init); #endif /* CHECKSUM_H */ |