core: implement generic log control API in PID1 too

It has slightly different setters in place, so it needs some special
love, which is easy enough though.
This commit is contained in:
Lennart Poettering 2020-04-21 10:43:32 +02:00
parent 25141692e9
commit 893f801d67
3 changed files with 20 additions and 0 deletions

View 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;

View 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);

View 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");