Currently, the dhcp client doesn't work in (some) VMs, in my case a LXD container communicating through a linux bridge.
I'm using the raw_socket phy to test this.
The reason for that is that - while the IPv4 checksum is valid - the UDP checksum is not since it's expected to be ignored even though it's non-zero.
To detect this we'd have to use recvmsg instead of read inside RawSocketDesc::recv. Getting this information to where it's needed might be quite invasive though because we need a way to tell udp::Repr::parse to ignore the checksum for some packets.
Currently, the dhcp client doesn't work in (some) VMs, in my case a LXD container communicating through a linux bridge. I'm using the
raw_socket
phy to test this.The reason for that is that - while the IPv4 checksum is valid - the UDP checksum is not since it's expected to be ignored even though it's non-zero.
To detect this we'd have to use
recvmsg
instead ofread
insideRawSocketDesc::recv
. Getting this information to where it's needed might be quite invasive though because we need a way to telludp::Repr::parse
to ignore the checksum for some packets.References: https://github.com/mirror/busybox/blob/e512aeb0fb3c585948ae6517cfdf4a53cf99774d/networking/udhcp/dhcpc.c#L952