mirror of
https://github.com/systemd/systemd.git
synced 2025-03-11 20:58:27 +03:00
network: ndisc: read prefix earlier
No functional changes.
This commit is contained in:
parent
a9b0d0a2d0
commit
167c7ae511
@ -408,6 +408,7 @@ static int ndisc_router_process_onlink_prefix(Link *link, sd_ndisc_router *rt) {
|
|||||||
_cleanup_(route_freep) Route *route = NULL;
|
_cleanup_(route_freep) Route *route = NULL;
|
||||||
usec_t timestamp_usec;
|
usec_t timestamp_usec;
|
||||||
uint32_t lifetime_sec;
|
uint32_t lifetime_sec;
|
||||||
|
struct in6_addr prefix;
|
||||||
unsigned prefixlen;
|
unsigned prefixlen;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
@ -429,6 +430,10 @@ static int ndisc_router_process_onlink_prefix(Link *link, sd_ndisc_router *rt) {
|
|||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_link_error_errno(link, r, "Failed to get RA timestamp: %m");
|
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);
|
r = sd_ndisc_router_prefix_get_prefixlen(rt, &prefixlen);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_link_error_errno(link, r, "Failed to get prefix length: %m");
|
return log_link_error_errno(link, r, "Failed to get prefix length: %m");
|
||||||
@ -439,13 +444,10 @@ static int ndisc_router_process_onlink_prefix(Link *link, sd_ndisc_router *rt) {
|
|||||||
|
|
||||||
route->family = AF_INET6;
|
route->family = AF_INET6;
|
||||||
route->flags = RTM_F_PREFIX;
|
route->flags = RTM_F_PREFIX;
|
||||||
|
route->dst.in6 = prefix;
|
||||||
route->dst_prefixlen = prefixlen;
|
route->dst_prefixlen = prefixlen;
|
||||||
route->lifetime_usec = sec_to_usec(lifetime_sec, timestamp_usec);
|
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);
|
r = ndisc_request_route(TAKE_PTR(route), link, rt);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_link_error_errno(link, r, "Could not request prefix route: %m");
|
return log_link_error_errno(link, r, "Could not request prefix route: %m");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user