return 1; /* Polkit will call us back */
r = link_reconfigure(l, /* force = */ true);
+ if (r > 0)
+ r = link_save_and_clean_full(l, /* also_save_manager = */ true);
if (r < 0)
return r;
- if (r > 0) {
- r = link_save_and_clean_full(l, /* also_save_manager = */ true);
- if (r < 0)
- return r;
- }
return sd_bus_reply_method_return(message, NULL);
}
}
void link_enter_failed(Link *link) {
- int r;
-
assert(link);
if (IN_SET(link->state, LINK_STATE_FAILED, LINK_STATE_LINGER))
}
log_link_info(link, "Trying to reconfigure the interface.");
- r = link_reconfigure(link, /* force = */ true);
- if (r < 0) {
- log_link_warning_errno(link, r, "Failed to reconfigure interface: %m");
- goto stop;
- }
-
- return;
+ if (link_reconfigure(link, /* force = */ true) > 0)
+ return;
stop:
(void) link_stop_engines(link, /* may_keep_dhcp = */ false);
return 0; /* 0 means no-op. */
r = link_call_getlink(link, force ? link_force_reconfigure_handler : link_reconfigure_handler);
- if (r < 0)
+ if (r < 0) {
+ log_link_warning_errno(link, r, "Failed to reconfigure interface: %m");
+ link_enter_failed(link);
return r;
+ }
if (force || link->state == LINK_STATE_FAILED)
link_set_state(link, LINK_STATE_INITIALIZED);
return 0;
data = new(ReconfigureData, 1);
- if (!data)
- return -ENOMEM;
+ if (!data) {
+ r = -ENOMEM;
+ goto failed;
+ }
*data = (ReconfigureData) {
.link = link_ref(link),
r = sd_rtnl_message_new_link(link->manager->rtnl, &req, RTM_GETLINK, link->ifindex);
if (r < 0)
- return r;
+ goto failed;
r = netlink_call_async(link->manager->rtnl, NULL, req,
reconfigure_handler_on_bus_method_reload,
reconfigure_data_destroy_callback, data);
if (r < 0)
- return r;
+ goto failed;
TAKE_PTR(data);
link->manager->reloading++;
link_set_state(link, LINK_STATE_INITIALIZED);
return 0;
+
+failed:
+ log_link_warning_errno(link, r, "Failed to reconfigure interface: %m");
+ link_enter_failed(link);
+ return r;
}
static int link_initialized_and_synced(Link *link) {
log_debug("Coming back from suspend, reconfiguring all connections...");
- HASHMAP_FOREACH(link, m->links_by_index) {
- r = link_reconfigure(link, /* force = */ true);
- if (r < 0) {
- log_link_warning_errno(link, r, "Failed to reconfigure interface: %m");
- link_enter_failed(link);
- }
- }
+ HASHMAP_FOREACH(link, m->links_by_index)
+ (void) link_reconfigure(link, /* force = */ true);
return 0;
}
HASHMAP_FOREACH(link, m->links_by_index) {
if (message)
- r = link_reconfigure_on_bus_method_reload(link, message);
+ (void) link_reconfigure_on_bus_method_reload(link, message);
else
- r = link_reconfigure(link, /* force = */ false);
- if (r < 0) {
- log_link_warning_errno(link, r, "Failed to reconfigure the interface: %m");
- link_enter_failed(link);
- }
+ (void) link_reconfigure(link, /* force = */ false);
}
r = 0;