network: introduce link_stop_ipv4_dad()
This commit is contained in:
parent
b87d6a8284
commit
2488e4d934
|
@ -1379,6 +1379,27 @@ int link_configure_ipv4_dad(Link *link) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int link_stop_ipv4_dad(Link *link) {
|
||||||
|
Address *address;
|
||||||
|
int k, r = 0;
|
||||||
|
|
||||||
|
assert(link);
|
||||||
|
|
||||||
|
if (!link->network)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
LIST_FOREACH(addresses, address, link->network->static_addresses) {
|
||||||
|
if (!address->acd)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
k = sd_ipv4acd_stop(address->acd);
|
||||||
|
if (k < 0 && r >= 0)
|
||||||
|
r = k;
|
||||||
|
}
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
int config_parse_broadcast(
|
int config_parse_broadcast(
|
||||||
const char *unit,
|
const char *unit,
|
||||||
const char *filename,
|
const char *filename,
|
||||||
|
|
|
@ -79,6 +79,7 @@ int link_drop_foreign_addresses(Link *link);
|
||||||
int link_serialize_addresses(Link *link, FILE *f);
|
int link_serialize_addresses(Link *link, FILE *f);
|
||||||
int link_deserialize_addresses(Link *link, const char *addresses);
|
int link_deserialize_addresses(Link *link, const char *addresses);
|
||||||
int link_configure_ipv4_dad(Link *link);
|
int link_configure_ipv4_dad(Link *link);
|
||||||
|
int link_stop_ipv4_dad(Link *link);
|
||||||
|
|
||||||
int manager_rtnl_process_address(sd_netlink *nl, sd_netlink_message *message, Manager *m);
|
int manager_rtnl_process_address(sd_netlink *nl, sd_netlink_message *message, Manager *m);
|
||||||
|
|
||||||
|
|
|
@ -813,7 +813,6 @@ static void link_enter_unmanaged(Link *link) {
|
||||||
|
|
||||||
int link_stop_clients(Link *link, bool may_keep_dhcp) {
|
int link_stop_clients(Link *link, bool may_keep_dhcp) {
|
||||||
int r = 0, k;
|
int r = 0, k;
|
||||||
Address *ad;
|
|
||||||
|
|
||||||
assert(link);
|
assert(link);
|
||||||
assert(link->manager);
|
assert(link->manager);
|
||||||
|
@ -836,13 +835,9 @@ int link_stop_clients(Link *link, bool may_keep_dhcp) {
|
||||||
r = log_link_warning_errno(link, k, "Could not stop IPv4 link-local: %m");
|
r = log_link_warning_errno(link, k, "Could not stop IPv4 link-local: %m");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (link->network)
|
k = link_stop_ipv4_dad(link);
|
||||||
LIST_FOREACH(addresses, ad, link->network->static_addresses)
|
if (k < 0)
|
||||||
if (ad->acd && sd_ipv4acd_is_running(ad->acd) == 0) {
|
r = log_link_warning_errno(link, k, "Could not stop IPv4 ACD client: %m");
|
||||||
k = sd_ipv4acd_stop(ad->acd);
|
|
||||||
if (k < 0)
|
|
||||||
r = log_link_warning_errno(link, k, "Could not stop IPv4 ACD client: %m");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (link->dhcp6_client) {
|
if (link->dhcp6_client) {
|
||||||
k = sd_dhcp6_client_stop(link->dhcp6_client);
|
k = sd_dhcp6_client_stop(link->dhcp6_client);
|
||||||
|
|
Loading…
Reference in a new issue