Red Hat Bugzilla – Bug 213717
arping doesn't work on InfiniBand ipoib interfaces
Last modified: 2007-11-30 17:11:47 EST
Description of problem: As ipoib interfaces have a 20 byte hardware address, and
a broadcast address that isn't all 0xff, arping fails to send proper packets
over the wire.
How reproducible: 100%
Steps to Reproduce:
1. Setup a machine with ipoib interfaces
2. Run arping in any mode
Actual results: It sends no packets because it A) has the wrong hardware
address, B) has the wrong hardware broadcast address and C) passes the wrong
length for the sockaddr struct to both send_to() and recv_from().
Expected results: Should work.
Additional info: The attached patch still has some debugging info embedded in
it, but it's pretty close to ready to go. It corrects the problem by using a
"feature" of getsockname() whereby it will overrun the address field if you pass
a large enough buffer to it. By allocating a double struct for extra padding,
we get the full address. For the broadcast address, we use sysfs (which adds a
dependency on libsysfs into the arping binary). We also fix up the length
arguments to recv_from and send_to for the interface. Using this patch under
RHEL5, tcpdump confirms that the packets are sent over the wire correctly.
Created attachment 140162 [details]
Fix for arping
This issue should be fixed in iputils-20070202-1.fc6