assert(link);
+ link->setting_genmode = false;
+
if (IN_SET(link->state, LINK_STATE_FAILED, LINK_STATE_LINGER))
return 1;
r = sd_netlink_message_get_errno(m);
if (r < 0)
log_link_message_warning_errno(link, m, r, "Could not set address genmode for interface, ignoring");
+ else
+ log_link_debug(link, "Setting address genmode done.");
+
+ if (link->state == LINK_STATE_INITIALIZED) {
+ r = link_configure_continue(link);
+ if (r < 0)
+ link_enter_failed(link);
+ }
return 1;
}
assert(link->manager);
assert(link->manager->rtnl);
- if (!socket_ipv6_is_supported())
+ if (!socket_ipv6_is_supported() || link->setting_genmode)
return 0;
log_link_debug(link, "Setting address genmode for link");
return log_link_error_errno(link, r, "Could not send rtnetlink message: %m");
link_ref(link);
+ link->setting_genmode = true;
return 0;
}
assert(link->network);
assert(link->state == LINK_STATE_INITIALIZED);
- if (link->setting_mtu)
+ if (link->setting_mtu || link->setting_genmode)
return 0;
/* The kernel resets ipv6 mtu after changing device mtu;
bool routing_policy_rules_configured:1;
bool qdiscs_configured:1;
bool setting_mtu:1;
+ bool setting_genmode:1;
bool ipv6_mtu_set:1;
LIST_HEAD(Address, pool_addresses);