On 9/15/2025 13:00, Michael Tuexen wrote:
On 15. Sep 2025, at 14:59, Karl Denninger<k...@denninger.net> wrote:

Hmmmmm.... just came in via git pull:
commit ffd956a3918cd5e64c8850eb77247428a29f7221
Author: Michael Tuexen<tue...@freebsd.org>
Date:   Wed Sep 10 17:13:35 2025 +0200

     dhclient: improve UDP checksum handling

     When sending UDP packets:
     * compute the checksum in the correct order. This only has an impact
       if the length of the payload is odd.
     * don't send packet with a checksum of zero, use 0xffff instead as
       required.
     When receiving UDP packets:
     * don't do any computations when the checksum is zero.
     * compute the checksum in the correct order. This only has an impact
       if the length of the payload is odd.
     * when computing the checksum, store the pseudo header checksum
     * if the checksum is computed as zero, use 0xffff instead.
     * also accept packets, when the checksum in the packet is the pseudo
       header checksum.
     The last point fixes a problem when the DHCP client runs in a VM,
     the DHCP server runs on the host serving the VM and the network
     interface supports transmit checksum offloading. Since dhclient
     doesn't use UDP sockets but bpf devices to read the packets, the
     checksum will be incorrect and only contain the checksum of the
     pseudo header.

This could potentially apply to other bpf-using things -- which includes 
dhcpcd.  And you have tso/lro turned on.
Hi Karl,

this is true. Do we have an dhcpd in-tree? Or are you aware of other in-tree
programs which use UDP via bpf and not via the socket interface?

Best regards
Michael

dhclient uses it in base but dhcp6c is, I believe, out of packages/ports (as is dhcpcd which replaces both dhclient and dhcp6c in terms of functionality.)

One of dhcp6c or dhcpcd is necessary to get a delegation from an ISP; you can get a SLACC address without either simply by enabling it such as:

ifconfig_mce0_ipv6="inet6 accept_rtadv"
rtsold_enable="YES"

That is sufficient on a client machine if your gateway hands out addresses based on SLACC, but the gateway then has to get the upstream delegation (and run rtadvd in order to send the routing data out on the local side so your SLACC client can pick it up) so unless you have that delegation hard-coded in your edge device on the outside interface one of the above has to be running on the gateway, presuming its a FreeBSD gateway of course.

--
Karl Denninger
k...@denninger.net
/The Market Ticker/
/[S/MIME encrypted email preferred]/

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to