IPv6: fix Mobile IPv6 regression

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Linux Kernel Mailing List
Date: Tuesday, June 1, 2010 - 9:59 am

Gitweb:     http://git.kernel.org/linus/6057fd78a8dcce6269f029b967051d5a2e9b0895
Commit:     6057fd78a8dcce6269f029b967051d5a2e9b0895
Parent:     e5e5cf4c71508ed38e921b31b438b8b349409f2a
Author:     Brian Haley <brian.haley@hp.com>
AuthorDate: Fri May 28 23:02:35 2010 -0700
Committer:  David S. Miller <davem@davemloft.net>
CommitDate: Fri May 28 23:02:35 2010 -0700

    IPv6: fix Mobile IPv6 regression
    
    Commit f4f914b5 (net: ipv6 bind to device issue) caused
    a regression with Mobile IPv6 when it changed the meaning
    of fl->oif to become a strict requirement of the route
    lookup.  Instead, only force strict mode when
    sk->sk_bound_dev_if is set on the calling socket, getting
    the intended behavior and fixing the regression.
    
    Tested-by: Arnaud Ebalard <arno@natisbad.org>
    Signed-off-by: Brian Haley <brian.haley@hp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
---
 net/ipv6/route.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 294cbe8..252d761 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -814,7 +814,7 @@ struct dst_entry * ip6_route_output(struct net *net, struct sock *sk,
 {
 	int flags = 0;
 
-	if (fl->oif || rt6_need_strict(&fl->fl6_dst))
+	if ((sk && sk->sk_bound_dev_if) || rt6_need_strict(&fl->fl6_dst))
 		flags |= RT6_LOOKUP_F_IFACE;
 
 	if (!ipv6_addr_any(&fl->fl6_src))
--
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
IPv6: fix Mobile IPv6 regression, Linux Kernel Mailing ..., (Tue Jun 1, 9:59 am)