1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
4 #include "conf-parser.h"
7 /* These functions are declared in the header to make them accessible to unit tests. */
8 bool contains_instance_specifier_superset(const char *s
);
9 int unit_is_likely_recursive_template_dependency(Unit
*u
, const char *name
, const char *format
);
11 /* Config-parsing helpers relevant only for sources under src/core/ */
12 int parse_crash_chvt(const char *value
, int *data
);
13 int parse_confirm_spawn(const char *value
, char **console
);
15 int hashmap_put_credential(Hashmap
**h
, const char *id
, const char *path
, bool encrypted
);
17 /* Read service data from .desktop file style configuration fragments */
19 int unit_load_fragment(Unit
*u
);
21 void unit_dump_config_items(FILE *f
);
23 CONFIG_PARSER_PROTOTYPE(config_parse_unit_deps
);
24 CONFIG_PARSER_PROTOTYPE(config_parse_obsolete_unit_deps
);
25 CONFIG_PARSER_PROTOTYPE(config_parse_unit_string_printf
);
26 CONFIG_PARSER_PROTOTYPE(config_parse_reboot_parameter
);
27 CONFIG_PARSER_PROTOTYPE(config_parse_unit_strv_printf
);
28 CONFIG_PARSER_PROTOTYPE(config_parse_unit_path_printf
);
29 CONFIG_PARSER_PROTOTYPE(config_parse_colon_separated_paths
);
30 CONFIG_PARSER_PROTOTYPE(config_parse_unit_path_strv_printf
);
31 CONFIG_PARSER_PROTOTYPE(config_parse_documentation
);
32 CONFIG_PARSER_PROTOTYPE(config_parse_socket_listen
);
33 CONFIG_PARSER_PROTOTYPE(config_parse_socket_protocol
);
34 CONFIG_PARSER_PROTOTYPE(config_parse_socket_bind
);
35 CONFIG_PARSER_PROTOTYPE(config_parse_exec_nice
);
36 CONFIG_PARSER_PROTOTYPE(config_parse_exec_oom_score_adjust
);
37 CONFIG_PARSER_PROTOTYPE(config_parse_exec_coredump_filter
);
38 CONFIG_PARSER_PROTOTYPE(config_parse_exec
);
39 CONFIG_PARSER_PROTOTYPE(config_parse_service_timeout
);
40 CONFIG_PARSER_PROTOTYPE(config_parse_service_timeout_abort
);
41 CONFIG_PARSER_PROTOTYPE(config_parse_service_timeout_failure_mode
);
42 CONFIG_PARSER_PROTOTYPE(config_parse_service_type
);
43 CONFIG_PARSER_PROTOTYPE(config_parse_service_exit_type
);
44 CONFIG_PARSER_PROTOTYPE(config_parse_service_restart
);
45 CONFIG_PARSER_PROTOTYPE(config_parse_service_restart_mode
);
46 CONFIG_PARSER_PROTOTYPE(config_parse_socket_bindtodevice
);
47 CONFIG_PARSER_PROTOTYPE(config_parse_exec_output
);
48 CONFIG_PARSER_PROTOTYPE(config_parse_exec_input
);
49 CONFIG_PARSER_PROTOTYPE(config_parse_exec_input_text
);
50 CONFIG_PARSER_PROTOTYPE(config_parse_exec_input_data
);
51 CONFIG_PARSER_PROTOTYPE(config_parse_exec_io_class
);
52 CONFIG_PARSER_PROTOTYPE(config_parse_exec_io_priority
);
53 CONFIG_PARSER_PROTOTYPE(config_parse_exec_cpu_sched_policy
);
54 CONFIG_PARSER_PROTOTYPE(config_parse_exec_cpu_sched_prio
);
55 CONFIG_PARSER_PROTOTYPE(config_parse_exec_cpu_affinity
);
56 CONFIG_PARSER_PROTOTYPE(config_parse_exec_mount_apivfs
);
57 CONFIG_PARSER_PROTOTYPE(config_parse_exec_secure_bits
);
58 CONFIG_PARSER_PROTOTYPE(config_parse_root_image_options
);
59 CONFIG_PARSER_PROTOTYPE(config_parse_exec_root_hash
);
60 CONFIG_PARSER_PROTOTYPE(config_parse_exec_root_hash_sig
);
61 CONFIG_PARSER_PROTOTYPE(config_parse_capability_set
);
62 CONFIG_PARSER_PROTOTYPE(config_parse_exec_mount_propagation_flag
);
63 CONFIG_PARSER_PROTOTYPE(config_parse_timer
);
64 CONFIG_PARSER_PROTOTYPE(config_parse_trigger_unit
);
65 CONFIG_PARSER_PROTOTYPE(config_parse_path_spec
);
66 CONFIG_PARSER_PROTOTYPE(config_parse_socket_service
);
67 CONFIG_PARSER_PROTOTYPE(config_parse_service_sockets
);
68 CONFIG_PARSER_PROTOTYPE(config_parse_unit_env_file
);
69 CONFIG_PARSER_PROTOTYPE(config_parse_ip_tos
);
70 CONFIG_PARSER_PROTOTYPE(config_parse_unit_condition_path
);
71 CONFIG_PARSER_PROTOTYPE(config_parse_unit_condition_string
);
72 CONFIG_PARSER_PROTOTYPE(config_parse_kill_mode
);
73 CONFIG_PARSER_PROTOTYPE(config_parse_notify_access
);
74 CONFIG_PARSER_PROTOTYPE(config_parse_emergency_action
);
75 CONFIG_PARSER_PROTOTYPE(config_parse_unit_mounts_for
);
76 CONFIG_PARSER_PROTOTYPE(config_parse_syscall_filter
);
77 CONFIG_PARSER_PROTOTYPE(config_parse_syscall_archs
);
78 CONFIG_PARSER_PROTOTYPE(config_parse_syscall_errno
);
79 CONFIG_PARSER_PROTOTYPE(config_parse_syscall_log
);
80 CONFIG_PARSER_PROTOTYPE(config_parse_environ
);
81 CONFIG_PARSER_PROTOTYPE(config_parse_pass_environ
);
82 CONFIG_PARSER_PROTOTYPE(config_parse_unset_environ
);
83 CONFIG_PARSER_PROTOTYPE(config_parse_unit_slice
);
84 CONFIG_PARSER_PROTOTYPE(config_parse_cg_weight
);
85 CONFIG_PARSER_PROTOTYPE(config_parse_cg_cpu_weight
);
86 CONFIG_PARSER_PROTOTYPE(config_parse_cpu_shares
);
87 CONFIG_PARSER_PROTOTYPE(config_parse_memory_limit
);
88 CONFIG_PARSER_PROTOTYPE(config_parse_tasks_max
);
89 CONFIG_PARSER_PROTOTYPE(config_parse_delegate
);
90 CONFIG_PARSER_PROTOTYPE(config_parse_delegate_subgroup
);
91 CONFIG_PARSER_PROTOTYPE(config_parse_managed_oom_mode
);
92 CONFIG_PARSER_PROTOTYPE(config_parse_managed_oom_mem_pressure_limit
);
93 CONFIG_PARSER_PROTOTYPE(config_parse_managed_oom_preference
);
94 CONFIG_PARSER_PROTOTYPE(config_parse_device_policy
);
95 CONFIG_PARSER_PROTOTYPE(config_parse_device_allow
);
96 CONFIG_PARSER_PROTOTYPE(config_parse_io_device_latency
);
97 CONFIG_PARSER_PROTOTYPE(config_parse_io_device_weight
);
98 CONFIG_PARSER_PROTOTYPE(config_parse_io_limit
);
99 CONFIG_PARSER_PROTOTYPE(config_parse_blockio_weight
);
100 CONFIG_PARSER_PROTOTYPE(config_parse_blockio_device_weight
);
101 CONFIG_PARSER_PROTOTYPE(config_parse_blockio_bandwidth
);
102 CONFIG_PARSER_PROTOTYPE(config_parse_job_mode
);
103 CONFIG_PARSER_PROTOTYPE(config_parse_job_mode_isolate
);
104 CONFIG_PARSER_PROTOTYPE(config_parse_exec_selinux_context
);
105 CONFIG_PARSER_PROTOTYPE(config_parse_exec_apparmor_profile
);
106 CONFIG_PARSER_PROTOTYPE(config_parse_exec_smack_process_label
);
107 CONFIG_PARSER_PROTOTYPE(config_parse_address_families
);
108 CONFIG_PARSER_PROTOTYPE(config_parse_exec_preserve_mode
);
109 CONFIG_PARSER_PROTOTYPE(config_parse_exec_directories
);
110 CONFIG_PARSER_PROTOTYPE(config_parse_set_credential
);
111 CONFIG_PARSER_PROTOTYPE(config_parse_load_credential
);
112 CONFIG_PARSER_PROTOTYPE(config_parse_import_credential
);
113 CONFIG_PARSER_PROTOTYPE(config_parse_set_status
);
114 CONFIG_PARSER_PROTOTYPE(config_parse_namespace_path_strv
);
115 CONFIG_PARSER_PROTOTYPE(config_parse_temporary_filesystems
);
116 CONFIG_PARSER_PROTOTYPE(config_parse_cpu_quota
);
117 CONFIG_PARSER_PROTOTYPE(config_parse_allowed_cpuset
);
118 CONFIG_PARSER_PROTOTYPE(config_parse_protect_home
);
119 CONFIG_PARSER_PROTOTYPE(config_parse_protect_system
);
120 CONFIG_PARSER_PROTOTYPE(config_parse_bus_name
);
121 CONFIG_PARSER_PROTOTYPE(config_parse_exec_utmp_mode
);
122 CONFIG_PARSER_PROTOTYPE(config_parse_working_directory
);
123 CONFIG_PARSER_PROTOTYPE(config_parse_fdname
);
124 CONFIG_PARSER_PROTOTYPE(config_parse_user_group_compat
);
125 CONFIG_PARSER_PROTOTYPE(config_parse_user_group_strv_compat
);
126 CONFIG_PARSER_PROTOTYPE(config_parse_restrict_namespaces
);
127 CONFIG_PARSER_PROTOTYPE(config_parse_restrict_filesystems
);
128 CONFIG_PARSER_PROTOTYPE(config_parse_bind_paths
);
129 CONFIG_PARSER_PROTOTYPE(config_parse_exec_keyring_mode
);
130 CONFIG_PARSER_PROTOTYPE(config_parse_protect_proc
);
131 CONFIG_PARSER_PROTOTYPE(config_parse_proc_subset
);
132 CONFIG_PARSER_PROTOTYPE(config_parse_job_timeout_sec
);
133 CONFIG_PARSER_PROTOTYPE(config_parse_job_running_timeout_sec
);
134 CONFIG_PARSER_PROTOTYPE(config_parse_log_extra_fields
);
135 CONFIG_PARSER_PROTOTYPE(config_parse_log_namespace
);
136 CONFIG_PARSER_PROTOTYPE(config_parse_collect_mode
);
137 CONFIG_PARSER_PROTOTYPE(config_parse_pid_file
);
138 CONFIG_PARSER_PROTOTYPE(config_parse_exit_status
);
139 CONFIG_PARSER_PROTOTYPE(config_parse_disable_controllers
);
140 CONFIG_PARSER_PROTOTYPE(config_parse_oom_policy
);
141 CONFIG_PARSER_PROTOTYPE(config_parse_numa_policy
);
142 CONFIG_PARSER_PROTOTYPE(config_parse_numa_mask
);
143 CONFIG_PARSER_PROTOTYPE(config_parse_ip_filter_bpf_progs
);
144 CONFIG_PARSER_PROTOTYPE(config_parse_cpu_affinity2
);
145 CONFIG_PARSER_PROTOTYPE(config_parse_show_status
);
146 CONFIG_PARSER_PROTOTYPE(config_parse_status_unit_format
);
147 CONFIG_PARSER_PROTOTYPE(config_parse_output_restricted
);
148 CONFIG_PARSER_PROTOTYPE(config_parse_crash_chvt
);
149 CONFIG_PARSER_PROTOTYPE(config_parse_timeout_abort
);
150 CONFIG_PARSER_PROTOTYPE(config_parse_swap_priority
);
151 CONFIG_PARSER_PROTOTYPE(config_parse_mount_images
);
152 CONFIG_PARSER_PROTOTYPE(config_parse_socket_timestamping
);
153 CONFIG_PARSER_PROTOTYPE(config_parse_extension_images
);
154 CONFIG_PARSER_PROTOTYPE(config_parse_bpf_foreign_program
);
155 CONFIG_PARSER_PROTOTYPE(config_parse_cgroup_socket_bind
);
156 CONFIG_PARSER_PROTOTYPE(config_parse_restrict_network_interfaces
);
157 CONFIG_PARSER_PROTOTYPE(config_parse_watchdog_sec
);
158 CONFIG_PARSER_PROTOTYPE(config_parse_tty_size
);
159 CONFIG_PARSER_PROTOTYPE(config_parse_log_filter_patterns
);
160 CONFIG_PARSER_PROTOTYPE(config_parse_open_file
);
161 CONFIG_PARSER_PROTOTYPE(config_parse_memory_pressure_watch
);
162 CONFIG_PARSER_PROTOTYPE(config_parse_cgroup_nft_set
);
163 CONFIG_PARSER_PROTOTYPE(config_parse_mount_node
);
165 /* gperf prototypes */
166 const struct ConfigPerfItem
* load_fragment_gperf_lookup(const char *key
, GPERF_LEN_TYPE length
);
167 extern const char load_fragment_gperf_nulstr
[];