]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
units: Add systemd-machined.socket
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Tue, 18 Mar 2025 13:37:15 +0000 (14:37 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 19 Mar 2025 08:28:12 +0000 (09:28 +0100)
src/machine/machined-varlink.c
units/meson.build
units/systemd-machined.service.in
units/systemd-machined.socket [new file with mode: 0644]

index 338a47c22c73165bc868bd26a9513de31dc0f8a7..7c1210209bdfede8a9154eec974919abeb49f45a 100644 (file)
@@ -806,13 +806,18 @@ static int manager_varlink_init_machine(Manager *m) {
         if (r < 0)
                 return log_error_errno(r, "Failed to register varlink methods: %m");
 
-        r = sd_varlink_server_listen_address(s, "/run/systemd/machine/io.systemd.Machine", 0666 | SD_VARLINK_SERVER_MODE_MKDIR_0755);
+        r = sd_varlink_server_listen_auto(s);
         if (r < 0)
-                return log_error_errno(r, "Failed to bind to io.systemd.Machine varlink socket: %m");
+                return log_error_errno(r, "Failed to bind to passed Varlink sockets: %m");
+        if (r == 0) {
+                r = sd_varlink_server_listen_address(s, "/run/systemd/machine/io.systemd.Machine", 0666 | SD_VARLINK_SERVER_MODE_MKDIR_0755);
+                if (r < 0)
+                        return log_error_errno(r, "Failed to bind to io.systemd.Machine varlink socket: %m");
 
-        r = sd_varlink_server_listen_address(s, "/run/systemd/machine/io.systemd.MachineImage", 0666);
-        if (r < 0)
-                return log_error_errno(r, "Failed to bind to io.systemd.MachineImage varlink socket: %m");
+                r = sd_varlink_server_listen_address(s, "/run/systemd/machine/io.systemd.MachineImage", 0666);
+                if (r < 0)
+                        return log_error_errno(r, "Failed to bind to io.systemd.MachineImage varlink socket: %m");
+        }
 
         r = sd_varlink_server_attach_event(s, m->event, SD_EVENT_PRIORITY_NORMAL);
         if (r < 0)
index b29bed068f67a3e56c5634b1818c201a09f6f1ec..56a3012890489b16209cf5c274768465081b31bd 100644 (file)
@@ -483,6 +483,11 @@ units = [
           'conditions' : ['ENABLE_MACHINED'],
           'symlinks' : ['dbus-org.freedesktop.machine1.service'],
         },
+        {
+          'file' : 'systemd-machined.socket',
+          'conditions' : ['ENABLE_MACHINED'],
+          'symlinks' : ['sockets.target.wants/'],
+        },
         {
           'file' : 'systemd-modules-load.service.in',
           'conditions' : ['HAVE_KMOD'],
index 47aa5deeedc5f4399b970a91a54f7f58bb44b8bc..7f70c87e80e7aa568abb2f56f448f6aeb07d1413 100644 (file)
@@ -12,8 +12,8 @@ Description=Virtual Machine and Container Registration Service
 Documentation=man:systemd-machined.service(8)
 Documentation=man:org.freedesktop.machine1(5)
 
-Wants=machine.slice
-After=machine.slice
+Wants=machine.slice systemd-machined.socket
+After=machine.slice systemd-machined.socket
 RequiresMountsFor=/var/lib/machines
 
 [Service]
diff --git a/units/systemd-machined.socket b/units/systemd-machined.socket
new file mode 100644 (file)
index 0000000..3df5c7d
--- /dev/null
@@ -0,0 +1,18 @@
+#  SPDX-License-Identifier: LGPL-2.1-or-later
+#
+#  This file is part of systemd.
+#
+#  systemd is free software; you can redistribute it and/or modify it
+#  under the terms of the GNU Lesser General Public License as published by
+#  the Free Software Foundation; either version 2.1 of the License, or
+#  (at your option) any later version.
+
+[Unit]
+Description=Virtual Machine and Container Registration Service Socket
+Documentation=man:systemd-machined.service(8)
+
+[Socket]
+ListenStream=/run/systemd/machine/io.systemd.Machine
+ListenStream=/run/systemd/machine/io.systemd.MachineImage
+FileDescriptorName=varlink
+SocketMode=0666