Commit 4dc27d1c authored by David McCullough's avatar David McCullough Committed by David S. Miller

net/ipv6/route.c: packets originating on device match lo

Fix to allow IPv6 packets originating locally to match rules with the "iff"
set to "lo".  This allows IPv6 rule matching work the same as it does for
IPv4.  From the iproute2 man page:

   iif NAME
		  select  the incoming device to match.  If the interface is loop‐
		  back, the rule only matches packets originating from this  host.
		  This  means that you may create separate routing tables for for‐
		  warded and local packets and, hence, completely segregate them.
Signed-off-by: default avatarDavid McCullough <david_mccullough@mcafee.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 91fa0cbc
...@@ -937,6 +937,8 @@ struct dst_entry * ip6_route_output(struct net *net, const struct sock *sk, ...@@ -937,6 +937,8 @@ struct dst_entry * ip6_route_output(struct net *net, const struct sock *sk,
{ {
int flags = 0; int flags = 0;
fl6->flowi6_iif = net->loopback_dev->ifindex;
if ((sk && sk->sk_bound_dev_if) || rt6_need_strict(&fl6->daddr)) if ((sk && sk->sk_bound_dev_if) || rt6_need_strict(&fl6->daddr))
flags |= RT6_LOOKUP_F_IFACE; flags |= RT6_LOOKUP_F_IFACE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment