ipv6: Allow the l3mdev to be a loopback
authorRobert Shearman <rshearma@vyatta.att-mail.com>
Wed, 19 Sep 2018 12:56:53 +0000 (13:56 +0100)
committerDavid S. Miller <davem@davemloft.net>
Thu, 20 Sep 2018 04:23:01 +0000 (21:23 -0700)
commit3ede0bbcdfc94ccdbe56bed4e66beb3f4f4f6b00
treee69ccbacf5b23bbe283999f823fbbd344857ac45
parent1e6a4bc874db9489146edb78aea281f1cfafcee0
ipv6: Allow the l3mdev to be a loopback

There is no way currently for an IPv6 client connect using a loopback
address in a VRF, whereas for IPv4 the loopback address can be added:

    $ sudo ip addr add dev vrfred 127.0.0.1/8
    $ sudo ip -6 addr add ::1/128 dev vrfred
    RTNETLINK answers: Cannot assign requested address

So allow ::1 to be configured on an L3 master device. In order for
this to be usable ip_route_output_flags needs to not consider ::1 to
be a link scope address (since oif == l3mdev and so it would be
dropped), and ipv6_rcv needs to consider the l3mdev to be a loopback
device so that it doesn't drop the packets.

Signed-off-by: Robert Shearman <rshearma@vyatta.att-mail.com>
Signed-off-by: Mike Manning <mmanning@vyatta.att-mail.com>
Reviewed-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/addrconf.c
net/ipv6/ip6_input.c
net/ipv6/route.c