diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2022-10-19 11:43:47 +1100 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2022-10-19 03:34:32 +0200 |
commit | bd4be308fc92ed5d75ea45364a9f837d5c0fb0b2 (patch) | |
tree | eaaaedcbf8e01177e072bb0dd168897a0cbb56ff /dhcp.c | |
parent | 6905ac75ec6643fbc93963ad9ded4903e8eeebf0 (diff) | |
download | passt-bd4be308fc92ed5d75ea45364a9f837d5c0fb0b2.tar passt-bd4be308fc92ed5d75ea45364a9f837d5c0fb0b2.tar.gz passt-bd4be308fc92ed5d75ea45364a9f837d5c0fb0b2.tar.bz2 passt-bd4be308fc92ed5d75ea45364a9f837d5c0fb0b2.tar.lz passt-bd4be308fc92ed5d75ea45364a9f837d5c0fb0b2.tar.xz passt-bd4be308fc92ed5d75ea45364a9f837d5c0fb0b2.tar.zst passt-bd4be308fc92ed5d75ea45364a9f837d5c0fb0b2.zip |
Add csum_udp4() helper for calculating UDP over IPv4 checksums
At least two places in passt fill in UDP over IPv4 checksums, although
since UDP checksums are optional with IPv4 that just amounts to storing
a 0 (in tap_ip_send()) or leaving a 0 from an earlier initialization (in
dhcp()). For consistency, add a helper for this "calculation".
Just for the heck of it, add the option (compile time disabled for now) to
calculate real UDP checksums.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'dhcp.c')
-rw-r--r-- | dhcp.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -364,9 +364,9 @@ int dhcp(const struct ctx *c, const struct pool *p) opt_set_dns_search(c, sizeof(m->o)); uh->len = htons(len = offsetof(struct msg, o) + fill(m) + sizeof(*uh)); - uh->check = 0; uh->source = htons(67); uh->dest = htons(68); + csum_udp4(uh, c->ip4.gw, c->ip4.addr, uh + 1, len - sizeof(*uh)); iph->tot_len = htons(len += sizeof(*iph)); iph->daddr = c->ip4.addr; |