]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: introduce link_is_ready_to_configure() helper function
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 7 May 2021 06:45:28 +0000 (15:45 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 12 May 2021 02:26:06 +0000 (11:26 +0900)
This will be used in later commits.

src/network/networkd-link.c
src/network/networkd-link.h

index 2f33305a27367b6926bdbfbf3e942f460aa74710..031a6692c2ecc41aac53dc548730618d7ad6ff3c 100644 (file)
@@ -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. */
index b560dde0dcadb844ba0e8c4e1d92f9d14921f123..38659e16a959702762e706c33973b0b737b5d5f2 100644 (file)
@@ -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);