[ 3.5.y.z extended stable ] Patch "ipv6: do not create neighbor entries for local delivery" has been added to staging queue

Herton Ronaldo Krzesinski herton.krzesinski at canonical.com
Fri Feb 15 03:11:03 UTC 2013


This is a note to let you know that I have just added a patch titled

    ipv6: do not create neighbor entries for local delivery

to the linux-3.5.y-queue branch of the 3.5.y.z extended stable tree 
which can be found at:

 http://kernel.ubuntu.com/git?p=ubuntu/linux.git;a=shortlog;h=refs/heads/linux-3.5.y-queue

If you, or anyone else, feels it should not be added to this tree, please 
reply to this email.

For more information about the 3.5.y.z tree, see
https://wiki.ubuntu.com/Kernel/Dev/ExtendedStable

Thanks.
-Herton

------

>From 2aa84fc579cf999708f325a121cf121f5aed2788 Mon Sep 17 00:00:00 2001
From: Marcelo Ricardo Leitner <mleitner at redhat.com>
Date: Tue, 29 Jan 2013 22:26:08 +0000
Subject: [PATCH] ipv6: do not create neighbor entries for local delivery

commit bd30e947207e2ea0ff2c08f5b4a03025ddce48d3 upstream.

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 at resnulli.us>
Signed-off-by: Marcelo Ricardo Leitner <mleitner at redhat.com>
Signed-off-by: David S. Miller <davem at davemloft.net>
[ herton: adjust if condition, add additional RTF_LOCAL flag for the
  check ]
Signed-off-by: Herton Ronaldo Krzesinski <herton.krzesinski at canonical.com>
---
 net/ipv6/route.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index fd44184..08c149c 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -846,7 +846,8 @@ restart:
 	dst_hold(&rt->dst);
 	read_unlock_bh(&table->tb6_lock);

-	if (!dst_get_neighbour_noref_raw(&rt->dst) && !(rt->rt6i_flags & RTF_NONEXTHOP))
+	if (!dst_get_neighbour_noref_raw(&rt->dst) &&
+	    !(rt->rt6i_flags & (RTF_NONEXTHOP | RTF_LOCAL)))
 		nrt = rt6_alloc_cow(rt, &fl6->daddr, &fl6->saddr);
 	else if (!(rt->dst.flags & DST_HOST))
 		nrt = rt6_alloc_clone(rt, &fl6->daddr);
--
1.7.9.5





More information about the kernel-team mailing list