From 2d4c9c42ac542cf60a10971c6f22c4f926526456 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 11 Apr 2024 12:00:52 +0900 Subject: [PATCH] network/ndisc: set provider address in caller Follow-up for 43d184682d640e438ad140b0743e2fd258455b12. No functional change, just refactoring. --- src/network/networkd-ndisc.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/network/networkd-ndisc.c b/src/network/networkd-ndisc.c index 7473a926d43..47d973ad829 100644 --- a/src/network/networkd-ndisc.c +++ b/src/network/networkd-ndisc.c @@ -327,20 +327,14 @@ static int ndisc_address_handler(sd_netlink *rtnl, sd_netlink_message *m, Reques return 1; } -static int ndisc_request_address(Address *address, Link *link, sd_ndisc_router *rt) { +static int ndisc_request_address(Address *address, Link *link) { bool is_new; int r; assert(address); assert(link); - if (rt) { - r = sd_ndisc_router_get_sender_address(rt, &address->provider.in6); - if (r < 0) - return r; - - address->source = NETWORK_CONFIG_SOURCE_NDISC; - } + address->source = NETWORK_CONFIG_SOURCE_NDISC; r = free_and_strdup_warn(&address->netlabel, link->network->ndisc_netlabel); if (r < 0) @@ -388,7 +382,7 @@ int ndisc_reconfigure_address(Address *address, Link *link) { if (r <= 0) return r; - r = ndisc_request_address(address, link, NULL); + r = ndisc_request_address(address, link); if (r < 0) return r; @@ -1081,7 +1075,7 @@ static int ndisc_router_process_mtu(Link *link, sd_ndisc_router *rt) { static int ndisc_router_process_autonomous_prefix(Link *link, sd_ndisc_router *rt) { usec_t lifetime_valid_usec, lifetime_preferred_usec; - struct in6_addr prefix; + struct in6_addr prefix, router; uint8_t prefixlen; int r; @@ -1092,6 +1086,10 @@ static int ndisc_router_process_autonomous_prefix(Link *link, sd_ndisc_router *r if (!link->network->ndisc_use_autonomous_prefix) return 0; + r = sd_ndisc_router_get_sender_address(rt, &router); + if (r < 0) + return log_link_warning_errno(link, r, "Failed to get router address: %m"); + r = sd_ndisc_router_prefix_get_address(rt, &prefix); if (r < 0) return log_link_warning_errno(link, r, "Failed to get prefix address: %m"); @@ -1133,6 +1131,7 @@ static int ndisc_router_process_autonomous_prefix(Link *link, sd_ndisc_router *r if (r < 0) return log_oom(); + address->provider.in6 = router; address->family = AF_INET6; address->in_addr.in6 = *a; address->prefixlen = prefixlen; @@ -1153,7 +1152,7 @@ static int ndisc_router_process_autonomous_prefix(Link *link, sd_ndisc_router *r if (r < 0) return log_link_warning_errno(link, r, "Could not remove SLAAC address: %m"); } else { - r = ndisc_request_address(address, link, rt); + r = ndisc_request_address(address, link); if (r < 0) return log_link_warning_errno(link, r, "Could not request SLAAC address: %m"); } -- 2.47.3