summaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorJeff Dike <jdike@akamai.com>2020-11-12 20:58:15 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2020-11-24 13:38:46 +0100
commit886cb9edb9a15d424e97cea00d3d745216fcd24a (patch)
tree4185f9630770c81bb02a4b84afc5d1348a4ee4e2 /include/net
parent7fe891cb8a8493081c06660507824e4276701964 (diff)
downloadlinux-stable-886cb9edb9a15d424e97cea00d3d745216fcd24a.tar.gz
linux-stable-886cb9edb9a15d424e97cea00d3d745216fcd24a.tar.bz2
linux-stable-886cb9edb9a15d424e97cea00d3d745216fcd24a.zip
Exempt multicast addresses from five-second neighbor lifetime
[ Upstream commit 8cf8821e15cd553339a5b48ee555a0439c2b2742 ] Commit 58956317c8de ("neighbor: Improve garbage collection") guarantees neighbour table entries a five-second lifetime. Processes which make heavy use of multicast can fill the neighour table with multicast addresses in five seconds. At that point, neighbour entries can't be GC-ed because they aren't five seconds old yet, the kernel log starts to fill up with "neighbor table overflow!" messages, and sends start to fail. This patch allows multicast addresses to be thrown out before they've lived out their five seconds. This makes room for non-multicast addresses and makes messages to all addresses more reliable in these circumstances. Fixes: 58956317c8de ("neighbor: Improve garbage collection") Signed-off-by: Jeff Dike <jdike@akamai.com> Reviewed-by: David Ahern <dsahern@kernel.org> Link: https://lore.kernel.org/r/20201113015815.31397-1-jdike@akamai.com Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/neighbour.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/net/neighbour.h b/include/net/neighbour.h
index 81ee17594c32..22ced1381ede 100644
--- a/include/net/neighbour.h
+++ b/include/net/neighbour.h
@@ -204,6 +204,7 @@ struct neigh_table {
int (*pconstructor)(struct pneigh_entry *);
void (*pdestructor)(struct pneigh_entry *);
void (*proxy_redo)(struct sk_buff *skb);
+ int (*is_multicast)(const void *pkey);
bool (*allow_add)(const struct net_device *dev,
struct netlink_ext_ack *extack);
char *id;