1 /* SPDX-License-Identifier: LGPL-2.1+ */
3 Copyright 2010 Lennart Poettering
8 #include "dbus-automount.h"
10 #include "string-util.h"
12 static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_result
, automount_result
, AutomountResult
);
14 const sd_bus_vtable bus_automount_vtable
[] = {
15 SD_BUS_VTABLE_START(0),
16 SD_BUS_PROPERTY("Where", "s", NULL
, offsetof(Automount
, where
), SD_BUS_VTABLE_PROPERTY_CONST
),
17 SD_BUS_PROPERTY("DirectoryMode", "u", bus_property_get_mode
, offsetof(Automount
, directory_mode
), SD_BUS_VTABLE_PROPERTY_CONST
),
18 SD_BUS_PROPERTY("Result", "s", property_get_result
, offsetof(Automount
, result
), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE
),
19 SD_BUS_PROPERTY("TimeoutIdleUSec", "t", bus_property_get_usec
, offsetof(Automount
, timeout_idle_usec
), SD_BUS_VTABLE_PROPERTY_CONST
),
23 static int bus_automount_set_transient_property(
26 sd_bus_message
*message
,
28 sd_bus_error
*error
) {
36 flags
|= UNIT_PRIVATE
;
38 if (streq(name
, "Where"))
39 return bus_set_transient_path(u
, name
, &a
->where
, message
, flags
, error
);
41 if (streq(name
, "TimeoutIdleUSec"))
42 return bus_set_transient_usec_fix_0(u
, name
, &a
->timeout_idle_usec
, message
, flags
, error
);
44 if (streq(name
, "DirectoryMode"))
45 return bus_set_transient_mode_t(u
, name
, &a
->directory_mode
, message
, flags
, error
);
50 int bus_automount_set_property(
53 sd_bus_message
*message
,
55 sd_bus_error
*error
) {
57 Automount
*a
= AUTOMOUNT(u
);
63 if (u
->transient
&& u
->load_state
== UNIT_STUB
) /* This is a transient unit? let's load a little more */
64 return bus_automount_set_transient_property(a
, name
, message
, flags
, error
);