Compare commits
15 Commits
cf33b70765
...
43e7dd70bc
Author | SHA1 | Date |
---|---|---|
Lennart Poettering | 43e7dd70bc | |
Lennart Poettering | 115fae8a07 | |
Lennart Poettering | f105d29b47 | |
Lennart Poettering | 6008336ffa | |
Lennart Poettering | dfc22cb472 | |
Lennart Poettering | d9067aba40 | |
Anita Zhang | 32ae9b1400 | |
Anita Zhang | 349a2003fd | |
Anita Zhang | f561e8c659 | |
Anita Zhang | 8922eddad6 | |
Anita Zhang | 620ed14e44 | |
Anita Zhang | 2801d36e25 | |
Anita Zhang | 3e9b4f9156 | |
Zbigniew Jędrzejewski-Szmek | ab4a88eb92 | |
Zbigniew Jędrzejewski-Szmek | 165fee860a |
|
@ -114,7 +114,23 @@ We define two directories below `$BOOT`:
|
||||||
|
|
||||||
**Note:** _In all cases the `/loader/` directory should be located directly in the root of the file system. Specifically, if `$BOOT` is the ESP, then `/loader/` directory should be located directly in the root directory of the ESP, and not in the `/EFI/` subdirectory._
|
**Note:** _In all cases the `/loader/` directory should be located directly in the root of the file system. Specifically, if `$BOOT` is the ESP, then `/loader/` directory should be located directly in the root directory of the ESP, and not in the `/EFI/` subdirectory._
|
||||||
|
|
||||||
Inside the `$BOOT/loader/entries/` directory each OS vendor may drop one or more configuration snippets with the suffix ".conf", one for each boot menu item. The file name of the file is used for identification of the boot item but shall never be presented to the user in the UI. The file name may be chosen freely but should be unique enough to avoid clashes between OS installations. More specifically it is suggested to include the machine ID (`/etc/machine-id` or the D-Bus machine ID for OSes that lack `/etc/machine-id`), the kernel version (as returned by `uname -r`) and an OS identifier (The ID field of `/etc/os-release`). Example: `$BOOT/loader/entries/6a9857a393724b7a981ebb5b8495b9ea-3.8.0-2.fc19.x86_64.conf`.
|
Inside the `$BOOT/loader/entries/` directory each OS vendor may drop one or
|
||||||
|
more configuration snippets with the suffix ".conf", one for each boot menu
|
||||||
|
item. The file name of the file is used for identification of the boot item but
|
||||||
|
shall never be presented to the user in the UI. The file name may be chosen
|
||||||
|
freely but should be unique enough to avoid clashes between OS
|
||||||
|
installations. More specifically it is suggested to include the machine ID
|
||||||
|
(`/etc/machine-id` or the D-Bus machine ID for OSes that lack
|
||||||
|
`/etc/machine-id`), the kernel version (as returned by `uname -r`) and an OS
|
||||||
|
identifier (The ID field of `/etc/os-release`). Example:
|
||||||
|
`$BOOT/loader/entries/6a9857a393724b7a981ebb5b8495b9ea-3.8.0-2.fc19.x86_64.conf`.
|
||||||
|
|
||||||
|
In order to maximize compatibility with file system implementations and
|
||||||
|
restricted boot loader environments, and to minimize conflicting character use
|
||||||
|
with other progams, file names shall be chosen from a restricted character set:
|
||||||
|
ASCII upper and lower case characters, digits, "+", "-", "_" and ".". Also, the
|
||||||
|
file names should have a length of at least one and at most 255 characters
|
||||||
|
(including file name suffix).
|
||||||
|
|
||||||
These configuration snippets shall be Unix-style text files (i.e. line separation with a single newline character), in the UTF-8 encoding. The configuration snippets are loosely inspired on Grub1's configuration syntax. Lines beginning with '#' shall be ignored and used for commenting. The first word of a line is used as key and shall be separated by one or more spaces from its value. The following keys are known:
|
These configuration snippets shall be Unix-style text files (i.e. line separation with a single newline character), in the UTF-8 encoding. The configuration snippets are loosely inspired on Grub1's configuration syntax. Lines beginning with '#' shall be ignored and used for commenting. The first word of a line is used as key and shall be separated by one or more spaces from its value. The following keys are known:
|
||||||
|
|
||||||
|
@ -171,6 +187,10 @@ extension `.efi`. Support for images of this type is of course specific to
|
||||||
systems with EFI firmware. Ignore this section if you work on systems not
|
systems with EFI firmware. Ignore this section if you work on systems not
|
||||||
supporting EFI.
|
supporting EFI.
|
||||||
|
|
||||||
|
Type #2 file names should be chosen from the same restricted character set as
|
||||||
|
Type #1 described above (but use a different file name suffix of `.efi` instead
|
||||||
|
of `.conf`).
|
||||||
|
|
||||||
Images of this type have the advantage that all metadata and payload that makes
|
Images of this type have the advantage that all metadata and payload that makes
|
||||||
up the boot entry is monopolized in a single PE file that can be signed
|
up the boot entry is monopolized in a single PE file that can be signed
|
||||||
cryptographically as one for the purpose of EFI SecureBoot.
|
cryptographically as one for the purpose of EFI SecureBoot.
|
||||||
|
|
|
@ -276,13 +276,20 @@
|
||||||
<para>Returned errors may indicate the following problems:</para>
|
<para>Returned errors may indicate the following problems:</para>
|
||||||
|
|
||||||
<variablelist>
|
<variablelist>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><constant>-EINVAL</constant></term>
|
<term><constant>-EINVAL</constant></term>
|
||||||
|
|
||||||
<listitem><para>The specified parameters are invalid.</para></listitem>
|
<listitem><para>The specified parameters are invalid.</para></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><constant>-ENOMEDIUM</constant></term>
|
||||||
|
|
||||||
|
<listitem><para>The requested bus type is not available because of invalid environment (for example
|
||||||
|
the user session bus is not available because <varname>$XDG_RUNTIME_DIR</varname> is not set).
|
||||||
|
</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><constant>-ENOMEM</constant></term>
|
<term><constant>-ENOMEM</constant></term>
|
||||||
|
|
||||||
|
|
|
@ -129,11 +129,11 @@ static int acquire_bus(bool set_monitor, sd_bus **ret) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_error_errno(r, "Failed to set address: %m");
|
return bus_log_address_error(r);
|
||||||
|
|
||||||
r = sd_bus_start(bus);
|
r = sd_bus_start(bus);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_error_errno(r, "Failed to connect to bus: %m");
|
return bus_log_connect_error(r);
|
||||||
|
|
||||||
*ret = TAKE_PTR(bus);
|
*ret = TAKE_PTR(bus);
|
||||||
|
|
||||||
|
|
|
@ -52,10 +52,9 @@ static bool user_match_lookup_parameters(LookupParameters *p, const char *name,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int build_managed_oom_json_array_element(Unit *u, const char *property, JsonVariant **ret_v) {
|
static int build_managed_oom_json_array_element(Unit *u, const char *property, JsonVariant **ret_v) {
|
||||||
_cleanup_(json_variant_unrefp) JsonVariant *v = NULL;
|
bool use_limit = false;
|
||||||
CGroupContext *c;
|
CGroupContext *c;
|
||||||
const char *mode;
|
const char *mode;
|
||||||
int r;
|
|
||||||
|
|
||||||
assert(u);
|
assert(u);
|
||||||
assert(property);
|
assert(property);
|
||||||
|
@ -74,19 +73,17 @@ static int build_managed_oom_json_array_element(Unit *u, const char *property, J
|
||||||
mode = managed_oom_mode_to_string(MANAGED_OOM_AUTO);
|
mode = managed_oom_mode_to_string(MANAGED_OOM_AUTO);
|
||||||
else if (streq(property, "ManagedOOMSwap"))
|
else if (streq(property, "ManagedOOMSwap"))
|
||||||
mode = managed_oom_mode_to_string(c->moom_swap);
|
mode = managed_oom_mode_to_string(c->moom_swap);
|
||||||
else if (streq(property, "ManagedOOMMemoryPressure"))
|
else if (streq(property, "ManagedOOMMemoryPressure")) {
|
||||||
mode = managed_oom_mode_to_string(c->moom_mem_pressure);
|
mode = managed_oom_mode_to_string(c->moom_mem_pressure);
|
||||||
else
|
use_limit = true;
|
||||||
|
} else
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
r = json_build(&v, JSON_BUILD_OBJECT(
|
return json_build(ret_v, JSON_BUILD_OBJECT(
|
||||||
JSON_BUILD_PAIR("mode", JSON_BUILD_STRING(mode)),
|
JSON_BUILD_PAIR("mode", JSON_BUILD_STRING(mode)),
|
||||||
JSON_BUILD_PAIR("path", JSON_BUILD_STRING(u->cgroup_path)),
|
JSON_BUILD_PAIR("path", JSON_BUILD_STRING(u->cgroup_path)),
|
||||||
JSON_BUILD_PAIR("property", JSON_BUILD_STRING(property)),
|
JSON_BUILD_PAIR("property", JSON_BUILD_STRING(property)),
|
||||||
JSON_BUILD_PAIR("limit", JSON_BUILD_UNSIGNED(c->moom_mem_pressure_limit))));
|
JSON_BUILD_PAIR_CONDITION(use_limit, "limit", JSON_BUILD_UNSIGNED(c->moom_mem_pressure_limit))));
|
||||||
|
|
||||||
*ret_v = TAKE_PTR(v);
|
|
||||||
return r;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int manager_varlink_send_managed_oom_update(Unit *u) {
|
int manager_varlink_send_managed_oom_update(Unit *u) {
|
||||||
|
@ -478,10 +475,8 @@ void manager_varlink_done(Manager *m) {
|
||||||
assert(m);
|
assert(m);
|
||||||
|
|
||||||
/* Send the final message if we still have a subscribe request open. */
|
/* Send the final message if we still have a subscribe request open. */
|
||||||
if (m->managed_oom_varlink_request) {
|
if (m->managed_oom_varlink_request)
|
||||||
(void) varlink_error(m->managed_oom_varlink_request, VARLINK_ERROR_DISCONNECTED, NULL);
|
m->managed_oom_varlink_request = varlink_close_unref(m->managed_oom_varlink_request);
|
||||||
m->managed_oom_varlink_request = varlink_unref(m->managed_oom_varlink_request);
|
|
||||||
}
|
|
||||||
|
|
||||||
m->varlink_server = varlink_server_unref(m->varlink_server);
|
m->varlink_server = varlink_server_unref(m->varlink_server);
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,488 +20,488 @@ struct ConfigPerfItem;
|
||||||
%%
|
%%
|
||||||
m4_dnl Define the context options only once
|
m4_dnl Define the context options only once
|
||||||
m4_define(`EXEC_CONTEXT_CONFIG_ITEMS',
|
m4_define(`EXEC_CONTEXT_CONFIG_ITEMS',
|
||||||
`$1.WorkingDirectory, config_parse_working_directory, 0, offsetof($1, exec_context)
|
`$1.WorkingDirectory, config_parse_working_directory, 0, offsetof($1, exec_context)
|
||||||
$1.RootDirectory, config_parse_unit_path_printf, true, offsetof($1, exec_context.root_directory)
|
$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)
|
$1.RootImage, config_parse_unit_path_printf, true, offsetof($1, exec_context.root_image)
|
||||||
$1.RootImageOptions, config_parse_root_image_options, 0, offsetof($1, exec_context)
|
$1.RootImageOptions, config_parse_root_image_options, 0, offsetof($1, exec_context)
|
||||||
$1.RootHash, config_parse_exec_root_hash, 0, offsetof($1, exec_context)
|
$1.RootHash, config_parse_exec_root_hash, 0, offsetof($1, exec_context)
|
||||||
$1.RootHashSignature, config_parse_exec_root_hash_sig, 0, offsetof($1, exec_context)
|
$1.RootHashSignature, config_parse_exec_root_hash_sig, 0, offsetof($1, exec_context)
|
||||||
$1.RootVerity, config_parse_unit_path_printf, true, offsetof($1, exec_context.root_verity)
|
$1.RootVerity, config_parse_unit_path_printf, true, offsetof($1, exec_context.root_verity)
|
||||||
$1.MountImages, config_parse_mount_images, 0, offsetof($1, exec_context)
|
$1.MountImages, config_parse_mount_images, 0, offsetof($1, exec_context)
|
||||||
$1.User, config_parse_user_group_compat, 0, offsetof($1, exec_context.user)
|
$1.User, config_parse_user_group_compat, 0, offsetof($1, exec_context.user)
|
||||||
$1.Group, config_parse_user_group_compat, 0, offsetof($1, exec_context.group)
|
$1.Group, config_parse_user_group_compat, 0, offsetof($1, exec_context.group)
|
||||||
$1.SupplementaryGroups, config_parse_user_group_strv_compat, 0, offsetof($1, exec_context.supplementary_groups)
|
$1.SupplementaryGroups, config_parse_user_group_strv_compat, 0, offsetof($1, exec_context.supplementary_groups)
|
||||||
$1.Nice, config_parse_exec_nice, 0, offsetof($1, exec_context)
|
$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.OOMScoreAdjust, config_parse_exec_oom_score_adjust, 0, offsetof($1, exec_context)
|
||||||
$1.CoredumpFilter, config_parse_exec_coredump_filter, 0, offsetof($1, exec_context)
|
$1.CoredumpFilter, config_parse_exec_coredump_filter, 0, offsetof($1, exec_context)
|
||||||
$1.IOSchedulingClass, config_parse_exec_io_class, 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.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.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.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.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.CPUAffinity, config_parse_exec_cpu_affinity, 0, offsetof($1, exec_context)
|
||||||
$1.NUMAPolicy, config_parse_numa_policy, 0, offsetof($1, exec_context.numa_policy.type)
|
$1.NUMAPolicy, config_parse_numa_policy, 0, offsetof($1, exec_context.numa_policy.type)
|
||||||
$1.NUMAMask, config_parse_numa_mask, 0, offsetof($1, exec_context.numa_policy)
|
$1.NUMAMask, config_parse_numa_mask, 0, offsetof($1, exec_context.numa_policy)
|
||||||
$1.UMask, config_parse_mode, 0, offsetof($1, exec_context.umask)
|
$1.UMask, config_parse_mode, 0, offsetof($1, exec_context.umask)
|
||||||
$1.Environment, config_parse_environ, 0, offsetof($1, exec_context.environment)
|
$1.Environment, config_parse_environ, 0, offsetof($1, exec_context.environment)
|
||||||
$1.EnvironmentFile, config_parse_unit_env_file, 0, offsetof($1, exec_context.environment_files)
|
$1.EnvironmentFile, config_parse_unit_env_file, 0, offsetof($1, exec_context.environment_files)
|
||||||
$1.PassEnvironment, config_parse_pass_environ, 0, offsetof($1, exec_context.pass_environment)
|
$1.PassEnvironment, config_parse_pass_environ, 0, offsetof($1, exec_context.pass_environment)
|
||||||
$1.UnsetEnvironment, config_parse_unset_environ, 0, offsetof($1, exec_context.unset_environment)
|
$1.UnsetEnvironment, config_parse_unset_environ, 0, offsetof($1, exec_context.unset_environment)
|
||||||
$1.DynamicUser, config_parse_bool, true, offsetof($1, exec_context.dynamic_user)
|
$1.DynamicUser, config_parse_bool, true, offsetof($1, exec_context.dynamic_user)
|
||||||
$1.RemoveIPC, config_parse_bool, 0, offsetof($1, exec_context.remove_ipc)
|
$1.RemoveIPC, config_parse_bool, 0, offsetof($1, exec_context.remove_ipc)
|
||||||
$1.StandardInput, config_parse_exec_input, 0, offsetof($1, exec_context)
|
$1.StandardInput, config_parse_exec_input, 0, offsetof($1, exec_context)
|
||||||
$1.StandardOutput, config_parse_exec_output, 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)
|
$1.StandardError, config_parse_exec_output, 0, offsetof($1, exec_context)
|
||||||
$1.StandardInputText, config_parse_exec_input_text, 0, offsetof($1, exec_context)
|
$1.StandardInputText, config_parse_exec_input_text, 0, offsetof($1, exec_context)
|
||||||
$1.StandardInputData, config_parse_exec_input_data, 0, offsetof($1, exec_context)
|
$1.StandardInputData, config_parse_exec_input_data, 0, offsetof($1, exec_context)
|
||||||
$1.TTYPath, config_parse_unit_path_printf, 0, offsetof($1, exec_context.tty_path)
|
$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.TTYReset, config_parse_bool, 0, offsetof($1, exec_context.tty_reset)
|
||||||
$1.TTYVHangup, config_parse_bool, 0, offsetof($1, exec_context.tty_vhangup)
|
$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.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)
|
$1.SyslogIdentifier, config_parse_unit_string_printf, 0, offsetof($1, exec_context.syslog_identifier)
|
||||||
$1.SyslogFacility, config_parse_log_facility, 0, offsetof($1, exec_context.syslog_priority)
|
$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)
|
$1.SyslogLevel, config_parse_log_level, 0, offsetof($1, exec_context.syslog_priority)
|
||||||
$1.SyslogLevelPrefix, config_parse_bool, 0, offsetof($1, exec_context.syslog_level_prefix)
|
$1.SyslogLevelPrefix, config_parse_bool, 0, offsetof($1, exec_context.syslog_level_prefix)
|
||||||
$1.LogLevelMax, config_parse_log_level, 0, offsetof($1, exec_context.log_level_max)
|
$1.LogLevelMax, config_parse_log_level, 0, offsetof($1, exec_context.log_level_max)
|
||||||
$1.LogRateLimitIntervalSec, config_parse_sec, 0, offsetof($1, exec_context.log_ratelimit_interval_usec)
|
$1.LogRateLimitIntervalSec, config_parse_sec, 0, offsetof($1, exec_context.log_ratelimit_interval_usec)
|
||||||
$1.LogRateLimitBurst, config_parse_unsigned, 0, offsetof($1, exec_context.log_ratelimit_burst)
|
$1.LogRateLimitBurst, config_parse_unsigned, 0, offsetof($1, exec_context.log_ratelimit_burst)
|
||||||
$1.LogExtraFields, config_parse_log_extra_fields, 0, offsetof($1, exec_context)
|
$1.LogExtraFields, config_parse_log_extra_fields, 0, offsetof($1, exec_context)
|
||||||
$1.Capabilities, config_parse_warn_compat, DISABLED_LEGACY, offsetof($1, exec_context)
|
$1.Capabilities, config_parse_warn_compat, DISABLED_LEGACY, offsetof($1, exec_context)
|
||||||
$1.SecureBits, config_parse_exec_secure_bits, 0, offsetof($1, exec_context.secure_bits)
|
$1.SecureBits, config_parse_exec_secure_bits, 0, offsetof($1, exec_context.secure_bits)
|
||||||
$1.CapabilityBoundingSet, config_parse_capability_set, 0, offsetof($1, exec_context.capability_bounding_set)
|
$1.CapabilityBoundingSet, config_parse_capability_set, 0, offsetof($1, exec_context.capability_bounding_set)
|
||||||
$1.AmbientCapabilities, config_parse_capability_set, 0, offsetof($1, exec_context.capability_ambient_set)
|
$1.AmbientCapabilities, config_parse_capability_set, 0, offsetof($1, exec_context.capability_ambient_set)
|
||||||
$1.TimerSlackNSec, config_parse_nsec, 0, offsetof($1, exec_context.timer_slack_nsec)
|
$1.TimerSlackNSec, config_parse_nsec, 0, offsetof($1, exec_context.timer_slack_nsec)
|
||||||
$1.NoNewPrivileges, config_parse_bool, 0, offsetof($1, exec_context.no_new_privileges)
|
$1.NoNewPrivileges, config_parse_bool, 0, offsetof($1, exec_context.no_new_privileges)
|
||||||
$1.KeyringMode, config_parse_exec_keyring_mode, 0, offsetof($1, exec_context.keyring_mode)
|
$1.KeyringMode, config_parse_exec_keyring_mode, 0, offsetof($1, exec_context.keyring_mode)
|
||||||
$1.ProtectProc, config_parse_protect_proc, 0, offsetof($1, exec_context.protect_proc)
|
$1.ProtectProc, config_parse_protect_proc, 0, offsetof($1, exec_context.protect_proc)
|
||||||
$1.ProcSubset, config_parse_proc_subset, 0, offsetof($1, exec_context.proc_subset)
|
$1.ProcSubset, config_parse_proc_subset, 0, offsetof($1, exec_context.proc_subset)
|
||||||
m4_ifdef(`HAVE_SECCOMP',
|
m4_ifdef(`HAVE_SECCOMP',
|
||||||
`$1.SystemCallFilter, config_parse_syscall_filter, 0, offsetof($1, exec_context)
|
`$1.SystemCallFilter, config_parse_syscall_filter, 0, offsetof($1, exec_context)
|
||||||
$1.SystemCallArchitectures, config_parse_syscall_archs, 0, offsetof($1, exec_context.syscall_archs)
|
$1.SystemCallArchitectures, config_parse_syscall_archs, 0, offsetof($1, exec_context.syscall_archs)
|
||||||
$1.SystemCallErrorNumber, config_parse_syscall_errno, 0, offsetof($1, exec_context)
|
$1.SystemCallErrorNumber, config_parse_syscall_errno, 0, offsetof($1, exec_context)
|
||||||
$1.SystemCallLog, config_parse_syscall_log, 0, offsetof($1, exec_context)
|
$1.SystemCallLog, config_parse_syscall_log, 0, offsetof($1, exec_context)
|
||||||
$1.MemoryDenyWriteExecute, config_parse_bool, 0, offsetof($1, exec_context.memory_deny_write_execute)
|
$1.MemoryDenyWriteExecute, config_parse_bool, 0, offsetof($1, exec_context.memory_deny_write_execute)
|
||||||
$1.RestrictNamespaces, config_parse_restrict_namespaces, 0, offsetof($1, exec_context)
|
$1.RestrictNamespaces, config_parse_restrict_namespaces, 0, offsetof($1, exec_context)
|
||||||
$1.RestrictRealtime, config_parse_bool, 0, offsetof($1, exec_context.restrict_realtime)
|
$1.RestrictRealtime, config_parse_bool, 0, offsetof($1, exec_context.restrict_realtime)
|
||||||
$1.RestrictSUIDSGID, config_parse_bool, 0, offsetof($1, exec_context.restrict_suid_sgid)
|
$1.RestrictSUIDSGID, config_parse_bool, 0, offsetof($1, exec_context.restrict_suid_sgid)
|
||||||
$1.RestrictAddressFamilies, config_parse_address_families, 0, offsetof($1, exec_context)
|
$1.RestrictAddressFamilies, config_parse_address_families, 0, offsetof($1, exec_context)
|
||||||
$1.LockPersonality, config_parse_bool, 0, offsetof($1, exec_context.lock_personality)',
|
$1.LockPersonality, config_parse_bool, 0, offsetof($1, exec_context.lock_personality)',
|
||||||
`$1.SystemCallFilter, config_parse_warn_compat, DISABLED_CONFIGURATION, 0
|
`$1.SystemCallFilter, config_parse_warn_compat, DISABLED_CONFIGURATION, 0
|
||||||
$1.SystemCallArchitectures, 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
|
$1.SystemCallErrorNumber, config_parse_warn_compat, DISABLED_CONFIGURATION, 0
|
||||||
$1.SystemCallLog, config_parse_warn_compat, DISABLED_CONFIGURATION, 0
|
$1.SystemCallLog, config_parse_warn_compat, DISABLED_CONFIGURATION, 0
|
||||||
$1.MemoryDenyWriteExecute, config_parse_warn_compat, DISABLED_CONFIGURATION, 0
|
$1.MemoryDenyWriteExecute, config_parse_warn_compat, DISABLED_CONFIGURATION, 0
|
||||||
$1.RestrictNamespaces, config_parse_warn_compat, DISABLED_CONFIGURATION, 0
|
$1.RestrictNamespaces, config_parse_warn_compat, DISABLED_CONFIGURATION, 0
|
||||||
$1.RestrictRealtime, config_parse_warn_compat, DISABLED_CONFIGURATION, 0
|
$1.RestrictRealtime, config_parse_warn_compat, DISABLED_CONFIGURATION, 0
|
||||||
$1.RestrictSUIDSGID, config_parse_warn_compat, DISABLED_CONFIGURATION, 0
|
$1.RestrictSUIDSGID, config_parse_warn_compat, DISABLED_CONFIGURATION, 0
|
||||||
$1.RestrictAddressFamilies, config_parse_warn_compat, DISABLED_CONFIGURATION, 0
|
$1.RestrictAddressFamilies, config_parse_warn_compat, DISABLED_CONFIGURATION, 0
|
||||||
$1.LockPersonality, config_parse_warn_compat, DISABLED_CONFIGURATION, 0')
|
$1.LockPersonality, config_parse_warn_compat, DISABLED_CONFIGURATION, 0')
|
||||||
$1.LimitCPU, config_parse_rlimit, RLIMIT_CPU, offsetof($1, exec_context.rlimit)
|
$1.LimitCPU, config_parse_rlimit, RLIMIT_CPU, offsetof($1, exec_context.rlimit)
|
||||||
$1.LimitFSIZE, config_parse_rlimit, RLIMIT_FSIZE, offsetof($1, exec_context.rlimit)
|
$1.LimitFSIZE, config_parse_rlimit, RLIMIT_FSIZE, offsetof($1, exec_context.rlimit)
|
||||||
$1.LimitDATA, config_parse_rlimit, RLIMIT_DATA, offsetof($1, exec_context.rlimit)
|
$1.LimitDATA, config_parse_rlimit, RLIMIT_DATA, offsetof($1, exec_context.rlimit)
|
||||||
$1.LimitSTACK, config_parse_rlimit, RLIMIT_STACK, offsetof($1, exec_context.rlimit)
|
$1.LimitSTACK, config_parse_rlimit, RLIMIT_STACK, offsetof($1, exec_context.rlimit)
|
||||||
$1.LimitCORE, config_parse_rlimit, RLIMIT_CORE, offsetof($1, exec_context.rlimit)
|
$1.LimitCORE, config_parse_rlimit, RLIMIT_CORE, offsetof($1, exec_context.rlimit)
|
||||||
$1.LimitRSS, config_parse_rlimit, RLIMIT_RSS, offsetof($1, exec_context.rlimit)
|
$1.LimitRSS, config_parse_rlimit, RLIMIT_RSS, offsetof($1, exec_context.rlimit)
|
||||||
$1.LimitNOFILE, config_parse_rlimit, RLIMIT_NOFILE, offsetof($1, exec_context.rlimit)
|
$1.LimitNOFILE, config_parse_rlimit, RLIMIT_NOFILE, offsetof($1, exec_context.rlimit)
|
||||||
$1.LimitAS, config_parse_rlimit, RLIMIT_AS, offsetof($1, exec_context.rlimit)
|
$1.LimitAS, config_parse_rlimit, RLIMIT_AS, offsetof($1, exec_context.rlimit)
|
||||||
$1.LimitNPROC, config_parse_rlimit, RLIMIT_NPROC, offsetof($1, exec_context.rlimit)
|
$1.LimitNPROC, config_parse_rlimit, RLIMIT_NPROC, offsetof($1, exec_context.rlimit)
|
||||||
$1.LimitMEMLOCK, config_parse_rlimit, RLIMIT_MEMLOCK, offsetof($1, exec_context.rlimit)
|
$1.LimitMEMLOCK, config_parse_rlimit, RLIMIT_MEMLOCK, offsetof($1, exec_context.rlimit)
|
||||||
$1.LimitLOCKS, config_parse_rlimit, RLIMIT_LOCKS, offsetof($1, exec_context.rlimit)
|
$1.LimitLOCKS, config_parse_rlimit, RLIMIT_LOCKS, offsetof($1, exec_context.rlimit)
|
||||||
$1.LimitSIGPENDING, config_parse_rlimit, RLIMIT_SIGPENDING, offsetof($1, exec_context.rlimit)
|
$1.LimitSIGPENDING, config_parse_rlimit, RLIMIT_SIGPENDING, offsetof($1, exec_context.rlimit)
|
||||||
$1.LimitMSGQUEUE, config_parse_rlimit, RLIMIT_MSGQUEUE, offsetof($1, exec_context.rlimit)
|
$1.LimitMSGQUEUE, config_parse_rlimit, RLIMIT_MSGQUEUE, offsetof($1, exec_context.rlimit)
|
||||||
$1.LimitNICE, config_parse_rlimit, RLIMIT_NICE, offsetof($1, exec_context.rlimit)
|
$1.LimitNICE, config_parse_rlimit, RLIMIT_NICE, offsetof($1, exec_context.rlimit)
|
||||||
$1.LimitRTPRIO, config_parse_rlimit, RLIMIT_RTPRIO, offsetof($1, exec_context.rlimit)
|
$1.LimitRTPRIO, config_parse_rlimit, RLIMIT_RTPRIO, offsetof($1, exec_context.rlimit)
|
||||||
$1.LimitRTTIME, config_parse_rlimit, RLIMIT_RTTIME, offsetof($1, exec_context.rlimit)
|
$1.LimitRTTIME, config_parse_rlimit, RLIMIT_RTTIME, offsetof($1, exec_context.rlimit)
|
||||||
$1.ReadWriteDirectories, config_parse_namespace_path_strv, 0, offsetof($1, exec_context.read_write_paths)
|
$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.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.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.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.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)
|
$1.InaccessiblePaths, config_parse_namespace_path_strv, 0, offsetof($1, exec_context.inaccessible_paths)
|
||||||
$1.BindPaths, config_parse_bind_paths, 0, offsetof($1, exec_context)
|
$1.BindPaths, config_parse_bind_paths, 0, offsetof($1, exec_context)
|
||||||
$1.BindReadOnlyPaths, config_parse_bind_paths, 0, offsetof($1, exec_context)
|
$1.BindReadOnlyPaths, config_parse_bind_paths, 0, offsetof($1, exec_context)
|
||||||
$1.TemporaryFileSystem, config_parse_temporary_filesystems, 0, offsetof($1, exec_context)
|
$1.TemporaryFileSystem, config_parse_temporary_filesystems, 0, offsetof($1, exec_context)
|
||||||
$1.PrivateTmp, config_parse_bool, 0, offsetof($1, exec_context.private_tmp)
|
$1.PrivateTmp, config_parse_bool, 0, offsetof($1, exec_context.private_tmp)
|
||||||
$1.PrivateDevices, config_parse_bool, 0, offsetof($1, exec_context.private_devices)
|
$1.PrivateDevices, config_parse_bool, 0, offsetof($1, exec_context.private_devices)
|
||||||
$1.ProtectKernelTunables, config_parse_bool, 0, offsetof($1, exec_context.protect_kernel_tunables)
|
$1.ProtectKernelTunables, config_parse_bool, 0, offsetof($1, exec_context.protect_kernel_tunables)
|
||||||
$1.ProtectKernelModules, config_parse_bool, 0, offsetof($1, exec_context.protect_kernel_modules)
|
$1.ProtectKernelModules, config_parse_bool, 0, offsetof($1, exec_context.protect_kernel_modules)
|
||||||
$1.ProtectKernelLogs, config_parse_bool, 0, offsetof($1, exec_context.protect_kernel_logs)
|
$1.ProtectKernelLogs, config_parse_bool, 0, offsetof($1, exec_context.protect_kernel_logs)
|
||||||
$1.ProtectClock, config_parse_bool, 0, offsetof($1, exec_context.protect_clock)
|
$1.ProtectClock, config_parse_bool, 0, offsetof($1, exec_context.protect_clock)
|
||||||
$1.ProtectControlGroups, config_parse_bool, 0, offsetof($1, exec_context.protect_control_groups)
|
$1.ProtectControlGroups, config_parse_bool, 0, offsetof($1, exec_context.protect_control_groups)
|
||||||
$1.NetworkNamespacePath, config_parse_unit_path_printf, 0, offsetof($1, exec_context.network_namespace_path)
|
$1.NetworkNamespacePath, config_parse_unit_path_printf, 0, offsetof($1, exec_context.network_namespace_path)
|
||||||
$1.LogNamespace, config_parse_log_namespace, 0, offsetof($1, exec_context)
|
$1.LogNamespace, config_parse_log_namespace, 0, offsetof($1, exec_context)
|
||||||
$1.PrivateNetwork, config_parse_bool, 0, offsetof($1, exec_context.private_network)
|
$1.PrivateNetwork, config_parse_bool, 0, offsetof($1, exec_context.private_network)
|
||||||
$1.PrivateUsers, config_parse_bool, 0, offsetof($1, exec_context.private_users)
|
$1.PrivateUsers, config_parse_bool, 0, offsetof($1, exec_context.private_users)
|
||||||
$1.PrivateMounts, config_parse_bool, 0, offsetof($1, exec_context.private_mounts)
|
$1.PrivateMounts, config_parse_bool, 0, offsetof($1, exec_context.private_mounts)
|
||||||
$1.ProtectSystem, config_parse_protect_system, 0, offsetof($1, exec_context.protect_system)
|
$1.ProtectSystem, config_parse_protect_system, 0, offsetof($1, exec_context.protect_system)
|
||||||
$1.ProtectHome, config_parse_protect_home, 0, offsetof($1, exec_context.protect_home)
|
$1.ProtectHome, config_parse_protect_home, 0, offsetof($1, exec_context.protect_home)
|
||||||
$1.MountFlags, config_parse_exec_mount_flags, 0, offsetof($1, exec_context.mount_flags)
|
$1.MountFlags, config_parse_exec_mount_flags, 0, offsetof($1, exec_context.mount_flags)
|
||||||
$1.MountAPIVFS, config_parse_bool, 0, offsetof($1, exec_context.mount_apivfs)
|
$1.MountAPIVFS, config_parse_bool, 0, offsetof($1, exec_context.mount_apivfs)
|
||||||
$1.Personality, config_parse_personality, 0, offsetof($1, exec_context.personality)
|
$1.Personality, config_parse_personality, 0, offsetof($1, exec_context.personality)
|
||||||
$1.RuntimeDirectoryPreserve, config_parse_runtime_preserve_mode, 0, offsetof($1, exec_context.runtime_directory_preserve_mode)
|
$1.RuntimeDirectoryPreserve, config_parse_runtime_preserve_mode, 0, offsetof($1, exec_context.runtime_directory_preserve_mode)
|
||||||
$1.RuntimeDirectoryMode, config_parse_mode, 0, offsetof($1, exec_context.directories[EXEC_DIRECTORY_RUNTIME].mode)
|
$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)
|
$1.RuntimeDirectory, config_parse_exec_directories, 0, offsetof($1, exec_context.directories[EXEC_DIRECTORY_RUNTIME].paths)
|
||||||
$1.StateDirectoryMode, config_parse_mode, 0, offsetof($1, exec_context.directories[EXEC_DIRECTORY_STATE].mode)
|
$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)
|
$1.StateDirectory, config_parse_exec_directories, 0, offsetof($1, exec_context.directories[EXEC_DIRECTORY_STATE].paths)
|
||||||
$1.CacheDirectoryMode, config_parse_mode, 0, offsetof($1, exec_context.directories[EXEC_DIRECTORY_CACHE].mode)
|
$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.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.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.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.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)
|
$1.ConfigurationDirectory, config_parse_exec_directories, 0, offsetof($1, exec_context.directories[EXEC_DIRECTORY_CONFIGURATION].paths)
|
||||||
$1.SetCredential, config_parse_set_credential, 0, offsetof($1, exec_context)
|
$1.SetCredential, config_parse_set_credential, 0, offsetof($1, exec_context)
|
||||||
$1.LoadCredential, config_parse_load_credential, 0, offsetof($1, exec_context)
|
$1.LoadCredential, config_parse_load_credential, 0, offsetof($1, exec_context)
|
||||||
$1.TimeoutCleanSec, config_parse_sec, 0, offsetof($1, exec_context.timeout_clean_usec)
|
$1.TimeoutCleanSec, config_parse_sec, 0, offsetof($1, exec_context.timeout_clean_usec)
|
||||||
$1.ProtectHostname, config_parse_bool, 0, offsetof($1, exec_context.protect_hostname)
|
$1.ProtectHostname, config_parse_bool, 0, offsetof($1, exec_context.protect_hostname)
|
||||||
m4_ifdef(`HAVE_PAM',
|
m4_ifdef(`HAVE_PAM',
|
||||||
`$1.PAMName, config_parse_unit_string_printf, 0, offsetof($1, exec_context.pam_name)',
|
`$1.PAMName, config_parse_unit_string_printf, 0, offsetof($1, exec_context.pam_name)',
|
||||||
`$1.PAMName, config_parse_warn_compat, DISABLED_CONFIGURATION, 0')
|
`$1.PAMName, config_parse_warn_compat, DISABLED_CONFIGURATION, 0')
|
||||||
$1.IgnoreSIGPIPE, config_parse_bool, 0, offsetof($1, exec_context.ignore_sigpipe)
|
$1.IgnoreSIGPIPE, config_parse_bool, 0, offsetof($1, exec_context.ignore_sigpipe)
|
||||||
$1.UtmpIdentifier, config_parse_unit_string_printf, 0, offsetof($1, exec_context.utmp_id)
|
$1.UtmpIdentifier, config_parse_unit_string_printf, 0, offsetof($1, exec_context.utmp_id)
|
||||||
$1.UtmpMode, config_parse_exec_utmp_mode, 0, offsetof($1, exec_context.utmp_mode)
|
$1.UtmpMode, config_parse_exec_utmp_mode, 0, offsetof($1, exec_context.utmp_mode)
|
||||||
m4_ifdef(`HAVE_SELINUX',
|
m4_ifdef(`HAVE_SELINUX',
|
||||||
`$1.SELinuxContext, config_parse_exec_selinux_context, 0, offsetof($1, exec_context)',
|
`$1.SELinuxContext, config_parse_exec_selinux_context, 0, offsetof($1, exec_context)',
|
||||||
`$1.SELinuxContext, config_parse_warn_compat, DISABLED_CONFIGURATION, 0')
|
`$1.SELinuxContext, config_parse_warn_compat, DISABLED_CONFIGURATION, 0')
|
||||||
m4_ifdef(`HAVE_APPARMOR',
|
m4_ifdef(`HAVE_APPARMOR',
|
||||||
`$1.AppArmorProfile, config_parse_exec_apparmor_profile, 0, offsetof($1, exec_context)',
|
`$1.AppArmorProfile, config_parse_exec_apparmor_profile, 0, offsetof($1, exec_context)',
|
||||||
`$1.AppArmorProfile, config_parse_warn_compat, DISABLED_CONFIGURATION, 0')
|
`$1.AppArmorProfile, config_parse_warn_compat, DISABLED_CONFIGURATION, 0')
|
||||||
m4_ifdef(`ENABLE_SMACK',
|
m4_ifdef(`ENABLE_SMACK',
|
||||||
`$1.SmackProcessLabel, config_parse_exec_smack_process_label, 0, offsetof($1, exec_context)',
|
`$1.SmackProcessLabel, config_parse_exec_smack_process_label, 0, offsetof($1, exec_context)',
|
||||||
`$1.SmackProcessLabel, config_parse_warn_compat, DISABLED_CONFIGURATION, 0')'
|
`$1.SmackProcessLabel, config_parse_warn_compat, DISABLED_CONFIGURATION, 0')'
|
||||||
)m4_dnl
|
)m4_dnl
|
||||||
m4_define(`KILL_CONTEXT_CONFIG_ITEMS',
|
m4_define(`KILL_CONTEXT_CONFIG_ITEMS',
|
||||||
`$1.SendSIGKILL, config_parse_bool, 0, offsetof($1, kill_context.send_sigkill)
|
`$1.SendSIGKILL, config_parse_bool, 0, offsetof($1, kill_context.send_sigkill)
|
||||||
$1.SendSIGHUP, config_parse_bool, 0, offsetof($1, kill_context.send_sighup)
|
$1.SendSIGHUP, config_parse_bool, 0, offsetof($1, kill_context.send_sighup)
|
||||||
$1.KillMode, config_parse_kill_mode, 0, offsetof($1, kill_context.kill_mode)
|
$1.KillMode, config_parse_kill_mode, 0, offsetof($1, kill_context.kill_mode)
|
||||||
$1.KillSignal, config_parse_signal, 0, offsetof($1, kill_context.kill_signal)
|
$1.KillSignal, config_parse_signal, 0, offsetof($1, kill_context.kill_signal)
|
||||||
$1.RestartKillSignal, config_parse_signal, 0, offsetof($1, kill_context.restart_kill_signal)
|
$1.RestartKillSignal, config_parse_signal, 0, offsetof($1, kill_context.restart_kill_signal)
|
||||||
$1.FinalKillSignal, config_parse_signal, 0, offsetof($1, kill_context.final_kill_signal)
|
$1.FinalKillSignal, config_parse_signal, 0, offsetof($1, kill_context.final_kill_signal)
|
||||||
$1.WatchdogSignal, config_parse_signal, 0, offsetof($1, kill_context.watchdog_signal)'
|
$1.WatchdogSignal, config_parse_signal, 0, offsetof($1, kill_context.watchdog_signal)'
|
||||||
)m4_dnl
|
)m4_dnl
|
||||||
m4_define(`CGROUP_CONTEXT_CONFIG_ITEMS',
|
m4_define(`CGROUP_CONTEXT_CONFIG_ITEMS',
|
||||||
`$1.Slice, config_parse_unit_slice, 0, 0
|
`$1.Slice, config_parse_unit_slice, 0, 0
|
||||||
$1.AllowedCPUs, config_parse_allowed_cpus, 0, offsetof($1, cgroup_context)
|
$1.AllowedCPUs, config_parse_allowed_cpus, 0, offsetof($1, cgroup_context)
|
||||||
$1.AllowedMemoryNodes, config_parse_allowed_mems, 0, offsetof($1, cgroup_context)
|
$1.AllowedMemoryNodes, config_parse_allowed_mems, 0, offsetof($1, cgroup_context)
|
||||||
$1.CPUAccounting, config_parse_bool, 0, offsetof($1, cgroup_context.cpu_accounting)
|
$1.CPUAccounting, config_parse_bool, 0, offsetof($1, cgroup_context.cpu_accounting)
|
||||||
$1.CPUWeight, config_parse_cg_weight, 0, offsetof($1, cgroup_context.cpu_weight)
|
$1.CPUWeight, config_parse_cg_weight, 0, offsetof($1, cgroup_context.cpu_weight)
|
||||||
$1.StartupCPUWeight, config_parse_cg_weight, 0, offsetof($1, cgroup_context.startup_cpu_weight)
|
$1.StartupCPUWeight, config_parse_cg_weight, 0, offsetof($1, cgroup_context.startup_cpu_weight)
|
||||||
$1.CPUShares, config_parse_cpu_shares, 0, offsetof($1, cgroup_context.cpu_shares)
|
$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)
|
$1.StartupCPUShares, config_parse_cpu_shares, 0, offsetof($1, cgroup_context.startup_cpu_shares)
|
||||||
$1.CPUQuota, config_parse_cpu_quota, 0, offsetof($1, cgroup_context)
|
$1.CPUQuota, config_parse_cpu_quota, 0, offsetof($1, cgroup_context)
|
||||||
$1.CPUQuotaPeriodSec, config_parse_sec_def_infinity, 0, offsetof($1, cgroup_context.cpu_quota_period_usec)
|
$1.CPUQuotaPeriodSec, config_parse_sec_def_infinity, 0, offsetof($1, cgroup_context.cpu_quota_period_usec)
|
||||||
$1.MemoryAccounting, config_parse_bool, 0, offsetof($1, cgroup_context.memory_accounting)
|
$1.MemoryAccounting, config_parse_bool, 0, offsetof($1, cgroup_context.memory_accounting)
|
||||||
$1.MemoryMin, config_parse_memory_limit, 0, offsetof($1, cgroup_context)
|
$1.MemoryMin, config_parse_memory_limit, 0, offsetof($1, cgroup_context)
|
||||||
$1.DefaultMemoryMin, config_parse_memory_limit, 0, offsetof($1, cgroup_context)
|
$1.DefaultMemoryMin, config_parse_memory_limit, 0, offsetof($1, cgroup_context)
|
||||||
$1.DefaultMemoryLow, config_parse_memory_limit, 0, offsetof($1, cgroup_context)
|
$1.DefaultMemoryLow, config_parse_memory_limit, 0, offsetof($1, cgroup_context)
|
||||||
$1.MemoryLow, config_parse_memory_limit, 0, offsetof($1, cgroup_context)
|
$1.MemoryLow, config_parse_memory_limit, 0, offsetof($1, cgroup_context)
|
||||||
$1.MemoryHigh, 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)
|
$1.MemoryMax, config_parse_memory_limit, 0, offsetof($1, cgroup_context)
|
||||||
$1.MemorySwapMax, config_parse_memory_limit, 0, offsetof($1, cgroup_context)
|
$1.MemorySwapMax, config_parse_memory_limit, 0, offsetof($1, cgroup_context)
|
||||||
$1.MemoryLimit, config_parse_memory_limit, 0, offsetof($1, cgroup_context)
|
$1.MemoryLimit, config_parse_memory_limit, 0, offsetof($1, cgroup_context)
|
||||||
$1.DeviceAllow, config_parse_device_allow, 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)
|
$1.DevicePolicy, config_parse_device_policy, 0, offsetof($1, cgroup_context.device_policy)
|
||||||
$1.IOAccounting, config_parse_bool, 0, offsetof($1, cgroup_context.io_accounting)
|
$1.IOAccounting, config_parse_bool, 0, offsetof($1, cgroup_context.io_accounting)
|
||||||
$1.IOWeight, config_parse_cg_weight, 0, offsetof($1, cgroup_context.io_weight)
|
$1.IOWeight, config_parse_cg_weight, 0, offsetof($1, cgroup_context.io_weight)
|
||||||
$1.StartupIOWeight, config_parse_cg_weight, 0, offsetof($1, cgroup_context.startup_io_weight)
|
$1.StartupIOWeight, config_parse_cg_weight, 0, offsetof($1, cgroup_context.startup_io_weight)
|
||||||
$1.IODeviceWeight, config_parse_io_device_weight, 0, offsetof($1, cgroup_context)
|
$1.IODeviceWeight, config_parse_io_device_weight, 0, offsetof($1, cgroup_context)
|
||||||
$1.IOReadBandwidthMax, config_parse_io_limit, 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)
|
$1.IOWriteBandwidthMax, config_parse_io_limit, 0, offsetof($1, cgroup_context)
|
||||||
$1.IOReadIOPSMax, config_parse_io_limit, 0, offsetof($1, cgroup_context)
|
$1.IOReadIOPSMax, config_parse_io_limit, 0, offsetof($1, cgroup_context)
|
||||||
$1.IOWriteIOPSMax, config_parse_io_limit, 0, offsetof($1, cgroup_context)
|
$1.IOWriteIOPSMax, config_parse_io_limit, 0, offsetof($1, cgroup_context)
|
||||||
$1.IODeviceLatencyTargetSec, config_parse_io_device_latency, 0, offsetof($1, cgroup_context)
|
$1.IODeviceLatencyTargetSec, config_parse_io_device_latency, 0, offsetof($1, cgroup_context)
|
||||||
$1.BlockIOAccounting, config_parse_bool, 0, offsetof($1, cgroup_context.blockio_accounting)
|
$1.BlockIOAccounting, config_parse_bool, 0, offsetof($1, cgroup_context.blockio_accounting)
|
||||||
$1.BlockIOWeight, config_parse_blockio_weight, 0, offsetof($1, cgroup_context.blockio_weight)
|
$1.BlockIOWeight, config_parse_blockio_weight, 0, offsetof($1, cgroup_context.blockio_weight)
|
||||||
$1.StartupBlockIOWeight, config_parse_blockio_weight, 0, offsetof($1, cgroup_context.startup_blockio_weight)
|
$1.StartupBlockIOWeight, config_parse_blockio_weight, 0, offsetof($1, cgroup_context.startup_blockio_weight)
|
||||||
$1.BlockIODeviceWeight, config_parse_blockio_device_weight, 0, offsetof($1, cgroup_context)
|
$1.BlockIODeviceWeight, config_parse_blockio_device_weight, 0, offsetof($1, cgroup_context)
|
||||||
$1.BlockIOReadBandwidth, config_parse_blockio_bandwidth, 0, offsetof($1, cgroup_context)
|
$1.BlockIOReadBandwidth, config_parse_blockio_bandwidth, 0, offsetof($1, cgroup_context)
|
||||||
$1.BlockIOWriteBandwidth, config_parse_blockio_bandwidth, 0, offsetof($1, cgroup_context)
|
$1.BlockIOWriteBandwidth, config_parse_blockio_bandwidth, 0, offsetof($1, cgroup_context)
|
||||||
$1.TasksAccounting, config_parse_bool, 0, offsetof($1, cgroup_context.tasks_accounting)
|
$1.TasksAccounting, config_parse_bool, 0, offsetof($1, cgroup_context.tasks_accounting)
|
||||||
$1.TasksMax, config_parse_tasks_max, 0, offsetof($1, cgroup_context.tasks_max)
|
$1.TasksMax, config_parse_tasks_max, 0, offsetof($1, cgroup_context.tasks_max)
|
||||||
$1.Delegate, config_parse_delegate, 0, offsetof($1, cgroup_context)
|
$1.Delegate, config_parse_delegate, 0, offsetof($1, cgroup_context)
|
||||||
$1.DisableControllers, config_parse_disable_controllers, 0, offsetof($1, cgroup_context)
|
$1.DisableControllers, config_parse_disable_controllers, 0, offsetof($1, cgroup_context)
|
||||||
$1.IPAccounting, config_parse_bool, 0, offsetof($1, cgroup_context.ip_accounting)
|
$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.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)
|
$1.IPAddressDeny, config_parse_ip_address_access, 0, offsetof($1, cgroup_context.ip_address_deny)
|
||||||
$1.IPIngressFilterPath, config_parse_ip_filter_bpf_progs, 0, offsetof($1, cgroup_context.ip_filters_ingress)
|
$1.IPIngressFilterPath, config_parse_ip_filter_bpf_progs, 0, offsetof($1, cgroup_context.ip_filters_ingress)
|
||||||
$1.IPEgressFilterPath, config_parse_ip_filter_bpf_progs, 0, offsetof($1, cgroup_context.ip_filters_egress)
|
$1.IPEgressFilterPath, config_parse_ip_filter_bpf_progs, 0, offsetof($1, cgroup_context.ip_filters_egress)
|
||||||
$1.ManagedOOMSwap, config_parse_managed_oom_mode, 0, offsetof($1, cgroup_context.moom_swap)
|
$1.ManagedOOMSwap, config_parse_managed_oom_mode, 0, offsetof($1, cgroup_context.moom_swap)
|
||||||
$1.ManagedOOMMemoryPressure, config_parse_managed_oom_mode, 0, offsetof($1, cgroup_context.moom_mem_pressure)
|
$1.ManagedOOMMemoryPressure, config_parse_managed_oom_mode, 0, offsetof($1, cgroup_context.moom_mem_pressure)
|
||||||
$1.ManagedOOMMemoryPressureLimitPercent,config_parse_managed_oom_mem_pressure_limit,0, offsetof($1, cgroup_context)
|
$1.ManagedOOMMemoryPressureLimitPercent, config_parse_managed_oom_mem_pressure_limit, 0, offsetof($1, cgroup_context.moom_mem_pressure_limit)
|
||||||
$1.NetClass, config_parse_warn_compat, DISABLED_LEGACY, 0'
|
$1.NetClass, config_parse_warn_compat, DISABLED_LEGACY, 0'
|
||||||
)m4_dnl
|
)m4_dnl
|
||||||
Unit.Description, config_parse_unit_string_printf, 0, offsetof(Unit, description)
|
Unit.Description, config_parse_unit_string_printf, 0, offsetof(Unit, description)
|
||||||
Unit.Documentation, config_parse_documentation, 0, offsetof(Unit, documentation)
|
Unit.Documentation, config_parse_documentation, 0, offsetof(Unit, documentation)
|
||||||
Unit.SourcePath, config_parse_unit_path_printf, 0, offsetof(Unit, source_path)
|
Unit.SourcePath, config_parse_unit_path_printf, 0, offsetof(Unit, source_path)
|
||||||
Unit.Requires, config_parse_unit_deps, UNIT_REQUIRES, 0
|
Unit.Requires, config_parse_unit_deps, UNIT_REQUIRES, 0
|
||||||
Unit.Requisite, config_parse_unit_deps, UNIT_REQUISITE, 0
|
Unit.Requisite, config_parse_unit_deps, UNIT_REQUISITE, 0
|
||||||
Unit.Wants, config_parse_unit_deps, UNIT_WANTS, 0
|
Unit.Wants, config_parse_unit_deps, UNIT_WANTS, 0
|
||||||
Unit.BindsTo, config_parse_unit_deps, UNIT_BINDS_TO, 0
|
Unit.BindsTo, config_parse_unit_deps, UNIT_BINDS_TO, 0
|
||||||
Unit.BindTo, config_parse_unit_deps, UNIT_BINDS_TO, 0
|
Unit.BindTo, config_parse_unit_deps, UNIT_BINDS_TO, 0
|
||||||
Unit.Conflicts, config_parse_unit_deps, UNIT_CONFLICTS, 0
|
Unit.Conflicts, config_parse_unit_deps, UNIT_CONFLICTS, 0
|
||||||
Unit.Before, config_parse_unit_deps, UNIT_BEFORE, 0
|
Unit.Before, config_parse_unit_deps, UNIT_BEFORE, 0
|
||||||
Unit.After, config_parse_unit_deps, UNIT_AFTER, 0
|
Unit.After, config_parse_unit_deps, UNIT_AFTER, 0
|
||||||
Unit.OnFailure, config_parse_unit_deps, UNIT_ON_FAILURE, 0
|
Unit.OnFailure, config_parse_unit_deps, UNIT_ON_FAILURE, 0
|
||||||
Unit.PropagatesReloadTo, config_parse_unit_deps, UNIT_PROPAGATES_RELOAD_TO, 0
|
Unit.PropagatesReloadTo, config_parse_unit_deps, UNIT_PROPAGATES_RELOAD_TO, 0
|
||||||
Unit.PropagateReloadTo, 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.ReloadPropagatedFrom, config_parse_unit_deps, UNIT_RELOAD_PROPAGATED_FROM, 0
|
||||||
Unit.PropagateReloadFrom, config_parse_unit_deps, UNIT_RELOAD_PROPAGATED_FROM, 0
|
Unit.PropagateReloadFrom, config_parse_unit_deps, UNIT_RELOAD_PROPAGATED_FROM, 0
|
||||||
Unit.PartOf, config_parse_unit_deps, UNIT_PART_OF, 0
|
Unit.PartOf, config_parse_unit_deps, UNIT_PART_OF, 0
|
||||||
Unit.JoinsNamespaceOf, config_parse_unit_deps, UNIT_JOINS_NAMESPACE_OF, 0
|
Unit.JoinsNamespaceOf, config_parse_unit_deps, UNIT_JOINS_NAMESPACE_OF, 0
|
||||||
Unit.RequiresOverridable, config_parse_obsolete_unit_deps, UNIT_REQUIRES, 0
|
Unit.RequiresOverridable, config_parse_obsolete_unit_deps, UNIT_REQUIRES, 0
|
||||||
Unit.RequisiteOverridable, config_parse_obsolete_unit_deps, UNIT_REQUISITE, 0
|
Unit.RequisiteOverridable, config_parse_obsolete_unit_deps, UNIT_REQUISITE, 0
|
||||||
Unit.RequiresMountsFor, config_parse_unit_requires_mounts_for, 0, 0
|
Unit.RequiresMountsFor, config_parse_unit_requires_mounts_for, 0, 0
|
||||||
Unit.StopWhenUnneeded, config_parse_bool, 0, offsetof(Unit, stop_when_unneeded)
|
Unit.StopWhenUnneeded, config_parse_bool, 0, offsetof(Unit, stop_when_unneeded)
|
||||||
Unit.RefuseManualStart, config_parse_bool, 0, offsetof(Unit, refuse_manual_start)
|
Unit.RefuseManualStart, config_parse_bool, 0, offsetof(Unit, refuse_manual_start)
|
||||||
Unit.RefuseManualStop, config_parse_bool, 0, offsetof(Unit, refuse_manual_stop)
|
Unit.RefuseManualStop, config_parse_bool, 0, offsetof(Unit, refuse_manual_stop)
|
||||||
Unit.AllowIsolate, config_parse_bool, 0, offsetof(Unit, allow_isolate)
|
Unit.AllowIsolate, config_parse_bool, 0, offsetof(Unit, allow_isolate)
|
||||||
Unit.DefaultDependencies, config_parse_bool, 0, offsetof(Unit, default_dependencies)
|
Unit.DefaultDependencies, config_parse_bool, 0, offsetof(Unit, default_dependencies)
|
||||||
Unit.OnFailureJobMode, config_parse_job_mode, 0, offsetof(Unit, on_failure_job_mode)
|
Unit.OnFailureJobMode, config_parse_job_mode, 0, offsetof(Unit, on_failure_job_mode)
|
||||||
m4_dnl The following is a legacy alias name for compatibility
|
m4_dnl The following is a legacy alias name for compatibility
|
||||||
Unit.OnFailureIsolate, config_parse_job_mode_isolate, 0, offsetof(Unit, on_failure_job_mode)
|
Unit.OnFailureIsolate, config_parse_job_mode_isolate, 0, offsetof(Unit, on_failure_job_mode)
|
||||||
Unit.IgnoreOnIsolate, config_parse_bool, 0, offsetof(Unit, ignore_on_isolate)
|
Unit.IgnoreOnIsolate, config_parse_bool, 0, offsetof(Unit, ignore_on_isolate)
|
||||||
Unit.IgnoreOnSnapshot, config_parse_warn_compat, DISABLED_LEGACY, 0
|
Unit.IgnoreOnSnapshot, config_parse_warn_compat, DISABLED_LEGACY, 0
|
||||||
Unit.JobTimeoutSec, config_parse_job_timeout_sec, 0, 0
|
Unit.JobTimeoutSec, config_parse_job_timeout_sec, 0, 0
|
||||||
Unit.JobRunningTimeoutSec, config_parse_job_running_timeout_sec, 0, 0
|
Unit.JobRunningTimeoutSec, config_parse_job_running_timeout_sec, 0, 0
|
||||||
Unit.JobTimeoutAction, config_parse_emergency_action, 0, offsetof(Unit, job_timeout_action)
|
Unit.JobTimeoutAction, config_parse_emergency_action, 0, offsetof(Unit, job_timeout_action)
|
||||||
Unit.JobTimeoutRebootArgument, config_parse_unit_string_printf, 0, offsetof(Unit, job_timeout_reboot_arg)
|
Unit.JobTimeoutRebootArgument, config_parse_unit_string_printf, 0, offsetof(Unit, job_timeout_reboot_arg)
|
||||||
Unit.StartLimitIntervalSec, config_parse_sec, 0, offsetof(Unit, start_ratelimit.interval)
|
Unit.StartLimitIntervalSec, config_parse_sec, 0, offsetof(Unit, start_ratelimit.interval)
|
||||||
m4_dnl The following is a legacy alias name for compatibility
|
m4_dnl The following is a legacy alias name for compatibility
|
||||||
Unit.StartLimitInterval, config_parse_sec, 0, offsetof(Unit, start_ratelimit.interval)
|
Unit.StartLimitInterval, config_parse_sec, 0, offsetof(Unit, start_ratelimit.interval)
|
||||||
Unit.StartLimitBurst, config_parse_unsigned, 0, offsetof(Unit, start_ratelimit.burst)
|
Unit.StartLimitBurst, config_parse_unsigned, 0, offsetof(Unit, start_ratelimit.burst)
|
||||||
Unit.StartLimitAction, config_parse_emergency_action, 0, offsetof(Unit, start_limit_action)
|
Unit.StartLimitAction, config_parse_emergency_action, 0, offsetof(Unit, start_limit_action)
|
||||||
Unit.FailureAction, config_parse_emergency_action, 0, offsetof(Unit, failure_action)
|
Unit.FailureAction, config_parse_emergency_action, 0, offsetof(Unit, failure_action)
|
||||||
Unit.SuccessAction, config_parse_emergency_action, 0, offsetof(Unit, success_action)
|
Unit.SuccessAction, config_parse_emergency_action, 0, offsetof(Unit, success_action)
|
||||||
Unit.FailureActionExitStatus, config_parse_exit_status, 0, offsetof(Unit, failure_action_exit_status)
|
Unit.FailureActionExitStatus, config_parse_exit_status, 0, offsetof(Unit, failure_action_exit_status)
|
||||||
Unit.SuccessActionExitStatus, config_parse_exit_status, 0, offsetof(Unit, success_action_exit_status)
|
Unit.SuccessActionExitStatus, config_parse_exit_status, 0, offsetof(Unit, success_action_exit_status)
|
||||||
Unit.RebootArgument, config_parse_unit_string_printf, 0, offsetof(Unit, reboot_arg)
|
Unit.RebootArgument, config_parse_unit_string_printf, 0, offsetof(Unit, reboot_arg)
|
||||||
Unit.ConditionPathExists, config_parse_unit_condition_path, CONDITION_PATH_EXISTS, offsetof(Unit, conditions)
|
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.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.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.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.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.ConditionPathIsReadWrite, config_parse_unit_condition_path, CONDITION_PATH_IS_READ_WRITE, offsetof(Unit, conditions)
|
||||||
Unit.ConditionPathIsEncrypted, config_parse_unit_condition_path, CONDITION_PATH_IS_ENCRYPTED, offsetof(Unit, conditions)
|
Unit.ConditionPathIsEncrypted, config_parse_unit_condition_path, CONDITION_PATH_IS_ENCRYPTED, offsetof(Unit, conditions)
|
||||||
Unit.ConditionDirectoryNotEmpty, config_parse_unit_condition_path, CONDITION_DIRECTORY_NOT_EMPTY, 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.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.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.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.ConditionFirstBoot, config_parse_unit_condition_string, CONDITION_FIRST_BOOT, offsetof(Unit, conditions)
|
||||||
Unit.ConditionArchitecture, config_parse_unit_condition_string, CONDITION_ARCHITECTURE, 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.ConditionVirtualization, config_parse_unit_condition_string, CONDITION_VIRTUALIZATION, offsetof(Unit, conditions)
|
||||||
Unit.ConditionHost, config_parse_unit_condition_string, CONDITION_HOST, offsetof(Unit, conditions)
|
Unit.ConditionHost, config_parse_unit_condition_string, CONDITION_HOST, offsetof(Unit, conditions)
|
||||||
Unit.ConditionKernelCommandLine, config_parse_unit_condition_string, CONDITION_KERNEL_COMMAND_LINE, offsetof(Unit, conditions)
|
Unit.ConditionKernelCommandLine, config_parse_unit_condition_string, CONDITION_KERNEL_COMMAND_LINE, offsetof(Unit, conditions)
|
||||||
Unit.ConditionKernelVersion, config_parse_unit_condition_string, CONDITION_KERNEL_VERSION, offsetof(Unit, conditions)
|
Unit.ConditionKernelVersion, config_parse_unit_condition_string, CONDITION_KERNEL_VERSION, offsetof(Unit, conditions)
|
||||||
Unit.ConditionSecurity, config_parse_unit_condition_string, CONDITION_SECURITY, 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.ConditionCapability, config_parse_unit_condition_string, CONDITION_CAPABILITY, offsetof(Unit, conditions)
|
||||||
Unit.ConditionACPower, config_parse_unit_condition_string, CONDITION_AC_POWER, offsetof(Unit, conditions)
|
Unit.ConditionACPower, config_parse_unit_condition_string, CONDITION_AC_POWER, offsetof(Unit, conditions)
|
||||||
Unit.ConditionMemory, config_parse_unit_condition_string, CONDITION_MEMORY, offsetof(Unit, conditions)
|
Unit.ConditionMemory, config_parse_unit_condition_string, CONDITION_MEMORY, offsetof(Unit, conditions)
|
||||||
Unit.ConditionCPUs, config_parse_unit_condition_string, CONDITION_CPUS, offsetof(Unit, conditions)
|
Unit.ConditionCPUs, config_parse_unit_condition_string, CONDITION_CPUS, offsetof(Unit, conditions)
|
||||||
Unit.ConditionEnvironment, config_parse_unit_condition_string, CONDITION_ENVIRONMENT, offsetof(Unit, conditions)
|
Unit.ConditionEnvironment, config_parse_unit_condition_string, CONDITION_ENVIRONMENT, offsetof(Unit, conditions)
|
||||||
Unit.ConditionUser, config_parse_unit_condition_string, CONDITION_USER, offsetof(Unit, conditions)
|
Unit.ConditionUser, config_parse_unit_condition_string, CONDITION_USER, offsetof(Unit, conditions)
|
||||||
Unit.ConditionGroup, config_parse_unit_condition_string, CONDITION_GROUP, offsetof(Unit, conditions)
|
Unit.ConditionGroup, config_parse_unit_condition_string, CONDITION_GROUP, offsetof(Unit, conditions)
|
||||||
Unit.ConditionControlGroupController, config_parse_unit_condition_string, CONDITION_CONTROL_GROUP_CONTROLLER, offsetof(Unit, conditions)
|
Unit.ConditionControlGroupController, config_parse_unit_condition_string, CONDITION_CONTROL_GROUP_CONTROLLER, offsetof(Unit, conditions)
|
||||||
Unit.AssertPathExists, config_parse_unit_condition_path, CONDITION_PATH_EXISTS, offsetof(Unit, asserts)
|
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.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.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.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.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.AssertPathIsReadWrite, config_parse_unit_condition_path, CONDITION_PATH_IS_READ_WRITE, offsetof(Unit, asserts)
|
||||||
Unit.AssertPathIsEncrypted, config_parse_unit_condition_path, CONDITION_PATH_IS_ENCRYPTED, offsetof(Unit, asserts)
|
Unit.AssertPathIsEncrypted, config_parse_unit_condition_path, CONDITION_PATH_IS_ENCRYPTED, offsetof(Unit, asserts)
|
||||||
Unit.AssertDirectoryNotEmpty, config_parse_unit_condition_path, CONDITION_DIRECTORY_NOT_EMPTY, 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.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.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.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.AssertFirstBoot, config_parse_unit_condition_string, CONDITION_FIRST_BOOT, offsetof(Unit, asserts)
|
||||||
Unit.AssertArchitecture, config_parse_unit_condition_string, CONDITION_ARCHITECTURE, 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.AssertVirtualization, config_parse_unit_condition_string, CONDITION_VIRTUALIZATION, offsetof(Unit, asserts)
|
||||||
Unit.AssertHost, config_parse_unit_condition_string, CONDITION_HOST, offsetof(Unit, asserts)
|
Unit.AssertHost, config_parse_unit_condition_string, CONDITION_HOST, offsetof(Unit, asserts)
|
||||||
Unit.AssertKernelCommandLine, config_parse_unit_condition_string, CONDITION_KERNEL_COMMAND_LINE, offsetof(Unit, asserts)
|
Unit.AssertKernelCommandLine, config_parse_unit_condition_string, CONDITION_KERNEL_COMMAND_LINE, offsetof(Unit, asserts)
|
||||||
Unit.AssertKernelVersion, config_parse_unit_condition_string, CONDITION_KERNEL_VERSION, offsetof(Unit, asserts)
|
Unit.AssertKernelVersion, config_parse_unit_condition_string, CONDITION_KERNEL_VERSION, offsetof(Unit, asserts)
|
||||||
Unit.AssertSecurity, config_parse_unit_condition_string, CONDITION_SECURITY, 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.AssertCapability, config_parse_unit_condition_string, CONDITION_CAPABILITY, offsetof(Unit, asserts)
|
||||||
Unit.AssertACPower, config_parse_unit_condition_string, CONDITION_AC_POWER, offsetof(Unit, asserts)
|
Unit.AssertACPower, config_parse_unit_condition_string, CONDITION_AC_POWER, offsetof(Unit, asserts)
|
||||||
Unit.AssertMemory, config_parse_unit_condition_string, CONDITION_MEMORY, offsetof(Unit, asserts)
|
Unit.AssertMemory, config_parse_unit_condition_string, CONDITION_MEMORY, offsetof(Unit, asserts)
|
||||||
Unit.AssertCPUs, config_parse_unit_condition_string, CONDITION_CPUS, offsetof(Unit, asserts)
|
Unit.AssertCPUs, config_parse_unit_condition_string, CONDITION_CPUS, offsetof(Unit, asserts)
|
||||||
Unit.AssertEnvironment, config_parse_unit_condition_string, CONDITION_ENVIRONMENT, offsetof(Unit, asserts)
|
Unit.AssertEnvironment, config_parse_unit_condition_string, CONDITION_ENVIRONMENT, offsetof(Unit, asserts)
|
||||||
Unit.AssertUser, config_parse_unit_condition_string, CONDITION_USER, offsetof(Unit, asserts)
|
Unit.AssertUser, config_parse_unit_condition_string, CONDITION_USER, offsetof(Unit, asserts)
|
||||||
Unit.AssertGroup, config_parse_unit_condition_string, CONDITION_GROUP, offsetof(Unit, asserts)
|
Unit.AssertGroup, config_parse_unit_condition_string, CONDITION_GROUP, offsetof(Unit, asserts)
|
||||||
Unit.AssertControlGroupController, config_parse_unit_condition_string, CONDITION_CONTROL_GROUP_CONTROLLER, offsetof(Unit, asserts)
|
Unit.AssertControlGroupController, config_parse_unit_condition_string, CONDITION_CONTROL_GROUP_CONTROLLER, offsetof(Unit, asserts)
|
||||||
Unit.CollectMode, config_parse_collect_mode, 0, offsetof(Unit, collect_mode)
|
Unit.CollectMode, config_parse_collect_mode, 0, offsetof(Unit, collect_mode)
|
||||||
m4_dnl
|
m4_dnl
|
||||||
Service.PIDFile, config_parse_pid_file, 0, offsetof(Service, pid_file)
|
Service.PIDFile, config_parse_pid_file, 0, offsetof(Service, pid_file)
|
||||||
Service.ExecCondition, config_parse_exec, SERVICE_EXEC_CONDITION, offsetof(Service, exec_command)
|
Service.ExecCondition, config_parse_exec, SERVICE_EXEC_CONDITION, offsetof(Service, exec_command)
|
||||||
Service.ExecStartPre, config_parse_exec, SERVICE_EXEC_START_PRE, offsetof(Service, exec_command)
|
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.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.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.ExecReload, config_parse_exec, SERVICE_EXEC_RELOAD, offsetof(Service, exec_command)
|
||||||
Service.ExecStop, config_parse_exec, SERVICE_EXEC_STOP, 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)
|
Service.ExecStopPost, config_parse_exec, SERVICE_EXEC_STOP_POST, offsetof(Service, exec_command)
|
||||||
Service.RestartSec, config_parse_sec, 0, offsetof(Service, restart_usec)
|
Service.RestartSec, config_parse_sec, 0, offsetof(Service, restart_usec)
|
||||||
Service.TimeoutSec, config_parse_service_timeout, 0, 0
|
Service.TimeoutSec, config_parse_service_timeout, 0, 0
|
||||||
Service.TimeoutStartSec, config_parse_service_timeout, 0, 0
|
Service.TimeoutStartSec, config_parse_service_timeout, 0, 0
|
||||||
Service.TimeoutStopSec, config_parse_sec_fix_0, 0, offsetof(Service, timeout_stop_usec)
|
Service.TimeoutStopSec, config_parse_sec_fix_0, 0, offsetof(Service, timeout_stop_usec)
|
||||||
Service.TimeoutAbortSec, config_parse_service_timeout_abort, 0, 0
|
Service.TimeoutAbortSec, config_parse_service_timeout_abort, 0, 0
|
||||||
Service.TimeoutStartFailureMode, config_parse_service_timeout_failure_mode, 0, offsetof(Service, timeout_start_failure_mode)
|
Service.TimeoutStartFailureMode, config_parse_service_timeout_failure_mode, 0, offsetof(Service, timeout_start_failure_mode)
|
||||||
Service.TimeoutStopFailureMode, config_parse_service_timeout_failure_mode, 0, offsetof(Service, timeout_stop_failure_mode)
|
Service.TimeoutStopFailureMode, config_parse_service_timeout_failure_mode, 0, offsetof(Service, timeout_stop_failure_mode)
|
||||||
Service.RuntimeMaxSec, config_parse_sec, 0, offsetof(Service, runtime_max_usec)
|
Service.RuntimeMaxSec, config_parse_sec, 0, offsetof(Service, runtime_max_usec)
|
||||||
Service.WatchdogSec, config_parse_sec, 0, offsetof(Service, watchdog_usec)
|
Service.WatchdogSec, config_parse_sec, 0, offsetof(Service, watchdog_usec)
|
||||||
m4_dnl The following five only exist for compatibility, they moved into Unit, see above
|
m4_dnl The following five only exist for compatibility, they moved into Unit, see above
|
||||||
Service.StartLimitInterval, config_parse_sec, 0, offsetof(Unit, start_ratelimit.interval)
|
Service.StartLimitInterval, config_parse_sec, 0, offsetof(Unit, start_ratelimit.interval)
|
||||||
Service.StartLimitBurst, config_parse_unsigned, 0, offsetof(Unit, start_ratelimit.burst)
|
Service.StartLimitBurst, config_parse_unsigned, 0, offsetof(Unit, start_ratelimit.burst)
|
||||||
Service.StartLimitAction, config_parse_emergency_action, 0, offsetof(Unit, start_limit_action)
|
Service.StartLimitAction, config_parse_emergency_action, 0, offsetof(Unit, start_limit_action)
|
||||||
Service.FailureAction, config_parse_emergency_action, 0, offsetof(Unit, failure_action)
|
Service.FailureAction, config_parse_emergency_action, 0, offsetof(Unit, failure_action)
|
||||||
Service.RebootArgument, config_parse_unit_string_printf, 0, offsetof(Unit, reboot_arg)
|
Service.RebootArgument, config_parse_unit_string_printf, 0, offsetof(Unit, reboot_arg)
|
||||||
Service.Type, config_parse_service_type, 0, offsetof(Service, type)
|
Service.Type, config_parse_service_type, 0, offsetof(Service, type)
|
||||||
Service.Restart, config_parse_service_restart, 0, offsetof(Service, restart)
|
Service.Restart, config_parse_service_restart, 0, offsetof(Service, restart)
|
||||||
Service.PermissionsStartOnly, config_parse_bool, 0, offsetof(Service, permissions_start_only)
|
Service.PermissionsStartOnly, config_parse_bool, 0, offsetof(Service, permissions_start_only)
|
||||||
Service.RootDirectoryStartOnly, config_parse_bool, 0, offsetof(Service, root_directory_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.RemainAfterExit, config_parse_bool, 0, offsetof(Service, remain_after_exit)
|
||||||
Service.GuessMainPID, config_parse_bool, 0, offsetof(Service, guess_main_pid)
|
Service.GuessMainPID, config_parse_bool, 0, offsetof(Service, guess_main_pid)
|
||||||
Service.RestartPreventExitStatus, config_parse_set_status, 0, offsetof(Service, restart_prevent_status)
|
Service.RestartPreventExitStatus, config_parse_set_status, 0, offsetof(Service, restart_prevent_status)
|
||||||
Service.RestartForceExitStatus, config_parse_set_status, 0, offsetof(Service, restart_force_status)
|
Service.RestartForceExitStatus, config_parse_set_status, 0, offsetof(Service, restart_force_status)
|
||||||
Service.SuccessExitStatus, config_parse_set_status, 0, offsetof(Service, success_status)
|
Service.SuccessExitStatus, config_parse_set_status, 0, offsetof(Service, success_status)
|
||||||
Service.SysVStartPriority, config_parse_warn_compat, DISABLED_LEGACY, 0
|
Service.SysVStartPriority, config_parse_warn_compat, DISABLED_LEGACY, 0
|
||||||
Service.NonBlocking, config_parse_bool, 0, offsetof(Service, exec_context.non_blocking)
|
Service.NonBlocking, config_parse_bool, 0, offsetof(Service, exec_context.non_blocking)
|
||||||
Service.BusName, config_parse_bus_name, 0, offsetof(Service, bus_name)
|
Service.BusName, config_parse_bus_name, 0, offsetof(Service, bus_name)
|
||||||
Service.FileDescriptorStoreMax, config_parse_unsigned, 0, offsetof(Service, n_fd_store_max)
|
Service.FileDescriptorStoreMax, config_parse_unsigned, 0, offsetof(Service, n_fd_store_max)
|
||||||
Service.NotifyAccess, config_parse_notify_access, 0, offsetof(Service, notify_access)
|
Service.NotifyAccess, config_parse_notify_access, 0, offsetof(Service, notify_access)
|
||||||
Service.Sockets, config_parse_service_sockets, 0, 0
|
Service.Sockets, config_parse_service_sockets, 0, 0
|
||||||
Service.BusPolicy, config_parse_warn_compat, DISABLED_LEGACY, 0
|
Service.BusPolicy, config_parse_warn_compat, DISABLED_LEGACY, 0
|
||||||
Service.USBFunctionDescriptors, config_parse_unit_path_printf, 0, offsetof(Service, usb_function_descriptors)
|
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)
|
Service.USBFunctionStrings, config_parse_unit_path_printf, 0, offsetof(Service, usb_function_strings)
|
||||||
Service.OOMPolicy, config_parse_oom_policy, 0, offsetof(Service, oom_policy)
|
Service.OOMPolicy, config_parse_oom_policy, 0, offsetof(Service, oom_policy)
|
||||||
EXEC_CONTEXT_CONFIG_ITEMS(Service)m4_dnl
|
EXEC_CONTEXT_CONFIG_ITEMS(Service)m4_dnl
|
||||||
CGROUP_CONTEXT_CONFIG_ITEMS(Service)m4_dnl
|
CGROUP_CONTEXT_CONFIG_ITEMS(Service)m4_dnl
|
||||||
KILL_CONTEXT_CONFIG_ITEMS(Service)m4_dnl
|
KILL_CONTEXT_CONFIG_ITEMS(Service)m4_dnl
|
||||||
m4_dnl
|
m4_dnl
|
||||||
Socket.ListenStream, config_parse_socket_listen, SOCKET_SOCKET, 0
|
Socket.ListenStream, config_parse_socket_listen, SOCKET_SOCKET, 0
|
||||||
Socket.ListenDatagram, 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.ListenSequentialPacket, config_parse_socket_listen, SOCKET_SOCKET, 0
|
||||||
Socket.ListenFIFO, config_parse_socket_listen, SOCKET_FIFO, 0
|
Socket.ListenFIFO, config_parse_socket_listen, SOCKET_FIFO, 0
|
||||||
Socket.ListenNetlink, config_parse_socket_listen, SOCKET_SOCKET, 0
|
Socket.ListenNetlink, config_parse_socket_listen, SOCKET_SOCKET, 0
|
||||||
Socket.ListenSpecial, config_parse_socket_listen, SOCKET_SPECIAL, 0
|
Socket.ListenSpecial, config_parse_socket_listen, SOCKET_SPECIAL, 0
|
||||||
Socket.ListenMessageQueue, config_parse_socket_listen, SOCKET_MQUEUE, 0
|
Socket.ListenMessageQueue, config_parse_socket_listen, SOCKET_MQUEUE, 0
|
||||||
Socket.ListenUSBFunction, config_parse_socket_listen, SOCKET_USB_FUNCTION, 0
|
Socket.ListenUSBFunction, config_parse_socket_listen, SOCKET_USB_FUNCTION, 0
|
||||||
Socket.SocketProtocol, config_parse_socket_protocol, 0, offsetof(Socket, socket_protocol)
|
Socket.SocketProtocol, config_parse_socket_protocol, 0, offsetof(Socket, socket_protocol)
|
||||||
Socket.BindIPv6Only, config_parse_socket_bind, 0, offsetof(Socket, bind_ipv6_only)
|
Socket.BindIPv6Only, config_parse_socket_bind, 0, offsetof(Socket, bind_ipv6_only)
|
||||||
Socket.Backlog, config_parse_unsigned, 0, offsetof(Socket, backlog)
|
Socket.Backlog, config_parse_unsigned, 0, offsetof(Socket, backlog)
|
||||||
Socket.BindToDevice, config_parse_socket_bindtodevice, 0, 0
|
Socket.BindToDevice, config_parse_socket_bindtodevice, 0, 0
|
||||||
Socket.ExecStartPre, config_parse_exec, SOCKET_EXEC_START_PRE, offsetof(Socket, exec_command)
|
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.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.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)
|
Socket.ExecStopPost, config_parse_exec, SOCKET_EXEC_STOP_POST, offsetof(Socket, exec_command)
|
||||||
Socket.TimeoutSec, config_parse_sec_fix_0, 0, offsetof(Socket, timeout_usec)
|
Socket.TimeoutSec, config_parse_sec_fix_0, 0, offsetof(Socket, timeout_usec)
|
||||||
Socket.SocketUser, config_parse_user_group_compat, 0, offsetof(Socket, user)
|
Socket.SocketUser, config_parse_user_group_compat, 0, offsetof(Socket, user)
|
||||||
Socket.SocketGroup, config_parse_user_group_compat, 0, offsetof(Socket, group)
|
Socket.SocketGroup, config_parse_user_group_compat, 0, offsetof(Socket, group)
|
||||||
Socket.SocketMode, config_parse_mode, 0, offsetof(Socket, socket_mode)
|
Socket.SocketMode, config_parse_mode, 0, offsetof(Socket, socket_mode)
|
||||||
Socket.DirectoryMode, config_parse_mode, 0, offsetof(Socket, directory_mode)
|
Socket.DirectoryMode, config_parse_mode, 0, offsetof(Socket, directory_mode)
|
||||||
Socket.Accept, config_parse_bool, 0, offsetof(Socket, accept)
|
Socket.Accept, config_parse_bool, 0, offsetof(Socket, accept)
|
||||||
Socket.FlushPending, config_parse_bool, 0, offsetof(Socket, flush_pending)
|
Socket.FlushPending, config_parse_bool, 0, offsetof(Socket, flush_pending)
|
||||||
Socket.Writable, config_parse_bool, 0, offsetof(Socket, writable)
|
Socket.Writable, config_parse_bool, 0, offsetof(Socket, writable)
|
||||||
Socket.MaxConnections, config_parse_unsigned, 0, offsetof(Socket, max_connections)
|
Socket.MaxConnections, config_parse_unsigned, 0, offsetof(Socket, max_connections)
|
||||||
Socket.MaxConnectionsPerSource, config_parse_unsigned, 0, offsetof(Socket, max_connections_per_source)
|
Socket.MaxConnectionsPerSource, config_parse_unsigned, 0, offsetof(Socket, max_connections_per_source)
|
||||||
Socket.KeepAlive, config_parse_bool, 0, offsetof(Socket, keep_alive)
|
Socket.KeepAlive, config_parse_bool, 0, offsetof(Socket, keep_alive)
|
||||||
Socket.KeepAliveTimeSec, config_parse_sec, 0, offsetof(Socket, keep_alive_time)
|
Socket.KeepAliveTimeSec, config_parse_sec, 0, offsetof(Socket, keep_alive_time)
|
||||||
Socket.KeepAliveIntervalSec, config_parse_sec, 0, offsetof(Socket, keep_alive_interval)
|
Socket.KeepAliveIntervalSec, config_parse_sec, 0, offsetof(Socket, keep_alive_interval)
|
||||||
Socket.KeepAliveProbes, config_parse_unsigned, 0, offsetof(Socket, keep_alive_cnt)
|
Socket.KeepAliveProbes, config_parse_unsigned, 0, offsetof(Socket, keep_alive_cnt)
|
||||||
Socket.DeferAcceptSec, config_parse_sec, 0, offsetof(Socket, defer_accept)
|
Socket.DeferAcceptSec, config_parse_sec, 0, offsetof(Socket, defer_accept)
|
||||||
Socket.NoDelay, config_parse_bool, 0, offsetof(Socket, no_delay)
|
Socket.NoDelay, config_parse_bool, 0, offsetof(Socket, no_delay)
|
||||||
Socket.Priority, config_parse_int, 0, offsetof(Socket, priority)
|
Socket.Priority, config_parse_int, 0, offsetof(Socket, priority)
|
||||||
Socket.ReceiveBuffer, config_parse_iec_size, 0, offsetof(Socket, receive_buffer)
|
Socket.ReceiveBuffer, config_parse_iec_size, 0, offsetof(Socket, receive_buffer)
|
||||||
Socket.SendBuffer, config_parse_iec_size, 0, offsetof(Socket, send_buffer)
|
Socket.SendBuffer, config_parse_iec_size, 0, offsetof(Socket, send_buffer)
|
||||||
Socket.IPTOS, config_parse_ip_tos, 0, offsetof(Socket, ip_tos)
|
Socket.IPTOS, config_parse_ip_tos, 0, offsetof(Socket, ip_tos)
|
||||||
Socket.IPTTL, config_parse_int, 0, offsetof(Socket, ip_ttl)
|
Socket.IPTTL, config_parse_int, 0, offsetof(Socket, ip_ttl)
|
||||||
Socket.Mark, config_parse_int, 0, offsetof(Socket, mark)
|
Socket.Mark, config_parse_int, 0, offsetof(Socket, mark)
|
||||||
Socket.PipeSize, config_parse_iec_size, 0, offsetof(Socket, pipe_size)
|
Socket.PipeSize, config_parse_iec_size, 0, offsetof(Socket, pipe_size)
|
||||||
Socket.FreeBind, config_parse_bool, 0, offsetof(Socket, free_bind)
|
Socket.FreeBind, config_parse_bool, 0, offsetof(Socket, free_bind)
|
||||||
Socket.Transparent, config_parse_bool, 0, offsetof(Socket, transparent)
|
Socket.Transparent, config_parse_bool, 0, offsetof(Socket, transparent)
|
||||||
Socket.Broadcast, config_parse_bool, 0, offsetof(Socket, broadcast)
|
Socket.Broadcast, config_parse_bool, 0, offsetof(Socket, broadcast)
|
||||||
Socket.PassCredentials, config_parse_bool, 0, offsetof(Socket, pass_cred)
|
Socket.PassCredentials, config_parse_bool, 0, offsetof(Socket, pass_cred)
|
||||||
Socket.PassSecurity, config_parse_bool, 0, offsetof(Socket, pass_sec)
|
Socket.PassSecurity, config_parse_bool, 0, offsetof(Socket, pass_sec)
|
||||||
Socket.PassPacketInfo, config_parse_bool, 0, offsetof(Socket, pass_pktinfo)
|
Socket.PassPacketInfo, config_parse_bool, 0, offsetof(Socket, pass_pktinfo)
|
||||||
Socket.TCPCongestion, config_parse_string, 0, offsetof(Socket, tcp_congestion)
|
Socket.TCPCongestion, config_parse_string, 0, offsetof(Socket, tcp_congestion)
|
||||||
Socket.ReusePort, config_parse_bool, 0, offsetof(Socket, reuse_port)
|
Socket.ReusePort, config_parse_bool, 0, offsetof(Socket, reuse_port)
|
||||||
Socket.MessageQueueMaxMessages, config_parse_long, 0, offsetof(Socket, mq_maxmsg)
|
Socket.MessageQueueMaxMessages, config_parse_long, 0, offsetof(Socket, mq_maxmsg)
|
||||||
Socket.MessageQueueMessageSize, config_parse_long, 0, offsetof(Socket, mq_msgsize)
|
Socket.MessageQueueMessageSize, config_parse_long, 0, offsetof(Socket, mq_msgsize)
|
||||||
Socket.RemoveOnStop, config_parse_bool, 0, offsetof(Socket, remove_on_stop)
|
Socket.RemoveOnStop, config_parse_bool, 0, offsetof(Socket, remove_on_stop)
|
||||||
Socket.Symlinks, config_parse_unit_path_strv_printf, 0, offsetof(Socket, symlinks)
|
Socket.Symlinks, config_parse_unit_path_strv_printf, 0, offsetof(Socket, symlinks)
|
||||||
Socket.FileDescriptorName, config_parse_fdname, 0, 0
|
Socket.FileDescriptorName, config_parse_fdname, 0, 0
|
||||||
Socket.Service, config_parse_socket_service, 0, 0
|
Socket.Service, config_parse_socket_service, 0, 0
|
||||||
Socket.TriggerLimitIntervalSec, config_parse_sec, 0, offsetof(Socket, trigger_limit.interval)
|
Socket.TriggerLimitIntervalSec, config_parse_sec, 0, offsetof(Socket, trigger_limit.interval)
|
||||||
Socket.TriggerLimitBurst, config_parse_unsigned, 0, offsetof(Socket, trigger_limit.burst)
|
Socket.TriggerLimitBurst, config_parse_unsigned, 0, offsetof(Socket, trigger_limit.burst)
|
||||||
m4_ifdef(`ENABLE_SMACK',
|
m4_ifdef(`ENABLE_SMACK',
|
||||||
`Socket.SmackLabel, config_parse_unit_string_printf, 0, offsetof(Socket, smack)
|
`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.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)',
|
Socket.SmackLabelIPOut, config_parse_unit_string_printf, 0, offsetof(Socket, smack_ip_out)',
|
||||||
`Socket.SmackLabel, config_parse_warn_compat, DISABLED_CONFIGURATION, 0
|
`Socket.SmackLabel, config_parse_warn_compat, DISABLED_CONFIGURATION, 0
|
||||||
Socket.SmackLabelIPIn, 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')
|
Socket.SmackLabelIPOut, config_parse_warn_compat, DISABLED_CONFIGURATION, 0')
|
||||||
m4_ifdef(`HAVE_SELINUX',
|
m4_ifdef(`HAVE_SELINUX',
|
||||||
`Socket.SELinuxContextFromNet, config_parse_bool, 0, offsetof(Socket, selinux_context_from_net)',
|
`Socket.SELinuxContextFromNet, config_parse_bool, 0, offsetof(Socket, selinux_context_from_net)',
|
||||||
`Socket.SELinuxContextFromNet, config_parse_warn_compat, DISABLED_CONFIGURATION, 0')
|
`Socket.SELinuxContextFromNet, config_parse_warn_compat, DISABLED_CONFIGURATION, 0')
|
||||||
EXEC_CONTEXT_CONFIG_ITEMS(Socket)m4_dnl
|
EXEC_CONTEXT_CONFIG_ITEMS(Socket)m4_dnl
|
||||||
CGROUP_CONTEXT_CONFIG_ITEMS(Socket)m4_dnl
|
CGROUP_CONTEXT_CONFIG_ITEMS(Socket)m4_dnl
|
||||||
KILL_CONTEXT_CONFIG_ITEMS(Socket)m4_dnl
|
KILL_CONTEXT_CONFIG_ITEMS(Socket)m4_dnl
|
||||||
m4_dnl
|
m4_dnl
|
||||||
Mount.What, config_parse_unit_string_printf, 0, offsetof(Mount, parameters_fragment.what)
|
Mount.What, config_parse_unit_string_printf, 0, offsetof(Mount, parameters_fragment.what)
|
||||||
Mount.Where, config_parse_unit_path_printf, 0, offsetof(Mount, where)
|
Mount.Where, config_parse_unit_path_printf, 0, offsetof(Mount, where)
|
||||||
Mount.Options, config_parse_unit_string_printf, 0, offsetof(Mount, parameters_fragment.options)
|
Mount.Options, config_parse_unit_string_printf, 0, offsetof(Mount, parameters_fragment.options)
|
||||||
Mount.Type, config_parse_unit_string_printf, 0, offsetof(Mount, parameters_fragment.fstype)
|
Mount.Type, config_parse_unit_string_printf, 0, offsetof(Mount, parameters_fragment.fstype)
|
||||||
Mount.TimeoutSec, config_parse_sec_fix_0, 0, offsetof(Mount, timeout_usec)
|
Mount.TimeoutSec, config_parse_sec_fix_0, 0, offsetof(Mount, timeout_usec)
|
||||||
Mount.DirectoryMode, config_parse_mode, 0, offsetof(Mount, directory_mode)
|
Mount.DirectoryMode, config_parse_mode, 0, offsetof(Mount, directory_mode)
|
||||||
Mount.SloppyOptions, config_parse_bool, 0, offsetof(Mount, sloppy_options)
|
Mount.SloppyOptions, config_parse_bool, 0, offsetof(Mount, sloppy_options)
|
||||||
Mount.LazyUnmount, config_parse_bool, 0, offsetof(Mount, lazy_unmount)
|
Mount.LazyUnmount, config_parse_bool, 0, offsetof(Mount, lazy_unmount)
|
||||||
Mount.ForceUnmount, config_parse_bool, 0, offsetof(Mount, force_unmount)
|
Mount.ForceUnmount, config_parse_bool, 0, offsetof(Mount, force_unmount)
|
||||||
Mount.ReadWriteOnly, config_parse_bool, 0, offsetof(Mount, read_write_only)
|
Mount.ReadWriteOnly, config_parse_bool, 0, offsetof(Mount, read_write_only)
|
||||||
EXEC_CONTEXT_CONFIG_ITEMS(Mount)m4_dnl
|
EXEC_CONTEXT_CONFIG_ITEMS(Mount)m4_dnl
|
||||||
CGROUP_CONTEXT_CONFIG_ITEMS(Mount)m4_dnl
|
CGROUP_CONTEXT_CONFIG_ITEMS(Mount)m4_dnl
|
||||||
KILL_CONTEXT_CONFIG_ITEMS(Mount)m4_dnl
|
KILL_CONTEXT_CONFIG_ITEMS(Mount)m4_dnl
|
||||||
m4_dnl
|
m4_dnl
|
||||||
Automount.Where, config_parse_unit_path_printf, 0, offsetof(Automount, where)
|
Automount.Where, config_parse_unit_path_printf, 0, offsetof(Automount, where)
|
||||||
Automount.DirectoryMode, config_parse_mode, 0, offsetof(Automount, directory_mode)
|
Automount.DirectoryMode, config_parse_mode, 0, offsetof(Automount, directory_mode)
|
||||||
Automount.TimeoutIdleSec, config_parse_sec_fix_0, 0, offsetof(Automount, timeout_idle_usec)
|
Automount.TimeoutIdleSec, config_parse_sec_fix_0, 0, offsetof(Automount, timeout_idle_usec)
|
||||||
m4_dnl
|
m4_dnl
|
||||||
Swap.What, config_parse_unit_path_printf, 0, offsetof(Swap, parameters_fragment.what)
|
Swap.What, config_parse_unit_path_printf, 0, offsetof(Swap, parameters_fragment.what)
|
||||||
Swap.Priority, config_parse_swap_priority, 0, 0
|
Swap.Priority, config_parse_swap_priority, 0, 0
|
||||||
Swap.Options, config_parse_unit_string_printf, 0, offsetof(Swap, parameters_fragment.options)
|
Swap.Options, config_parse_unit_string_printf, 0, offsetof(Swap, parameters_fragment.options)
|
||||||
Swap.TimeoutSec, config_parse_sec_fix_0, 0, offsetof(Swap, timeout_usec)
|
Swap.TimeoutSec, config_parse_sec_fix_0, 0, offsetof(Swap, timeout_usec)
|
||||||
EXEC_CONTEXT_CONFIG_ITEMS(Swap)m4_dnl
|
EXEC_CONTEXT_CONFIG_ITEMS(Swap)m4_dnl
|
||||||
CGROUP_CONTEXT_CONFIG_ITEMS(Swap)m4_dnl
|
CGROUP_CONTEXT_CONFIG_ITEMS(Swap)m4_dnl
|
||||||
KILL_CONTEXT_CONFIG_ITEMS(Swap)m4_dnl
|
KILL_CONTEXT_CONFIG_ITEMS(Swap)m4_dnl
|
||||||
m4_dnl
|
m4_dnl
|
||||||
Timer.OnCalendar, config_parse_timer, TIMER_CALENDAR, 0
|
Timer.OnCalendar, config_parse_timer, TIMER_CALENDAR, 0
|
||||||
Timer.OnActiveSec, config_parse_timer, TIMER_ACTIVE, 0
|
Timer.OnActiveSec, config_parse_timer, TIMER_ACTIVE, 0
|
||||||
Timer.OnBootSec, config_parse_timer, TIMER_BOOT, 0
|
Timer.OnBootSec, config_parse_timer, TIMER_BOOT, 0
|
||||||
Timer.OnStartupSec, config_parse_timer, TIMER_STARTUP, 0
|
Timer.OnStartupSec, config_parse_timer, TIMER_STARTUP, 0
|
||||||
Timer.OnUnitActiveSec, config_parse_timer, TIMER_UNIT_ACTIVE, 0
|
Timer.OnUnitActiveSec, config_parse_timer, TIMER_UNIT_ACTIVE, 0
|
||||||
Timer.OnUnitInactiveSec, config_parse_timer, TIMER_UNIT_INACTIVE, 0
|
Timer.OnUnitInactiveSec, config_parse_timer, TIMER_UNIT_INACTIVE, 0
|
||||||
Timer.OnClockChange, config_parse_bool, 0, offsetof(Timer, on_clock_change)
|
Timer.OnClockChange, config_parse_bool, 0, offsetof(Timer, on_clock_change)
|
||||||
Timer.OnTimezoneChange, config_parse_bool, 0, offsetof(Timer, on_timezone_change)
|
Timer.OnTimezoneChange, config_parse_bool, 0, offsetof(Timer, on_timezone_change)
|
||||||
Timer.Persistent, config_parse_bool, 0, offsetof(Timer, persistent)
|
Timer.Persistent, config_parse_bool, 0, offsetof(Timer, persistent)
|
||||||
Timer.WakeSystem, config_parse_bool, 0, offsetof(Timer, wake_system)
|
Timer.WakeSystem, config_parse_bool, 0, offsetof(Timer, wake_system)
|
||||||
Timer.RemainAfterElapse, config_parse_bool, 0, offsetof(Timer, remain_after_elapse)
|
Timer.RemainAfterElapse, config_parse_bool, 0, offsetof(Timer, remain_after_elapse)
|
||||||
Timer.AccuracySec, config_parse_sec, 0, offsetof(Timer, accuracy_usec)
|
Timer.AccuracySec, config_parse_sec, 0, offsetof(Timer, accuracy_usec)
|
||||||
Timer.RandomizedDelaySec, config_parse_sec, 0, offsetof(Timer, random_usec)
|
Timer.RandomizedDelaySec, config_parse_sec, 0, offsetof(Timer, random_usec)
|
||||||
Timer.Unit, config_parse_trigger_unit, 0, 0
|
Timer.Unit, config_parse_trigger_unit, 0, 0
|
||||||
m4_dnl
|
m4_dnl
|
||||||
Path.PathExists, config_parse_path_spec, 0, 0
|
Path.PathExists, config_parse_path_spec, 0, 0
|
||||||
Path.PathExistsGlob, config_parse_path_spec, 0, 0
|
Path.PathExistsGlob, config_parse_path_spec, 0, 0
|
||||||
Path.PathChanged, config_parse_path_spec, 0, 0
|
Path.PathChanged, config_parse_path_spec, 0, 0
|
||||||
Path.PathModified, config_parse_path_spec, 0, 0
|
Path.PathModified, config_parse_path_spec, 0, 0
|
||||||
Path.DirectoryNotEmpty, config_parse_path_spec, 0, 0
|
Path.DirectoryNotEmpty, config_parse_path_spec, 0, 0
|
||||||
Path.Unit, config_parse_trigger_unit, 0, 0
|
Path.Unit, config_parse_trigger_unit, 0, 0
|
||||||
Path.MakeDirectory, config_parse_bool, 0, offsetof(Path, make_directory)
|
Path.MakeDirectory, config_parse_bool, 0, offsetof(Path, make_directory)
|
||||||
Path.DirectoryMode, config_parse_mode, 0, offsetof(Path, directory_mode)
|
Path.DirectoryMode, config_parse_mode, 0, offsetof(Path, directory_mode)
|
||||||
m4_dnl
|
m4_dnl
|
||||||
CGROUP_CONTEXT_CONFIG_ITEMS(Slice)m4_dnl
|
CGROUP_CONTEXT_CONFIG_ITEMS(Slice)m4_dnl
|
||||||
m4_dnl
|
m4_dnl
|
||||||
CGROUP_CONTEXT_CONFIG_ITEMS(Scope)m4_dnl
|
CGROUP_CONTEXT_CONFIG_ITEMS(Scope)m4_dnl
|
||||||
KILL_CONTEXT_CONFIG_ITEMS(Scope)m4_dnl
|
KILL_CONTEXT_CONFIG_ITEMS(Scope)m4_dnl
|
||||||
Scope.RuntimeMaxSec, config_parse_sec, 0, offsetof(Scope, runtime_max_usec)
|
Scope.RuntimeMaxSec, config_parse_sec, 0, offsetof(Scope, runtime_max_usec)
|
||||||
Scope.TimeoutStopSec, config_parse_sec, 0, offsetof(Scope, timeout_stop_usec)
|
Scope.TimeoutStopSec, config_parse_sec, 0, offsetof(Scope, timeout_stop_usec)
|
||||||
m4_dnl The [Install] section is ignored here.
|
m4_dnl The [Install] section is ignored here.
|
||||||
Install.Alias, NULL, 0, 0
|
Install.Alias, NULL, 0, 0
|
||||||
Install.WantedBy, NULL, 0, 0
|
Install.WantedBy, NULL, 0, 0
|
||||||
Install.RequiredBy, NULL, 0, 0
|
Install.RequiredBy, NULL, 0, 0
|
||||||
Install.Also, NULL, 0, 0
|
Install.Also, NULL, 0, 0
|
||||||
Install.DefaultInstance, NULL, 0, 0
|
Install.DefaultInstance, NULL, 0, 0
|
||||||
|
|
|
@ -3824,7 +3824,6 @@ int config_parse_managed_oom_mode(
|
||||||
const char *rvalue,
|
const char *rvalue,
|
||||||
void *data,
|
void *data,
|
||||||
void *userdata) {
|
void *userdata) {
|
||||||
Unit *u = userdata;
|
|
||||||
ManagedOOMMode *mode = data, m;
|
ManagedOOMMode *mode = data, m;
|
||||||
UnitType t;
|
UnitType t;
|
||||||
|
|
||||||
|
@ -3836,7 +3835,7 @@ int config_parse_managed_oom_mode(
|
||||||
|
|
||||||
if (isempty(rvalue)) {
|
if (isempty(rvalue)) {
|
||||||
*mode = MANAGED_OOM_AUTO;
|
*mode = MANAGED_OOM_AUTO;
|
||||||
goto finish;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
m = managed_oom_mode_from_string(rvalue);
|
m = managed_oom_mode_from_string(rvalue);
|
||||||
|
@ -3845,9 +3844,6 @@ int config_parse_managed_oom_mode(
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
*mode = m;
|
*mode = m;
|
||||||
|
|
||||||
finish:
|
|
||||||
(void) manager_varlink_send_managed_oom_update(u);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3862,8 +3858,7 @@ int config_parse_managed_oom_mem_pressure_limit(
|
||||||
const char *rvalue,
|
const char *rvalue,
|
||||||
void *data,
|
void *data,
|
||||||
void *userdata) {
|
void *userdata) {
|
||||||
Unit *u = userdata;
|
int *limit = data;
|
||||||
CGroupContext *c = data;
|
|
||||||
UnitType t;
|
UnitType t;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
|
@ -3874,8 +3869,8 @@ int config_parse_managed_oom_mem_pressure_limit(
|
||||||
return log_syntax(unit, LOG_WARNING, filename, line, 0, "%s= is not supported for this unit type, ignoring.", lvalue);
|
return log_syntax(unit, LOG_WARNING, filename, line, 0, "%s= is not supported for this unit type, ignoring.", lvalue);
|
||||||
|
|
||||||
if (isempty(rvalue)) {
|
if (isempty(rvalue)) {
|
||||||
c->moom_mem_pressure_limit = 0;
|
*limit = 0;
|
||||||
goto finish;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
r = parse_percent(rvalue);
|
r = parse_percent(rvalue);
|
||||||
|
@ -3884,12 +3879,7 @@ int config_parse_managed_oom_mem_pressure_limit(
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
c->moom_mem_pressure_limit = r;
|
*limit = r;
|
||||||
|
|
||||||
finish:
|
|
||||||
/* Only update the limit if memory pressure detection is enabled because the information is irrelevant otherwise */
|
|
||||||
if (c->moom_mem_pressure == MANAGED_OOM_KILL)
|
|
||||||
(void) manager_varlink_send_managed_oom_update(u);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1684,6 +1684,7 @@ int unit_load(Unit *u) {
|
||||||
|
|
||||||
unit_add_to_dbus_queue(unit_follow_merge(u));
|
unit_add_to_dbus_queue(unit_follow_merge(u));
|
||||||
unit_add_to_gc_queue(u);
|
unit_add_to_gc_queue(u);
|
||||||
|
(void) manager_varlink_send_managed_oom_update(u);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -2630,7 +2631,7 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, UnitNotifyFlag
|
||||||
* sets one of the ManagedOOM*= properties to "kill", then later removes it. systemd-oomd needs to
|
* sets one of the ManagedOOM*= properties to "kill", then later removes it. systemd-oomd needs to
|
||||||
* know to stop monitoring when the unit changes from "kill" -> "auto" on daemon-reload, but we don't
|
* know to stop monitoring when the unit changes from "kill" -> "auto" on daemon-reload, but we don't
|
||||||
* have the information on the property. Thus, indiscriminately send an update. */
|
* have the information on the property. Thus, indiscriminately send an update. */
|
||||||
if (UNIT_IS_INACTIVE_OR_FAILED(ns) || ns == UNIT_ACTIVE)
|
if (UNIT_IS_INACTIVE_OR_FAILED(ns) || UNIT_IS_ACTIVE_OR_RELOADING(ns))
|
||||||
(void) manager_varlink_send_managed_oom_update(u);
|
(void) manager_varlink_send_managed_oom_update(u);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -99,7 +99,7 @@ static int acquire_bus(sd_bus **bus) {
|
||||||
|
|
||||||
r = bus_connect_transport(arg_transport, arg_host, false, bus);
|
r = bus_connect_transport(arg_transport, arg_host, false, bus);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_error_errno(r, "Failed to connect to bus: %m");
|
return bus_log_connect_error(r);
|
||||||
|
|
||||||
(void) sd_bus_set_allow_interactive_authorization(*bus, arg_ask_password);
|
(void) sd_bus_set_allow_interactive_authorization(*bus, arg_ask_password);
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
#include "fd-util.h"
|
#include "fd-util.h"
|
||||||
#include "namespace-util.h"
|
#include "namespace-util.h"
|
||||||
#include "process-util.h"
|
#include "process-util.h"
|
||||||
|
#include "string-util.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
int bus_container_connect_socket(sd_bus *b) {
|
int bus_container_connect_socket(sd_bus *b) {
|
||||||
|
@ -24,10 +25,15 @@ int bus_container_connect_socket(sd_bus *b) {
|
||||||
assert(b->nspid > 0 || b->machine);
|
assert(b->nspid > 0 || b->machine);
|
||||||
|
|
||||||
if (b->nspid <= 0) {
|
if (b->nspid <= 0) {
|
||||||
|
log_debug("sd-bus: connecting bus%s%s to machine %s...",
|
||||||
|
b->description ? " " : "", strempty(b->description), b->machine);
|
||||||
|
|
||||||
r = container_get_leader(b->machine, &b->nspid);
|
r = container_get_leader(b->machine, &b->nspid);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
}
|
} else
|
||||||
|
log_debug("sd-bus: connecting bus%s%s to namespace of PID "PID_FMT"...",
|
||||||
|
b->description ? " " : "", strempty(b->description), b->nspid);
|
||||||
|
|
||||||
r = namespace_open(b->nspid, &pidnsfd, &mntnsfd, NULL, &usernsfd, &rootfd);
|
r = namespace_open(b->nspid, &pidnsfd, &mntnsfd, NULL, &usernsfd, &rootfd);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
|
|
|
@ -885,6 +885,13 @@ int bus_socket_connect(sd_bus *b) {
|
||||||
assert(b->output_fd < 0);
|
assert(b->output_fd < 0);
|
||||||
assert(b->sockaddr.sa.sa_family != AF_UNSPEC);
|
assert(b->sockaddr.sa.sa_family != AF_UNSPEC);
|
||||||
|
|
||||||
|
if (DEBUG_LOGGING) {
|
||||||
|
_cleanup_free_ char *pretty = NULL;
|
||||||
|
(void) sockaddr_pretty(&b->sockaddr.sa, b->sockaddr_size, false, true, &pretty);
|
||||||
|
log_debug("sd-bus: starting bus%s%s by connecting to %s...",
|
||||||
|
b->description ? " " : "", strempty(b->description), strnull(pretty));
|
||||||
|
}
|
||||||
|
|
||||||
b->input_fd = socket(b->sockaddr.sa.sa_family, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0);
|
b->input_fd = socket(b->sockaddr.sa.sa_family, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0);
|
||||||
if (b->input_fd < 0)
|
if (b->input_fd < 0)
|
||||||
return -errno;
|
return -errno;
|
||||||
|
@ -956,6 +963,9 @@ int bus_socket_exec(sd_bus *b) {
|
||||||
assert(b->exec_path);
|
assert(b->exec_path);
|
||||||
assert(b->busexec_pid == 0);
|
assert(b->busexec_pid == 0);
|
||||||
|
|
||||||
|
log_debug("sd-bus: starting bus%s%s with %s...",
|
||||||
|
b->description ? " " : "", strempty(b->description), b->exec_path);
|
||||||
|
|
||||||
r = socketpair(AF_UNIX, SOCK_STREAM|SOCK_NONBLOCK|SOCK_CLOEXEC, 0, s);
|
r = socketpair(AF_UNIX, SOCK_STREAM|SOCK_NONBLOCK|SOCK_CLOEXEC, 0, s);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return -errno;
|
return -errno;
|
||||||
|
|
|
@ -1155,6 +1155,16 @@ static int bus_start_fd(sd_bus *b) {
|
||||||
assert(b->input_fd >= 0);
|
assert(b->input_fd >= 0);
|
||||||
assert(b->output_fd >= 0);
|
assert(b->output_fd >= 0);
|
||||||
|
|
||||||
|
if (DEBUG_LOGGING) {
|
||||||
|
_cleanup_free_ char *pi = NULL, *po = NULL;
|
||||||
|
(void) fd_get_path(b->input_fd, &pi);
|
||||||
|
(void) fd_get_path(b->output_fd, &po);
|
||||||
|
log_debug("sd-bus: starting bus%s%s on fds %d/%d (%s, %s)...",
|
||||||
|
b->description ? " " : "", strempty(b->description),
|
||||||
|
b->input_fd, b->output_fd,
|
||||||
|
pi ?: "???", po ?: "???");
|
||||||
|
}
|
||||||
|
|
||||||
r = fd_nonblock(b->input_fd, true);
|
r = fd_nonblock(b->input_fd, true);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
@ -1330,7 +1340,8 @@ int bus_set_address_user(sd_bus *b) {
|
||||||
|
|
||||||
e = secure_getenv("XDG_RUNTIME_DIR");
|
e = secure_getenv("XDG_RUNTIME_DIR");
|
||||||
if (!e)
|
if (!e)
|
||||||
return -ENOENT;
|
return log_debug_errno(SYNTHETIC_ERRNO(ENOMEDIUM),
|
||||||
|
"sd-bus: $XDG_RUNTIME_DIR not set, cannot connect to user bus.");
|
||||||
|
|
||||||
ee = bus_address_escape(e);
|
ee = bus_address_escape(e);
|
||||||
if (!ee)
|
if (!ee)
|
||||||
|
|
|
@ -23,7 +23,7 @@ static int test_bus_open(void) {
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
r = sd_bus_open_user(&bus);
|
r = sd_bus_open_user(&bus);
|
||||||
if (IN_SET(r, -ECONNREFUSED, -ENOENT)) {
|
if (IN_SET(r, -ECONNREFUSED, -ENOENT, -ENOMEDIUM)) {
|
||||||
r = sd_bus_open_system(&bus);
|
r = sd_bus_open_system(&bus);
|
||||||
if (IN_SET(r, -ECONNREFUSED, -ENOENT))
|
if (IN_SET(r, -ECONNREFUSED, -ENOENT))
|
||||||
return r;
|
return r;
|
||||||
|
|
|
@ -55,7 +55,7 @@ int main(int argc, char *argv[]) {
|
||||||
assert_se(r >= 0);
|
assert_se(r >= 0);
|
||||||
|
|
||||||
r = sd_bus_open_user(&a);
|
r = sd_bus_open_user(&a);
|
||||||
if (IN_SET(r, -ECONNREFUSED, -ENOENT)) {
|
if (IN_SET(r, -ECONNREFUSED, -ENOENT, -ENOMEDIUM)) {
|
||||||
r = sd_bus_open_system(&a);
|
r = sd_bus_open_system(&a);
|
||||||
if (IN_SET(r, -ECONNREFUSED, -ENOENT))
|
if (IN_SET(r, -ECONNREFUSED, -ENOENT))
|
||||||
return log_tests_skipped("Failed to connect to bus");
|
return log_tests_skipped("Failed to connect to bus");
|
||||||
|
|
|
@ -282,7 +282,7 @@ static int run(int argc, char *argv[]) {
|
||||||
|
|
||||||
r = sd_bus_default_system(&bus);
|
r = sd_bus_default_system(&bus);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_error_errno(r, "Failed to connect to bus: %m");
|
return bus_log_connect_error(r);
|
||||||
|
|
||||||
if (arg_action == ACTION_LIST)
|
if (arg_action == ACTION_LIST)
|
||||||
return print_inhibitors(bus);
|
return print_inhibitors(bus);
|
||||||
|
|
|
@ -170,15 +170,12 @@ static int recursively_get_cgroup_context(Hashmap *new_h, const char *path) {
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return (r == -ENOMEM) ? r : 0;
|
return (r == -ENOMEM) ? r : 0;
|
||||||
|
|
||||||
if (oom_group) {
|
if (oom_group)
|
||||||
r = oomd_insert_cgroup_context(NULL, new_h, cg_path);
|
r = oomd_insert_cgroup_context(NULL, new_h, cg_path);
|
||||||
if (r == -ENOMEM)
|
else
|
||||||
return r;
|
|
||||||
} else {
|
|
||||||
r = recursively_get_cgroup_context(new_h, cg_path);
|
r = recursively_get_cgroup_context(new_h, cg_path);
|
||||||
if (r == -ENOMEM)
|
if (r == -ENOMEM)
|
||||||
return r;
|
return r;
|
||||||
}
|
|
||||||
} while ((r = cg_read_subgroup(d, &subpath)) > 0);
|
} while ((r = cg_read_subgroup(d, &subpath)) > 0);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -39,6 +39,7 @@ static int fork_and_sleep(unsigned sleep_min) {
|
||||||
static void test_oomd_cgroup_kill(void) {
|
static void test_oomd_cgroup_kill(void) {
|
||||||
_cleanup_free_ char *cgroup_root = NULL, *cgroup = NULL;
|
_cleanup_free_ char *cgroup_root = NULL, *cgroup = NULL;
|
||||||
int pid[2];
|
int pid[2];
|
||||||
|
int r;
|
||||||
|
|
||||||
if (geteuid() != 0)
|
if (geteuid() != 0)
|
||||||
return (void) log_tests_skipped("not root");
|
return (void) log_tests_skipped("not root");
|
||||||
|
@ -52,19 +53,20 @@ static void test_oomd_cgroup_kill(void) {
|
||||||
* by the test so that pid1 doesn't delete it before we can read the xattrs. */
|
* by the test so that pid1 doesn't delete it before we can read the xattrs. */
|
||||||
cgroup = path_join(cgroup_root, "oomdkilltest");
|
cgroup = path_join(cgroup_root, "oomdkilltest");
|
||||||
assert(cgroup);
|
assert(cgroup);
|
||||||
|
assert_se(cg_create(SYSTEMD_CGROUP_CONTROLLER, cgroup) >= 0);
|
||||||
|
|
||||||
/* If we don't have permissions to set xattrs we're likely in a userns or missing capabilities */
|
/* If we don't have permissions to set xattrs we're likely in a userns or missing capabilities */
|
||||||
if (cg_set_xattr(SYSTEMD_CGROUP_CONTROLLER, cgroup, "user.oomd_test", "test", 4, 0) == -EPERM)
|
r = cg_set_xattr(SYSTEMD_CGROUP_CONTROLLER, cgroup, "user.oomd_test", "test", 4, 0);
|
||||||
return (void) log_tests_skipped("no permissions to set user xattrs");
|
if (IN_SET(r, -EPERM, -ENOTSUP))
|
||||||
|
return (void) log_tests_skipped("Cannot set user xattrs");
|
||||||
|
|
||||||
/* Do this twice to also check the increment behavior on the xattrs */
|
/* Do this twice to also check the increment behavior on the xattrs */
|
||||||
for (int i = 0; i < 2; i++) {
|
for (int i = 0; i < 2; i++) {
|
||||||
_cleanup_free_ char *v = NULL;
|
_cleanup_free_ char *v = NULL;
|
||||||
int r;
|
|
||||||
|
|
||||||
for (int j = 0; j < 2; j++) {
|
for (int j = 0; j < 2; j++) {
|
||||||
pid[j] = fork_and_sleep(5);
|
pid[j] = fork_and_sleep(5);
|
||||||
assert_se(cg_create_and_attach(SYSTEMD_CGROUP_CONTROLLER, cgroup, pid[j]) >= 0);
|
assert_se(cg_attach(SYSTEMD_CGROUP_CONTROLLER, cgroup, pid[j]) >= 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
r = oomd_cgroup_kill(cgroup, false /* recurse */, false /* dry run */);
|
r = oomd_cgroup_kill(cgroup, false /* recurse */, false /* dry run */);
|
||||||
|
|
|
@ -178,7 +178,7 @@ static int acquire_bus(sd_bus **bus) {
|
||||||
|
|
||||||
r = bus_connect_transport(arg_transport, arg_host, false, bus);
|
r = bus_connect_transport(arg_transport, arg_host, false, bus);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_error_errno(r, "Failed to connect to bus: %m");
|
return bus_log_connect_error(r);
|
||||||
|
|
||||||
(void) sd_bus_set_allow_interactive_authorization(*bus, arg_ask_password);
|
(void) sd_bus_set_allow_interactive_authorization(*bus, arg_ask_password);
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,7 @@ static int boot_entry_load(
|
||||||
return log_oom();
|
return log_oom();
|
||||||
|
|
||||||
if (!efi_loader_entry_name_valid(tmp.id))
|
if (!efi_loader_entry_name_valid(tmp.id))
|
||||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Invalid loader entry: %s", tmp.id);
|
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Invalid loader entry name: %s", tmp.id);
|
||||||
|
|
||||||
tmp.path = strdup(path);
|
tmp.path = strdup(path);
|
||||||
if (!tmp.path)
|
if (!tmp.path)
|
||||||
|
@ -327,7 +327,7 @@ static int boot_entry_load_unified(
|
||||||
return log_oom();
|
return log_oom();
|
||||||
|
|
||||||
if (!efi_loader_entry_name_valid(tmp.id))
|
if (!efi_loader_entry_name_valid(tmp.id))
|
||||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Invalid loader entry: %s", tmp.id);
|
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Invalid loader entry name: %s", tmp.id);
|
||||||
|
|
||||||
tmp.path = strdup(path);
|
tmp.path = strdup(path);
|
||||||
if (!tmp.path)
|
if (!tmp.path)
|
||||||
|
|
|
@ -38,13 +38,19 @@ int bus_connect_user_systemd(sd_bus **_bus);
|
||||||
int bus_connect_transport(BusTransport transport, const char *host, bool user, sd_bus **bus);
|
int bus_connect_transport(BusTransport transport, const char *host, bool user, sd_bus **bus);
|
||||||
int bus_connect_transport_systemd(BusTransport transport, const char *host, bool user, sd_bus **bus);
|
int bus_connect_transport_systemd(BusTransport transport, const char *host, bool user, sd_bus **bus);
|
||||||
|
|
||||||
#define bus_log_connect_error(r) \
|
#define bus_log_address_error(r) \
|
||||||
log_error_errno(r, "Failed to create bus connection: %m")
|
log_error_errno(r, \
|
||||||
|
r == -ENOMEDIUM ? "Failed to set bus address: $DBUS_SESSION_BUS_ADDRESS and $XDG_RUNTIME_DIR not defined" : \
|
||||||
|
"Failed to set bus address: %m")
|
||||||
|
#define bus_log_connect_error(r) \
|
||||||
|
log_error_errno(r, \
|
||||||
|
r == -ENOMEDIUM ? "Failed to connect to bus: $DBUS_SESSION_BUS_ADDRESS and $XDG_RUNTIME_DIR not defined" : \
|
||||||
|
"Failed to connect to bus: %m")
|
||||||
|
|
||||||
#define bus_log_parse_error(r) \
|
#define bus_log_parse_error(r) \
|
||||||
log_error_errno(r, "Failed to parse bus message: %m")
|
log_error_errno(r, "Failed to parse bus message: %m")
|
||||||
|
|
||||||
#define bus_log_create_error(r) \
|
#define bus_log_create_error(r) \
|
||||||
log_error_errno(r, "Failed to create bus message: %m")
|
log_error_errno(r, "Failed to create bus message: %m")
|
||||||
|
|
||||||
int bus_path_encode_unique(sd_bus *b, const char *prefix, const char *sender_id, const char *external_id, char **ret_path);
|
int bus_path_encode_unique(sd_bus *b, const char *prefix, const char *sender_id, const char *external_id, char **ret_path);
|
||||||
|
|
|
@ -52,7 +52,7 @@ int acquire_bus(BusFocus focus, sd_bus **ret) {
|
||||||
else
|
else
|
||||||
r = bus_connect_transport(arg_transport, arg_host, user, &buses[focus]);
|
r = bus_connect_transport(arg_transport, arg_host, user, &buses[focus]);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_error_errno(r, "Failed to connect to bus: %m");
|
return bus_log_connect_error(r);
|
||||||
|
|
||||||
(void) sd_bus_set_allow_interactive_authorization(buses[focus], arg_ask_password);
|
(void) sd_bus_set_allow_interactive_authorization(buses[focus], arg_ask_password);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1063,7 +1063,7 @@ static int parse_acls_from_arg(Item *item) {
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
log_warning_errno(r, "Failed to parse ACL \"%s\": %m. Ignoring", item->argument);
|
log_warning_errno(r, "Failed to parse ACL \"%s\": %m. Ignoring", item->argument);
|
||||||
#else
|
#else
|
||||||
log_warning_errno(SYNTHETIC_ERRNO(ENOSYS), "ACLs are not supported. Ignoring");
|
log_warning("ACLs are not supported. Ignoring.");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -10,7 +10,6 @@
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Userspace Out-Of-Memory (OOM) Killer
|
Description=Userspace Out-Of-Memory (OOM) Killer
|
||||||
Documentation=man:systemd-oomd.service(8)
|
Documentation=man:systemd-oomd.service(8)
|
||||||
ConditionCapability=CAP_KILL
|
|
||||||
DefaultDependencies=no
|
DefaultDependencies=no
|
||||||
Before=multi-user.target shutdown.target
|
Before=multi-user.target shutdown.target
|
||||||
Conflicts=shutdown.target
|
Conflicts=shutdown.target
|
||||||
|
|
Loading…
Reference in New Issue