Bug#606654: Busybox should include arping applet
Floris Bos <bos@je-eigen-domein.nl> writes:
> On Friday, December 10, 2010 05:12:39 pm Ferenc Wagner wrote:
>
>> Floris Bos <bos@je-eigen-domein.nl> writes:
>>
>>> I think the arping applet should be enabled in the Busybox build.
>>> It helps a great deal in debugging general network issues and could be
>>> helpful to create a solution for some other bugs like:
>>>
>>> http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=537271 (network may not
>>> be usable as soon as link is up)
>>> http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=606515 (Preseed
>>> installation does not wait for network to be ready)
>>
>> Please read
>> http://wiki.debian.org/DebianInstaller/FAQ#Q.3AWhyispingnotavailableinthede
>> bugshell
>>
>> Roughly the same applies to arping. After all, you can cat /proc/net/arp
>> to check whether the gateway has a complete entry.
>
> But wouldn't you need to initiate network communication before an entry in
> /proc/net/arp for the gateway appears?
Yes, sure.
> Right now PXE preseed installations are broken, making Debian unsuitable for
> use by dedicated server providers.
> The Debian installer does not wait for the network link to come up (can take
> about 3 seconds on some NICs connected to a standard Gigabit switch),
> nor does it take into account that it can take 30 seconds before network
> activity is possible in spanning tree configurations.
I agree that this is a problem, I've been bitten by this recently.
> A simply 1-line fix if we had arping might be executing between netcfg and
> network-preseed:
>
> arping -f -c 35 $GATEWAY_IP
>
> (wait until you get an ARP reply from the gateway, timeout after 35
> seconds/tries).
Something like that should go *into* netcfg, between configuring the
network statically and querying the DNS for the name of the configured
IP address.
For DHCP, udhcpc should be invoked with -t 20 or similar, so that it
doesn't just sleep most of the time but actually tries to get a license
during the time allowed by the dialog timeout.
> I don't think calling wget 35 times, and grepping /proc/net/arp is a clean
> alternative, just to save 4 KB of space.
wget isn't pretty, but one could do something like
while [ "$i" -lt 30 ] && ! nc -w 1 GATEWAY 80 -e /bin/true; do i=$(($i + 1)); done
grep "^GATEWAY .* 00:00:00:00:00:00 " /proc/net/arp && echo fail
for example. But netcfg is written in C, and this stuff belongs to
there, where one could do even better.
--
Cheers,
Feri.
Reply to: