From: Kalash Nainwal Date: Thu, 10 Feb 2022 22:09:35 +0000 (-0800) Subject: Generate netlink notification when default IPv6 route preference changes X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=806c37ddcf286665adce5c3a99b5fe4424cbf9fe;p=linux.git Generate netlink notification when default IPv6 route preference changes Generate RTM_NEWROUTE netlink notification when the route preference changes on an existing kernel generated default route in response to RA messages. Currently netlink notifications are generated only when this route is added or deleted but not when the route preference changes, which can cause userspace routing application state to go out of sync with kernel. Signed-off-by: Kalash Nainwal Reviewed-by: David Ahern Signed-off-by: David S. Miller --- diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c index f03b597e4121b..1c06d0cd02f79 100644 --- a/net/ipv6/ndisc.c +++ b/net/ipv6/ndisc.c @@ -1337,8 +1337,12 @@ static void ndisc_router_discovery(struct sk_buff *skb) return; } neigh->flags |= NTF_ROUTER; - } else if (rt) { + } else if (rt && IPV6_EXTRACT_PREF(rt->fib6_flags) != pref) { + struct nl_info nlinfo = { + .nl_net = net, + }; rt->fib6_flags = (rt->fib6_flags & ~RTF_PREF_MASK) | RTF_PREF(pref); + inet6_rt_notify(RTM_NEWROUTE, rt, &nlinfo, NLM_F_REPLACE); } if (rt)