From: Simon Kelley <[EMAIL PROTECTED]> Date: Sat, 06 May 2006 18:02:00 +0100
> This patch adds a new function, neigh_table_init_no_netlink() which > does everything the neigh_table_init() does, except add the table to > the netlink all-arp-tables chain. In addition neigh_table_init() has a > check that all tables on the chain have a distinct address family. > The init call in clip.c is changed to call neigh_table_init_no_netlink(). > > Since ATM ARP tables are rather more complicated than can currently be > handled by the available rtattrs in the netlink protocol, no > functionality is lost by this patch, and non-ATM ARP manipulation via > netlink is rescued. A more complete solution would involve a rtattr for > ATM ARP entries and some way for the netlink code to give neigh_add > and friends more information than just address family with which to find > the correct ARP table. > > Signed-off-by: Simon Kelley <[EMAIL PROTECTED]> This is an OK solution to this problem for now. So I will apply this. I made a minor change to your patch, I changed the assertion added to neigh_table_init(). It's not so nice to BUG_ON() with critical locks held just to get a log of who tried to do the double-registry. It could cause the machine to deadlock and subsequently the debugging log we need to analyze such cases is less likely to get reported. Longer term we should make neigh_table_init() return some kind of error code to handle cases like this, but that's too large a change for so close to 2.6.17-final. Thanks again Simon. - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html