]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: introduce link_activate()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 29 Apr 2021 23:08:23 +0000 (08:08 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 30 Apr 2021 10:16:15 +0000 (19:16 +0900)
src/network/networkd-link.c
src/network/networkd-link.h

index 7da08c5430f9f8f98f60a2aa4287a44f8206a2a9..8b8c38522039f074a31a060a48bc8db0b18eeb29 100644 (file)
@@ -1780,7 +1780,7 @@ static void link_drop(Link *link) {
         link_detach_from_manager(link);
 }
 
-static int link_joined(Link *link) {
+int link_activate(Link *link) {
         int r;
 
         assert(link);
@@ -1798,10 +1798,8 @@ static int link_joined(Link *link) {
                 _fallthrough_;
         case ACTIVATION_POLICY_ALWAYS_UP:
                 r = link_up(link);
-                if (r < 0) {
-                        link_enter_failed(link);
+                if (r < 0)
                         return r;
-                }
                 break;
         case ACTIVATION_POLICY_DOWN:
                 if (link->activated)
@@ -1809,16 +1807,27 @@ static int link_joined(Link *link) {
                 _fallthrough_;
         case ACTIVATION_POLICY_ALWAYS_DOWN:
                 r = link_down(link, NULL);
-                if (r < 0) {
-                        link_enter_failed(link);
+                if (r < 0)
                         return r;
-                }
                 break;
         default:
                 break;
         }
         link->activated = true;
 
+        return 0;
+}
+
+static int link_joined(Link *link) {
+        int r;
+
+        assert(link);
+        assert(link->network);
+
+        r = link_activate(link);
+        if (r < 0)
+                return r;
+
         if (link->network->bridge) {
                 r = link_set_bridge(link);
                 if (r < 0)
index 541231b4b94457b7b5f7558eb18c9678764de924..b560dde0dcadb844ba0e8c4e1d92f9d14921f123 100644 (file)
@@ -210,6 +210,7 @@ int link_get(Manager *m, int ifindex, Link **ret);
 
 int link_up(Link *link);
 int link_down(Link *link, link_netlink_message_handler_t callback);
+int link_activate(Link *link);
 
 void link_enter_failed(Link *link);