From f44eebd1bab9327c5dd3a281196bd07192134d3b Mon Sep 17 00:00:00 2001 From: Susant Sahani Date: Sat, 22 Jul 2023 23:38:47 +0530 Subject: [PATCH] network: ndisc - Also fill router preference --- src/network/networkd-ndisc.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/network/networkd-ndisc.c b/src/network/networkd-ndisc.c index 7570d37662..61776d3c26 100644 --- a/src/network/networkd-ndisc.c +++ b/src/network/networkd-ndisc.c @@ -448,10 +448,10 @@ static int ndisc_router_process_autonomous_prefix(Link *link, sd_ndisc_router *r static int ndisc_router_process_onlink_prefix(Link *link, sd_ndisc_router *rt) { _cleanup_(route_freep) Route *route = NULL; + unsigned prefixlen, preference; usec_t timestamp_usec; uint32_t lifetime_sec; struct in6_addr prefix; - unsigned prefixlen; int r; assert(link); @@ -477,6 +477,11 @@ static int ndisc_router_process_onlink_prefix(Link *link, sd_ndisc_router *rt) { if (r < 0) return log_link_warning_errno(link, r, "Failed to get prefix length: %m"); + /* Prefix Information option does not have preference, hence we use the 'main' preference here */ + r = sd_ndisc_router_get_preference(rt, &preference); + if (r < 0) + log_link_warning_errno(link, r, "Failed to get default router preference from RA: %m"); + r = route_new(&route); if (r < 0) return log_oom(); @@ -484,6 +489,7 @@ static int ndisc_router_process_onlink_prefix(Link *link, sd_ndisc_router *rt) { route->family = AF_INET6; route->dst.in6 = prefix; route->dst_prefixlen = prefixlen; + route->pref = preference; route->lifetime_usec = sec_to_usec(lifetime_sec, timestamp_usec); r = ndisc_request_route(TAKE_PTR(route), link, rt); -- 2.25.1