new networking code, ipv4/arp.c and net/core/neighbour.c

Fredrik Sjoholm (
Fri, 24 Jul 1998 14:22:05 -0400 (EDT)

as several people have noted, proxy arp does not work in 2.1.x.
unfortunently i need both the traffic shaper and proxy arp. (i assumed the
responsibility for a project that requires this, not knowing the state of
the networking code.

proxy arping is completely broken.
arp -s host xx:xx:xx:xx:xx:xx pub generates an error. i wrote a custom arp
utility to works with the new ioctl's in the kernel.

cat /proc/net/arp >>
IP addr HW typ Flags HW addr Mask Dev 0x1 0xc 00:00:00:00:00:00 * eth0

the next problem was in ipv4/arp.c:

in arp_req_set () things look very weird. pneigh_lookup() will be called,
and then arp_req_set will return 0;. this does not seem to do the trick.
the kernel arp table will get a new entry (in /proc/net/arp) but the HW
address is reported as 00:00:00:00:00:00. (perhaps this is ok, since it
says that the device is eth0, and the kernel will understand that it
should use eth0's MAC address. (i did submit the HWaddr in my ioctl
struct), as well as the ATF_PUBL | ATF_PERL | ATF_COM flags.

in arp_rcv() when a network arp request is made, the kernel doesn't want
to reply to it. it will get to an if statement:

if ( (rt->rt_flags & RTCF_DNAT) ||
(addr_type == RTN_UNICAST && rt-> != dev &&
(IN_DEV_PROXY_ARP(in_dev) || pneigh_lookup (&arp_tbl,
&tip, dev, 0))))

this condition will fail. because:

rt->rt_flags == 0 (should be 0x08000000)
addr_type == 7 (should be 1, 7 means RTN_UNREACHABLE)
rt-> != dev (ok)
IN_DEV_PROXY_ARP(in_dev) == 0
pneigh_lookup == 0

who knows about this (completely undocumented code), (the code in
neighbour.c and the modifications to arp.c). i *need* to get this to work.
is it possible to replace the code with the old arp code, and still use
the traffic shaper ?. this is all kernel 2.1.110 (and several previous
versions, no changes have been made)


To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
Please read the FAQ at