29166263bb
UDP connect() to 255.255.255.255:67 sets the socket's source-filter to broadcast peers only. The DHCP server (e.g. QEMU SLIRP at 10.0.2.2) responds from its own IP, which the filter rejects. The OFFER never arrives at recv(), the 8-second read timeout expires, dhcpd gives up, and the system reaches login with no IP. Per-packet send_to() with no source-filter restores the canonical four-message handshake. Applied at all four broadcast points: DISCOVER, REQUEST, RENEW, REBIND. Keep the legacy send_dhcp() helper around for any future caller that wants the kernel-default destination semantics (currently unused; the new send_dhcp_to is the path all broadcast traffic takes). Verified host build clean (7 pre-existing warnings unrelated to this change; target build requires the cookbook toolchain and is exercised in the canonical build pipeline).