net: ipv6: Compare lwstate in detecting duplicate nexthops
authorDavid Ahern <dsahern@gmail.com>
Wed, 5 Jul 2017 20:41:46 +0000 (14:41 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 21 Jul 2017 05:44:55 +0000 (07:44 +0200)
commiteb7bef1db6f31cdba61a0d8794839fab57da5ed8
tree299b009c0d76d330cb2eba3e7877adb006cc40cf
parent0c32b01ee49d4784ac85fb4a4ee903ac86e7d183
net: ipv6: Compare lwstate in detecting duplicate nexthops

commit f06b7549b79e29a672336d4e134524373fb7a232 upstream.

Lennert reported a failure to add different mpls encaps in a multipath
route:

  $ ip -6 route add 1234::/16 \
        nexthop encap mpls 10 via fe80::1 dev ens3 \
        nexthop encap mpls 20 via fe80::1 dev ens3
  RTNETLINK answers: File exists

The problem is that the duplicate nexthop detection does not compare
lwtunnel configuration. Add it.

Fixes: 19e42e451506 ("ipv6: support for fib route lwtunnel encap attributes")
Signed-off-by: David Ahern <dsahern@gmail.com>
Reported-by: João Taveira Araújo <joao.taveira@gmail.com>
Reported-by: Lennert Buytenhek <buytenh@wantstofly.org>
Acked-by: Roopa Prabhu <roopa@cumulusnetworks.com>
Tested-by: Lennert Buytenhek <buytenh@wantstofly.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
include/net/ip6_route.h
net/ipv6/ip6_fib.c
net/ipv6/route.c