if (r < 0)
return log_error_errno(r, "Failed to register varlink disconnect handler: %m");
- r = sd_varlink_server_listen_address(server, "/run/systemd/resolve/io.systemd.Resolve.Monitor", 0666);
+ r = sd_varlink_server_listen_name(server, "varlink-monitor");
if (r < 0)
- return log_error_errno(r, "Failed to bind to varlink socket: %m");
+ return log_error_errno(r, "Failed to get varlink listen fd: %m");
+ if (r == 0) {
+ r = sd_varlink_server_listen_address(server, "/run/systemd/resolve/io.systemd.Resolve.Monitor", 0666);
+ if (r < 0)
+ return log_error_errno(r, "Failed to bind to varlink socket: %m");
+ }
r = sd_varlink_server_attach_event(server, m->event, SD_EVENT_PRIORITY_NORMAL);
if (r < 0)
if (r < 0)
return log_error_errno(r, "Failed to register varlink disconnect handler: %m");
- r = sd_varlink_server_listen_address(s, "/run/systemd/resolve/io.systemd.Resolve", 0666);
+ r = sd_varlink_server_listen_auto(s);
if (r < 0)
- return log_error_errno(r, "Failed to bind to varlink socket: %m");
+ return log_error_errno(r, "Failed to get varlink listen fd: %m");
+ if (r == 0) {
+ r = sd_varlink_server_listen_address(s, "/run/systemd/resolve/io.systemd.Resolve", 0666);
+ if (r < 0)
+ return log_error_errno(r, "Failed to bind to varlink socket: %m");
+ }
r = sd_varlink_server_attach_event(s, m->event, SD_EVENT_PRIORITY_NORMAL);
if (r < 0)
'file' : 'systemd-resolved.service.in',
'conditions' : ['ENABLE_RESOLVE'],
},
+ {
+ 'file' : 'systemd-resolved-varlink.socket',
+ 'conditions' : ['ENABLE_RESOLVE'],
+ },
+ {
+ 'file' : 'systemd-resolved-monitor.socket',
+ 'conditions' : ['ENABLE_RESOLVE'],
+ },
{
'file' : 'systemd-rfkill.service.in',
'conditions' : ['ENABLE_RFKILL'],
--- /dev/null
+# 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=Resolve Monitor Varlink Socket
+Documentation=man:systemd-resolved.service(8)
+DefaultDependencies=no
+Before=sockets.target shutdown.target
+Conflicts=shutdown.target
+
+[Socket]
+Service=systemd-resolved.service
+ListenStream=/run/systemd/resolve/io.systemd.Resolve.Monitor
+FileDescriptorName=varlink-monitor
+SocketMode=0666
+
+[Install]
+WantedBy=sockets.target
--- /dev/null
+# 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=Resolve Service Varlink Socket
+Documentation=man:systemd-resolved.service(8)
+DefaultDependencies=no
+Before=sockets.target shutdown.target
+Conflicts=shutdown.target
+
+[Socket]
+Service=systemd-resolved.service
+ListenStream=/run/systemd/resolve/io.systemd.Resolve
+FileDescriptorName=varlink
+SocketMode=0666
+
+[Install]
+WantedBy=sockets.target
Documentation=https://systemd.io/WRITING_RESOLVER_CLIENTS
DefaultDependencies=no
-After=systemd-sysctl.service systemd-sysusers.service
+After=systemd-sysctl.service systemd-sysusers.service systemd-resolved-varlink.socket systemd-resolved-monitor.socket
Before=sysinit.target network.target nss-lookup.target shutdown.target initrd-switch-root.target
Conflicts=shutdown.target initrd-switch-root.target
-Wants=nss-lookup.target
+Wants=nss-lookup.target systemd-resolved-varlink.socket systemd-resolved-monitor.socket
[Service]
AmbientCapabilities=CAP_SETPCAP CAP_NET_RAW CAP_NET_BIND_SERVICE
[Install]
WantedBy=sysinit.target
Alias=dbus-org.freedesktop.resolve1.service
+Also=systemd-resolved-varlink.socket systemd-resolved-monitor.socket