mirror of
https://github.com/systemd/systemd
synced 2025-09-30 17:24:46 +02:00
Compare commits
3 Commits
1c3c43a417
...
0ef0c9caf7
Author | SHA1 | Date | |
---|---|---|---|
![]() |
0ef0c9caf7 | ||
![]() |
37c0b60177 | ||
![]() |
fe44ce8dba |
@ -471,8 +471,8 @@ static void log_address_debug(const Address *address, const char *str, const Lin
|
|||||||
|
|
||||||
if (DEBUG_LOGGING) {
|
if (DEBUG_LOGGING) {
|
||||||
_cleanup_free_ char *addr = NULL, *peer = NULL;
|
_cleanup_free_ char *addr = NULL, *peer = NULL;
|
||||||
char valid_buf[FORMAT_TIMESPAN_MAX];
|
char valid_buf[FORMAT_TIMESPAN_MAX], preferred_buf[FORMAT_TIMESPAN_MAX];
|
||||||
const char *valid_str = NULL;
|
const char *valid_str = NULL, *preferred_str = NULL;
|
||||||
bool has_peer;
|
bool has_peer;
|
||||||
|
|
||||||
(void) in_addr_to_string(address->family, &address->in_addr, &addr);
|
(void) in_addr_to_string(address->family, &address->in_addr, &addr);
|
||||||
@ -485,10 +485,16 @@ static void log_address_debug(const Address *address, const char *str, const Lin
|
|||||||
address->cinfo.ifa_valid * USEC_PER_SEC,
|
address->cinfo.ifa_valid * USEC_PER_SEC,
|
||||||
USEC_PER_SEC);
|
USEC_PER_SEC);
|
||||||
|
|
||||||
log_link_debug(link, "%s address: %s%s%s/%u (valid %s%s)",
|
if (address->cinfo.ifa_prefered != CACHE_INFO_INFINITY_LIFE_TIME)
|
||||||
|
preferred_str = format_timespan(preferred_buf, FORMAT_TIMESPAN_MAX,
|
||||||
|
address->cinfo.ifa_prefered * USEC_PER_SEC,
|
||||||
|
USEC_PER_SEC);
|
||||||
|
|
||||||
|
log_link_debug(link, "%s address: %s%s%s/%u (valid %s%s, preferred %s%s)",
|
||||||
str, strnull(addr), has_peer ? " peer " : "",
|
str, strnull(addr), has_peer ? " peer " : "",
|
||||||
has_peer ? strnull(peer) : "", address->prefixlen,
|
has_peer ? strnull(peer) : "", address->prefixlen,
|
||||||
valid_str ? "for " : "forever", strempty(valid_str));
|
valid_str ? "for " : "forever", strempty(valid_str),
|
||||||
|
preferred_str ? "for " : "forever", strempty(preferred_str));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -799,12 +805,12 @@ int address_configure(
|
|||||||
const Address *address,
|
const Address *address,
|
||||||
Link *link,
|
Link *link,
|
||||||
link_netlink_message_handler_t callback,
|
link_netlink_message_handler_t callback,
|
||||||
bool update,
|
|
||||||
Address **ret) {
|
Address **ret) {
|
||||||
|
|
||||||
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *req = NULL;
|
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *req = NULL;
|
||||||
Address *acquired_address, *a;
|
Address *acquired_address, *a;
|
||||||
uint32_t flags;
|
uint32_t flags;
|
||||||
|
bool update;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
assert(address);
|
assert(address);
|
||||||
@ -827,6 +833,8 @@ int address_configure(
|
|||||||
if (acquired_address)
|
if (acquired_address)
|
||||||
address = acquired_address;
|
address = acquired_address;
|
||||||
|
|
||||||
|
update = address_get(link, address, NULL) >= 0;
|
||||||
|
|
||||||
log_address_debug(address, update ? "Updating" : "Configuring", link);
|
log_address_debug(address, update ? "Updating" : "Configuring", link);
|
||||||
|
|
||||||
if (update)
|
if (update)
|
||||||
@ -988,14 +996,14 @@ static int address_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int static_address_configure(const Address *address, Link *link, bool update) {
|
static int static_address_configure(const Address *address, Link *link) {
|
||||||
Address *ret;
|
Address *ret;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
assert(address);
|
assert(address);
|
||||||
assert(link);
|
assert(link);
|
||||||
|
|
||||||
r = address_configure(address, link, address_handler, update, &ret);
|
r = address_configure(address, link, address_handler, &ret);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_link_warning_errno(link, r, "Could not configure static address: %m");
|
return log_link_warning_errno(link, r, "Could not configure static address: %m");
|
||||||
|
|
||||||
@ -1030,10 +1038,7 @@ int link_set_addresses(Link *link) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ORDERED_HASHMAP_FOREACH(ad, link->network->addresses_by_section) {
|
ORDERED_HASHMAP_FOREACH(ad, link->network->addresses_by_section) {
|
||||||
bool update;
|
r = static_address_configure(ad, link);
|
||||||
|
|
||||||
update = address_get(link, ad, NULL) > 0;
|
|
||||||
r = static_address_configure(ad, link, update);
|
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
@ -1057,7 +1062,7 @@ int link_set_addresses(Link *link) {
|
|||||||
return log_link_warning_errno(link, r, "Could not generate EUI64 address: %m");
|
return log_link_warning_errno(link, r, "Could not generate EUI64 address: %m");
|
||||||
|
|
||||||
address->family = AF_INET6;
|
address->family = AF_INET6;
|
||||||
r = static_address_configure(address, link, true);
|
r = static_address_configure(address, link);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
@ -49,7 +49,7 @@ typedef struct Address {
|
|||||||
int address_new(Address **ret);
|
int address_new(Address **ret);
|
||||||
Address *address_free(Address *address);
|
Address *address_free(Address *address);
|
||||||
int address_get(Link *link, const Address *in, Address **ret);
|
int address_get(Link *link, const Address *in, Address **ret);
|
||||||
int address_configure(const Address *address, Link *link, link_netlink_message_handler_t callback, bool update, Address **ret);
|
int address_configure(const Address *address, Link *link, link_netlink_message_handler_t callback, Address **ret);
|
||||||
int address_remove(const Address *address, Link *link, link_netlink_message_handler_t callback);
|
int address_remove(const Address *address, Link *link, link_netlink_message_handler_t callback);
|
||||||
bool address_equal(const Address *a1, const Address *a2);
|
bool address_equal(const Address *a1, const Address *a2);
|
||||||
bool address_is_ready(const Address *a);
|
bool address_is_ready(const Address *a);
|
||||||
|
@ -870,7 +870,7 @@ static int dhcp4_update_address(Link *link, bool announce) {
|
|||||||
|
|
||||||
/* allow reusing an existing address and simply update its lifetime
|
/* allow reusing an existing address and simply update its lifetime
|
||||||
* in case it already exists */
|
* in case it already exists */
|
||||||
r = address_configure(addr, link, dhcp4_address_handler, true, &ret);
|
r = address_configure(addr, link, dhcp4_address_handler, &ret);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_link_error_errno(link, r, "Failed to set DHCPv4 address: %m");
|
return log_link_error_errno(link, r, "Failed to set DHCPv4 address: %m");
|
||||||
|
|
||||||
|
@ -391,7 +391,7 @@ static int dhcp6_set_pd_address(
|
|||||||
address->cinfo.ifa_valid = lifetime_valid;
|
address->cinfo.ifa_valid = lifetime_valid;
|
||||||
SET_FLAG(address->flags, IFA_F_MANAGETEMPADDR, link->network->dhcp6_pd_manage_temporary_address);
|
SET_FLAG(address->flags, IFA_F_MANAGETEMPADDR, link->network->dhcp6_pd_manage_temporary_address);
|
||||||
|
|
||||||
r = address_configure(address, link, dhcp6_pd_address_handler, true, &ret);
|
r = address_configure(address, link, dhcp6_pd_address_handler, &ret);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_link_error_errno(link, r, "Failed to set DHCPv6 delegated prefix address: %m");
|
return log_link_error_errno(link, r, "Failed to set DHCPv6 delegated prefix address: %m");
|
||||||
|
|
||||||
@ -1034,7 +1034,7 @@ static int dhcp6_update_address(
|
|||||||
|
|
||||||
log_dhcp6_address(link, addr, &buffer);
|
log_dhcp6_address(link, addr, &buffer);
|
||||||
|
|
||||||
r = address_configure(addr, link, dhcp6_address_handler, true, &ret);
|
r = address_configure(addr, link, dhcp6_address_handler, &ret);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_link_error_errno(link, r, "Failed to set DHCPv6 address %s/%u: %m",
|
return log_link_error_errno(link, r, "Failed to set DHCPv6 address %s/%u: %m",
|
||||||
strnull(buffer), addr->prefixlen);
|
strnull(buffer), addr->prefixlen);
|
||||||
|
@ -92,7 +92,7 @@ static int ipv4ll_address_claimed(sd_ipv4ll *ll, Link *link) {
|
|||||||
ll_addr->broadcast.s_addr = ll_addr->in_addr.in.s_addr | htobe32(0xfffffffflu >> ll_addr->prefixlen);
|
ll_addr->broadcast.s_addr = ll_addr->in_addr.in.s_addr | htobe32(0xfffffffflu >> ll_addr->prefixlen);
|
||||||
ll_addr->scope = RT_SCOPE_LINK;
|
ll_addr->scope = RT_SCOPE_LINK;
|
||||||
|
|
||||||
r = address_configure(ll_addr, link, ipv4ll_address_handler, false, NULL);
|
r = address_configure(ll_addr, link, ipv4ll_address_handler, NULL);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
|
@ -434,7 +434,7 @@ static int ndisc_address_configure(Address *address, Link *link, sd_ndisc_router
|
|||||||
assert(link);
|
assert(link);
|
||||||
assert(rt);
|
assert(rt);
|
||||||
|
|
||||||
r = address_configure(address, link, ndisc_address_handler, true, &ret);
|
r = address_configure(address, link, ndisc_address_handler, &ret);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_link_error_errno(link, r, "Failed to set NDisc SLAAC address: %m");
|
return log_link_error_errno(link, r, "Failed to set NDisc SLAAC address: %m");
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user