summaryrefslogtreecommitdiffstats
path: root/net/ipv6/route.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2015-10-24 09:54:12 -0400
committerDavid S. Miller <davem@davemloft.net>2015-10-24 09:54:12 -0400
commitba3e2084f268bdfed7627046e58a2218037e15af (patch)
tree36b99da43ee72f81b31f0627dbfc69f50c97378f /net/ipv6/route.c
parenta72c9512bf2bef12c5e66a4d910c4b348fe31d61 (diff)
parentce9d9b8e5c2b7486edf76958bcdb5e6534a915b0 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: net/ipv6/xfrm6_output.c net/openvswitch/flow_netlink.c net/openvswitch/vport-gre.c net/openvswitch/vport-vxlan.c net/openvswitch/vport.c net/openvswitch/vport.h The openvswitch conflicts were overlapping changes. One was the egress tunnel info fix in 'net' and the other was the vport ->send() op simplification in 'net-next'. The xfrm6_output.c conflicts was also a simplification overlapping a bug fix. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/route.c')
-rw-r--r--net/ipv6/route.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index d0619632723a..2701cb3d88e9 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -1171,6 +1171,7 @@ struct dst_entry *ip6_route_output(struct net *net, const struct sock *sk,
1171{ 1171{
1172 struct dst_entry *dst; 1172 struct dst_entry *dst;
1173 int flags = 0; 1173 int flags = 0;
1174 bool any_src;
1174 1175
1175 dst = l3mdev_rt6_dst_by_oif(net, fl6); 1176 dst = l3mdev_rt6_dst_by_oif(net, fl6);
1176 if (dst) 1177 if (dst)
@@ -1178,11 +1179,12 @@ struct dst_entry *ip6_route_output(struct net *net, const struct sock *sk,
1178 1179
1179 fl6->flowi6_iif = LOOPBACK_IFINDEX; 1180 fl6->flowi6_iif = LOOPBACK_IFINDEX;
1180 1181
1182 any_src = ipv6_addr_any(&fl6->saddr);
1181 if ((sk && sk->sk_bound_dev_if) || rt6_need_strict(&fl6->daddr) || 1183 if ((sk && sk->sk_bound_dev_if) || rt6_need_strict(&fl6->daddr) ||
1182 fl6->flowi6_oif) 1184 (fl6->flowi6_oif && any_src))
1183 flags |= RT6_LOOKUP_F_IFACE; 1185 flags |= RT6_LOOKUP_F_IFACE;
1184 1186
1185 if (!ipv6_addr_any(&fl6->saddr)) 1187 if (!any_src)
1186 flags |= RT6_LOOKUP_F_HAS_SADDR; 1188 flags |= RT6_LOOKUP_F_HAS_SADDR;
1187 else if (sk) 1189 else if (sk)
1188 flags |= rt6_srcprefs2flags(inet6_sk(sk)->srcprefs); 1190 flags |= rt6_srcprefs2flags(inet6_sk(sk)->srcprefs);