aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorMarcelo Ricardo Leitner2013-01-29 16:26:08 -0600
committerGreg Kroah-Hartman2013-02-14 12:47:34 -0600
commitd72b29e562214c7c5b635c3f44884a37bd115739 (patch)
treeb331de311b74055b53c32721053796a42d360916 /net
parentaa5d2659341c70682149e1c987bce6fe6620b30b (diff)
downloadkernel-common-d72b29e562214c7c5b635c3f44884a37bd115739.tar.gz
kernel-common-d72b29e562214c7c5b635c3f44884a37bd115739.tar.xz
kernel-common-d72b29e562214c7c5b635c3f44884a37bd115739.zip
ipv6: do not create neighbor entries for local delivery
[ Upstream commit bd30e947207e2ea0ff2c08f5b4a03025ddce48d3 ] They will be created at output, if ever needed. This avoids creating empty neighbor entries when TPROXYing/Forwarding packets for addresses that are not even directly reachable. Note that IPv4 already handles it this way. No neighbor entries are created for local input. Tested by myself and customer. Signed-off-by: Jiri Pirko <jiri@resnulli.us> Signed-off-by: Marcelo Ricardo Leitner <mleitner@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net')
-rw-r--r--net/ipv6/route.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 550fec3c9ab..d5b5f56e400 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -802,7 +802,8 @@ restart:
802 dst_hold(&rt->dst); 802 dst_hold(&rt->dst);
803 read_unlock_bh(&table->tb6_lock); 803 read_unlock_bh(&table->tb6_lock);
804 804
805 if (!dst_get_neighbour_raw(&rt->dst) && !(rt->rt6i_flags & RTF_NONEXTHOP)) 805 if (!dst_get_neighbour_raw(&rt->dst) &&
806 !(rt->rt6i_flags & (RTF_NONEXTHOP | RTF_LOCAL)))
806 nrt = rt6_alloc_cow(rt, &fl6->daddr, &fl6->saddr); 807 nrt = rt6_alloc_cow(rt, &fl6->daddr, &fl6->saddr);
807 else if (!(rt->dst.flags & DST_HOST)) 808 else if (!(rt->dst.flags & DST_HOST))
808 nrt = rt6_alloc_clone(rt, &fl6->daddr); 809 nrt = rt6_alloc_clone(rt, &fl6->daddr);