dbus: automatically generate and install introspection files
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
org.freedesktop.systemd1.*.xml
|
||||||
test-ns
|
test-ns
|
||||||
test-loopback
|
test-loopback
|
||||||
systemd-cgroups-agent
|
systemd-cgroups-agent
|
||||||
|
|||||||
+19
@@ -23,6 +23,7 @@ udevrulesdir=@udevrulesdir@
|
|||||||
pkgsysconfdir=$(sysconfdir)/systemd
|
pkgsysconfdir=$(sysconfdir)/systemd
|
||||||
systemunitdir=$(pkgdatadir)/system
|
systemunitdir=$(pkgdatadir)/system
|
||||||
sessionunitdir=$(pkgdatadir)/session
|
sessionunitdir=$(pkgdatadir)/session
|
||||||
|
interfacedir=$(datadir)/dbus-1/interfaces
|
||||||
|
|
||||||
AM_CPPFLAGS = \
|
AM_CPPFLAGS = \
|
||||||
-include $(top_builddir)/config.h \
|
-include $(top_builddir)/config.h \
|
||||||
@@ -64,6 +65,19 @@ dist_dbuspolicy_DATA = \
|
|||||||
dist_udevrules_DATA = \
|
dist_udevrules_DATA = \
|
||||||
src/99-systemd.rules
|
src/99-systemd.rules
|
||||||
|
|
||||||
|
interface_DATA = \
|
||||||
|
org.freedesktop.systemd1.Manager.xml \
|
||||||
|
org.freedesktop.systemd1.Job.xml \
|
||||||
|
org.freedesktop.systemd1.Unit.xml \
|
||||||
|
org.freedesktop.systemd1.Service.xml \
|
||||||
|
org.freedesktop.systemd1.Socket.xml \
|
||||||
|
org.freedesktop.systemd1.Target.xml \
|
||||||
|
org.freedesktop.systemd1.Device.xml \
|
||||||
|
org.freedesktop.systemd1.Mount.xml \
|
||||||
|
org.freedesktop.systemd1.Automount.xml \
|
||||||
|
org.freedesktop.systemd1.Snapshot.xml \
|
||||||
|
org.freedesktop.systemd1.Swap.xml
|
||||||
|
|
||||||
dist_systemunit_DATA = \
|
dist_systemunit_DATA = \
|
||||||
units/emergency.service \
|
units/emergency.service \
|
||||||
units/getty.target \
|
units/getty.target \
|
||||||
@@ -426,6 +440,11 @@ CLEANFILES += \
|
|||||||
man/systemd.special.html.in
|
man/systemd.special.html.in
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
org.freedesktop.systemd1.%.xml: systemd
|
||||||
|
$(AM_V_GEN)./systemd --introspect=${@:.xml=} > $@
|
||||||
|
|
||||||
|
CLEANFILES += $(interface_DATA)
|
||||||
|
|
||||||
install-data-hook:
|
install-data-hook:
|
||||||
$(MKDIR_P) -m 0755 \
|
$(MKDIR_P) -m 0755 \
|
||||||
$(DESTDIR)$(systemunitdir) \
|
$(DESTDIR)$(systemunitdir) \
|
||||||
|
|||||||
@@ -64,6 +64,8 @@
|
|||||||
|
|
||||||
* tcpwrap
|
* tcpwrap
|
||||||
|
|
||||||
|
* introduce exit.target for session instances
|
||||||
|
|
||||||
Regularly:
|
Regularly:
|
||||||
|
|
||||||
* look for close() vs. close_nointr() vs. close_nointr_nofail()
|
* look for close() vs. close_nointr() vs. close_nointr_nofail()
|
||||||
|
|||||||
+16
-11
@@ -22,16 +22,21 @@
|
|||||||
#include "dbus-unit.h"
|
#include "dbus-unit.h"
|
||||||
#include "dbus-automount.h"
|
#include "dbus-automount.h"
|
||||||
|
|
||||||
static const char introspection[] =
|
#define BUS_AUTOMOUNT_INTERFACE \
|
||||||
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE
|
" <interface name=\"org.freedesktop.systemd1.Automount\">\n" \
|
||||||
"<node>"
|
" <property name=\"Where\" type=\"s\" access=\"read\"/>\n" \
|
||||||
BUS_UNIT_INTERFACE
|
" </interface>\n"
|
||||||
BUS_PROPERTIES_INTERFACE
|
|
||||||
" <interface name=\"org.freedesktop.systemd1.Automount\">"
|
#define INTROSPECTION \
|
||||||
" <property name=\"Where\" type=\"s\" access=\"read\"/>"
|
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE \
|
||||||
" </interface>"
|
"<node>\n" \
|
||||||
BUS_INTROSPECTABLE_INTERFACE
|
BUS_UNIT_INTERFACE \
|
||||||
"</node>";
|
BUS_AUTOMOUNT_INTERFACE \
|
||||||
|
BUS_PROPERTIES_INTERFACE \
|
||||||
|
BUS_INTROSPECTABLE_INTERFACE \
|
||||||
|
"</node>\n"
|
||||||
|
|
||||||
|
const char bus_automount_interface[] = BUS_AUTOMOUNT_INTERFACE;
|
||||||
|
|
||||||
DBusHandlerResult bus_automount_message_handler(Unit *u, DBusMessage *message) {
|
DBusHandlerResult bus_automount_message_handler(Unit *u, DBusMessage *message) {
|
||||||
const BusProperty properties[] = {
|
const BusProperty properties[] = {
|
||||||
@@ -40,5 +45,5 @@ DBusHandlerResult bus_automount_message_handler(Unit *u, DBusMessage *message) {
|
|||||||
{ NULL, NULL, NULL, NULL, NULL }
|
{ NULL, NULL, NULL, NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
return bus_default_message_handler(u->meta.manager, message, introspection, properties);
|
return bus_default_message_handler(u->meta.manager, message, INTROSPECTION, properties);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,4 +28,6 @@
|
|||||||
|
|
||||||
DBusHandlerResult bus_automount_message_handler(Unit *u, DBusMessage *message);
|
DBusHandlerResult bus_automount_message_handler(Unit *u, DBusMessage *message);
|
||||||
|
|
||||||
|
extern const char bus_automount_interface[];
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+16
-11
@@ -22,16 +22,21 @@
|
|||||||
#include "dbus-unit.h"
|
#include "dbus-unit.h"
|
||||||
#include "dbus-device.h"
|
#include "dbus-device.h"
|
||||||
|
|
||||||
static const char introspection[] =
|
#define BUS_DEVICE_INTERFACE \
|
||||||
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE
|
" <interface name=\"org.freedesktop.systemd1.Device\">\n" \
|
||||||
"<node>"
|
" <property name=\"SysFSPath\" type=\"s\" access=\"read\"/>\n" \
|
||||||
BUS_UNIT_INTERFACE
|
" </interface>\n"
|
||||||
BUS_PROPERTIES_INTERFACE
|
|
||||||
" <interface name=\"org.freedesktop.systemd1.Device\">"
|
#define INTROSPECTION \
|
||||||
" <property name=\"SysFSPath\" type=\"s\" access=\"read\"/>"
|
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE \
|
||||||
" </interface>"
|
"<node>\n" \
|
||||||
BUS_INTROSPECTABLE_INTERFACE
|
BUS_UNIT_INTERFACE \
|
||||||
"</node>";
|
BUS_DEVICE_INTERFACE \
|
||||||
|
BUS_PROPERTIES_INTERFACE \
|
||||||
|
BUS_INTROSPECTABLE_INTERFACE \
|
||||||
|
"</node>\n"
|
||||||
|
|
||||||
|
const char bus_device_interface[] = BUS_DEVICE_INTERFACE;
|
||||||
|
|
||||||
DBusHandlerResult bus_device_message_handler(Unit *u, DBusMessage *message) {
|
DBusHandlerResult bus_device_message_handler(Unit *u, DBusMessage *message) {
|
||||||
const BusProperty properties[] = {
|
const BusProperty properties[] = {
|
||||||
@@ -40,5 +45,5 @@ DBusHandlerResult bus_device_message_handler(Unit *u, DBusMessage *message) {
|
|||||||
{ NULL, NULL, NULL, NULL, NULL }
|
{ NULL, NULL, NULL, NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
return bus_default_message_handler(u->meta.manager, message, introspection, properties);
|
return bus_default_message_handler(u->meta.manager, message, INTROSPECTION, properties);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,4 +28,6 @@
|
|||||||
|
|
||||||
DBusHandlerResult bus_device_message_handler(Unit *u, DBusMessage *message);
|
DBusHandlerResult bus_device_message_handler(Unit *u, DBusMessage *message);
|
||||||
|
|
||||||
|
extern const char bus_device_interface[];
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+17
-17
@@ -27,23 +27,23 @@
|
|||||||
#include "manager.h"
|
#include "manager.h"
|
||||||
|
|
||||||
#define BUS_EXEC_CONTEXT_INTERFACE \
|
#define BUS_EXEC_CONTEXT_INTERFACE \
|
||||||
" <property name=\"Environment\" type=\"as\" access=\"read\"/>" \
|
" <property name=\"Environment\" type=\"as\" access=\"read\"/>\n" \
|
||||||
" <property name=\"UMask\" type=\"u\" access=\"read\"/>" \
|
" <property name=\"UMask\" type=\"u\" access=\"read\"/>\n" \
|
||||||
" <property name=\"WorkingDirectory\" type=\"s\" access=\"read\"/>" \
|
" <property name=\"WorkingDirectory\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <property name=\"RootDirectory\" type=\"s\" access=\"read\"/>" \
|
" <property name=\"RootDirectory\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <property name=\"CPUSchedulingResetOnFork\" type=\"b\" access=\"read\"/>" \
|
" <property name=\"CPUSchedulingResetOnFork\" type=\"b\" access=\"read\"/>\n" \
|
||||||
" <property name=\"NonBlocking\" type=\"b\" access=\"read\"/>" \
|
" <property name=\"NonBlocking\" type=\"b\" access=\"read\"/>\n" \
|
||||||
" <property name=\"StandardInput\" type=\"s\" access=\"read\"/>" \
|
" <property name=\"StandardInput\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <property name=\"StandardOutput\" type=\"s\" access=\"read\"/>" \
|
" <property name=\"StandardOutput\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <property name=\"StandardError\" type=\"s\" access=\"read\"/>" \
|
" <property name=\"StandardError\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <property name=\"TTYPath\" type=\"s\" access=\"read\"/>" \
|
" <property name=\"TTYPath\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <property name=\"SyslogPriority\" type=\"i\" access=\"read\"/>" \
|
" <property name=\"SyslogPriority\" type=\"i\" access=\"read\"/>\n" \
|
||||||
" <property name=\"SyslogIdentifier\" type=\"s\" access=\"read\"/>" \
|
" <property name=\"SyslogIdentifier\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <property name=\"SecureBits\" type=\"i\" access=\"read\"/>" \
|
" <property name=\"SecureBits\" type=\"i\" access=\"read\"/>\n" \
|
||||||
" <property name=\"CapabilityBoundingSetDrop\" type=\"t\" access=\"read\"/>" \
|
" <property name=\"CapabilityBoundingSetDrop\" type=\"t\" access=\"read\"/>\n" \
|
||||||
" <property name=\"User\" type=\"s\" access=\"read\"/>" \
|
" <property name=\"User\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <property name=\"Group\" type=\"s\" access=\"read\"/>" \
|
" <property name=\"Group\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <property name=\"SupplementaryGroups\" type=\"as\" access=\"read\"/>"
|
" <property name=\"SupplementaryGroups\" type=\"as\" access=\"read\"/>\n"
|
||||||
|
|
||||||
#define BUS_EXEC_CONTEXT_PROPERTIES(interface, context) \
|
#define BUS_EXEC_CONTEXT_PROPERTIES(interface, context) \
|
||||||
{ interface, "Environment", bus_property_append_strv, "as", (context).environment }, \
|
{ interface, "Environment", bus_property_append_strv, "as", (context).environment }, \
|
||||||
|
|||||||
+20
-15
@@ -25,20 +25,25 @@
|
|||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "dbus-job.h"
|
#include "dbus-job.h"
|
||||||
|
|
||||||
static const char introspection[] =
|
#define BUS_JOB_INTERFACE \
|
||||||
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE
|
" <interface name=\"org.freedesktop.systemd1.Job\">\n" \
|
||||||
"<node>"
|
" <method name=\"Cancel\"/>\n" \
|
||||||
" <interface name=\"org.freedesktop.systemd1.Job\">"
|
" <signal name=\"Changed\"/>\n" \
|
||||||
" <method name=\"Cancel\"/>"
|
" <property name=\"Id\" type=\"u\" access=\"read\"/>\n" \
|
||||||
" <signal name=\"Changed\"/>"
|
" <property name=\"Unit\" type=\"(so)\" access=\"read\"/>\n" \
|
||||||
" <property name=\"Id\" type=\"u\" access=\"read\"/>"
|
" <property name=\"JobType\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <property name=\"Unit\" type=\"(so)\" access=\"read\"/>"
|
" <property name=\"State\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <property name=\"JobType\" type=\"s\" access=\"read\"/>"
|
" </interface>\n"
|
||||||
" <property name=\"State\" type=\"s\" access=\"read\"/>"
|
|
||||||
" </interface>"
|
#define INTROSPECTION \
|
||||||
BUS_PROPERTIES_INTERFACE
|
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE \
|
||||||
BUS_INTROSPECTABLE_INTERFACE
|
"<node>\n" \
|
||||||
"</node>";
|
BUS_JOB_INTERFACE \
|
||||||
|
BUS_PROPERTIES_INTERFACE \
|
||||||
|
BUS_INTROSPECTABLE_INTERFACE \
|
||||||
|
"</node>\n"
|
||||||
|
|
||||||
|
const char bus_job_interface[] = BUS_JOB_INTERFACE;
|
||||||
|
|
||||||
static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_job_append_state, job_state, JobState);
|
static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_job_append_state, job_state, JobState);
|
||||||
static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_job_append_type, job_type, JobType);
|
static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_job_append_type, job_type, JobType);
|
||||||
@@ -92,7 +97,7 @@ static DBusHandlerResult bus_job_message_dispatch(Job *j, DBusMessage *message)
|
|||||||
job_free(j);
|
job_free(j);
|
||||||
|
|
||||||
} else
|
} else
|
||||||
return bus_default_message_handler(j->manager, message, introspection, properties);
|
return bus_default_message_handler(j->manager, message, INTROSPECTION, properties);
|
||||||
|
|
||||||
if (reply) {
|
if (reply) {
|
||||||
if (!dbus_connection_send(m->api_bus, reply, NULL))
|
if (!dbus_connection_send(m->api_bus, reply, NULL))
|
||||||
|
|||||||
@@ -29,4 +29,6 @@ void bus_job_send_removed_signal(Job *j, bool success);
|
|||||||
|
|
||||||
extern const DBusObjectPathVTable bus_job_vtable;
|
extern const DBusObjectPathVTable bus_job_vtable;
|
||||||
|
|
||||||
|
extern const char bus_job_interface[];
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+70
-65
@@ -26,77 +26,82 @@
|
|||||||
#include "dbus-manager.h"
|
#include "dbus-manager.h"
|
||||||
#include "strv.h"
|
#include "strv.h"
|
||||||
|
|
||||||
|
#define BUS_MANAGER_INTERFACE \
|
||||||
|
" <interface name=\"org.freedesktop.systemd1.Manager\">\n" \
|
||||||
|
" <method name=\"GetUnit\">\n" \
|
||||||
|
" <arg name=\"name\" type=\"s\" direction=\"in\"/>\n" \
|
||||||
|
" <arg name=\"unit\" type=\"o\" direction=\"out\"/>\n" \
|
||||||
|
" </method>\n" \
|
||||||
|
" <method name=\"LoadUnit\">\n" \
|
||||||
|
" <arg name=\"name\" type=\"s\" direction=\"in\"/>\n" \
|
||||||
|
" <arg name=\"unit\" type=\"o\" direction=\"out\"/>\n" \
|
||||||
|
" </method>\n" \
|
||||||
|
" <method name=\"GetJob\">\n" \
|
||||||
|
" <arg name=\"id\" type=\"u\" direction=\"in\"/>\n" \
|
||||||
|
" <arg name=\"job\" type=\"o\" direction=\"out\"/>\n" \
|
||||||
|
" </method>\n" \
|
||||||
|
" <method name=\"ClearJobs\"/>\n" \
|
||||||
|
" <method name=\"ListUnits\">\n" \
|
||||||
|
" <arg name=\"units\" type=\"a(sssssouso)\" direction=\"out\"/>\n" \
|
||||||
|
" </method>\n" \
|
||||||
|
" <method name=\"ListJobs\">\n" \
|
||||||
|
" <arg name=\"jobs\" type=\"a(usssoo)\" direction=\"out\"/>\n" \
|
||||||
|
" </method>\n" \
|
||||||
|
" <method name=\"Subscribe\"/>\n" \
|
||||||
|
" <method name=\"Unsubscribe\"/>\n" \
|
||||||
|
" <method name=\"Dump\"/>\n" \
|
||||||
|
" <method name=\"CreateSnapshot\">\n" \
|
||||||
|
" <arg name=\"name\" type=\"s\" direction=\"in\"/>\n" \
|
||||||
|
" <arg nane=\"cleanup\" type=\"b\" direction=\"in\"/>\n" \
|
||||||
|
" <arg name=\"unit\" type=\"o\" direction=\"out\"/>\n" \
|
||||||
|
" </method>\n" \
|
||||||
|
" <method name=\"Reload\"/>\n" \
|
||||||
|
" <method name=\"Reexecute\"/>\n" \
|
||||||
|
" <method name=\"Exit\"/>\n" \
|
||||||
|
" <method name=\"SetEnvironment\">\n" \
|
||||||
|
" <arg name=\"names\" type=\"as\" direction=\"in\"/>\n" \
|
||||||
|
" </method>\n" \
|
||||||
|
" <method name=\"UnsetEnvironment\">\n" \
|
||||||
|
" <arg name=\"names\" type=\"as\" direction=\"in\"/>\n" \
|
||||||
|
" </method>\n" \
|
||||||
|
" <signal name=\"UnitNew\">\n" \
|
||||||
|
" <arg name=\"id\" type=\"s\"/>\n" \
|
||||||
|
" <arg name=\"unit\" type=\"o\"/>\n" \
|
||||||
|
" </signal>\n" \
|
||||||
|
" <signal name=\"UnitRemoved\">\n" \
|
||||||
|
" <arg name=\"id\" type=\"s\"/>\n" \
|
||||||
|
" <arg name=\"unit\" type=\"o\"/>\n" \
|
||||||
|
" </signal>\n" \
|
||||||
|
" <signal name=\"JobNew\">\n" \
|
||||||
|
" <arg name=\"id\" type=\"u\"/>\n" \
|
||||||
|
" <arg name=\"job\" type=\"o\"/>\n" \
|
||||||
|
" </signal>\n" \
|
||||||
|
" <signal name=\"JobRemoved\">\n" \
|
||||||
|
" <arg name=\"id\" type=\"u\"/>\n" \
|
||||||
|
" <arg name=\"job\" type=\"o\"/>\n" \
|
||||||
|
" <arg name=\"success\" type=\"b\"/>\n" \
|
||||||
|
" </signal>" \
|
||||||
|
" <property name=\"Version\" type=\"s\" access=\"read\"/>\n" \
|
||||||
|
" <property name=\"RunningAs\" type=\"s\" access=\"read\"/>\n" \
|
||||||
|
" <property name=\"BootTimestamp\" type=\"t\" access=\"read\"/>\n" \
|
||||||
|
" <property name=\"LogLevel\" type=\"s\" access=\"read\"/>\n" \
|
||||||
|
" <property name=\"LogTarget\" type=\"s\" access=\"read\"/>\n" \
|
||||||
|
" <property name=\"NNames\" type=\"u\" access=\"read\"/>\n" \
|
||||||
|
" <property name=\"NJobs\" type=\"u\" access=\"read\"/>\n" \
|
||||||
|
" <property name=\"Environment\" type=\"as\" access=\"read\"/>\n" \
|
||||||
|
" </interface>\n"
|
||||||
|
|
||||||
#define INTROSPECTION_BEGIN \
|
#define INTROSPECTION_BEGIN \
|
||||||
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE \
|
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE \
|
||||||
"<node>" \
|
"<node>\n" \
|
||||||
" <interface name=\"org.freedesktop.systemd1.Manager\">" \
|
BUS_MANAGER_INTERFACE \
|
||||||
" <method name=\"GetUnit\">" \
|
|
||||||
" <arg name=\"name\" type=\"s\" direction=\"in\"/>" \
|
|
||||||
" <arg name=\"unit\" type=\"o\" direction=\"out\"/>" \
|
|
||||||
" </method>" \
|
|
||||||
" <method name=\"LoadUnit\">" \
|
|
||||||
" <arg name=\"name\" type=\"s\" direction=\"in\"/>" \
|
|
||||||
" <arg name=\"unit\" type=\"o\" direction=\"out\"/>" \
|
|
||||||
" </method>" \
|
|
||||||
" <method name=\"GetJob\">" \
|
|
||||||
" <arg name=\"id\" type=\"u\" direction=\"in\"/>" \
|
|
||||||
" <arg name=\"job\" type=\"o\" direction=\"out\"/>" \
|
|
||||||
" </method>" \
|
|
||||||
" <method name=\"ClearJobs\"/>" \
|
|
||||||
" <method name=\"ListUnits\">" \
|
|
||||||
" <arg name=\"units\" type=\"a(sssssouso)\" direction=\"out\"/>" \
|
|
||||||
" </method>" \
|
|
||||||
" <method name=\"ListJobs\">" \
|
|
||||||
" <arg name=\"jobs\" type=\"a(usssoo)\" direction=\"out\"/>" \
|
|
||||||
" </method>" \
|
|
||||||
" <method name=\"Subscribe\"/>" \
|
|
||||||
" <method name=\"Unsubscribe\"/>" \
|
|
||||||
" <method name=\"Dump\"/>" \
|
|
||||||
" <method name=\"CreateSnapshot\">" \
|
|
||||||
" <arg name=\"name\" type=\"s\" direction=\"in\"/>" \
|
|
||||||
" <arg nane=\"cleanup\" type=\"b\" direction=\"in\"/>" \
|
|
||||||
" <arg name=\"unit\" type=\"o\" direction=\"out\"/>" \
|
|
||||||
" </method>" \
|
|
||||||
" <method name=\"Reload\"/>" \
|
|
||||||
" <method name=\"Reexecute\"/>" \
|
|
||||||
" <method name=\"Exit\"/>" \
|
|
||||||
" <method name=\"SetEnvironment\">" \
|
|
||||||
" <arg name=\"names\" type=\"as\" direction=\"in\"/>" \
|
|
||||||
" </method>" \
|
|
||||||
" <method name=\"UnsetEnvironment\">" \
|
|
||||||
" <arg name=\"names\" type=\"as\" direction=\"in\"/>" \
|
|
||||||
" </method>" \
|
|
||||||
" <signal name=\"UnitNew\">" \
|
|
||||||
" <arg name=\"id\" type=\"s\"/>" \
|
|
||||||
" <arg name=\"unit\" type=\"o\"/>" \
|
|
||||||
" </signal>" \
|
|
||||||
" <signal name=\"UnitRemoved\">" \
|
|
||||||
" <arg name=\"id\" type=\"s\"/>" \
|
|
||||||
" <arg name=\"unit\" type=\"o\"/>" \
|
|
||||||
" </signal>" \
|
|
||||||
" <signal name=\"JobNew\">" \
|
|
||||||
" <arg name=\"id\" type=\"u\"/>" \
|
|
||||||
" <arg name=\"job\" type=\"o\"/>" \
|
|
||||||
" </signal>" \
|
|
||||||
" <signal name=\"JobRemoved\">" \
|
|
||||||
" <arg name=\"id\" type=\"u\"/>" \
|
|
||||||
" <arg name=\"job\" type=\"o\"/>" \
|
|
||||||
" <arg name=\"success\" type=\"b\"/>" \
|
|
||||||
" </signal>" \
|
|
||||||
" <property name=\"Version\" type=\"s\" access=\"read\"/>" \
|
|
||||||
" <property name=\"RunningAs\" type=\"s\" access=\"read\"/>" \
|
|
||||||
" <property name=\"BootTimestamp\" type=\"t\" access=\"read\"/>" \
|
|
||||||
" <property name=\"LogLevel\" type=\"s\" access=\"read\"/>" \
|
|
||||||
" <property name=\"LogTarget\" type=\"s\" access=\"read\"/>" \
|
|
||||||
" <property name=\"NNames\" type=\"u\" access=\"read\"/>" \
|
|
||||||
" <property name=\"NJobs\" type=\"u\" access=\"read\"/>" \
|
|
||||||
" <property name=\"Environment\" type=\"as\" access=\"read\"/>" \
|
|
||||||
" </interface>" \
|
|
||||||
BUS_PROPERTIES_INTERFACE \
|
BUS_PROPERTIES_INTERFACE \
|
||||||
BUS_INTROSPECTABLE_INTERFACE
|
BUS_INTROSPECTABLE_INTERFACE
|
||||||
|
|
||||||
#define INTROSPECTION_END \
|
#define INTROSPECTION_END \
|
||||||
"</node>"
|
"</node>\n"
|
||||||
|
|
||||||
|
const char bus_manager_interface[] = BUS_MANAGER_INTERFACE;
|
||||||
|
|
||||||
static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_manager_append_running_as, manager_running_as, ManagerRunningAs);
|
static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_manager_append_running_as, manager_running_as, ManagerRunningAs);
|
||||||
|
|
||||||
|
|||||||
@@ -26,4 +26,6 @@
|
|||||||
|
|
||||||
extern const DBusObjectPathVTable bus_manager_vtable;
|
extern const DBusObjectPathVTable bus_manager_vtable;
|
||||||
|
|
||||||
|
extern const char bus_manager_interface[];
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+23
-18
@@ -25,23 +25,28 @@
|
|||||||
#include "dbus-mount.h"
|
#include "dbus-mount.h"
|
||||||
#include "dbus-execute.h"
|
#include "dbus-execute.h"
|
||||||
|
|
||||||
static const char introspection[] =
|
#define BUS_MOUNT_INTERFACE \
|
||||||
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE
|
" <interface name=\"org.freedesktop.systemd1.Mount\">\n" \
|
||||||
"<node>"
|
" <property name=\"Where\" type=\"s\" access=\"read\"/>\n" \
|
||||||
BUS_UNIT_INTERFACE
|
" <property name=\"What\" type=\"s\" access=\"read\"/>\n" \
|
||||||
BUS_PROPERTIES_INTERFACE
|
" <property name=\"Options\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <interface name=\"org.freedesktop.systemd1.Mount\">"
|
" <property name=\"Type\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <property name=\"Where\" type=\"s\" access=\"read\"/>"
|
" <property name=\"TimeoutUSec\" type=\"t\" access=\"read\"/>\n" \
|
||||||
" <property name=\"What\" type=\"s\" access=\"read\"/>"
|
BUS_EXEC_CONTEXT_INTERFACE \
|
||||||
" <property name=\"Options\" type=\"s\" access=\"read\"/>"
|
" <property name=\"KillMode\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <property name=\"Type\" type=\"s\" access=\"read\"/>"
|
" <property name=\"ControlPID\" type=\"u\" access=\"read\"/>\n" \
|
||||||
" <property name=\"TimeoutUSec\" type=\"t\" access=\"read\"/>"
|
" </interface>\n"
|
||||||
BUS_EXEC_CONTEXT_INTERFACE
|
|
||||||
" <property name=\"KillMode\" type=\"s\" access=\"read\"/>"
|
#define INTROSPECTION \
|
||||||
" <property name=\"ControlPID\" type=\"u\" access=\"read\"/>"
|
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE \
|
||||||
" </interface>"
|
"<node>\n" \
|
||||||
BUS_INTROSPECTABLE_INTERFACE
|
BUS_UNIT_INTERFACE \
|
||||||
"</node>";
|
BUS_MOUNT_INTERFACE \
|
||||||
|
BUS_PROPERTIES_INTERFACE \
|
||||||
|
BUS_INTROSPECTABLE_INTERFACE \
|
||||||
|
"</node>\n"
|
||||||
|
|
||||||
|
const char bus_mount_interface[] = BUS_MOUNT_INTERFACE;
|
||||||
|
|
||||||
static int bus_mount_append_what(Manager *n, DBusMessageIter *i, const char *property, void *data) {
|
static int bus_mount_append_what(Manager *n, DBusMessageIter *i, const char *property, void *data) {
|
||||||
Mount *m = data;
|
Mount *m = data;
|
||||||
@@ -130,5 +135,5 @@ DBusHandlerResult bus_mount_message_handler(Unit *u, DBusMessage *message) {
|
|||||||
{ NULL, NULL, NULL, NULL, NULL }
|
{ NULL, NULL, NULL, NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
return bus_default_message_handler(u->meta.manager, message, introspection, properties);
|
return bus_default_message_handler(u->meta.manager, message, INTROSPECTION, properties);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,4 +28,6 @@
|
|||||||
|
|
||||||
DBusHandlerResult bus_mount_message_handler(Unit *u, DBusMessage *message);
|
DBusHandlerResult bus_mount_message_handler(Unit *u, DBusMessage *message);
|
||||||
|
|
||||||
|
extern const char bus_mount_interface[];
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+29
-24
@@ -25,29 +25,34 @@
|
|||||||
#include "dbus-execute.h"
|
#include "dbus-execute.h"
|
||||||
#include "dbus-service.h"
|
#include "dbus-service.h"
|
||||||
|
|
||||||
static const char introspection[] =
|
#define BUS_SERVICE_INTERFACE \
|
||||||
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE
|
" <interface name=\"org.freedesktop.systemd1.Service\">\n" \
|
||||||
"<node>"
|
" <property name=\"Type\" type=\"s\" access=\"read\"/>\n" \
|
||||||
BUS_UNIT_INTERFACE
|
" <property name=\"Restart\" type=\"s\" access=\"read\"/>\n" \
|
||||||
BUS_PROPERTIES_INTERFACE
|
" <property name=\"PIDFile\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <interface name=\"org.freedesktop.systemd1.Service\">"
|
" <property name=\"RestartUSec\" type=\"t\" access=\"read\"/>\n" \
|
||||||
" <property name=\"Type\" type=\"s\" access=\"read\"/>"
|
" <property name=\"TimeoutUSec\" type=\"t\" access=\"read\"/>\n" \
|
||||||
" <property name=\"Restart\" type=\"s\" access=\"read\"/>"
|
BUS_EXEC_CONTEXT_INTERFACE \
|
||||||
" <property name=\"PIDFile\" type=\"s\" access=\"read\"/>"
|
" <property name=\"PermissionsStartOnly\" type=\"b\" access=\"read\"/>\n" \
|
||||||
" <property name=\"RestartUSec\" type=\"t\" access=\"read\"/>"
|
" <property name=\"RootDirectoryStartOnly\" type=\"b\" access=\"read\"/>\n" \
|
||||||
" <property name=\"TimeoutUSec\" type=\"t\" access=\"read\"/>"
|
" <property name=\"ValidNoProcess\" type=\"b\" access=\"read\"/>\n" \
|
||||||
BUS_EXEC_CONTEXT_INTERFACE
|
" <property name=\"KillMode\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <property name=\"PermissionsStartOnly\" type=\"b\" access=\"read\"/>"
|
" <property name=\"MainPID\" type=\"u\" access=\"read\"/>\n" \
|
||||||
" <property name=\"RootDirectoryStartOnly\" type=\"b\" access=\"read\"/>"
|
" <property name=\"ControlPID\" type=\"u\" access=\"read\"/>\n" \
|
||||||
" <property name=\"ValidNoProcess\" type=\"b\" access=\"read\"/>"
|
" <property name=\"SysVPath\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <property name=\"KillMode\" type=\"s\" access=\"read\"/>"
|
" <property name=\"BusName\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <property name=\"MainPID\" type=\"u\" access=\"read\"/>"
|
" </interface>\n"
|
||||||
" <property name=\"ControlPID\" type=\"u\" access=\"read\"/>"
|
|
||||||
" <property name=\"SysVPath\" type=\"s\" access=\"read\"/>"
|
#define INTROSPECTION \
|
||||||
" <property name=\"BusName\" type=\"s\" access=\"read\"/>"
|
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE \
|
||||||
" </interface>"
|
"<node>\n" \
|
||||||
BUS_INTROSPECTABLE_INTERFACE
|
BUS_UNIT_INTERFACE \
|
||||||
"</node>";
|
BUS_SERVICE_INTERFACE \
|
||||||
|
BUS_PROPERTIES_INTERFACE \
|
||||||
|
BUS_INTROSPECTABLE_INTERFACE \
|
||||||
|
"</node>\n"
|
||||||
|
|
||||||
|
const char bus_service_interface[] = BUS_SERVICE_INTERFACE;
|
||||||
|
|
||||||
static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_service_append_type, service_type, ServiceType);
|
static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_service_append_type, service_type, ServiceType);
|
||||||
static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_service_append_restart, service_restart, ServiceRestart);
|
static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_service_append_restart, service_restart, ServiceRestart);
|
||||||
@@ -74,5 +79,5 @@ DBusHandlerResult bus_service_message_handler(Unit *u, DBusMessage *message) {
|
|||||||
{ NULL, NULL, NULL, NULL, NULL }
|
{ NULL, NULL, NULL, NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
return bus_default_message_handler(u->meta.manager, message, introspection, properties);
|
return bus_default_message_handler(u->meta.manager, message, INTROSPECTION, properties);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,4 +28,6 @@
|
|||||||
|
|
||||||
DBusHandlerResult bus_service_message_handler(Unit *u, DBusMessage *message);
|
DBusHandlerResult bus_service_message_handler(Unit *u, DBusMessage *message);
|
||||||
|
|
||||||
|
extern const char bus_service_interface[];
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+17
-12
@@ -22,17 +22,22 @@
|
|||||||
#include "dbus-unit.h"
|
#include "dbus-unit.h"
|
||||||
#include "dbus-snapshot.h"
|
#include "dbus-snapshot.h"
|
||||||
|
|
||||||
static const char introspection[] =
|
#define BUS_SNAPSHOT_INTERFACE \
|
||||||
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE
|
" <interface name=\"org.freedesktop.systemd1.Snapshot\">\n" \
|
||||||
"<node>"
|
" <method name=\"Remove\"/>\n" \
|
||||||
BUS_UNIT_INTERFACE
|
" <property name=\"Cleanup\" type=\"b\" access=\"read\"/>\n" \
|
||||||
BUS_PROPERTIES_INTERFACE
|
" </interface>\n"
|
||||||
" <interface name=\"org.freedesktop.systemd1.Snapshot\">"
|
|
||||||
" <method name=\"Remove\"/>"
|
#define INTROSPECTION \
|
||||||
" <property name=\"Cleanup\" type=\"b\" access=\"read\"/>"
|
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE \
|
||||||
" </interface>"
|
"<node>\n" \
|
||||||
BUS_INTROSPECTABLE_INTERFACE
|
BUS_UNIT_INTERFACE \
|
||||||
"</node>";
|
BUS_SNAPSHOT_INTERFACE \
|
||||||
|
BUS_PROPERTIES_INTERFACE \
|
||||||
|
BUS_INTROSPECTABLE_INTERFACE \
|
||||||
|
"</node>\n"
|
||||||
|
|
||||||
|
const char bus_snapshot_interface[] = BUS_SNAPSHOT_INTERFACE;
|
||||||
|
|
||||||
DBusHandlerResult bus_snapshot_message_handler(Unit *u, DBusMessage *message) {
|
DBusHandlerResult bus_snapshot_message_handler(Unit *u, DBusMessage *message) {
|
||||||
const BusProperty properties[] = {
|
const BusProperty properties[] = {
|
||||||
@@ -54,7 +59,7 @@ DBusHandlerResult bus_snapshot_message_handler(Unit *u, DBusMessage *message) {
|
|||||||
goto oom;
|
goto oom;
|
||||||
|
|
||||||
} else
|
} else
|
||||||
return bus_default_message_handler(u->meta.manager, message, introspection, properties);
|
return bus_default_message_handler(u->meta.manager, message, INTROSPECTION, properties);
|
||||||
|
|
||||||
if (reply) {
|
if (reply) {
|
||||||
if (!dbus_connection_send(u->meta.manager->api_bus, reply, NULL))
|
if (!dbus_connection_send(u->meta.manager->api_bus, reply, NULL))
|
||||||
|
|||||||
@@ -28,4 +28,6 @@
|
|||||||
|
|
||||||
DBusHandlerResult bus_snapshot_message_handler(Unit *u, DBusMessage *message);
|
DBusHandlerResult bus_snapshot_message_handler(Unit *u, DBusMessage *message);
|
||||||
|
|
||||||
|
extern const char bus_snapshot_interface[];
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+25
-20
@@ -25,25 +25,30 @@
|
|||||||
#include "dbus-socket.h"
|
#include "dbus-socket.h"
|
||||||
#include "dbus-execute.h"
|
#include "dbus-execute.h"
|
||||||
|
|
||||||
static const char introspection[] =
|
#define BUS_SOCKET_INTERFACE \
|
||||||
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE
|
" <interface name=\"org.freedesktop.systemd1.Socket\">\n" \
|
||||||
"<node>"
|
" <property name=\"BindIPv6Only\" type=\"b\" access=\"read\"/>\n" \
|
||||||
BUS_UNIT_INTERFACE
|
" <property name=\"Backlog\" type=\"u\" access=\"read\"/>\n" \
|
||||||
BUS_PROPERTIES_INTERFACE
|
" <property name=\"TimeoutUSec\" type=\"t\" access=\"read\"/>\n" \
|
||||||
" <interface name=\"org.freedesktop.systemd1.Socket\">"
|
BUS_EXEC_CONTEXT_INTERFACE \
|
||||||
" <property name=\"BindIPv6Only\" type=\"b\" access=\"read\"/>"
|
" <property name=\"KillMode\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <property name=\"Backlog\" type=\"u\" access=\"read\"/>"
|
" <property name=\"ControlPID\" type=\"u\" access=\"read\"/>\n" \
|
||||||
" <property name=\"TimeoutUSec\" type=\"t\" access=\"read\"/>"
|
" <property name=\"BindToDevice\" type=\"s\" access=\"read\"/>\n" \
|
||||||
BUS_EXEC_CONTEXT_INTERFACE
|
" <property name=\"DirectoryMode\" type=\"u\" access=\"read\"/>\n" \
|
||||||
" <property name=\"KillMode\" type=\"s\" access=\"read\"/>"
|
" <property name=\"SocketMode\" type=\"u\" access=\"read\"/>\n" \
|
||||||
" <property name=\"ControlPID\" type=\"u\" access=\"read\"/>"
|
" <property name=\"Accept\" type=\"b\" access=\"read\"/>\n" \
|
||||||
" <property name=\"BindToDevice\" type=\"s\" access=\"read\"/>"
|
" </interface>\n" \
|
||||||
" <property name=\"DirectoryMode\" type=\"u\" access=\"read\"/>"
|
|
||||||
" <property name=\"SocketMode\" type=\"u\" access=\"read\"/>"
|
#define INTROSPECTION \
|
||||||
" <property name=\"Accept\" type=\"b\" access=\"read\"/>"
|
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE \
|
||||||
" </interface>"
|
"<node>\n" \
|
||||||
BUS_INTROSPECTABLE_INTERFACE
|
BUS_UNIT_INTERFACE \
|
||||||
"</node>";
|
BUS_SOCKET_INTERFACE \
|
||||||
|
BUS_PROPERTIES_INTERFACE \
|
||||||
|
BUS_INTROSPECTABLE_INTERFACE \
|
||||||
|
"</node>\n"
|
||||||
|
|
||||||
|
const char bus_socket_interface[] = BUS_SOCKET_INTERFACE;
|
||||||
|
|
||||||
static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_socket_append_bind_ipv6_only, socket_address_bind_ipv6_only, SocketAddressBindIPv6Only);
|
static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_socket_append_bind_ipv6_only, socket_address_bind_ipv6_only, SocketAddressBindIPv6Only);
|
||||||
|
|
||||||
@@ -64,5 +69,5 @@ DBusHandlerResult bus_socket_message_handler(Unit *u, DBusMessage *message) {
|
|||||||
{ NULL, NULL, NULL, NULL, NULL }
|
{ NULL, NULL, NULL, NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
return bus_default_message_handler(u->meta.manager, message, introspection, properties);
|
return bus_default_message_handler(u->meta.manager, message, INTROSPECTION, properties);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,4 +28,6 @@
|
|||||||
|
|
||||||
DBusHandlerResult bus_socket_message_handler(Unit *u, DBusMessage *message);
|
DBusHandlerResult bus_socket_message_handler(Unit *u, DBusMessage *message);
|
||||||
|
|
||||||
|
extern const char bus_socket_interface[];
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+17
-12
@@ -25,17 +25,22 @@
|
|||||||
#include "dbus-unit.h"
|
#include "dbus-unit.h"
|
||||||
#include "dbus-swap.h"
|
#include "dbus-swap.h"
|
||||||
|
|
||||||
static const char introspection[] =
|
#define BUS_SWAP_INTERFACE \
|
||||||
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE
|
" <interface name=\"org.freedesktop.systemd1.Swap\">\n" \
|
||||||
"<node>"
|
" <property name=\"What\" type=\"s\" access=\"read\"/>\n" \
|
||||||
BUS_UNIT_INTERFACE
|
" <property name=\"Priority\" type=\"i\" access=\"read\"/>\n" \
|
||||||
BUS_PROPERTIES_INTERFACE
|
" </interface>\n"
|
||||||
" <interface name=\"org.freedesktop.systemd1.Swap\">"
|
|
||||||
" <property name=\"What\" type=\"s\" access=\"read\"/>"
|
#define INTROSPECTION \
|
||||||
" <property name=\"Priority\" type=\"i\" access=\"read\"/>"
|
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE \
|
||||||
" </interface>"
|
"<node>\n" \
|
||||||
BUS_INTROSPECTABLE_INTERFACE
|
BUS_UNIT_INTERFACE \
|
||||||
"</node>";
|
BUS_SWAP_INTERFACE \
|
||||||
|
BUS_PROPERTIES_INTERFACE \
|
||||||
|
BUS_INTROSPECTABLE_INTERFACE \
|
||||||
|
"</node>\n"
|
||||||
|
|
||||||
|
const char bus_swap_interface[] = BUS_SWAP_INTERFACE;
|
||||||
|
|
||||||
static int bus_swap_append_priority(Manager *m, DBusMessageIter *i, const char *property, void *data) {
|
static int bus_swap_append_priority(Manager *m, DBusMessageIter *i, const char *property, void *data) {
|
||||||
Swap *s = data;
|
Swap *s = data;
|
||||||
@@ -69,5 +74,5 @@ DBusHandlerResult bus_swap_message_handler(Unit *u, DBusMessage *message) {
|
|||||||
{ NULL, NULL, NULL, NULL, NULL }
|
{ NULL, NULL, NULL, NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
return bus_default_message_handler(u->meta.manager, message, introspection, properties);
|
return bus_default_message_handler(u->meta.manager, message, INTROSPECTION, properties);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,4 +29,6 @@
|
|||||||
|
|
||||||
DBusHandlerResult bus_swap_message_handler(Unit *u, DBusMessage *message);
|
DBusHandlerResult bus_swap_message_handler(Unit *u, DBusMessage *message);
|
||||||
|
|
||||||
|
extern const char bus_swap_interface[];
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+15
-10
@@ -22,15 +22,20 @@
|
|||||||
#include "dbus-unit.h"
|
#include "dbus-unit.h"
|
||||||
#include "dbus-target.h"
|
#include "dbus-target.h"
|
||||||
|
|
||||||
static const char introspection[] =
|
#define BUS_TARGET_INTERFACE \
|
||||||
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE
|
" <interface name=\"org.freedesktop.systemd1.Target\">\n" \
|
||||||
"<node>"
|
" </interface>\n"
|
||||||
BUS_UNIT_INTERFACE
|
|
||||||
BUS_PROPERTIES_INTERFACE
|
#define INTROSPECTION \
|
||||||
" <interface name=\"org.freedesktop.systemd1.Target\">"
|
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE \
|
||||||
" </interface>"
|
"<node>\n" \
|
||||||
BUS_INTROSPECTABLE_INTERFACE
|
BUS_UNIT_INTERFACE \
|
||||||
"</node>";
|
BUS_TARGET_INTERFACE \
|
||||||
|
BUS_PROPERTIES_INTERFACE \
|
||||||
|
BUS_INTROSPECTABLE_INTERFACE \
|
||||||
|
"</node>\n"
|
||||||
|
|
||||||
|
const char bus_target_interface[] = BUS_TARGET_INTERFACE;
|
||||||
|
|
||||||
DBusHandlerResult bus_target_message_handler(Unit *u, DBusMessage *message) {
|
DBusHandlerResult bus_target_message_handler(Unit *u, DBusMessage *message) {
|
||||||
const BusProperty properties[] = {
|
const BusProperty properties[] = {
|
||||||
@@ -38,5 +43,5 @@ DBusHandlerResult bus_target_message_handler(Unit *u, DBusMessage *message) {
|
|||||||
{ NULL, NULL, NULL, NULL, NULL }
|
{ NULL, NULL, NULL, NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
return bus_default_message_handler(u->meta.manager, message, introspection, properties);
|
return bus_default_message_handler(u->meta.manager, message, INTROSPECTION, properties);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,4 +28,6 @@
|
|||||||
|
|
||||||
DBusHandlerResult bus_target_message_handler(Unit *u, DBusMessage *message);
|
DBusHandlerResult bus_target_message_handler(Unit *u, DBusMessage *message);
|
||||||
|
|
||||||
|
extern const char bus_target_interface[];
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -25,6 +25,8 @@
|
|||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "dbus-unit.h"
|
#include "dbus-unit.h"
|
||||||
|
|
||||||
|
const char bus_unit_interface[] = BUS_UNIT_INTERFACE;
|
||||||
|
|
||||||
int bus_unit_append_names(Manager *m, DBusMessageIter *i, const char *property, void *data) {
|
int bus_unit_append_names(Manager *m, DBusMessageIter *i, const char *property, void *data) {
|
||||||
char *t;
|
char *t;
|
||||||
Iterator j;
|
Iterator j;
|
||||||
|
|||||||
+50
-48
@@ -27,54 +27,54 @@
|
|||||||
#include "manager.h"
|
#include "manager.h"
|
||||||
|
|
||||||
#define BUS_UNIT_INTERFACE \
|
#define BUS_UNIT_INTERFACE \
|
||||||
" <interface name=\"org.freedesktop.systemd1.Unit\">" \
|
" <interface name=\"org.freedesktop.systemd1.Unit\">\n" \
|
||||||
" <method name=\"Start\">" \
|
" <method name=\"Start\">\n" \
|
||||||
" <arg name=\"mode\" type=\"s\" direction=\"in\"/>" \
|
" <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \
|
||||||
" <arg name=\"job\" type=\"o\" direction=\"out\"/>" \
|
" <arg name=\"job\" type=\"o\" direction=\"out\"/>\n" \
|
||||||
" </method>" \
|
" </method>\n" \
|
||||||
" <method name=\"Stop\">" \
|
" <method name=\"Stop\">\n" \
|
||||||
" <arg name=\"mode\" type=\"s\" direction=\"in\"/>" \
|
" <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \
|
||||||
" <arg name=\"job\" type=\"o\" direction=\"out\"/>" \
|
" <arg name=\"job\" type=\"o\" direction=\"out\"/>\n" \
|
||||||
" </method>" \
|
" </method>\n" \
|
||||||
" <method name=\"Restart\">" \
|
" <method name=\"Restart\">\n" \
|
||||||
" <arg name=\"mode\" type=\"s\" direction=\"in\"/>" \
|
" <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \
|
||||||
" <arg name=\"job\" type=\"o\" direction=\"out\"/>" \
|
" <arg name=\"job\" type=\"o\" direction=\"out\"/>\n" \
|
||||||
" </method>" \
|
" </method>\n" \
|
||||||
" <method name=\"Reload\">" \
|
" <method name=\"Reload\">\n" \
|
||||||
" <arg name=\"mode\" type=\"s\" direction=\"in\"/>" \
|
" <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \
|
||||||
" <arg name=\"job\" type=\"o\" direction=\"out\"/>" \
|
" <arg name=\"job\" type=\"o\" direction=\"out\"/>\n" \
|
||||||
" </method>" \
|
" </method>\n" \
|
||||||
" <signal name=\"Changed\"/>" \
|
" <signal name=\"Changed\"/>\n" \
|
||||||
" <property name=\"Id\" type=\"s\" access=\"read\"/>" \
|
" <property name=\"Id\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <property name=\"Names\" type=\"as\" access=\"read\"/>" \
|
" <property name=\"Names\" type=\"as\" access=\"read\"/>\n" \
|
||||||
" <property name=\"Requires\" type=\"as\" access=\"read\"/>" \
|
" <property name=\"Requires\" type=\"as\" access=\"read\"/>\n" \
|
||||||
" <property name=\"RequiresOverridable\" type=\"as\" access=\"read\"/>" \
|
" <property name=\"RequiresOverridable\" type=\"as\" access=\"read\"/>\n" \
|
||||||
" <property name=\"Requisite\" type=\"as\" access=\"read\"/>" \
|
" <property name=\"Requisite\" type=\"as\" access=\"read\"/>\n" \
|
||||||
" <property name=\"RequisiteOverridable\" type=\"as\" access=\"read\"/>" \
|
" <property name=\"RequisiteOverridable\" type=\"as\" access=\"read\"/>\n" \
|
||||||
" <property name=\"Wants\" type=\"as\" access=\"read\"/>" \
|
" <property name=\"Wants\" type=\"as\" access=\"read\"/>\n" \
|
||||||
" <property name=\"RequiredBy\" type=\"as\" access=\"read\"/>" \
|
" <property name=\"RequiredBy\" type=\"as\" access=\"read\"/>\n" \
|
||||||
" <property name=\"RequiredByOverridable\" type=\"as\" access=\"read\"/>" \
|
" <property name=\"RequiredByOverridable\" type=\"as\" access=\"read\"/>\n" \
|
||||||
" <property name=\"WantedBy\" type=\"as\" access=\"read\"/>" \
|
" <property name=\"WantedBy\" type=\"as\" access=\"read\"/>\n" \
|
||||||
" <property name=\"Conflicts\" type=\"as\" access=\"read\"/>" \
|
" <property name=\"Conflicts\" type=\"as\" access=\"read\"/>\n" \
|
||||||
" <property name=\"Before\" type=\"as\" access=\"read\"/>" \
|
" <property name=\"Before\" type=\"as\" access=\"read\"/>\n" \
|
||||||
" <property name=\"After\" type=\"as\" access=\"read\"/>" \
|
" <property name=\"After\" type=\"as\" access=\"read\"/>\n" \
|
||||||
" <property name=\"Description\" type=\"s\" access=\"read\"/>" \
|
" <property name=\"Description\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <property name=\"LoadState\" type=\"s\" access=\"read\"/>" \
|
" <property name=\"LoadState\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <property name=\"ActiveState\" type=\"s\" access=\"read\"/>" \
|
" <property name=\"ActiveState\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <property name=\"SubState\" type=\"s\" access=\"read\"/>" \
|
" <property name=\"SubState\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <property name=\"FragmentPath\" type=\"s\" access=\"read\"/>" \
|
" <property name=\"FragmentPath\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <property name=\"InactiveExitTimestamp\" type=\"t\" access=\"read\"/>" \
|
" <property name=\"InactiveExitTimestamp\" type=\"t\" access=\"read\"/>\n" \
|
||||||
" <property name=\"ActiveEnterTimestamp\" type=\"t\" access=\"read\"/>" \
|
" <property name=\"ActiveEnterTimestamp\" type=\"t\" access=\"read\"/>\n" \
|
||||||
" <property name=\"ActiveExitTimestamp\" type=\"t\" access=\"read\"/>" \
|
" <property name=\"ActiveExitTimestamp\" type=\"t\" access=\"read\"/>\n" \
|
||||||
" <property name=\"InactiveEnterTimestamp\" type=\"t\" access=\"read\"/>" \
|
" <property name=\"InactiveEnterTimestamp\" type=\"t\" access=\"read\"/>\n" \
|
||||||
" <property name=\"CanReload\" type=\"b\" access=\"read\"/>" \
|
" <property name=\"CanReload\" type=\"b\" access=\"read\"/>\n" \
|
||||||
" <property name=\"CanStart\" type=\"b\" access=\"read\"/>" \
|
" <property name=\"CanStart\" type=\"b\" access=\"read\"/>\n" \
|
||||||
" <property name=\"Job\" type=\"(uo)\" access=\"read\"/>" \
|
" <property name=\"Job\" type=\"(uo)\" access=\"read\"/>\n" \
|
||||||
" <property name=\"RecursiveStop\" type=\"b\" access=\"read\"/>" \
|
" <property name=\"RecursiveStop\" type=\"b\" access=\"read\"/>\n" \
|
||||||
" <property name=\"StopWhenUneeded\" type=\"b\" access=\"read\"/>" \
|
" <property name=\"StopWhenUneeded\" type=\"b\" access=\"read\"/>\n" \
|
||||||
" <property name=\"DefaultControlGroup\" type=\"s\" access=\"read\"/>" \
|
" <property name=\"DefaultControlGroup\" type=\"s\" access=\"read\"/>\n" \
|
||||||
" <property name=\"ControlGroups\" type=\"as\" access=\"read\"/>" \
|
" <property name=\"ControlGroups\" type=\"as\" access=\"read\"/>\n" \
|
||||||
" </interface>"
|
" </interface>\n"
|
||||||
|
|
||||||
#define BUS_UNIT_PROPERTIES \
|
#define BUS_UNIT_PROPERTIES \
|
||||||
{ "org.freedesktop.systemd1.Unit", "Id", bus_property_append_string, "s", u->meta.id }, \
|
{ "org.freedesktop.systemd1.Unit", "Id", bus_property_append_string, "s", u->meta.id }, \
|
||||||
@@ -125,4 +125,6 @@ void bus_unit_send_removed_signal(Unit *u);
|
|||||||
|
|
||||||
extern const DBusObjectPathVTable bus_unit_vtable;
|
extern const DBusObjectPathVTable bus_unit_vtable;
|
||||||
|
|
||||||
|
extern const char bus_unit_interface[];
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+28
@@ -32,6 +32,34 @@
|
|||||||
#include "dbus-unit.h"
|
#include "dbus-unit.h"
|
||||||
#include "dbus-job.h"
|
#include "dbus-job.h"
|
||||||
#include "dbus-manager.h"
|
#include "dbus-manager.h"
|
||||||
|
#include "dbus-service.h"
|
||||||
|
#include "dbus-socket.h"
|
||||||
|
#include "dbus-target.h"
|
||||||
|
#include "dbus-device.h"
|
||||||
|
#include "dbus-mount.h"
|
||||||
|
#include "dbus-automount.h"
|
||||||
|
#include "dbus-snapshot.h"
|
||||||
|
#include "dbus-swap.h"
|
||||||
|
|
||||||
|
static const char bus_properties_interface[] = BUS_PROPERTIES_INTERFACE;
|
||||||
|
static const char bus_introspectable_interface[] = BUS_INTROSPECTABLE_INTERFACE;
|
||||||
|
|
||||||
|
const char *const bus_interface_table[] = {
|
||||||
|
"org.freedesktop.DBus.Properties", bus_properties_interface,
|
||||||
|
"org.freedesktop.DBus.Introspectable", bus_introspectable_interface,
|
||||||
|
"org.freedesktop.systemd1.Manager", bus_manager_interface,
|
||||||
|
"org.freedesktop.systemd1.Job", bus_job_interface,
|
||||||
|
"org.freedesktop.systemd1.Unit", bus_unit_interface,
|
||||||
|
"org.freedesktop.systemd1.Service", bus_service_interface,
|
||||||
|
"org.freedesktop.systemd1.Socket", bus_socket_interface,
|
||||||
|
"org.freedesktop.systemd1.Target", bus_target_interface,
|
||||||
|
"org.freedesktop.systemd1.Device", bus_device_interface,
|
||||||
|
"org.freedesktop.systemd1.Mount", bus_mount_interface,
|
||||||
|
"org.freedesktop.systemd1.Automount", bus_automount_interface,
|
||||||
|
"org.freedesktop.systemd1.Snapshot", bus_snapshot_interface,
|
||||||
|
"org.freedesktop.systemd1.Swap", bus_swap_interface,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
static void api_bus_dispatch_status(DBusConnection *bus, DBusDispatchStatus status, void *data) {
|
static void api_bus_dispatch_status(DBusConnection *bus, DBusDispatchStatus status, void *data) {
|
||||||
Manager *m = data;
|
Manager *m = data;
|
||||||
|
|||||||
+18
-16
@@ -37,24 +37,24 @@ typedef struct BusProperty {
|
|||||||
} BusProperty;
|
} BusProperty;
|
||||||
|
|
||||||
#define BUS_PROPERTIES_INTERFACE \
|
#define BUS_PROPERTIES_INTERFACE \
|
||||||
" <interface name=\"org.freedesktop.DBus.Properties\">" \
|
" <interface name=\"org.freedesktop.DBus.Properties\">\n" \
|
||||||
" <method name=\"Get\">" \
|
" <method name=\"Get\">\n" \
|
||||||
" <arg name=\"interface\" direction=\"in\" type=\"s\"/>" \
|
" <arg name=\"interface\" direction=\"in\" type=\"s\"/>\n" \
|
||||||
" <arg name=\"property\" direction=\"in\" type=\"s\"/>" \
|
" <arg name=\"property\" direction=\"in\" type=\"s\"/>\n" \
|
||||||
" <arg name=\"value\" direction=\"out\" type=\"v\"/>" \
|
" <arg name=\"value\" direction=\"out\" type=\"v\"/>\n" \
|
||||||
" </method>" \
|
" </method>\n" \
|
||||||
" <method name=\"GetAll\">" \
|
" <method name=\"GetAll\">\n" \
|
||||||
" <arg name=\"interface\" direction=\"in\" type=\"s\"/>" \
|
" <arg name=\"interface\" direction=\"in\" type=\"s\"/>\n" \
|
||||||
" <arg name=\"properties\" direction=\"out\" type=\"a{sv}\"/>" \
|
" <arg name=\"properties\" direction=\"out\" type=\"a{sv}\"/>\n" \
|
||||||
" </method>" \
|
" </method>\n" \
|
||||||
" </interface>"
|
" </interface>\n"
|
||||||
|
|
||||||
#define BUS_INTROSPECTABLE_INTERFACE \
|
#define BUS_INTROSPECTABLE_INTERFACE \
|
||||||
" <interface name=\"org.freedesktop.DBus.Introspectable\">" \
|
" <interface name=\"org.freedesktop.DBus.Introspectable\">\n" \
|
||||||
" <method name=\"Introspect\">" \
|
" <method name=\"Introspect\">\n" \
|
||||||
" <arg name=\"data\" type=\"s\" direction=\"out\"/>" \
|
" <arg name=\"data\" type=\"s\" direction=\"out\"/>\n" \
|
||||||
" </method>" \
|
" </method>\n" \
|
||||||
" </interface>"
|
" </interface>\n"
|
||||||
|
|
||||||
int bus_init_system(Manager *m);
|
int bus_init_system(Manager *m);
|
||||||
int bus_init_api(Manager *m);
|
int bus_init_api(Manager *m);
|
||||||
@@ -104,4 +104,6 @@ int bus_property_append_uint64(Manager *m, DBusMessageIter *i, const char *prope
|
|||||||
|
|
||||||
int bus_parse_strv(DBusMessage *m, char ***_l);
|
int bus_parse_strv(DBusMessage *m, char ***_l);
|
||||||
|
|
||||||
|
extern const char * const bus_interface_table[];
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+31
-3
@@ -45,7 +45,8 @@ static enum {
|
|||||||
ACTION_RUN,
|
ACTION_RUN,
|
||||||
ACTION_HELP,
|
ACTION_HELP,
|
||||||
ACTION_TEST,
|
ACTION_TEST,
|
||||||
ACTION_DUMP_CONFIGURATION_ITEMS
|
ACTION_DUMP_CONFIGURATION_ITEMS,
|
||||||
|
ACTION_DONE
|
||||||
} action = ACTION_RUN;
|
} action = ACTION_RUN;
|
||||||
|
|
||||||
static char *default_unit = NULL;
|
static char *default_unit = NULL;
|
||||||
@@ -347,7 +348,8 @@ static int parse_argv(int argc, char *argv[]) {
|
|||||||
ARG_TEST,
|
ARG_TEST,
|
||||||
ARG_DUMP_CONFIGURATION_ITEMS,
|
ARG_DUMP_CONFIGURATION_ITEMS,
|
||||||
ARG_CONFIRM_SPAWN,
|
ARG_CONFIRM_SPAWN,
|
||||||
ARG_DESERIALIZE
|
ARG_DESERIALIZE,
|
||||||
|
ARG_INTROSPECT
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct option options[] = {
|
static const struct option options[] = {
|
||||||
@@ -360,6 +362,7 @@ static int parse_argv(int argc, char *argv[]) {
|
|||||||
{ "dump-configuration-items", no_argument, NULL, ARG_DUMP_CONFIGURATION_ITEMS },
|
{ "dump-configuration-items", no_argument, NULL, ARG_DUMP_CONFIGURATION_ITEMS },
|
||||||
{ "confirm-spawn", no_argument, NULL, ARG_CONFIRM_SPAWN },
|
{ "confirm-spawn", no_argument, NULL, ARG_CONFIRM_SPAWN },
|
||||||
{ "deserialize", required_argument, NULL, ARG_DESERIALIZE },
|
{ "deserialize", required_argument, NULL, ARG_DESERIALIZE },
|
||||||
|
{ "introspect", optional_argument, NULL, ARG_INTROSPECT },
|
||||||
{ NULL, 0, NULL, 0 }
|
{ NULL, 0, NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -444,6 +447,27 @@ static int parse_argv(int argc, char *argv[]) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case ARG_INTROSPECT: {
|
||||||
|
const char * const * i = NULL;
|
||||||
|
|
||||||
|
for (i = bus_interface_table; *i; i += 2)
|
||||||
|
if (!optarg || streq(i[0], optarg)) {
|
||||||
|
fputs(DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE
|
||||||
|
"<node>\n", stdout);
|
||||||
|
fputs(i[1], stdout);
|
||||||
|
fputs("</node>\n", stdout);
|
||||||
|
|
||||||
|
if (optarg)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!i[0] && optarg)
|
||||||
|
log_error("Unknown interface %s.", optarg);
|
||||||
|
|
||||||
|
action = ACTION_DONE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case 'h':
|
case 'h':
|
||||||
action = ACTION_HELP;
|
action = ACTION_HELP;
|
||||||
break;
|
break;
|
||||||
@@ -478,7 +502,8 @@ static int help(void) {
|
|||||||
" --running-as=AS Set running as (init, system, session)\n"
|
" --running-as=AS Set running as (init, system, session)\n"
|
||||||
" --test Determine startup sequence, dump it and exit\n"
|
" --test Determine startup sequence, dump it and exit\n"
|
||||||
" --dump-configuration-items Dump understood unit configuration items\n"
|
" --dump-configuration-items Dump understood unit configuration items\n"
|
||||||
" --confirm-spawn Ask for confirmation when spawning processes\n",
|
" --confirm-spawn Ask for confirmation when spawning processes\n"
|
||||||
|
" --introspect[=INTERFACE] Extract D-Bus interface data\n",
|
||||||
__progname);
|
__progname);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -582,6 +607,9 @@ int main(int argc, char *argv[]) {
|
|||||||
unit_dump_config_items(stdout);
|
unit_dump_config_items(stdout);
|
||||||
retval = 0;
|
retval = 0;
|
||||||
goto finish;
|
goto finish;
|
||||||
|
} else if (action == ACTION_DONE) {
|
||||||
|
retval = 0;
|
||||||
|
goto finish;
|
||||||
}
|
}
|
||||||
|
|
||||||
assert_se(action == ACTION_RUN || action == ACTION_TEST);
|
assert_se(action == ACTION_RUN || action == ACTION_TEST);
|
||||||
|
|||||||
Reference in New Issue
Block a user