On Thu, May 23, 2019 at 4:46 PM Brad Kemp <[email protected]> wrote:
> The client determines the type of response by setting or clearing
> the BROADCAST bit (0x80000( in the flags of the request.
> If the bit is clear, either the dhcp server or the relay is non-conformant.

I don't think that's what BROADCAST flag is for.
RFC's generally specify which packets should/should not be broadcast,
and BROADCAST flag is intended to be used when some hardware
would fail to receive unicasts until fully configured.


>
> Brad Kemp
>
> On May 23, 2019, at 8:36 AM, Denys Vlasenko <[email protected]> wrote:
>
> On Thu, May 23, 2019 at 9:30 AM Krzysztof Charusta <[email protected]> 
> wrote:
>
> I upgraded busybox from version 1.29.2 to 1.30.1 and noticed that the client 
> behaves differently after commit "udhcpc: ensure at least one
> unicast renew attempt" (c05aa6a776ab2420a42c041a3b5d45db587fd9ef).
>
> I'm testing a setup:
> - dhcp server (dnsmasq-2.78) lease time 122 sec.
> - dhcp client (busybox 1.30.1)
> with a dhcp relay in between (also busybox but this should not matter).
>
> Actual result:
> In the test scenario the server restarts/reconfigures and when the client 
> sends a renew DHCPREQUEST the server replies a broadcast DHCPNAK ("address 
> not available"). However, when in RENEWING state (T1 reached) the client does 
> not reply to broadcast messages due to change_listen_mode(LISTEN_KERNEL). The 
> client then waits until the REBINDING state (T2) and only then listen to 
> broadcast.
>
> Expected result:
> According to [https://www.ietf.org/rfc/rfc2131.txt, Page 22, Sec 4.1]: "In 
> all cases, when 'giaddr' is zero, the server broadcasts any DHCPNAK messages 
> to 0xffffffff."
> Would it be reasonable to think that the client should listen to broadcast in 
> RENEWING state as well?
>
>
> Well, no. My understanding is the whole point why RENEWING
> state exists instead of all clients just go back to bcast
> REBINDING, is to avoid using bcast / perusing all packets,
> instead of only those packets sent to our IP:PORT.
>
> Compare udhcp_recv_raw_packet() and udhcp_recv_kernel_packet().
> Raw receive sees way more packets.
> _______________________________________________
> busybox mailing list
> [email protected]
> http://lists.busybox.net/mailman/listinfo/busybox
>
>
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to