net/ipv6: Fix updates to prefix route
Subsystems (3)
[email protected]
maintainerPATCH 1/1 net/ipv6: Fix updates to prefix route
From: David Ahern <[email protected]>
Sowmini reported that a recent commit broke prefix routes for linklocal addresses. The newly added modify_prefix_route is attempting to add a new prefix route when the ifp priority does not match the route metric however the check needs to account for the default priority. In addition, the route add fails because the route already exists, and then the delete removes the one that exists. Flip the order to do the delete first.
--- net/ipv6/addrconf.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
net/ipv6/addrconf.c +6 -3
@@ -4528,6 +4528,7 @@ static int modify_prefix_route(struct inet6_ifaddr *ifp, unsigned long expires, u32 flags) {struct fib6_info *f6i; +u32 prio; f6i = addrconf_get_prefix_route(&ifp->addr, ifp->prefix_len,
@@ -4536,13 +4537,15 @@ static int modify_prefix_route(struct inet6_ifaddr *ifp,if (!f6i)return -ENOENT ; -if (f6i->fib6_metric != ifp->rt_priority) { + prio = ifp->rt_priority ? :IP6_RT_PRIO_ADDRCONF ; +if (f6i->fib6_metric != prio) { +/* delete old one */ +ip6_del_rt (dev_net (ifp->idev->dev), f6i); +/* add new one */ addrconf_prefix_route (&ifp->addr, ifp->prefix_len, ifp->rt_priority, ifp->idev->dev, expires, flags,GFP_KERNEL ); -/* delete old one */ -ip6_del_rt (dev_net (ifp->idev->dev), f6i); }else {if (!expires)fib6_clean_expires (f6i);
Signature · 1 line
2.11.0
From: [email protected]
Date: Thu, 28 Jun 2018 13:36:55 -0700
Quoted 9 lines
From: David Ahern <[email protected]>
Sowmini reported that a recent commit broke prefix routes for linklocal addresses. The newly added
modify_prefix_routeis attempting to add a new prefix route when the ifp priority does not match the route metric however the check needs to account for the default priority. In addition, the route add fails because the route already exists, and then the delete removes the one that exists. Flip the order to do the delete first.
Quoted 4 lines
Fixes 8308f3ff1753 ("net/ipv6: Add support for specifying metric of connected routes")Reported-by Sowmini Varadhan <[email protected]>Tested-by Sowmini Varadhan <[email protected]>Signed-off-by David Ahern <[email protected]>
Applied, thanks David.