[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date: Fri, 27 Jun 2014 09:15:27 +0200
From: Hannes Frederic Sowa <hannes@...essinduktion.org>
To: Roopa Prabhu <roopa@...ulusnetworks.com>
Cc: netdev <netdev@...r.kernel.org>,
Daniel Walton <dwalton@...ulusnetworks.com>
Subject: Re: question on ipv6 support for duplicate nexthops
On Mi, 2014-06-25 at 14:40 -0700, Roopa Prabhu wrote:
> ipv4 allows duplicate nexthops. Multiple instances of same
> nexthops maybe used to give higher weights to some nexthops
> (though the "weight" attribute can be used for the same purpose).
>
> ipv6 does not seem to support duplicate nexthops.
>
> Example: The below ipv6 route is rejected by the kernel
> #ip -6 route add 2001:10:1:3::/64 nexthop via 2001:10:1:2::99 nexthop
> via 2001:10:1:2::99
>
> The below patch points to the code that is preventing the addition of
> duplicate nexthops.
>
> I am not sure yet if there are other side effects to the patch below.
> If there is interest in making ipv6 consistent with ipv4 for duplicate
> nexthop handling, i can submit a patch.
ECMP routes are normal routing entries in the fib, just hold together
via an internal list and thus behave differently than IPv4 ECMP routes.
I don't see that just removing the check for duplicate entries will make
that work correctly.
Also you remove some pretty important expire update code.
Bye,
Hannes
> diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c
> index cb4459b..afecc87 100644
> --- a/net/ipv6/ip6_fib.c
> +++ b/net/ipv6/ip6_fib.c
> @@ -698,20 +698,6 @@ static int fib6_add_rt2node(struct fib6_node *fn,
> struct rt6_info *rt,
> break;
> }
>
> - if (iter->dst.dev == rt->dst.dev &&
> - iter->rt6i_idev == rt->rt6i_idev &&
> - ipv6_addr_equal(&iter->rt6i_gateway,
> - &rt->rt6i_gateway)) {
> - if (rt->rt6i_nsiblings)
> - rt->rt6i_nsiblings = 0;
> - if (!(iter->rt6i_flags & RTF_EXPIRES))
> - return -EEXIST;
> - if (!(rt->rt6i_flags & RTF_EXPIRES))
> - rt6_clean_expires(iter);
> - else
> - rt6_set_expires(iter,
> rt->dst.expires);
> - return -EEXIST;
> - }
> /* If we have the same destination and the same
> metric,
> * but not the same gateway, then the route we
> try to
> * add is sibling to this route, increment our
> counter
>
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@...r.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists