2011-08-01 00:43:05 +02:00
|
|
|
%{
|
|
|
|
#include <stddef.h>
|
|
|
|
#include "conf-parser.h"
|
|
|
|
#include "load-fragment.h"
|
2011-08-02 07:20:15 +02:00
|
|
|
#include "missing.h"
|
2011-08-01 00:43:05 +02:00
|
|
|
%}
|
|
|
|
struct ConfigPerfItem;
|
|
|
|
%null_strings
|
|
|
|
%language=ANSI-C
|
|
|
|
%define slot-name section_and_lvalue
|
|
|
|
%define hash-function-name load_fragment_gperf_hash
|
|
|
|
%define lookup-function-name load_fragment_gperf_lookup
|
|
|
|
%readonly-tables
|
|
|
|
%omit-struct-type
|
|
|
|
%struct-type
|
|
|
|
%includes
|
|
|
|
%%
|
|
|
|
m4_dnl Define the context options only once
|
|
|
|
m4_define(`EXEC_CONTEXT_CONFIG_ITEMS',
|
2015-09-23 19:46:23 +02:00
|
|
|
`$1.WorkingDirectory, config_parse_working_directory, 0, offsetof($1, exec_context)
|
2017-07-06 19:54:42 +02:00
|
|
|
$1.RootDirectory, config_parse_unit_path_printf, true, offsetof($1, exec_context.root_directory)
|
|
|
|
$1.RootImage, config_parse_unit_path_printf, true, offsetof($1, exec_context.root_image)
|
2016-07-14 12:28:06 +02:00
|
|
|
$1.User, config_parse_user_group, 0, offsetof($1, exec_context.user)
|
|
|
|
$1.Group, config_parse_user_group, 0, offsetof($1, exec_context.group)
|
|
|
|
$1.SupplementaryGroups, config_parse_user_group_strv, 0, offsetof($1, exec_context.supplementary_groups)
|
2011-08-01 00:43:05 +02:00
|
|
|
$1.Nice, config_parse_exec_nice, 0, offsetof($1, exec_context)
|
|
|
|
$1.OOMScoreAdjust, config_parse_exec_oom_score_adjust, 0, offsetof($1, exec_context)
|
|
|
|
$1.IOSchedulingClass, config_parse_exec_io_class, 0, offsetof($1, exec_context)
|
|
|
|
$1.IOSchedulingPriority, config_parse_exec_io_priority, 0, offsetof($1, exec_context)
|
|
|
|
$1.CPUSchedulingPolicy, config_parse_exec_cpu_sched_policy, 0, offsetof($1, exec_context)
|
|
|
|
$1.CPUSchedulingPriority, config_parse_exec_cpu_sched_prio, 0, offsetof($1, exec_context)
|
|
|
|
$1.CPUSchedulingResetOnFork, config_parse_bool, 0, offsetof($1, exec_context.cpu_sched_reset_on_fork)
|
|
|
|
$1.CPUAffinity, config_parse_exec_cpu_affinity, 0, offsetof($1, exec_context)
|
|
|
|
$1.UMask, config_parse_mode, 0, offsetof($1, exec_context.umask)
|
2013-02-11 23:45:59 +01:00
|
|
|
$1.Environment, config_parse_environ, 0, offsetof($1, exec_context.environment)
|
2011-08-01 00:43:05 +02:00
|
|
|
$1.EnvironmentFile, config_parse_unit_env_file, 0, offsetof($1, exec_context.environment_files)
|
2015-09-07 08:06:53 +02:00
|
|
|
$1.PassEnvironment, config_parse_pass_environ, 0, offsetof($1, exec_context.pass_environment)
|
2017-09-10 12:16:44 +02:00
|
|
|
$1.UnsetEnvironment, config_parse_unset_environ, 0, offsetof($1, exec_context.unset_environment)
|
2017-07-06 19:54:42 +02:00
|
|
|
$1.DynamicUser, config_parse_bool, true, offsetof($1, exec_context.dynamic_user)
|
2017-11-10 10:15:55 +01:00
|
|
|
$1.RemoveIPC, config_parse_bool, 0, offsetof($1, exec_context.remove_ipc)
|
2016-10-18 02:05:49 +02:00
|
|
|
$1.StandardInput, config_parse_exec_input, 0, offsetof($1, exec_context)
|
|
|
|
$1.StandardOutput, config_parse_exec_output, 0, offsetof($1, exec_context)
|
|
|
|
$1.StandardError, config_parse_exec_output, 0, offsetof($1, exec_context)
|
2017-10-27 11:33:05 +02:00
|
|
|
$1.StandardInputText, config_parse_exec_input_text, 0, offsetof($1, exec_context)
|
|
|
|
$1.StandardInputData, config_parse_exec_input_data, 0, offsetof($1, exec_context)
|
2011-08-01 00:43:05 +02:00
|
|
|
$1.TTYPath, config_parse_unit_path_printf, 0, offsetof($1, exec_context.tty_path)
|
|
|
|
$1.TTYReset, config_parse_bool, 0, offsetof($1, exec_context.tty_reset)
|
|
|
|
$1.TTYVHangup, config_parse_bool, 0, offsetof($1, exec_context.tty_vhangup)
|
|
|
|
$1.TTYVTDisallocate, config_parse_bool, 0, offsetof($1, exec_context.tty_vt_disallocate)
|
|
|
|
$1.SyslogIdentifier, config_parse_unit_string_printf, 0, offsetof($1, exec_context.syslog_identifier)
|
2014-03-03 21:14:07 +01:00
|
|
|
$1.SyslogFacility, config_parse_log_facility, 0, offsetof($1, exec_context.syslog_priority)
|
|
|
|
$1.SyslogLevel, config_parse_log_level, 0, offsetof($1, exec_context.syslog_priority)
|
2011-08-01 00:43:05 +02:00
|
|
|
$1.SyslogLevelPrefix, config_parse_bool, 0, offsetof($1, exec_context.syslog_level_prefix)
|
core: implement /run/systemd/units/-based path for passing unit info from PID 1 to journald
And let's make use of it to implement two new unit settings with it:
1. LogLevelMax= is a new per-unit setting that may be used to configure
log priority filtering: set it to LogLevelMax=notice and only
messages of level "notice" and lower (i.e. more important) will be
processed, all others are dropped.
2. LogExtraFields= is a new per-unit setting for configuring per-unit
journal fields, that are implicitly included in every log record
generated by the unit's processes. It takes field/value pairs in the
form of FOO=BAR.
Also, related to this, one exisiting unit setting is ported to this new
facility:
3. The invocation ID is now pulled from /run/systemd/units/ instead of
cgroupfs xattrs. This substantially relaxes requirements of systemd
on the kernel version and the privileges it runs with (specifically,
cgroupfs xattrs are not available in containers, since they are
stored in kernel memory, and hence are unsafe to permit to lesser
privileged code).
/run/systemd/units/ is a new directory, which contains a number of files
and symlinks encoding the above information. PID 1 creates and manages
these files, and journald reads them from there.
Note that this is supposed to be a direct path between PID 1 and the
journal only, due to the special runtime environment the journal runs
in. Normally, today we shouldn't introduce new interfaces that (mis-)use
a file system as IPC framework, and instead just an IPC system, but this
is very hard to do between the journal and PID 1, as long as the IPC
system is a subject PID 1 manages, and itself a client to the journal.
This patch cleans up a couple of types used in journal code:
specifically we switch to size_t for a couple of memory-sizing values,
as size_t is the right choice for everything that is memory.
Fixes: #4089
Fixes: #3041
Fixes: #4441
2017-11-02 19:43:32 +01:00
|
|
|
$1.LogLevelMax, config_parse_log_level, 0, offsetof($1, exec_context.log_level_max)
|
|
|
|
$1.LogExtraFields, config_parse_log_extra_fields, 0, offsetof($1, exec_context)
|
2016-02-12 23:29:57 +01:00
|
|
|
$1.Capabilities, config_parse_warn_compat, DISABLED_LEGACY, offsetof($1, exec_context)
|
2011-08-01 00:43:05 +02:00
|
|
|
$1.SecureBits, config_parse_exec_secure_bits, 0, offsetof($1, exec_context)
|
2016-01-07 23:00:04 +01:00
|
|
|
$1.CapabilityBoundingSet, config_parse_capability_set, 0, offsetof($1, exec_context.capability_bounding_set)
|
2015-12-31 13:54:44 +01:00
|
|
|
$1.AmbientCapabilities, config_parse_capability_set, 0, offsetof($1, exec_context.capability_ambient_set)
|
2012-05-31 04:27:03 +02:00
|
|
|
$1.TimerSlackNSec, config_parse_nsec, 0, offsetof($1, exec_context.timer_slack_nsec)
|
2014-05-18 15:43:18 +02:00
|
|
|
$1.NoNewPrivileges, config_parse_no_new_privileges, 0, offsetof($1, exec_context)
|
2017-09-14 21:19:05 +02:00
|
|
|
$1.KeyringMode, config_parse_exec_keyring_mode, 0, offsetof($1, exec_context.keyring_mode)
|
2014-02-12 18:28:21 +01:00
|
|
|
m4_ifdef(`HAVE_SECCOMP',
|
|
|
|
`$1.SystemCallFilter, config_parse_syscall_filter, 0, offsetof($1, exec_context)
|
2014-02-13 01:35:27 +01:00
|
|
|
$1.SystemCallArchitectures, config_parse_syscall_archs, 0, offsetof($1, exec_context.syscall_archs)
|
2014-02-25 20:37:03 +01:00
|
|
|
$1.SystemCallErrorNumber, config_parse_syscall_errno, 0, offsetof($1, exec_context)
|
2016-06-03 17:58:18 +02:00
|
|
|
$1.MemoryDenyWriteExecute, config_parse_bool, 0, offsetof($1, exec_context.memory_deny_write_execute)
|
2016-11-14 09:12:21 +01:00
|
|
|
$1.RestrictNamespaces, config_parse_restrict_namespaces, 0, offsetof($1, exec_context)
|
2016-06-23 01:45:45 +02:00
|
|
|
$1.RestrictRealtime, config_parse_bool, 0, offsetof($1, exec_context.restrict_realtime)
|
2017-07-04 14:48:18 +02:00
|
|
|
$1.RestrictAddressFamilies, config_parse_address_families, 0, offsetof($1, exec_context)
|
|
|
|
$1.LockPersonality, config_parse_bool, 0, offsetof($1, exec_context.lock_personality)',
|
2014-11-30 16:21:49 +01:00
|
|
|
`$1.SystemCallFilter, config_parse_warn_compat, DISABLED_CONFIGURATION, 0
|
|
|
|
$1.SystemCallArchitectures, config_parse_warn_compat, DISABLED_CONFIGURATION, 0
|
|
|
|
$1.SystemCallErrorNumber, config_parse_warn_compat, DISABLED_CONFIGURATION, 0
|
2016-06-03 17:58:18 +02:00
|
|
|
$1.MemoryDenyWriteExecute, config_parse_warn_compat, DISABLED_CONFIGURATION, 0
|
2016-11-02 03:25:19 +01:00
|
|
|
$1.RestrictNamespaces, config_parse_warn_compat, DISABLED_CONFIGURATION, 0
|
2016-06-23 01:45:45 +02:00
|
|
|
$1.RestrictRealtime, config_parse_warn_compat, DISABLED_CONFIGURATION, 0
|
2017-07-04 14:48:18 +02:00
|
|
|
$1.RestrictAddressFamilies, config_parse_warn_compat, DISABLED_CONFIGURATION, 0
|
|
|
|
$1.LockPersonality, config_parse_warn_compat, DISABLED_CONFIGURATION, 0')
|
2016-02-01 21:07:09 +01:00
|
|
|
$1.LimitCPU, config_parse_limit, RLIMIT_CPU, offsetof($1, exec_context.rlimit)
|
|
|
|
$1.LimitFSIZE, config_parse_limit, RLIMIT_FSIZE, offsetof($1, exec_context.rlimit)
|
|
|
|
$1.LimitDATA, config_parse_limit, RLIMIT_DATA, offsetof($1, exec_context.rlimit)
|
|
|
|
$1.LimitSTACK, config_parse_limit, RLIMIT_STACK, offsetof($1, exec_context.rlimit)
|
|
|
|
$1.LimitCORE, config_parse_limit, RLIMIT_CORE, offsetof($1, exec_context.rlimit)
|
|
|
|
$1.LimitRSS, config_parse_limit, RLIMIT_RSS, offsetof($1, exec_context.rlimit)
|
2011-08-01 00:43:05 +02:00
|
|
|
$1.LimitNOFILE, config_parse_limit, RLIMIT_NOFILE, offsetof($1, exec_context.rlimit)
|
2016-02-01 21:07:09 +01:00
|
|
|
$1.LimitAS, config_parse_limit, RLIMIT_AS, offsetof($1, exec_context.rlimit)
|
2011-08-01 00:43:05 +02:00
|
|
|
$1.LimitNPROC, config_parse_limit, RLIMIT_NPROC, offsetof($1, exec_context.rlimit)
|
2016-02-01 21:07:09 +01:00
|
|
|
$1.LimitMEMLOCK, config_parse_limit, RLIMIT_MEMLOCK, offsetof($1, exec_context.rlimit)
|
2011-08-01 00:43:05 +02:00
|
|
|
$1.LimitLOCKS, config_parse_limit, RLIMIT_LOCKS, offsetof($1, exec_context.rlimit)
|
|
|
|
$1.LimitSIGPENDING, config_parse_limit, RLIMIT_SIGPENDING, offsetof($1, exec_context.rlimit)
|
2016-02-01 21:07:09 +01:00
|
|
|
$1.LimitMSGQUEUE, config_parse_limit, RLIMIT_MSGQUEUE, offsetof($1, exec_context.rlimit)
|
2011-08-01 00:43:05 +02:00
|
|
|
$1.LimitNICE, config_parse_limit, RLIMIT_NICE, offsetof($1, exec_context.rlimit)
|
|
|
|
$1.LimitRTPRIO, config_parse_limit, RLIMIT_RTPRIO, offsetof($1, exec_context.rlimit)
|
2016-02-01 21:07:09 +01:00
|
|
|
$1.LimitRTTIME, config_parse_limit, RLIMIT_RTTIME, offsetof($1, exec_context.rlimit)
|
2016-07-07 11:17:00 +02:00
|
|
|
$1.ReadWriteDirectories, config_parse_namespace_path_strv, 0, offsetof($1, exec_context.read_write_paths)
|
|
|
|
$1.ReadOnlyDirectories, config_parse_namespace_path_strv, 0, offsetof($1, exec_context.read_only_paths)
|
|
|
|
$1.InaccessibleDirectories, config_parse_namespace_path_strv, 0, offsetof($1, exec_context.inaccessible_paths)
|
|
|
|
$1.ReadWritePaths, config_parse_namespace_path_strv, 0, offsetof($1, exec_context.read_write_paths)
|
|
|
|
$1.ReadOnlyPaths, config_parse_namespace_path_strv, 0, offsetof($1, exec_context.read_only_paths)
|
|
|
|
$1.InaccessiblePaths, config_parse_namespace_path_strv, 0, offsetof($1, exec_context.inaccessible_paths)
|
2016-11-23 22:21:40 +01:00
|
|
|
$1.BindPaths, config_parse_bind_paths, 0, offsetof($1, exec_context)
|
|
|
|
$1.BindReadOnlyPaths, config_parse_bind_paths, 0, offsetof($1, exec_context)
|
2011-08-01 00:43:05 +02:00
|
|
|
$1.PrivateTmp, config_parse_bool, 0, offsetof($1, exec_context.private_tmp)
|
2014-01-20 19:54:51 +01:00
|
|
|
$1.PrivateDevices, config_parse_bool, 0, offsetof($1, exec_context.private_devices)
|
2016-08-22 18:43:59 +02:00
|
|
|
$1.ProtectKernelTunables, config_parse_bool, 0, offsetof($1, exec_context.protect_kernel_tunables)
|
2016-10-12 13:31:21 +02:00
|
|
|
$1.ProtectKernelModules, config_parse_bool, 0, offsetof($1, exec_context.protect_kernel_modules)
|
2016-08-22 18:43:59 +02:00
|
|
|
$1.ProtectControlGroups, config_parse_bool, 0, offsetof($1, exec_context.protect_control_groups)
|
2016-08-03 18:44:51 +02:00
|
|
|
$1.PrivateNetwork, config_parse_bool, 0, offsetof($1, exec_context.private_network)
|
|
|
|
$1.PrivateUsers, config_parse_bool, 0, offsetof($1, exec_context.private_users)
|
2014-06-04 23:03:37 +02:00
|
|
|
$1.ProtectSystem, config_parse_protect_system, 0, offsetof($1, exec_context)
|
|
|
|
$1.ProtectHome, config_parse_protect_home, 0, offsetof($1, exec_context)
|
2011-08-01 00:43:05 +02:00
|
|
|
$1.MountFlags, config_parse_exec_mount_flags, 0, offsetof($1, exec_context)
|
2016-12-22 23:34:35 +01:00
|
|
|
$1.MountAPIVFS, config_parse_bool, 0, offsetof($1, exec_context.mount_apivfs)
|
2014-02-19 02:15:24 +01:00
|
|
|
$1.Personality, config_parse_personality, 0, offsetof($1, exec_context.personality)
|
2017-07-17 09:22:25 +02:00
|
|
|
$1.RuntimeDirectoryPreserve, config_parse_runtime_preserve_mode, 0, offsetof($1, exec_context.runtime_directory_preserve_mode)
|
core: add {State,Cache,Log,Configuration}Directory= (#6384)
This introduces {State,Cache,Log,Configuration}Directory= those are
similar to RuntimeDirectory=. They create the directories under
/var/lib, /var/cache/, /var/log, or /etc, respectively, with the mode
specified in {State,Cache,Log,Configuration}DirectoryMode=.
This also fixes #6391.
2017-07-18 14:34:52 +02:00
|
|
|
$1.RuntimeDirectoryMode, config_parse_mode, 0, offsetof($1, exec_context.directories[EXEC_DIRECTORY_RUNTIME].mode)
|
|
|
|
$1.RuntimeDirectory, config_parse_exec_directories, 0, offsetof($1, exec_context.directories[EXEC_DIRECTORY_RUNTIME].paths)
|
2017-07-21 10:36:39 +02:00
|
|
|
$1.StateDirectoryMode, config_parse_mode, 0, offsetof($1, exec_context.directories[EXEC_DIRECTORY_STATE].mode)
|
|
|
|
$1.StateDirectory, config_parse_exec_directories, 0, offsetof($1, exec_context.directories[EXEC_DIRECTORY_STATE].paths)
|
core: add {State,Cache,Log,Configuration}Directory= (#6384)
This introduces {State,Cache,Log,Configuration}Directory= those are
similar to RuntimeDirectory=. They create the directories under
/var/lib, /var/cache/, /var/log, or /etc, respectively, with the mode
specified in {State,Cache,Log,Configuration}DirectoryMode=.
This also fixes #6391.
2017-07-18 14:34:52 +02:00
|
|
|
$1.CacheDirectoryMode, config_parse_mode, 0, offsetof($1, exec_context.directories[EXEC_DIRECTORY_CACHE].mode)
|
|
|
|
$1.CacheDirectory, config_parse_exec_directories, 0, offsetof($1, exec_context.directories[EXEC_DIRECTORY_CACHE].paths)
|
|
|
|
$1.LogsDirectoryMode, config_parse_mode, 0, offsetof($1, exec_context.directories[EXEC_DIRECTORY_LOGS].mode)
|
|
|
|
$1.LogsDirectory, config_parse_exec_directories, 0, offsetof($1, exec_context.directories[EXEC_DIRECTORY_LOGS].paths)
|
|
|
|
$1.ConfigurationDirectoryMode, config_parse_mode, 0, offsetof($1, exec_context.directories[EXEC_DIRECTORY_CONFIGURATION].mode)
|
|
|
|
$1.ConfigurationDirectory, config_parse_exec_directories, 0, offsetof($1, exec_context.directories[EXEC_DIRECTORY_CONFIGURATION].paths)
|
2014-02-17 17:49:09 +01:00
|
|
|
m4_ifdef(`HAVE_PAM',
|
|
|
|
`$1.PAMName, config_parse_unit_string_printf, 0, offsetof($1, exec_context.pam_name)',
|
2014-11-30 16:21:49 +01:00
|
|
|
`$1.PAMName, config_parse_warn_compat, DISABLED_CONFIGURATION, 0')
|
2012-02-09 03:18:04 +01:00
|
|
|
$1.IgnoreSIGPIPE, config_parse_bool, 0, offsetof($1, exec_context.ignore_sigpipe)
|
2014-02-06 10:05:16 +01:00
|
|
|
$1.UtmpIdentifier, config_parse_unit_string_printf, 0, offsetof($1, exec_context.utmp_id)
|
2015-08-23 13:14:04 +02:00
|
|
|
$1.UtmpMode, config_parse_exec_utmp_mode, 0, offsetof($1, exec_context.utmp_mode)
|
2014-02-17 17:49:09 +01:00
|
|
|
m4_ifdef(`HAVE_SELINUX',
|
|
|
|
`$1.SELinuxContext, config_parse_exec_selinux_context, 0, offsetof($1, exec_context)',
|
2014-11-30 16:21:49 +01:00
|
|
|
`$1.SELinuxContext, config_parse_warn_compat, DISABLED_CONFIGURATION, 0')
|
2014-02-20 16:19:44 +01:00
|
|
|
m4_ifdef(`HAVE_APPARMOR',
|
2014-11-24 12:46:20 +01:00
|
|
|
`$1.AppArmorProfile, config_parse_exec_apparmor_profile, 0, offsetof($1, exec_context)',
|
2014-11-30 16:21:49 +01:00
|
|
|
`$1.AppArmorProfile, config_parse_warn_compat, DISABLED_CONFIGURATION, 0')
|
2017-10-03 12:22:40 +02:00
|
|
|
m4_ifdef(`ENABLE_SMACK',
|
2014-11-24 12:46:20 +01:00
|
|
|
`$1.SmackProcessLabel, config_parse_exec_smack_process_label, 0, offsetof($1, exec_context)',
|
2014-11-30 16:21:49 +01:00
|
|
|
`$1.SmackProcessLabel, config_parse_warn_compat, DISABLED_CONFIGURATION, 0')'
|
2011-08-01 00:43:05 +02:00
|
|
|
)m4_dnl
|
2012-07-19 23:47:10 +02:00
|
|
|
m4_define(`KILL_CONTEXT_CONFIG_ITEMS',
|
2013-04-02 20:38:16 +02:00
|
|
|
`$1.SendSIGKILL, config_parse_bool, 0, offsetof($1, kill_context.send_sigkill)
|
2013-07-30 01:54:59 +02:00
|
|
|
$1.SendSIGHUP, config_parse_bool, 0, offsetof($1, kill_context.send_sighup)
|
2012-07-19 23:47:10 +02:00
|
|
|
$1.KillMode, config_parse_kill_mode, 0, offsetof($1, kill_context.kill_mode)
|
2015-09-06 01:22:14 +02:00
|
|
|
$1.KillSignal, config_parse_signal, 0, offsetof($1, kill_context.kill_signal)'
|
2012-07-19 23:47:10 +02:00
|
|
|
)m4_dnl
|
2013-06-17 21:33:26 +02:00
|
|
|
m4_define(`CGROUP_CONTEXT_CONFIG_ITEMS',
|
2013-07-01 02:52:17 +02:00
|
|
|
`$1.Slice, config_parse_unit_slice, 0, 0
|
|
|
|
$1.CPUAccounting, config_parse_bool, 0, offsetof($1, cgroup_context.cpu_accounting)
|
2016-08-07 15:45:39 +02:00
|
|
|
$1.CPUWeight, config_parse_cpu_weight, 0, offsetof($1, cgroup_context.cpu_weight)
|
|
|
|
$1.StartupCPUWeight, config_parse_cpu_weight, 0, offsetof($1, cgroup_context.startup_cpu_weight)
|
2014-05-22 00:06:16 +02:00
|
|
|
$1.CPUShares, config_parse_cpu_shares, 0, offsetof($1, cgroup_context.cpu_shares)
|
|
|
|
$1.StartupCPUShares, config_parse_cpu_shares, 0, offsetof($1, cgroup_context.startup_cpu_shares)
|
2014-04-25 13:27:25 +02:00
|
|
|
$1.CPUQuota, config_parse_cpu_quota, 0, offsetof($1, cgroup_context)
|
2013-06-27 04:14:27 +02:00
|
|
|
$1.MemoryAccounting, config_parse_bool, 0, offsetof($1, cgroup_context.memory_accounting)
|
2016-05-27 18:10:18 +02:00
|
|
|
$1.MemoryLow, config_parse_memory_limit, 0, offsetof($1, cgroup_context)
|
|
|
|
$1.MemoryHigh, config_parse_memory_limit, 0, offsetof($1, cgroup_context)
|
|
|
|
$1.MemoryMax, config_parse_memory_limit, 0, offsetof($1, cgroup_context)
|
2016-07-04 09:03:54 +02:00
|
|
|
$1.MemorySwapMax, config_parse_memory_limit, 0, offsetof($1, cgroup_context)
|
2013-06-27 04:14:27 +02:00
|
|
|
$1.MemoryLimit, config_parse_memory_limit, 0, offsetof($1, cgroup_context)
|
|
|
|
$1.DeviceAllow, config_parse_device_allow, 0, offsetof($1, cgroup_context)
|
|
|
|
$1.DevicePolicy, config_parse_device_policy, 0, offsetof($1, cgroup_context.device_policy)
|
2016-05-05 22:42:55 +02:00
|
|
|
$1.IOAccounting, config_parse_bool, 0, offsetof($1, cgroup_context.io_accounting)
|
|
|
|
$1.IOWeight, config_parse_io_weight, 0, offsetof($1, cgroup_context.io_weight)
|
|
|
|
$1.StartupIOWeight, config_parse_io_weight, 0, offsetof($1, cgroup_context.startup_io_weight)
|
|
|
|
$1.IODeviceWeight, config_parse_io_device_weight, 0, offsetof($1, cgroup_context)
|
|
|
|
$1.IOReadBandwidthMax, config_parse_io_limit, 0, offsetof($1, cgroup_context)
|
|
|
|
$1.IOWriteBandwidthMax, config_parse_io_limit, 0, offsetof($1, cgroup_context)
|
2016-05-18 22:50:56 +02:00
|
|
|
$1.IOReadIOPSMax, config_parse_io_limit, 0, offsetof($1, cgroup_context)
|
|
|
|
$1.IOWriteIOPSMax, config_parse_io_limit, 0, offsetof($1, cgroup_context)
|
2013-06-27 04:14:27 +02:00
|
|
|
$1.BlockIOAccounting, config_parse_bool, 0, offsetof($1, cgroup_context.blockio_accounting)
|
2014-05-22 00:06:16 +02:00
|
|
|
$1.BlockIOWeight, config_parse_blockio_weight, 0, offsetof($1, cgroup_context.blockio_weight)
|
2014-05-22 04:53:12 +02:00
|
|
|
$1.StartupBlockIOWeight, config_parse_blockio_weight, 0, offsetof($1, cgroup_context.startup_blockio_weight)
|
2013-07-11 20:40:18 +02:00
|
|
|
$1.BlockIODeviceWeight, config_parse_blockio_device_weight, 0, offsetof($1, cgroup_context)
|
2013-06-27 04:14:27 +02:00
|
|
|
$1.BlockIOReadBandwidth, config_parse_blockio_bandwidth, 0, offsetof($1, cgroup_context)
|
2014-11-05 17:57:23 +01:00
|
|
|
$1.BlockIOWriteBandwidth, config_parse_blockio_bandwidth, 0, offsetof($1, cgroup_context)
|
2015-09-10 12:32:16 +02:00
|
|
|
$1.TasksAccounting, config_parse_bool, 0, offsetof($1, cgroup_context.tasks_accounting)
|
2015-11-13 17:13:55 +01:00
|
|
|
$1.TasksMax, config_parse_tasks_max, 0, offsetof($1, cgroup_context.tasks_max)
|
2017-11-09 15:29:34 +01:00
|
|
|
$1.Delegate, config_parse_delegate, 0, offsetof($1, cgroup_context)
|
2017-09-05 19:27:53 +02:00
|
|
|
$1.IPAccounting, config_parse_bool, 0, offsetof($1, cgroup_context.ip_accounting)
|
|
|
|
$1.IPAddressAllow, config_parse_ip_address_access, 0, offsetof($1, cgroup_context.ip_address_allow)
|
|
|
|
$1.IPAddressDeny, config_parse_ip_address_access, 0, offsetof($1, cgroup_context.ip_address_deny)
|
2016-02-10 15:44:01 +01:00
|
|
|
$1.NetClass, config_parse_warn_compat, DISABLED_LEGACY, 0'
|
2013-06-17 21:33:26 +02:00
|
|
|
)m4_dnl
|
2012-01-15 12:04:08 +01:00
|
|
|
Unit.Description, config_parse_unit_string_printf, 0, offsetof(Unit, description)
|
2012-05-21 15:12:18 +02:00
|
|
|
Unit.Documentation, config_parse_documentation, 0, offsetof(Unit, documentation)
|
2012-05-22 23:08:24 +02:00
|
|
|
Unit.SourcePath, config_parse_path, 0, offsetof(Unit, source_path)
|
2011-08-01 00:43:05 +02:00
|
|
|
Unit.Requires, config_parse_unit_deps, UNIT_REQUIRES, 0
|
|
|
|
Unit.Requisite, config_parse_unit_deps, UNIT_REQUISITE, 0
|
|
|
|
Unit.Wants, config_parse_unit_deps, UNIT_WANTS, 0
|
2012-07-13 23:34:40 +02:00
|
|
|
Unit.BindsTo, config_parse_unit_deps, UNIT_BINDS_TO, 0
|
|
|
|
Unit.BindTo, config_parse_unit_deps, UNIT_BINDS_TO, 0
|
2011-08-01 00:43:05 +02:00
|
|
|
Unit.Conflicts, config_parse_unit_deps, UNIT_CONFLICTS, 0
|
|
|
|
Unit.Before, config_parse_unit_deps, UNIT_BEFORE, 0
|
|
|
|
Unit.After, config_parse_unit_deps, UNIT_AFTER, 0
|
|
|
|
Unit.OnFailure, config_parse_unit_deps, UNIT_ON_FAILURE, 0
|
2012-07-13 23:34:40 +02:00
|
|
|
Unit.PropagatesReloadTo, config_parse_unit_deps, UNIT_PROPAGATES_RELOAD_TO, 0
|
|
|
|
Unit.PropagateReloadTo, config_parse_unit_deps, UNIT_PROPAGATES_RELOAD_TO, 0
|
|
|
|
Unit.ReloadPropagatedFrom, config_parse_unit_deps, UNIT_RELOAD_PROPAGATED_FROM, 0
|
|
|
|
Unit.PropagateReloadFrom, config_parse_unit_deps, UNIT_RELOAD_PROPAGATED_FROM, 0
|
2012-07-20 15:55:01 +02:00
|
|
|
Unit.PartOf, config_parse_unit_deps, UNIT_PART_OF, 0
|
2013-11-27 20:23:18 +01:00
|
|
|
Unit.JoinsNamespaceOf, config_parse_unit_deps, UNIT_JOINS_NAMESPACE_OF, 0
|
2015-11-12 19:21:47 +01:00
|
|
|
Unit.RequiresOverridable, config_parse_obsolete_unit_deps, UNIT_REQUIRES, 0
|
2017-11-08 06:29:47 +01:00
|
|
|
Unit.RequisiteOverridable, config_parse_obsolete_unit_deps, UNIT_REQUISITE, 0
|
2013-09-26 20:14:24 +02:00
|
|
|
Unit.RequiresMountsFor, config_parse_unit_requires_mounts_for, 0, 0
|
2012-01-15 12:04:08 +01:00
|
|
|
Unit.StopWhenUnneeded, config_parse_bool, 0, offsetof(Unit, stop_when_unneeded)
|
|
|
|
Unit.RefuseManualStart, config_parse_bool, 0, offsetof(Unit, refuse_manual_start)
|
|
|
|
Unit.RefuseManualStop, config_parse_bool, 0, offsetof(Unit, refuse_manual_stop)
|
|
|
|
Unit.AllowIsolate, config_parse_bool, 0, offsetof(Unit, allow_isolate)
|
|
|
|
Unit.DefaultDependencies, config_parse_bool, 0, offsetof(Unit, default_dependencies)
|
2013-11-26 01:39:53 +01:00
|
|
|
Unit.OnFailureJobMode, config_parse_job_mode, 0, offsetof(Unit, on_failure_job_mode)
|
|
|
|
Unit.OnFailureIsolate, config_parse_job_mode_isolate, 0, offsetof(Unit, on_failure_job_mode)
|
2012-01-15 12:04:08 +01:00
|
|
|
Unit.IgnoreOnIsolate, config_parse_bool, 0, offsetof(Unit, ignore_on_isolate)
|
Remove snapshot unit type
Snapshots were never useful or used for anything. Many systemd
developers that I spoke to at systemd.conf2015, didn't even know they
existed, so it is fairly safe to assume that this type can be deleted
without harm.
The fundamental problem with snapshots is that the state of the system
is dynamic, devices come and go, users log in and out, timers fire...
and restoring all units to some state from the past would "undo"
those changes, which isn't really possible.
Tested by creating a snapshot, running the new binary, and checking
that the transition did not cause errors, and the snapshot is gone,
and snapshots cannot be created anymore.
New systemctl says:
Unknown operation snapshot.
Old systemctl says:
Failed to create snapshot: Support for snapshots has been removed.
IgnoreOnSnaphost settings are warned about and ignored:
Support for option IgnoreOnSnapshot= has been removed and it is ignored
http://lists.freedesktop.org/archives/systemd-devel/2015-November/034872.html
2015-11-08 14:12:54 +01:00
|
|
|
Unit.IgnoreOnSnapshot, config_parse_warn_compat, DISABLED_LEGACY, 0
|
2017-09-27 17:30:50 +02:00
|
|
|
Unit.JobTimeoutSec, config_parse_job_timeout_sec, 0, 0
|
|
|
|
Unit.JobRunningTimeoutSec, config_parse_job_running_timeout_sec, 0, 0
|
2016-10-20 15:27:37 +02:00
|
|
|
Unit.JobTimeoutAction, config_parse_emergency_action, 0, offsetof(Unit, job_timeout_action)
|
2016-12-05 19:38:39 +01:00
|
|
|
Unit.JobTimeoutRebootArgument, config_parse_unit_string_printf, 0, offsetof(Unit, job_timeout_reboot_arg)
|
2016-04-26 20:46:20 +02:00
|
|
|
Unit.StartLimitIntervalSec, config_parse_sec, 0, offsetof(Unit, start_limit.interval)
|
|
|
|
m4_dnl The following is a legacy alias name for compatibility
|
core: make the StartLimitXYZ= settings generic and apply to any kind of unit, not just services
This moves the StartLimitBurst=, StartLimitInterval=, StartLimitAction=, RebootArgument= from the [Service] section
into the [Unit] section of unit files, and thus support it in all unit types, not just in services.
This way we can enforce the start limit much earlier, in particular before testing the unit conditions, so that
repeated start-up failure due to failed conditions is also considered for the start limit logic.
For compatibility the four options may also be configured in the [Service] section still, but we only document them in
their new section [Unit].
This also renamed the socket unit failure code "service-failed-permanent" into "service-start-limit-hit" to express
more clearly what it is about, after all it's only triggered through the start limit being hit.
Finally, the code in busname_trigger_notify() and socket_trigger_notify() is altered to become more alike.
Fixes: #2467
2016-02-09 18:38:03 +01:00
|
|
|
Unit.StartLimitInterval, config_parse_sec, 0, offsetof(Unit, start_limit.interval)
|
|
|
|
Unit.StartLimitBurst, config_parse_unsigned, 0, offsetof(Unit, start_limit.burst)
|
2016-10-20 15:27:37 +02:00
|
|
|
Unit.StartLimitAction, config_parse_emergency_action, 0, offsetof(Unit, start_limit_action)
|
2016-12-05 19:38:39 +01:00
|
|
|
Unit.RebootArgument, config_parse_unit_string_printf, 0, offsetof(Unit, reboot_arg)
|
2014-11-06 13:43:45 +01:00
|
|
|
Unit.ConditionPathExists, config_parse_unit_condition_path, CONDITION_PATH_EXISTS, offsetof(Unit, conditions)
|
|
|
|
Unit.ConditionPathExistsGlob, config_parse_unit_condition_path, CONDITION_PATH_EXISTS_GLOB, offsetof(Unit, conditions)
|
|
|
|
Unit.ConditionPathIsDirectory, config_parse_unit_condition_path, CONDITION_PATH_IS_DIRECTORY, offsetof(Unit, conditions)
|
|
|
|
Unit.ConditionPathIsSymbolicLink,config_parse_unit_condition_path, CONDITION_PATH_IS_SYMBOLIC_LINK,offsetof(Unit, conditions)
|
|
|
|
Unit.ConditionPathIsMountPoint, config_parse_unit_condition_path, CONDITION_PATH_IS_MOUNT_POINT, offsetof(Unit, conditions)
|
|
|
|
Unit.ConditionPathIsReadWrite, config_parse_unit_condition_path, CONDITION_PATH_IS_READ_WRITE, offsetof(Unit, conditions)
|
|
|
|
Unit.ConditionDirectoryNotEmpty, config_parse_unit_condition_path, CONDITION_DIRECTORY_NOT_EMPTY, offsetof(Unit, conditions)
|
|
|
|
Unit.ConditionFileNotEmpty, config_parse_unit_condition_path, CONDITION_FILE_NOT_EMPTY, offsetof(Unit, conditions)
|
|
|
|
Unit.ConditionFileIsExecutable, config_parse_unit_condition_path, CONDITION_FILE_IS_EXECUTABLE, offsetof(Unit, conditions)
|
|
|
|
Unit.ConditionNeedsUpdate, config_parse_unit_condition_path, CONDITION_NEEDS_UPDATE, offsetof(Unit, conditions)
|
|
|
|
Unit.ConditionFirstBoot, config_parse_unit_condition_string, CONDITION_FIRST_BOOT, offsetof(Unit, conditions)
|
|
|
|
Unit.ConditionKernelCommandLine, config_parse_unit_condition_string, CONDITION_KERNEL_COMMAND_LINE, offsetof(Unit, conditions)
|
|
|
|
Unit.ConditionArchitecture, config_parse_unit_condition_string, CONDITION_ARCHITECTURE, offsetof(Unit, conditions)
|
|
|
|
Unit.ConditionVirtualization, config_parse_unit_condition_string, CONDITION_VIRTUALIZATION, offsetof(Unit, conditions)
|
|
|
|
Unit.ConditionSecurity, config_parse_unit_condition_string, CONDITION_SECURITY, offsetof(Unit, conditions)
|
|
|
|
Unit.ConditionCapability, config_parse_unit_condition_string, CONDITION_CAPABILITY, offsetof(Unit, conditions)
|
|
|
|
Unit.ConditionHost, config_parse_unit_condition_string, CONDITION_HOST, offsetof(Unit, conditions)
|
|
|
|
Unit.ConditionACPower, config_parse_unit_condition_string, CONDITION_AC_POWER, offsetof(Unit, conditions)
|
2017-04-09 01:32:13 +02:00
|
|
|
Unit.ConditionUser, config_parse_unit_condition_string, CONDITION_USER, offsetof(Unit, conditions)
|
|
|
|
Unit.ConditionGroup, config_parse_unit_condition_string, CONDITION_GROUP, offsetof(Unit, conditions)
|
2014-11-06 13:43:45 +01:00
|
|
|
Unit.ConditionNull, config_parse_unit_condition_null, 0, offsetof(Unit, conditions)
|
|
|
|
Unit.AssertPathExists, config_parse_unit_condition_path, CONDITION_PATH_EXISTS, offsetof(Unit, asserts)
|
|
|
|
Unit.AssertPathExistsGlob, config_parse_unit_condition_path, CONDITION_PATH_EXISTS_GLOB, offsetof(Unit, asserts)
|
|
|
|
Unit.AssertPathIsDirectory, config_parse_unit_condition_path, CONDITION_PATH_IS_DIRECTORY, offsetof(Unit, asserts)
|
|
|
|
Unit.AssertPathIsSymbolicLink, config_parse_unit_condition_path, CONDITION_PATH_IS_SYMBOLIC_LINK,offsetof(Unit, asserts)
|
|
|
|
Unit.AssertPathIsMountPoint, config_parse_unit_condition_path, CONDITION_PATH_IS_MOUNT_POINT, offsetof(Unit, asserts)
|
|
|
|
Unit.AssertPathIsReadWrite, config_parse_unit_condition_path, CONDITION_PATH_IS_READ_WRITE, offsetof(Unit, asserts)
|
|
|
|
Unit.AssertDirectoryNotEmpty, config_parse_unit_condition_path, CONDITION_DIRECTORY_NOT_EMPTY, offsetof(Unit, asserts)
|
|
|
|
Unit.AssertFileNotEmpty, config_parse_unit_condition_path, CONDITION_FILE_NOT_EMPTY, offsetof(Unit, asserts)
|
|
|
|
Unit.AssertFileIsExecutable, config_parse_unit_condition_path, CONDITION_FILE_IS_EXECUTABLE, offsetof(Unit, asserts)
|
|
|
|
Unit.AssertNeedsUpdate, config_parse_unit_condition_path, CONDITION_NEEDS_UPDATE, offsetof(Unit, asserts)
|
|
|
|
Unit.AssertFirstBoot, config_parse_unit_condition_string, CONDITION_FIRST_BOOT, offsetof(Unit, asserts)
|
|
|
|
Unit.AssertKernelCommandLine, config_parse_unit_condition_string, CONDITION_KERNEL_COMMAND_LINE, offsetof(Unit, asserts)
|
|
|
|
Unit.AssertArchitecture, config_parse_unit_condition_string, CONDITION_ARCHITECTURE, offsetof(Unit, asserts)
|
|
|
|
Unit.AssertVirtualization, config_parse_unit_condition_string, CONDITION_VIRTUALIZATION, offsetof(Unit, asserts)
|
|
|
|
Unit.AssertSecurity, config_parse_unit_condition_string, CONDITION_SECURITY, offsetof(Unit, asserts)
|
|
|
|
Unit.AssertCapability, config_parse_unit_condition_string, CONDITION_CAPABILITY, offsetof(Unit, asserts)
|
|
|
|
Unit.AssertHost, config_parse_unit_condition_string, CONDITION_HOST, offsetof(Unit, asserts)
|
|
|
|
Unit.AssertACPower, config_parse_unit_condition_string, CONDITION_AC_POWER, offsetof(Unit, asserts)
|
2017-04-09 01:32:13 +02:00
|
|
|
Unit.AssertUser, config_parse_unit_condition_string, CONDITION_USER, offsetof(Unit, asserts)
|
|
|
|
Unit.AssertGroup, config_parse_unit_condition_string, CONDITION_GROUP, offsetof(Unit, asserts)
|
2014-11-06 13:43:45 +01:00
|
|
|
Unit.AssertNull, config_parse_unit_condition_null, 0, offsetof(Unit, asserts)
|
2017-11-13 17:14:07 +01:00
|
|
|
Unit.CollectMode, config_parse_collect_mode, 0, offsetof(Unit, collect_mode)
|
2011-08-01 00:43:05 +02:00
|
|
|
m4_dnl
|
|
|
|
Service.PIDFile, config_parse_unit_path_printf, 0, offsetof(Service, pid_file)
|
|
|
|
Service.ExecStartPre, config_parse_exec, SERVICE_EXEC_START_PRE, offsetof(Service, exec_command)
|
|
|
|
Service.ExecStart, config_parse_exec, SERVICE_EXEC_START, offsetof(Service, exec_command)
|
|
|
|
Service.ExecStartPost, config_parse_exec, SERVICE_EXEC_START_POST, offsetof(Service, exec_command)
|
|
|
|
Service.ExecReload, config_parse_exec, SERVICE_EXEC_RELOAD, offsetof(Service, exec_command)
|
|
|
|
Service.ExecStop, config_parse_exec, SERVICE_EXEC_STOP, offsetof(Service, exec_command)
|
|
|
|
Service.ExecStopPost, config_parse_exec, SERVICE_EXEC_STOP_POST, offsetof(Service, exec_command)
|
2013-04-02 20:38:16 +02:00
|
|
|
Service.RestartSec, config_parse_sec, 0, offsetof(Service, restart_usec)
|
2016-02-08 23:54:54 +01:00
|
|
|
Service.TimeoutSec, config_parse_service_timeout, 0, 0
|
|
|
|
Service.TimeoutStartSec, config_parse_service_timeout, 0, 0
|
|
|
|
Service.TimeoutStopSec, config_parse_service_timeout, 0, 0
|
core: rework unit timeout handling, and add new setting RuntimeMaxSec=
This clean-ups timeout handling in PID 1. Specifically, instead of storing 0 in internal timeout variables as
indication for a disabled timeout, use USEC_INFINITY which is in-line with how we do this in the rest of our code
(following the logic that 0 means "no", and USEC_INFINITY means "never").
This also replace all usec_t additions with invocations to usec_add(), so that USEC_INFINITY is properly propagated,
and sd-event considers it has indication for turning off the event source.
This also alters the deserialization of the units to restart timeouts from the time they were originally started from.
Before this patch timeouts would be restarted beginning with the time of the deserialization, which could lead to
artificially prolonged timeouts if a daemon reload took place.
Finally, a new RuntimeMaxSec= setting is introduced for service units, that specifies a maximum runtime after which a
specific service is forcibly terminated. This is useful to put time limits on time-intensive processing jobs.
This also simplifies the various xyz_spawn() calls of the various types in that explicit distruction of the timers is
removed, as that is done anyway by the state change handlers, and a state change is always done when the xyz_spawn()
calls fail.
Fixes: #2249
2016-02-01 21:48:10 +01:00
|
|
|
Service.RuntimeMaxSec, config_parse_sec, 0, offsetof(Service, runtime_max_usec)
|
2013-04-02 20:38:16 +02:00
|
|
|
Service.WatchdogSec, config_parse_sec, 0, offsetof(Service, watchdog_usec)
|
2016-04-26 20:34:33 +02:00
|
|
|
m4_dnl The following three only exist for compatibility, they moved into Unit, see above
|
core: make the StartLimitXYZ= settings generic and apply to any kind of unit, not just services
This moves the StartLimitBurst=, StartLimitInterval=, StartLimitAction=, RebootArgument= from the [Service] section
into the [Unit] section of unit files, and thus support it in all unit types, not just in services.
This way we can enforce the start limit much earlier, in particular before testing the unit conditions, so that
repeated start-up failure due to failed conditions is also considered for the start limit logic.
For compatibility the four options may also be configured in the [Service] section still, but we only document them in
their new section [Unit].
This also renamed the socket unit failure code "service-failed-permanent" into "service-start-limit-hit" to express
more clearly what it is about, after all it's only triggered through the start limit being hit.
Finally, the code in busname_trigger_notify() and socket_trigger_notify() is altered to become more alike.
Fixes: #2467
2016-02-09 18:38:03 +01:00
|
|
|
Service.StartLimitInterval, config_parse_sec, 0, offsetof(Unit, start_limit.interval)
|
|
|
|
Service.StartLimitBurst, config_parse_unsigned, 0, offsetof(Unit, start_limit.burst)
|
2016-10-20 15:27:37 +02:00
|
|
|
Service.StartLimitAction, config_parse_emergency_action, 0, offsetof(Unit, start_limit_action)
|
2016-12-05 19:38:39 +01:00
|
|
|
Service.RebootArgument, config_parse_unit_path_printf, 0, offsetof(Unit, reboot_arg)
|
2016-10-20 15:27:37 +02:00
|
|
|
Service.FailureAction, config_parse_emergency_action, 0, offsetof(Service, emergency_action)
|
2011-08-01 00:43:05 +02:00
|
|
|
Service.Type, config_parse_service_type, 0, offsetof(Service, type)
|
|
|
|
Service.Restart, config_parse_service_restart, 0, offsetof(Service, restart)
|
|
|
|
Service.PermissionsStartOnly, config_parse_bool, 0, offsetof(Service, permissions_start_only)
|
|
|
|
Service.RootDirectoryStartOnly, config_parse_bool, 0, offsetof(Service, root_directory_start_only)
|
|
|
|
Service.RemainAfterExit, config_parse_bool, 0, offsetof(Service, remain_after_exit)
|
|
|
|
Service.GuessMainPID, config_parse_bool, 0, offsetof(Service, guess_main_pid)
|
2014-07-03 12:47:40 +02:00
|
|
|
Service.RestartPreventExitStatus, config_parse_set_status, 0, offsetof(Service, restart_prevent_status)
|
|
|
|
Service.RestartForceExitStatus, config_parse_set_status, 0, offsetof(Service, restart_force_status)
|
2012-08-13 13:58:01 +02:00
|
|
|
Service.SuccessExitStatus, config_parse_set_status, 0, offsetof(Service, success_status)
|
2014-11-30 16:42:53 +01:00
|
|
|
Service.SysVStartPriority, config_parse_warn_compat, DISABLED_LEGACY, 0
|
2011-08-01 00:43:05 +02:00
|
|
|
Service.NonBlocking, config_parse_bool, 0, offsetof(Service, exec_context.non_blocking)
|
2015-01-07 22:07:09 +01:00
|
|
|
Service.BusName, config_parse_bus_name, 0, offsetof(Service, bus_name)
|
2015-01-06 00:26:25 +01:00
|
|
|
Service.FileDescriptorStoreMax, config_parse_unsigned, 0, offsetof(Service, n_fd_store_max)
|
2011-08-01 00:43:05 +02:00
|
|
|
Service.NotifyAccess, config_parse_notify_access, 0, offsetof(Service, notify_access)
|
|
|
|
Service.Sockets, config_parse_service_sockets, 0, 0
|
2016-02-11 22:12:04 +01:00
|
|
|
Service.BusPolicy, config_parse_warn_compat, DISABLED_LEGACY, 0
|
2016-12-05 19:38:39 +01:00
|
|
|
Service.USBFunctionDescriptors, config_parse_unit_path_printf, 0, offsetof(Service, usb_function_descriptors)
|
|
|
|
Service.USBFunctionStrings, config_parse_unit_path_printf, 0, offsetof(Service, usb_function_strings)
|
2011-08-01 00:43:05 +02:00
|
|
|
EXEC_CONTEXT_CONFIG_ITEMS(Service)m4_dnl
|
2013-06-17 21:33:26 +02:00
|
|
|
CGROUP_CONTEXT_CONFIG_ITEMS(Service)m4_dnl
|
2012-07-19 23:47:10 +02:00
|
|
|
KILL_CONTEXT_CONFIG_ITEMS(Service)m4_dnl
|
2011-08-01 00:43:05 +02:00
|
|
|
m4_dnl
|
2013-01-17 02:27:06 +01:00
|
|
|
Socket.ListenStream, config_parse_socket_listen, SOCKET_SOCKET, 0
|
|
|
|
Socket.ListenDatagram, config_parse_socket_listen, SOCKET_SOCKET, 0
|
|
|
|
Socket.ListenSequentialPacket, config_parse_socket_listen, SOCKET_SOCKET, 0
|
|
|
|
Socket.ListenFIFO, config_parse_socket_listen, SOCKET_FIFO, 0
|
|
|
|
Socket.ListenNetlink, config_parse_socket_listen, SOCKET_SOCKET, 0
|
|
|
|
Socket.ListenSpecial, config_parse_socket_listen, SOCKET_SPECIAL, 0
|
|
|
|
Socket.ListenMessageQueue, config_parse_socket_listen, SOCKET_MQUEUE, 0
|
2015-09-21 15:43:47 +02:00
|
|
|
Socket.ListenUSBFunction, config_parse_socket_listen, SOCKET_USB_FUNCTION, 0
|
2015-11-16 07:45:47 +01:00
|
|
|
Socket.SocketProtocol, config_parse_socket_protocol, 0, 0
|
2011-08-01 00:43:05 +02:00
|
|
|
Socket.BindIPv6Only, config_parse_socket_bind, 0, 0,
|
|
|
|
Socket.Backlog, config_parse_unsigned, 0, offsetof(Socket, backlog)
|
|
|
|
Socket.BindToDevice, config_parse_socket_bindtodevice, 0, 0
|
|
|
|
Socket.ExecStartPre, config_parse_exec, SOCKET_EXEC_START_PRE, offsetof(Socket, exec_command)
|
|
|
|
Socket.ExecStartPost, config_parse_exec, SOCKET_EXEC_START_POST, offsetof(Socket, exec_command)
|
|
|
|
Socket.ExecStopPre, config_parse_exec, SOCKET_EXEC_STOP_PRE, offsetof(Socket, exec_command)
|
|
|
|
Socket.ExecStopPost, config_parse_exec, SOCKET_EXEC_STOP_POST, offsetof(Socket, exec_command)
|
2017-05-23 09:42:26 +02:00
|
|
|
Socket.TimeoutSec, config_parse_sec_fix_0, 0, offsetof(Socket, timeout_usec)
|
2016-07-14 12:28:06 +02:00
|
|
|
Socket.SocketUser, config_parse_user_group, 0, offsetof(Socket, user)
|
|
|
|
Socket.SocketGroup, config_parse_user_group, 0, offsetof(Socket, group)
|
2011-08-01 00:43:05 +02:00
|
|
|
Socket.SocketMode, config_parse_mode, 0, offsetof(Socket, socket_mode)
|
2014-06-05 09:55:53 +02:00
|
|
|
Socket.DirectoryMode, config_parse_mode, 0, offsetof(Socket, directory_mode)
|
2011-08-01 00:43:05 +02:00
|
|
|
Socket.Accept, config_parse_bool, 0, offsetof(Socket, accept)
|
2015-10-01 14:28:13 +02:00
|
|
|
Socket.Writable, config_parse_bool, 0, offsetof(Socket, writable)
|
2011-08-01 00:43:05 +02:00
|
|
|
Socket.MaxConnections, config_parse_unsigned, 0, offsetof(Socket, max_connections)
|
2016-08-02 19:48:23 +02:00
|
|
|
Socket.MaxConnectionsPerSource, config_parse_unsigned, 0, offsetof(Socket, max_connections_per_source)
|
2011-08-01 00:43:05 +02:00
|
|
|
Socket.KeepAlive, config_parse_bool, 0, offsetof(Socket, keep_alive)
|
2014-08-19 21:57:37 +02:00
|
|
|
Socket.KeepAliveTimeSec, config_parse_sec, 0, offsetof(Socket, keep_alive_time)
|
|
|
|
Socket.KeepAliveIntervalSec, config_parse_sec, 0, offsetof(Socket, keep_alive_interval)
|
2014-08-14 19:36:11 +02:00
|
|
|
Socket.KeepAliveProbes, config_parse_unsigned, 0, offsetof(Socket, keep_alive_cnt)
|
2014-08-19 21:57:37 +02:00
|
|
|
Socket.DeferAcceptSec, config_parse_sec, 0, offsetof(Socket, defer_accept)
|
2014-07-28 08:48:29 +02:00
|
|
|
Socket.NoDelay, config_parse_bool, 0, offsetof(Socket, no_delay)
|
2011-08-01 00:43:05 +02:00
|
|
|
Socket.Priority, config_parse_int, 0, offsetof(Socket, priority)
|
2014-02-23 03:13:54 +01:00
|
|
|
Socket.ReceiveBuffer, config_parse_iec_size, 0, offsetof(Socket, receive_buffer)
|
|
|
|
Socket.SendBuffer, config_parse_iec_size, 0, offsetof(Socket, send_buffer)
|
2011-08-01 00:43:05 +02:00
|
|
|
Socket.IPTOS, config_parse_ip_tos, 0, offsetof(Socket, ip_tos)
|
|
|
|
Socket.IPTTL, config_parse_int, 0, offsetof(Socket, ip_ttl)
|
|
|
|
Socket.Mark, config_parse_int, 0, offsetof(Socket, mark)
|
2014-02-23 03:13:54 +01:00
|
|
|
Socket.PipeSize, config_parse_iec_size, 0, offsetof(Socket, pipe_size)
|
2011-08-01 00:43:05 +02:00
|
|
|
Socket.FreeBind, config_parse_bool, 0, offsetof(Socket, free_bind)
|
|
|
|
Socket.Transparent, config_parse_bool, 0, offsetof(Socket, transparent)
|
|
|
|
Socket.Broadcast, config_parse_bool, 0, offsetof(Socket, broadcast)
|
2011-12-31 01:07:49 +01:00
|
|
|
Socket.PassCredentials, config_parse_bool, 0, offsetof(Socket, pass_cred)
|
2012-03-13 00:00:27 +01:00
|
|
|
Socket.PassSecurity, config_parse_bool, 0, offsetof(Socket, pass_sec)
|
2011-08-01 00:43:05 +02:00
|
|
|
Socket.TCPCongestion, config_parse_string, 0, offsetof(Socket, tcp_congestion)
|
2013-11-19 21:12:59 +01:00
|
|
|
Socket.ReusePort, config_parse_bool, 0, offsetof(Socket, reuse_port)
|
2011-08-01 00:43:05 +02:00
|
|
|
Socket.MessageQueueMaxMessages, config_parse_long, 0, offsetof(Socket, mq_maxmsg)
|
|
|
|
Socket.MessageQueueMessageSize, config_parse_long, 0, offsetof(Socket, mq_msgsize)
|
2014-06-04 13:10:43 +02:00
|
|
|
Socket.RemoveOnStop, config_parse_bool, 0, offsetof(Socket, remove_on_stop)
|
2014-06-04 16:19:00 +02:00
|
|
|
Socket.Symlinks, config_parse_unit_path_strv_printf, 0, offsetof(Socket, symlinks)
|
2015-10-04 17:36:19 +02:00
|
|
|
Socket.FileDescriptorName, config_parse_fdname, 0, 0
|
2011-08-01 00:43:05 +02:00
|
|
|
Socket.Service, config_parse_socket_service, 0, 0
|
2016-04-26 20:26:15 +02:00
|
|
|
Socket.TriggerLimitIntervalSec, config_parse_sec, 0, offsetof(Socket, trigger_limit.interval)
|
|
|
|
Socket.TriggerLimitBurst, config_parse_unsigned, 0, offsetof(Socket, trigger_limit.burst)
|
2017-10-03 12:22:40 +02:00
|
|
|
m4_ifdef(`ENABLE_SMACK',
|
2016-12-05 19:38:39 +01:00
|
|
|
`Socket.SmackLabel, config_parse_unit_string_printf, 0, offsetof(Socket, smack)
|
|
|
|
Socket.SmackLabelIPIn, config_parse_unit_string_printf, 0, offsetof(Socket, smack_ip_in)
|
|
|
|
Socket.SmackLabelIPOut, config_parse_unit_string_printf, 0, offsetof(Socket, smack_ip_out)',
|
2014-11-30 16:21:49 +01:00
|
|
|
`Socket.SmackLabel, config_parse_warn_compat, DISABLED_CONFIGURATION, 0
|
|
|
|
Socket.SmackLabelIPIn, config_parse_warn_compat, DISABLED_CONFIGURATION, 0
|
|
|
|
Socket.SmackLabelIPOut, config_parse_warn_compat, DISABLED_CONFIGURATION, 0')
|
2014-07-24 10:40:28 +02:00
|
|
|
m4_ifdef(`HAVE_SELINUX',
|
|
|
|
`Socket.SELinuxContextFromNet, config_parse_bool, 0, offsetof(Socket, selinux_context_from_net)',
|
2014-11-30 16:21:49 +01:00
|
|
|
`Socket.SELinuxContextFromNet, config_parse_warn_compat, DISABLED_CONFIGURATION, 0')
|
2011-08-01 00:43:05 +02:00
|
|
|
EXEC_CONTEXT_CONFIG_ITEMS(Socket)m4_dnl
|
2013-06-17 21:33:26 +02:00
|
|
|
CGROUP_CONTEXT_CONFIG_ITEMS(Socket)m4_dnl
|
2012-07-19 23:47:10 +02:00
|
|
|
KILL_CONTEXT_CONFIG_ITEMS(Socket)m4_dnl
|
2011-08-01 00:43:05 +02:00
|
|
|
m4_dnl
|
2016-12-05 19:38:39 +01:00
|
|
|
Mount.What, config_parse_unit_string_printf, 0, offsetof(Mount, parameters_fragment.what)
|
2011-08-01 00:43:05 +02:00
|
|
|
Mount.Where, config_parse_path, 0, offsetof(Mount, where)
|
2016-12-05 19:38:39 +01:00
|
|
|
Mount.Options, config_parse_unit_string_printf, 0, offsetof(Mount, parameters_fragment.options)
|
2011-08-01 00:43:05 +02:00
|
|
|
Mount.Type, config_parse_string, 0, offsetof(Mount, parameters_fragment.fstype)
|
2017-05-23 09:42:26 +02:00
|
|
|
Mount.TimeoutSec, config_parse_sec_fix_0, 0, offsetof(Mount, timeout_usec)
|
2011-08-01 00:43:05 +02:00
|
|
|
Mount.DirectoryMode, config_parse_mode, 0, offsetof(Mount, directory_mode)
|
2014-06-16 01:02:27 +02:00
|
|
|
Mount.SloppyOptions, config_parse_bool, 0, offsetof(Mount, sloppy_options)
|
2016-08-26 17:57:22 +02:00
|
|
|
Mount.LazyUnmount, config_parse_bool, 0, offsetof(Mount, lazy_unmount)
|
2016-08-27 16:27:49 +02:00
|
|
|
Mount.ForceUnmount, config_parse_bool, 0, offsetof(Mount, force_unmount)
|
2011-08-01 00:43:05 +02:00
|
|
|
EXEC_CONTEXT_CONFIG_ITEMS(Mount)m4_dnl
|
2013-06-17 21:33:26 +02:00
|
|
|
CGROUP_CONTEXT_CONFIG_ITEMS(Mount)m4_dnl
|
2012-07-19 23:47:10 +02:00
|
|
|
KILL_CONTEXT_CONFIG_ITEMS(Mount)m4_dnl
|
2011-08-01 00:43:05 +02:00
|
|
|
m4_dnl
|
|
|
|
Automount.Where, config_parse_path, 0, offsetof(Automount, where)
|
|
|
|
Automount.DirectoryMode, config_parse_mode, 0, offsetof(Automount, directory_mode)
|
2017-05-23 09:42:26 +02:00
|
|
|
Automount.TimeoutIdleSec, config_parse_sec_fix_0, 0, offsetof(Automount, timeout_idle_usec)
|
2011-08-01 00:43:05 +02:00
|
|
|
m4_dnl
|
|
|
|
Swap.What, config_parse_path, 0, offsetof(Swap, parameters_fragment.what)
|
|
|
|
Swap.Priority, config_parse_int, 0, offsetof(Swap, parameters_fragment.priority)
|
2016-12-05 19:38:39 +01:00
|
|
|
Swap.Options, config_parse_unit_string_printf, 0, offsetof(Swap, parameters_fragment.options)
|
2017-05-23 09:42:26 +02:00
|
|
|
Swap.TimeoutSec, config_parse_sec_fix_0, 0, offsetof(Swap, timeout_usec)
|
2011-08-01 00:43:05 +02:00
|
|
|
EXEC_CONTEXT_CONFIG_ITEMS(Swap)m4_dnl
|
2013-06-17 21:33:26 +02:00
|
|
|
CGROUP_CONTEXT_CONFIG_ITEMS(Swap)m4_dnl
|
2012-07-19 23:47:10 +02:00
|
|
|
KILL_CONTEXT_CONFIG_ITEMS(Swap)m4_dnl
|
2011-08-01 00:43:05 +02:00
|
|
|
m4_dnl
|
2012-11-23 21:37:58 +01:00
|
|
|
Timer.OnCalendar, config_parse_timer, 0, 0
|
2011-08-01 00:43:05 +02:00
|
|
|
Timer.OnActiveSec, config_parse_timer, 0, 0
|
|
|
|
Timer.OnBootSec, config_parse_timer, 0, 0
|
|
|
|
Timer.OnStartupSec, config_parse_timer, 0, 0
|
|
|
|
Timer.OnUnitActiveSec, config_parse_timer, 0, 0
|
|
|
|
Timer.OnUnitInactiveSec, config_parse_timer, 0, 0
|
2014-03-21 03:25:28 +01:00
|
|
|
Timer.Persistent, config_parse_bool, 0, offsetof(Timer, persistent)
|
2014-03-24 16:09:54 +01:00
|
|
|
Timer.WakeSystem, config_parse_bool, 0, offsetof(Timer, wake_system)
|
2015-11-17 20:13:36 +01:00
|
|
|
Timer.RemainAfterElapse, config_parse_bool, 0, offsetof(Timer, remain_after_elapse)
|
2013-11-21 22:07:51 +01:00
|
|
|
Timer.AccuracySec, config_parse_sec, 0, offsetof(Timer, accuracy_usec)
|
2015-11-26 22:32:41 +01:00
|
|
|
Timer.RandomizedDelaySec, config_parse_sec, 0, offsetof(Timer, random_usec)
|
2013-04-23 20:53:16 +02:00
|
|
|
Timer.Unit, config_parse_trigger_unit, 0, 0
|
2011-08-01 00:43:05 +02:00
|
|
|
m4_dnl
|
|
|
|
Path.PathExists, config_parse_path_spec, 0, 0
|
|
|
|
Path.PathExistsGlob, config_parse_path_spec, 0, 0
|
|
|
|
Path.PathChanged, config_parse_path_spec, 0, 0
|
2011-12-08 12:09:10 +01:00
|
|
|
Path.PathModified, config_parse_path_spec, 0, 0
|
2011-08-01 00:43:05 +02:00
|
|
|
Path.DirectoryNotEmpty, config_parse_path_spec, 0, 0
|
2013-04-23 20:53:16 +02:00
|
|
|
Path.Unit, config_parse_trigger_unit, 0, 0
|
2011-08-01 00:43:05 +02:00
|
|
|
Path.MakeDirectory, config_parse_bool, 0, offsetof(Path, make_directory)
|
|
|
|
Path.DirectoryMode, config_parse_mode, 0, offsetof(Path, directory_mode)
|
2013-06-17 21:33:26 +02:00
|
|
|
m4_dnl
|
|
|
|
CGROUP_CONTEXT_CONFIG_ITEMS(Slice)m4_dnl
|
2013-07-10 21:13:56 +02:00
|
|
|
m4_dnl
|
|
|
|
CGROUP_CONTEXT_CONFIG_ITEMS(Scope)m4_dnl
|
2013-07-30 02:50:44 +02:00
|
|
|
KILL_CONTEXT_CONFIG_ITEMS(Scope)m4_dnl
|
|
|
|
Scope.TimeoutStopSec, config_parse_sec, 0, offsetof(Scope, timeout_stop_usec)
|
2011-08-01 00:43:05 +02:00
|
|
|
m4_dnl The [Install] section is ignored here.
|
|
|
|
Install.Alias, NULL, 0, 0
|
|
|
|
Install.WantedBy, NULL, 0, 0
|
2012-05-21 15:27:26 +02:00
|
|
|
Install.RequiredBy, NULL, 0, 0
|
2011-08-01 00:43:05 +02:00
|
|
|
Install.Also, NULL, 0, 0
|
2014-06-17 00:15:31 +02:00
|
|
|
Install.DefaultInstance, NULL, 0, 0
|