From 40108953c5894ed257174265628457c2d0da987b Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Wed, 11 Sep 2024 04:03:57 +0900 Subject: [PATCH 1/3] timesync: use BusObjectImplementation --- src/timesync/timesyncd-bus.c | 10 ++++++++-- src/timesync/timesyncd-bus.h | 3 +++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/timesync/timesyncd-bus.c b/src/timesync/timesyncd-bus.c index d1d2a14c0f..a3be1e2ef9 100644 --- a/src/timesync/timesyncd-bus.c +++ b/src/timesync/timesyncd-bus.c @@ -246,9 +246,9 @@ int manager_connect_bus(Manager *m) { if (r < 0) return log_error_errno(r, "Failed to connect to bus: %m"); - r = sd_bus_add_object_vtable(m->bus, NULL, "/org/freedesktop/timesync1", "org.freedesktop.timesync1.Manager", manager_vtable, m); + r = bus_add_implementation(m->bus, &manager_object, m); if (r < 0) - return log_error_errno(r, "Failed to add manager object vtable: %m"); + return r; r = bus_log_control_api_register(m->bus); if (r < 0) @@ -264,3 +264,9 @@ int manager_connect_bus(Manager *m) { return 0; } + +const BusObjectImplementation manager_object = { + "/org/freedesktop/timesync1", + "org.freedesktop.timesync1.Manager", + .vtables = BUS_VTABLES(manager_vtable), +}; diff --git a/src/timesync/timesyncd-bus.h b/src/timesync/timesyncd-bus.h index 83db2167e2..b2b5a2b30e 100644 --- a/src/timesync/timesyncd-bus.h +++ b/src/timesync/timesyncd-bus.h @@ -1,6 +1,9 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once +#include "bus-object.h" #include "timesyncd-manager.h" +extern const BusObjectImplementation manager_object; + int manager_connect_bus(Manager *m); From 4a851db694a63b08265e62483c92ce25427f0414 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Wed, 11 Sep 2024 04:05:31 +0900 Subject: [PATCH 2/3] timesync: add support of basic command line options --- src/timesync/timesyncd.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/timesync/timesyncd.c b/src/timesync/timesyncd.c index a1b63038c4..69c6b8e72a 100644 --- a/src/timesync/timesyncd.c +++ b/src/timesync/timesyncd.c @@ -7,6 +7,7 @@ #include "sd-event.h" #include "sd-messages.h" +#include "bus-log-control-api.h" #include "capability-util.h" #include "clock-util.h" #include "daemon-util.h" @@ -16,6 +17,7 @@ #include "mkdir-label.h" #include "network-util.h" #include "process-util.h" +#include "service-util.h" #include "signal-util.h" #include "timesyncd-bus.h" #include "timesyncd-conf.h" @@ -144,6 +146,13 @@ static int run(int argc, char *argv[]) { log_set_facility(LOG_CRON); log_setup(); + r = service_parse_argv("systemd-timesyncd.service", + "Network time synchronization", + BUS_IMPLEMENTATIONS(&manager_object, &log_control_object), + argc, argv); + if (r <= 0) + return r; + umask(0022); if (argc != 1) From fd0958762ab01448c3215091645499145989813c Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Wed, 11 Sep 2024 04:42:50 +0900 Subject: [PATCH 3/3] man: add basic documents for org.freedesktop.timesync1 Closes #34352. --- man/org.freedesktop.timesync1.xml | 156 ++++++++++++++++++++++++++++++ man/rules/meson.build | 1 + tools/dbus_ignorelist | 13 +++ 3 files changed, 170 insertions(+) create mode 100644 man/org.freedesktop.timesync1.xml diff --git a/man/org.freedesktop.timesync1.xml b/man/org.freedesktop.timesync1.xml new file mode 100644 index 0000000000..22bf73103d --- /dev/null +++ b/man/org.freedesktop.timesync1.xml @@ -0,0 +1,156 @@ + + + +%entities; +]> + + + + + org.freedesktop.timesync1 + systemd + + + + org.freedesktop.timesync1 + 5 + + + + org.freedesktop.timesync1 + The D-Bus interface of systemd-timesyncd + + + + Introduction + + + systemd-timesyncd.service8 + is a system service that may be used to synchronize the local system clock with a remote Network Time + Protocol (NTP) server. This page describes the D-Bus interface. + + + + The Manager Object + + The service exposes the following interfaces on the Manager object on the bus: + + +node /org/freedesktop/timesync1 { + interface org.freedesktop.timesync1.Manager { + methods: + SetRuntimeNTPServers(in as runtime_servers); + properties: + readonly as LinkNTPServers = ['...', ...]; + readonly as SystemNTPServers = ['...', ...]; + readonly as RuntimeNTPServers = ['...', ...]; + readonly as FallbackNTPServers = ['...', ...]; + @org.freedesktop.DBus.Property.EmitsChangedSignal("false") + readonly s ServerName = '...'; + @org.freedesktop.DBus.Property.EmitsChangedSignal("false") + readonly (iay) ServerAddress = ...; + @org.freedesktop.DBus.Property.EmitsChangedSignal("const") + readonly t RootDistanceMaxUSec = ...; + @org.freedesktop.DBus.Property.EmitsChangedSignal("const") + readonly t PollIntervalMinUSec = ...; + @org.freedesktop.DBus.Property.EmitsChangedSignal("const") + readonly t PollIntervalMaxUSec = ...; + @org.freedesktop.DBus.Property.EmitsChangedSignal("false") + readonly t PollIntervalUSec = ...; + readonly (uuuuittayttttbtt) NTPMessage = ...; + @org.freedesktop.DBus.Property.EmitsChangedSignal("false") + readonly x Frequency = ...; + }; + interface org.freedesktop.DBus.Peer { ... }; + interface org.freedesktop.DBus.Introspectable { ... }; + interface org.freedesktop.DBus.Properties { ... }; +}; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Provides information about the manager. + + + + + + Examples + + + Introspect <interfacename>org.freedesktop.timesync1.Manager</interfacename> on the bus + + +$ gdbus introspect --system \ + --dest org.freedesktop.timesync1 \ + --object-path /org/freedesktop/timesync1 + + + + + + + + diff --git a/man/rules/meson.build b/man/rules/meson.build index ad617aa4d5..080aa44b3d 100644 --- a/man/rules/meson.build +++ b/man/rules/meson.build @@ -67,6 +67,7 @@ manpages = [ ['org.freedesktop.systemd1', '5', [], ''], ['org.freedesktop.sysupdate1', '5', [], 'ENABLE_SYSUPDATE'], ['org.freedesktop.timedate1', '5', [], 'ENABLE_TIMEDATED'], + ['org.freedesktop.timesync1', '5', [], 'ENABLE_TIMESYNCD'], ['os-release', '5', ['extension-release', 'initrd-release'], ''], ['pam_systemd', '8', [], 'HAVE_PAM'], ['pam_systemd_home', '8', [], 'ENABLE_PAM_HOME'], diff --git a/tools/dbus_ignorelist b/tools/dbus_ignorelist index 71bdad8b57..0fc572d204 100644 --- a/tools/dbus_ignorelist +++ b/tools/dbus_ignorelist @@ -2172,3 +2172,16 @@ org.freedesktop.timedate1.SetTime() org.freedesktop.timedate1.SetTimezone() org.freedesktop.timedate1.TimeUSec org.freedesktop.timedate1.Timezone +org.freedesktop.timesync1.Manager.SetRuntimeNTPServers() +org.freedesktop.timesync1.Manager.LinkNTPServers +org.freedesktop.timesync1.Manager.SystemNTPServers +org.freedesktop.timesync1.Manager.RuntimeNTPServers +org.freedesktop.timesync1.Manager.FallbackNTPServers +org.freedesktop.timesync1.Manager.ServerName +org.freedesktop.timesync1.Manager.ServerAddress +org.freedesktop.timesync1.Manager.RootDistanceMaxUSec +org.freedesktop.timesync1.Manager.PollIntervalMinUSec +org.freedesktop.timesync1.Manager.PollIntervalMaxUSec +org.freedesktop.timesync1.Manager.PollIntervalUSec +org.freedesktop.timesync1.Manager.NTPMessage +org.freedesktop.timesync1.Manager.Frequency