arp table is an L1 cache and the userspace daemon is the L2 cache. Via the NETLINK_ROUTE protocol you can snoop all the neighbour table updates that go on in the kernel and place that information in a userspace cache
So I suppose kernel frees that information after sending it to userspace... right?
What information are you referring to?
Yesof whatever size you like. Then you can configure the kernel to ask your application (again via the NETLINK_ROUTE protocol) to provide it with those cached addresses before it goes to solicit them from the network again. This configuration is done using the /proc/sys/net/ipv4/neigh/<ifname|default|all>/app_solict sysctl. It defines the number of times the kernel will send a NETLINK_GETNEIGH
I think you mean RTM_GETNEIGH....
John L. and I have been yapping about writing one as well. We'll post if/when we get something good together.request to any listening processes on the system before sending out an ARP request on the appropriate network interface(s).
Of course, all of this is predicated on having the daemon in user space to do this. I'm not aware of any daemon that is implemented to use this interface thats freely available. It shouldn't be too hard to write however, if you interested in taking up the project.
I gonna sniff things around... I've never used netlink before.. just common socket (and send/recv) syscall.. it's a good project to learn a little more, since I really need an arp cache daemon. :)
Neil
-- /*************************************************** *Neil Horman *Software Engineer *Red Hat, Inc. *nhorman@xxxxxxxxxx *gpg keyid: 1024D / 0x92A74FA1 *http://pgp.mit.edu ***************************************************/ - : send the line "unsubscribe linux-net" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html