[prev in list] [next in list] [prev in thread] [next in thread]
List: busybox
Subject: udhcpd - FEATURE_UDHCPC_ARPING broken?
From: Andreas Fertig <fertigtm () googlemail ! com>
Date: 2011-04-26 8:16:41
Message-ID: 4DB67F69.101 () googlemail ! com
[Download RAW message or body]
Hello,
I ran into problems lately with using udhcpd with
ENABLE_FEATURE_UDHCPC_ARPING enabled. Most times the DHCP-client uses
the IP-address given by the server, but in some cases it was rejected
with a DHCP-DECLINE message. I checked the code and found that in
dhcpc.c:1417 the check is performed.
There is a call to arpping() which checks whether or not the IP given by
the server is in use.
if (!arpping(packet.yiaddr,
NULL,
(uint32_t) 0,
client_config.client_mac,
client_config.interface)
) {
bb_info_msg("Offered address is in use "
"(got ARP reply), declining");
send_decline(xid, server_addr, packet.yiaddr);
...
Now look at the second parameter of arpping() which is NULL. If you look
into the code of arpping.c you can see that this is the parameter
safe_mac, a pointer in fact. In arpping.c:115 a check is performed,
whether or not safe_mac is NULL, if not a memcmp is done:
if (!safe_mac || memcmp(safe_mac, arp.sHaddr, 6) != 0)
rv = 0;
If safe_mac is NULL, the if-statement will always be true and reset rv
from 1 to 0 which leads the client send its DECLINE. I asume this is not
the intend. In the cas safe_mac is NULL, no memcmp should be done, but
also rv should remain 1. Especially as the comment above dhcpc:1417
says: "...
At this point, the client is configured. If the client detects that ...".
For my understanding this means that an ARP-reply will be received
normally from ourself.
I'm not into the whole ARP and DHCP stuff, am I right so far or did I
miss some protocol things? What I don't understand is, that it works
most time.
I'm also pretty sure that the DHCP-server was right and no one else uses
this IP. If I'm right so far, can somebody explain me why its working
the most time?
Thank you!
Best regards
Andy
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic