1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
2 #pragma once
3 
4 typedef struct Automount Automount;
5 
6 #include "unit.h"
7 
8 typedef enum AutomountResult {
9         AUTOMOUNT_SUCCESS,
10         AUTOMOUNT_FAILURE_RESOURCES,
11         AUTOMOUNT_FAILURE_UNMOUNTED,
12         AUTOMOUNT_FAILURE_START_LIMIT_HIT,
13         AUTOMOUNT_FAILURE_MOUNT_START_LIMIT_HIT,
14         _AUTOMOUNT_RESULT_MAX,
15         _AUTOMOUNT_RESULT_INVALID = -EINVAL,
16 } AutomountResult;
17 
18 struct Automount {
19         Unit meta;
20 
21         AutomountState state, deserialized_state;
22 
23         char *where;
24         char *extra_options;
25         usec_t timeout_idle_usec;
26 
27         int pipe_fd;
28         sd_event_source *pipe_event_source;
29         mode_t directory_mode;
30         dev_t dev_id;
31 
32         Set *tokens;
33         Set *expire_tokens;
34 
35         sd_event_source *expire_event_source;
36 
37         AutomountResult result;
38 };
39 
40 extern const UnitVTable automount_vtable;
41 
42 const char* automount_result_to_string(AutomountResult i) _const_;
43 AutomountResult automount_result_from_string(const char *s) _pure_;
44 
45 DEFINE_CAST(AUTOMOUNT, Automount);
46