1 /* SPDX-License-Identifier: LGPL-2.1+ */
7 #include "signal-util.h"
9 static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_kill_mode
, kill_mode
, KillMode
);
11 const sd_bus_vtable bus_kill_vtable
[] = {
12 SD_BUS_VTABLE_START(0),
13 SD_BUS_PROPERTY("KillMode", "s", property_get_kill_mode
, offsetof(KillContext
, kill_mode
), SD_BUS_VTABLE_PROPERTY_CONST
),
14 SD_BUS_PROPERTY("KillSignal", "i", bus_property_get_int
, offsetof(KillContext
, kill_signal
), SD_BUS_VTABLE_PROPERTY_CONST
),
15 SD_BUS_PROPERTY("FinalKillSignal", "i", bus_property_get_int
, offsetof(KillContext
, final_kill_signal
), SD_BUS_VTABLE_PROPERTY_CONST
),
16 SD_BUS_PROPERTY("SendSIGKILL", "b", bus_property_get_bool
, offsetof(KillContext
, send_sigkill
), SD_BUS_VTABLE_PROPERTY_CONST
),
17 SD_BUS_PROPERTY("SendSIGHUP", "b", bus_property_get_bool
, offsetof(KillContext
, send_sighup
), SD_BUS_VTABLE_PROPERTY_CONST
),
18 SD_BUS_PROPERTY("WatchdogSignal", "i", bus_property_get_int
, offsetof(KillContext
, watchdog_signal
), SD_BUS_VTABLE_PROPERTY_CONST
),
22 static BUS_DEFINE_SET_TRANSIENT_PARSE(kill_mode
, KillMode
, kill_mode_from_string
);
23 static BUS_DEFINE_SET_TRANSIENT_TO_STRING(kill_signal
, "i", int32_t, int, "%" PRIi32
, signal_to_string_with_check
);
24 static BUS_DEFINE_SET_TRANSIENT_TO_STRING(final_kill_signal
, "i", int32_t, int, "%" PRIi32
, signal_to_string_with_check
);
25 static BUS_DEFINE_SET_TRANSIENT_TO_STRING(watchdog_signal
, "i", int32_t, int, "%" PRIi32
, signal_to_string_with_check
);
27 int bus_kill_context_set_transient_property(
31 sd_bus_message
*message
,
33 sd_bus_error
*error
) {
40 flags
|= UNIT_PRIVATE
;
42 if (streq(name
, "KillMode"))
43 return bus_set_transient_kill_mode(u
, name
, &c
->kill_mode
, message
, flags
, error
);
45 if (streq(name
, "SendSIGHUP"))
46 return bus_set_transient_bool(u
, name
, &c
->send_sighup
, message
, flags
, error
);
48 if (streq(name
, "SendSIGKILL"))
49 return bus_set_transient_bool(u
, name
, &c
->send_sigkill
, message
, flags
, error
);
51 if (streq(name
, "KillSignal"))
52 return bus_set_transient_kill_signal(u
, name
, &c
->kill_signal
, message
, flags
, error
);
54 if (streq(name
, "FinalKillSignal"))
55 return bus_set_transient_final_kill_signal(u
, name
, &c
->final_kill_signal
, message
, flags
, error
);
57 if (streq(name
, "WatchdogSignal"))
58 return bus_set_transient_watchdog_signal(u
, name
, &c
->watchdog_signal
, message
, flags
, error
);