_cleanup_(route_freep) Route *route = NULL;
usec_t timestamp_usec;
uint32_t lifetime_sec;
+ struct in6_addr prefix;
unsigned prefixlen;
int r;
if (r < 0)
return log_link_error_errno(link, r, "Failed to get RA timestamp: %m");
+ r = sd_ndisc_router_prefix_get_address(rt, &prefix);
+ if (r < 0)
+ return log_link_error_errno(link, r, "Failed to get prefix address: %m");
+
r = sd_ndisc_router_prefix_get_prefixlen(rt, &prefixlen);
if (r < 0)
return log_link_error_errno(link, r, "Failed to get prefix length: %m");
route->family = AF_INET6;
route->flags = RTM_F_PREFIX;
+ route->dst.in6 = prefix;
route->dst_prefixlen = prefixlen;
route->lifetime_usec = sec_to_usec(lifetime_sec, timestamp_usec);
- r = sd_ndisc_router_prefix_get_address(rt, &route->dst.in6);
- if (r < 0)
- return log_link_error_errno(link, r, "Failed to get prefix address: %m");
-
r = ndisc_request_route(TAKE_PTR(route), link, rt);
if (r < 0)
return log_link_error_errno(link, r, "Could not request prefix route: %m");