]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
networkctl: rename check_netns_match() -> varlink_connect_networkd()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 26 Feb 2024 01:32:51 +0000 (10:32 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 1 Mar 2024 00:40:26 +0000 (09:40 +0900)
Then optionally return the varlink connection to the caller.

src/network/networkctl.c

index 61fa0ed5566b9715f3f87419a99064b62eb329a5..fefcbfe82957293b99cfac35d3cdc0a354ff5345 100644 (file)
@@ -93,11 +93,10 @@ JsonFormatFlags arg_json_format_flags = JSON_FORMAT_OFF;
 
 STATIC_DESTRUCTOR_REGISTER(arg_drop_in, freep);
 
-static int check_netns_match(void) {
-        struct stat st;
-        uint64_t id;
-        JsonVariant *reply = NULL;
+static int varlink_connect_networkd(Varlink **ret_varlink) {
         _cleanup_(varlink_unrefp) Varlink *vl = NULL;
+        JsonVariant *reply;
+        uint64_t id;
         int r;
 
         r = varlink_connect_address(&vl, "/run/systemd/netif/io.systemd.Network");
@@ -117,18 +116,21 @@ static int check_netns_match(void) {
         if (r < 0)
                 return r;
 
-        if (id == 0) {
+        if (id == 0)
                 log_debug("systemd-networkd.service not running in a network namespace (?), skipping netns check.");
-                return 0;
-        }
+        else {
+                struct stat st;
 
-        if (stat("/proc/self/ns/net", &st) < 0)
-                return log_error_errno(errno, "Failed to determine our own network namespace ID: %m");
+                if (stat("/proc/self/ns/net", &st) < 0)
+                        return log_error_errno(errno, "Failed to determine our own network namespace ID: %m");
 
-        if (id != st.st_ino)
-                return log_error_errno(SYNTHETIC_ERRNO(EREMOTE),
-                                       "networkctl must be invoked in same network namespace as systemd-networkd.service.");
+                if (id != st.st_ino)
+                        return log_error_errno(SYNTHETIC_ERRNO(EREMOTE),
+                                               "networkctl must be invoked in same network namespace as systemd-networkd.service.");
+        }
 
+        if (ret_varlink)
+                *ret_varlink = TAKE_PTR(vl);
         return 0;
 }
 
@@ -162,7 +164,7 @@ int acquire_bus(sd_bus **ret) {
                 return log_error_errno(r, "Failed to connect to system bus: %m");
 
         if (networkd_is_running()) {
-                r = check_netns_match();
+                r = varlink_connect_networkd(/* ret_varlink = */ NULL);
                 if (r < 0)
                         return r;
         } else