From 04a44e25b99e7b8c78f8d46b59e0d9834e6ddf03 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Tue, 18 Mar 2025 14:37:15 +0100 Subject: [PATCH] units: Add systemd-machined.socket --- src/machine/machined-varlink.c | 15 ++++++++++----- units/meson.build | 5 +++++ units/systemd-machined.service.in | 4 ++-- units/systemd-machined.socket | 18 ++++++++++++++++++ 4 files changed, 35 insertions(+), 7 deletions(-) create mode 100644 units/systemd-machined.socket diff --git a/src/machine/machined-varlink.c b/src/machine/machined-varlink.c index 338a47c22c7..7c1210209bd 100644 --- a/src/machine/machined-varlink.c +++ b/src/machine/machined-varlink.c @@ -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) diff --git a/units/meson.build b/units/meson.build index b29bed068f6..56a30128904 100644 --- a/units/meson.build +++ b/units/meson.build @@ -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'], diff --git a/units/systemd-machined.service.in b/units/systemd-machined.service.in index 47aa5deeedc..7f70c87e80e 100644 --- a/units/systemd-machined.service.in +++ b/units/systemd-machined.service.in @@ -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 index 00000000000..3df5c7d8c30 --- /dev/null +++ b/units/systemd-machined.socket @@ -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 -- 2.47.3