]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core: implement generic log control API in PID1 too 15507/head
authorLennart Poettering <lennart@poettering.net>
Tue, 21 Apr 2020 08:43:32 +0000 (10:43 +0200)
committerLennart Poettering <lennart@poettering.net>
Tue, 21 Apr 2020 15:08:23 +0000 (17:08 +0200)
It has slightly different setters in place, so it needs some special
love, which is easy enough though.

src/core/dbus-manager.c
src/core/dbus-manager.h
src/core/dbus.c

index 08f13a63a1bf4706087f0b34a8e23aff72cc4128..5f862e47fda38fb2901c7eae535353e96d314eef 100644 (file)
@@ -3022,6 +3022,21 @@ const sd_bus_vtable bus_manager_vtable[] = {
         SD_BUS_VTABLE_END
 };
 
+const sd_bus_vtable bus_manager_log_control_vtable[] = {
+        SD_BUS_VTABLE_START(0),
+
+        /* We define a private version of this interface here, since we want slightly different
+         * implementations for the setters. We'll still use the generic getters however, and we share the
+         * setters with the implementations for the Manager interface above (which pre-dates the generic
+         * service API interface). */
+
+        SD_BUS_WRITABLE_PROPERTY("LogLevel", "s", bus_property_get_log_level, property_set_log_level, 0, 0),
+        SD_BUS_WRITABLE_PROPERTY("LogTarget", "s", bus_property_get_log_target, property_set_log_target, 0, 0),
+        SD_BUS_PROPERTY("SyslogIdentifier", "s", bus_property_get_syslog_identifier, 0, 0),
+
+        SD_BUS_VTABLE_END,
+};
+
 static int send_finished(sd_bus *bus, void *userdata) {
         _cleanup_(sd_bus_message_unrefp) sd_bus_message *message = NULL;
         usec_t *times = userdata;
index 10aa2eccee2329010401eb79388793d47377dcc7..83854b0f59be8f019ec2e08effe6b299fa67d9ea 100644 (file)
@@ -6,6 +6,7 @@
 #include "manager.h"
 
 extern const sd_bus_vtable bus_manager_vtable[];
+extern const sd_bus_vtable bus_manager_log_control_vtable[];
 
 void bus_manager_send_finished(Manager *m, usec_t firmware_usec, usec_t loader_usec, usec_t kernel_usec, usec_t initrd_usec, usec_t userspace_usec, usec_t total_usec);
 void bus_manager_send_reloading(Manager *m, bool active);
index 50155f22c6725a9543e463c3bf7182dbb4982930..fd6753b93d4000b37c4dd8d77ddddfa387f995aa 100644 (file)
@@ -539,6 +539,10 @@ static int bus_setup_api_vtables(Manager *m, sd_bus *bus) {
         if (r < 0)
                 return log_error_errno(r, "Failed to register Manager vtable: %m");
 
+        r = sd_bus_add_object_vtable(bus, NULL, "/org/freedesktop/LogControl1", "org.freedesktop.LogControl1", bus_manager_log_control_vtable, m);
+        if (r < 0)
+                return log_error_errno(r, "Failed to register service API vtable: %m");
+
         r = sd_bus_add_fallback_vtable(bus, NULL, "/org/freedesktop/systemd1/job", "org.freedesktop.systemd1.Job", bus_job_vtable, bus_job_find, m);
         if (r < 0)
                 return log_error_errno(r, "Failed to register Job vtable: %m");