netfilter: ipv6: Don't preserve original oif for loopback address
authorEli Cooper <elicooper@gmx.com>
Mon, 21 Jan 2019 10:45:27 +0000 (18:45 +0800)
committerPablo Neira Ayuso <pablo@netfilter.org>
Tue, 5 Feb 2019 13:10:33 +0000 (14:10 +0100)
commit15df03c661cb362366ecfc3a21820cb934f3e4ca
treea79acd81c09b6511c607b1696842c73dc2a70da5
parentf6ac8585897684374a19863fff21186a05805286
netfilter: ipv6: Don't preserve original oif for loopback address

Commit 508b09046c0f ("netfilter: ipv6: Preserve link scope traffic
original oif") made ip6_route_me_harder() keep the original oif for
link-local and multicast packets. However, it also affected packets
for the loopback address because it used rt6_need_strict().

REDIRECT rules in the OUTPUT chain rewrite the destination to loopback
address; thus its oif should not be preserved. This commit fixes the bug
that redirected local packets are being dropped. Actually the packet was
not exactly dropped; Instead it was sent out to the original oif rather
than lo. When a packet with daddr ::1 is sent to the router, it is
effectively dropped.

Fixes: 508b09046c0f ("netfilter: ipv6: Preserve link scope traffic original oif")
Signed-off-by: Eli Cooper <elicooper@gmx.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/ipv6/netfilter.c