aboutgitcodebugslistschat
path: root/dhcpv6.c
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2022-10-19 11:43:52 +1100
committerStefano Brivio <sbrivio@redhat.com>2022-10-19 03:34:45 +0200
commitf616ca231e1c6dc9256f999f868bb973d744104a (patch)
treeabca6fe5dc318196eab6cdf1e4885d7d36a02754 /dhcpv6.c
parentfb5d1c5d7d0b914a90aaeecf406c7092d9d55aeb (diff)
downloadpasst-f616ca231e1c6dc9256f999f868bb973d744104a.tar
passt-f616ca231e1c6dc9256f999f868bb973d744104a.tar.gz
passt-f616ca231e1c6dc9256f999f868bb973d744104a.tar.bz2
passt-f616ca231e1c6dc9256f999f868bb973d744104a.tar.lz
passt-f616ca231e1c6dc9256f999f868bb973d744104a.tar.xz
passt-f616ca231e1c6dc9256f999f868bb973d744104a.tar.zst
passt-f616ca231e1c6dc9256f999f868bb973d744104a.zip
Split tap_ip_send() into IPv4 and IPv6 specific functions
The IPv4 and IPv6 paths in tap_ip_send() have very little in common, and it turns out that every caller (statically) knows if it is using IPv4 or IPv6. So split into separate tap_ip4_send() and tap_ip6_send() functions. Use a new tap_l2_hdr() function for the very small common part. While we're there, make some minor cleanups: - We were double writing some fields in the IPv6 header, so that it temporary matched the pseudo-header for checksum calculation. With recent checksum reworks, this isn't neccessary any more. - We don't use any IPv4 header options, so use some sizeof() constructs instead of some open coded values for header length. - The comment used to say that the flow label was for TCP over IPv6, but in fact the only thing we used it for was DHCPv6 over UDP traffic Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'dhcpv6.c')
-rw-r--r--dhcpv6.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/dhcpv6.c b/dhcpv6.c
index e7640ce..7829968 100644
--- a/dhcpv6.c
+++ b/dhcpv6.c
@@ -531,8 +531,8 @@ int dhcpv6(struct ctx *c, const struct pool *p,
resp_not_on_link.hdr.xid = mh->xid;
- tap_ip_send(c, src, IPPROTO_UDP,
- (char *)&resp_not_on_link, n, mh->xid);
+ tap_ip6_send(c, src, IPPROTO_UDP,
+ (char *)&resp_not_on_link, n, mh->xid);
return 1;
}
@@ -580,7 +580,7 @@ int dhcpv6(struct ctx *c, const struct pool *p,
resp.hdr.xid = mh->xid;
- tap_ip_send(c, src, IPPROTO_UDP, (char *)&resp, n, mh->xid);
+ tap_ip6_send(c, src, IPPROTO_UDP, (char *)&resp, n, mh->xid);
c->ip6.addr_seen = c->ip6.addr;
return 1;