From 7191a57a0e25f4d2ee7e44c5d91cb432b3be8fbc Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Fri, 7 May 2021 15:45:28 +0900 Subject: [PATCH] network: introduce link_is_ready_to_configure() helper function This will be used in later commits. --- src/network/networkd-link.c | 19 +++++++++++++++++++ src/network/networkd-link.h | 2 ++ 2 files changed, 21 insertions(+) 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); -- 2.47.3