From: Yu Watanabe Date: Fri, 7 May 2021 06:45:28 +0000 (+0900) Subject: network: introduce link_is_ready_to_configure() helper function X-Git-Tag: v249-rc1~240^2~7 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7191a57a0e25f4d2ee7e44c5d91cb432b3be8fbc;p=thirdparty%2Fsystemd.git network: introduce link_is_ready_to_configure() helper function This will be used in later commits. --- diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 2f33305a273..031a6692c2e 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -134,6 +134,25 @@ bool link_ipv6_enabled(Link *link) { return false; } +bool link_is_ready_to_configure(Link *link, bool allow_unmanaged) { + assert(link); + + if (!link->network || link->network->unmanaged) { + if (!allow_unmanaged) + return false; + + return link_has_carrier(link); + } + + if (!IN_SET(link->state, LINK_STATE_CONFIGURING, LINK_STATE_CONFIGURED)) + return false; + + if (!link_has_carrier(link) && !link->network->configure_without_carrier) + return false; + + return true; +} + static bool link_is_enslaved(Link *link) { if (link->flags & IFF_SLAVE) /* Even if the link is not managed by networkd, honor IFF_SLAVE flag. */ diff --git a/src/network/networkd-link.h b/src/network/networkd-link.h index b560dde0dca..38659e16a95 100644 --- a/src/network/networkd-link.h +++ b/src/network/networkd-link.h @@ -199,6 +199,8 @@ typedef struct Link { typedef int (*link_netlink_message_handler_t)(sd_netlink*, sd_netlink_message*, Link*); +bool link_is_ready_to_configure(Link *link, bool allow_unmanaged); + void link_ntp_settings_clear(Link *link); void link_dns_settings_clear(Link *link); Link *link_unref(Link *link);