mirror of
https://github.com/systemd/systemd
synced 2025-09-30 17:24:46 +02:00
Compare commits
No commits in common. "01131684ac66e82faae18e40e110089003d7c536" and "8dfc2beb571f0e0ad780d628c743eac68faf5186" have entirely different histories.
01131684ac
...
8dfc2beb57
@ -43,5 +43,3 @@ jobs:
|
|||||||
- fedora-rawhide-aarch64
|
- fedora-rawhide-aarch64
|
||||||
- fedora-rawhide-i386
|
- fedora-rawhide-i386
|
||||||
- fedora-rawhide-x86_64
|
- fedora-rawhide-x86_64
|
||||||
- fedora-eln-aarch64
|
|
||||||
- fedora-eln-x86_64
|
|
||||||
|
@ -279,9 +279,3 @@ systemd-sysext:
|
|||||||
specify API file systems such as `/proc/` or `/sys/` here, or hierarchies
|
specify API file systems such as `/proc/` or `/sys/` here, or hierarchies
|
||||||
that have them as submounts. In particular, do not specify the root directory
|
that have them as submounts. In particular, do not specify the root directory
|
||||||
`/` here.
|
`/` here.
|
||||||
|
|
||||||
systemd-tmpfiles:
|
|
||||||
|
|
||||||
* `SYSTEMD_TMPFILES_FORCE_SUBVOL` - if unset, v/q/Q lines will create subvolumes only if the
|
|
||||||
OS itself is installed into a subvolume. If set to 1 (or another true value), these lines will always create
|
|
||||||
subvolumes (if the backing filesystem supports them). If set to 0, these lines will always create directories.
|
|
||||||
|
@ -154,22 +154,20 @@
|
|||||||
|
|
||||||
<xi:include href="standard-options.xml" xpointer="help" />
|
<xi:include href="standard-options.xml" xpointer="help" />
|
||||||
<xi:include href="standard-options.xml" xpointer="version" />
|
<xi:include href="standard-options.xml" xpointer="version" />
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>--no-legend</option></term>
|
||||||
|
|
||||||
|
<listitem><para>Do not print column headers.</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
<xi:include href="standard-options.xml" xpointer="no-pager" />
|
<xi:include href="standard-options.xml" xpointer="no-pager" />
|
||||||
<xi:include href="standard-options.xml" xpointer="no-legend" />
|
|
||||||
<xi:include href="standard-options.xml" xpointer="json" />
|
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><option>-1</option></term>
|
<term><option>-1</option></term>
|
||||||
|
|
||||||
<listitem><para>Show information of the most recent core dump only, instead of listing all known core
|
<listitem><para>Show information of a single core dump only, instead of listing
|
||||||
dumps. (Equivalent to <option>--reverse -n 1</option></para></listitem>
|
all known core dumps.</para></listitem>
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term><option>-n</option> <replaceable>INT</replaceable></term>
|
|
||||||
|
|
||||||
<listitem><para>Show at most the specified number of entries. The specified parameter must be an
|
|
||||||
integer greater or equal to 1.</para></listitem>
|
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
|
@ -155,20 +155,6 @@
|
|||||||
to be used in case the unit names do not match the image name as described in the <command>attach</command>.</para>
|
to be used in case the unit names do not match the image name as described in the <command>attach</command>.</para>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term><command>reattach</command> <replaceable>IMAGE</replaceable> [<replaceable>PREFIX…</replaceable>]</term>
|
|
||||||
|
|
||||||
<listitem><para>Detaches an existing portable service image from the host, and immediately attaches it again.
|
|
||||||
This is useful in case the image was replaced. Running units are not stopped during the process. Partial matching,
|
|
||||||
to allow for different versions in the image name, is allowed: only the part before the first <literal>_</literal>
|
|
||||||
character has to match. If the new image doesn't exist, the existing one will not be detached. The parameters
|
|
||||||
follow the same syntax as the <command>attach</command> command.</para></listitem>
|
|
||||||
|
|
||||||
<para>If <option>--now</option> and/or <option>--enable</option> are passed, the portable service(s) are
|
|
||||||
immediately stopped if removed, started and/or enabled if added, or restarted if updated. Prefixes are also
|
|
||||||
accepted, in the same way as described in the <command>attach</command> case.</para>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><command>inspect</command> <replaceable>IMAGE</replaceable> [<replaceable>PREFIX…</replaceable>]</term>
|
<term><command>inspect</command> <replaceable>IMAGE</replaceable> [<replaceable>PREFIX…</replaceable>]</term>
|
||||||
|
|
||||||
@ -342,8 +328,7 @@
|
|||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><option>--now</option></term>
|
<term><option>--now</option></term>
|
||||||
|
|
||||||
<listitem><para>Immediately start/stop/restart the portable service after attaching/before
|
<listitem><para>Immediately start/stop the portable service after attaching/before detaching.</para></listitem>
|
||||||
detaching/after upgrading.</para></listitem>
|
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
|
12
po/sv.po
12
po/sv.po
@ -11,7 +11,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: systemd master\n"
|
"Project-Id-Version: systemd master\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-01-08 17:48+0100\n"
|
"POT-Creation-Date: 2021-01-08 17:48+0100\n"
|
||||||
"PO-Revision-Date: 2021-02-10 15:40+0000\n"
|
"PO-Revision-Date: 2021-02-05 20:40+0000\n"
|
||||||
"Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
|
"Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
|
||||||
"Language-Team: Swedish <https://translate.fedoraproject.org/projects/systemd/"
|
"Language-Team: Swedish <https://translate.fedoraproject.org/projects/systemd/"
|
||||||
"master/sv/>\n"
|
"master/sv/>\n"
|
||||||
@ -532,7 +532,7 @@ msgstr "Autentisering krävs för att ställa in ”orsaken” för omstart i k
|
|||||||
#: src/login/org.freedesktop.login1.policy:363
|
#: src/login/org.freedesktop.login1.policy:363
|
||||||
msgid "Indicate to the firmware to boot to setup interface"
|
msgid "Indicate to the firmware to boot to setup interface"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Indikera till den fasta programvaran att starta upp till "
|
"Indikera till den fasta programvaran att starta upp i "
|
||||||
"inställningsgränssnittet"
|
"inställningsgränssnittet"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:364
|
#: src/login/org.freedesktop.login1.policy:364
|
||||||
@ -540,12 +540,12 @@ msgid ""
|
|||||||
"Authentication is required to indicate to the firmware to boot to setup "
|
"Authentication is required to indicate to the firmware to boot to setup "
|
||||||
"interface."
|
"interface."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Autentisering krävs för att indikera till den fasta programvaran att starta "
|
"Autentisering krävs för att indikera till firmware att starta upp till "
|
||||||
"upp till inställningsgränssnitt."
|
"inställningsgränssnitt."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:374
|
#: src/login/org.freedesktop.login1.policy:374
|
||||||
msgid "Indicate to the boot loader to boot to the boot loader menu"
|
msgid "Indicate to the boot loader to boot to the boot loader menu"
|
||||||
msgstr "Indikera till startprogrammet att starta upp i uppstartsladdmenyn"
|
msgstr "Indikera till den startprogrammet att starta upp i uppstartsladdmenyn"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:375
|
#: src/login/org.freedesktop.login1.policy:375
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -899,7 +899,7 @@ msgstr "Autentisering krävs för att stoppa \"$(unit)\"."
|
|||||||
|
|
||||||
#: src/core/dbus-unit.c:361
|
#: src/core/dbus-unit.c:361
|
||||||
msgid "Authentication is required to reload '$(unit)'."
|
msgid "Authentication is required to reload '$(unit)'."
|
||||||
msgstr "Autentisering krävs för att läsa om \"$(unit)\"."
|
msgstr "Autentisering krävs för att läsa om tillståndet för \"$(unit)\"."
|
||||||
|
|
||||||
#: src/core/dbus-unit.c:362 src/core/dbus-unit.c:363
|
#: src/core/dbus-unit.c:362 src/core/dbus-unit.c:363
|
||||||
msgid "Authentication is required to restart '$(unit)'."
|
msgid "Authentication is required to restart '$(unit)'."
|
||||||
|
@ -40,7 +40,7 @@ _coredumpctl() {
|
|||||||
local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
|
local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
|
||||||
local OPTS='-h --help --version --no-pager --no-legend -o --output -F --field -1
|
local OPTS='-h --help --version --no-pager --no-legend -o --output -F --field -1
|
||||||
-r --reverse -S --since -U --until -D --directory -q --quiet --debugger
|
-r --reverse -S --since -U --until -D --directory -q --quiet --debugger
|
||||||
-A --debugger-arguments --json -n'
|
-A --debugger-arguments'
|
||||||
|
|
||||||
local -A VERBS=(
|
local -A VERBS=(
|
||||||
[LIST]='list info'
|
[LIST]='list info'
|
||||||
@ -58,8 +58,6 @@ _coredumpctl() {
|
|||||||
compopt -o filenames
|
compopt -o filenames
|
||||||
elif __contains_word "$prev" '--field -F'; then
|
elif __contains_word "$prev" '--field -F'; then
|
||||||
comps=$( compgen -W '${__journal_fields[*]}' -- "$cur" )
|
comps=$( compgen -W '${__journal_fields[*]}' -- "$cur" )
|
||||||
elif __contains_word "$prev" '--json'; then
|
|
||||||
comps=$( compgen -W 'pretty short off' -- "$cur" )
|
|
||||||
elif [[ $cur = -* ]]; then
|
elif [[ $cur = -* ]]; then
|
||||||
comps=${OPTS}
|
comps=${OPTS}
|
||||||
elif __contains_word "$prev" ${VERBS[*]} &&
|
elif __contains_word "$prev" ${VERBS[*]} &&
|
||||||
|
@ -43,7 +43,7 @@ _loginctl () {
|
|||||||
[STANDALONE]='--all -a --help -h --no-pager --version
|
[STANDALONE]='--all -a --help -h --no-pager --version
|
||||||
--no-legend --no-ask-password -l --full --value'
|
--no-legend --no-ask-password -l --full --value'
|
||||||
[ARG]='--host -H --kill-who --property -p --signal -s -M --machine
|
[ARG]='--host -H --kill-who --property -p --signal -s -M --machine
|
||||||
-n --lines -o --output -P'
|
-n --lines -o --output'
|
||||||
)
|
)
|
||||||
|
|
||||||
if __contains_word "$prev" ${OPTS[ARG]}; then
|
if __contains_word "$prev" ${OPTS[ARG]}; then
|
||||||
@ -61,7 +61,7 @@ _loginctl () {
|
|||||||
--machine|-M)
|
--machine|-M)
|
||||||
comps=$( __get_machines )
|
comps=$( __get_machines )
|
||||||
;;
|
;;
|
||||||
--property|-p|-P)
|
--property|-p)
|
||||||
comps=''
|
comps=''
|
||||||
;;
|
;;
|
||||||
--output|-o)
|
--output|-o)
|
||||||
|
@ -40,7 +40,7 @@ _portablectl() {
|
|||||||
|
|
||||||
local -A VERBS=(
|
local -A VERBS=(
|
||||||
[STANDALONE]='list'
|
[STANDALONE]='list'
|
||||||
[IMAGE]='attach detach reattach inspect is-attached set-limit'
|
[IMAGE]='attach detach inspect is-attached set-limit'
|
||||||
[IMAGES]='remove'
|
[IMAGES]='remove'
|
||||||
[IMAGE_WITH_BOOL]='read-only'
|
[IMAGE_WITH_BOOL]='read-only'
|
||||||
)
|
)
|
||||||
|
@ -1574,7 +1574,7 @@ static int dump_exit_status(int argc, char *argv[], void *userdata) {
|
|||||||
|
|
||||||
status = exit_status_from_string(argv[i]);
|
status = exit_status_from_string(argv[i]);
|
||||||
if (status < 0)
|
if (status < 0)
|
||||||
return log_error_errno(status, "Invalid exit status \"%s\".", argv[i]);
|
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Invalid exit status \"%s\".", argv[i]);
|
||||||
|
|
||||||
assert(status >= 0 && (size_t) status < ELEMENTSOF(exit_status_mappings));
|
assert(status >= 0 && (size_t) status < ELEMENTSOF(exit_status_mappings));
|
||||||
r = table_add_many(table,
|
r = table_add_many(table,
|
||||||
|
@ -45,7 +45,7 @@ enum {
|
|||||||
ARCHITECTURE_ARC,
|
ARCHITECTURE_ARC,
|
||||||
ARCHITECTURE_ARC_BE,
|
ARCHITECTURE_ARC_BE,
|
||||||
_ARCHITECTURE_MAX,
|
_ARCHITECTURE_MAX,
|
||||||
_ARCHITECTURE_INVALID = -EINVAL,
|
_ARCHITECTURE_INVALID = -1
|
||||||
};
|
};
|
||||||
|
|
||||||
int uname_architecture(void);
|
int uname_architecture(void);
|
||||||
|
@ -32,7 +32,7 @@ typedef enum CGroupController {
|
|||||||
CGROUP_CONTROLLER_BPF_DEVICES,
|
CGROUP_CONTROLLER_BPF_DEVICES,
|
||||||
|
|
||||||
_CGROUP_CONTROLLER_MAX,
|
_CGROUP_CONTROLLER_MAX,
|
||||||
_CGROUP_CONTROLLER_INVALID = -EINVAL,
|
_CGROUP_CONTROLLER_INVALID = -1,
|
||||||
} CGroupController;
|
} CGroupController;
|
||||||
|
|
||||||
#define CGROUP_CONTROLLER_TO_MASK(c) (1U << (c))
|
#define CGROUP_CONTROLLER_TO_MASK(c) (1U << (c))
|
||||||
@ -97,7 +97,7 @@ typedef enum CGroupIOLimitType {
|
|||||||
CGROUP_IO_WIOPS_MAX,
|
CGROUP_IO_WIOPS_MAX,
|
||||||
|
|
||||||
_CGROUP_IO_LIMIT_TYPE_MAX,
|
_CGROUP_IO_LIMIT_TYPE_MAX,
|
||||||
_CGROUP_IO_LIMIT_TYPE_INVALID = -EINVAL,
|
_CGROUP_IO_LIMIT_TYPE_INVALID = -1
|
||||||
} CGroupIOLimitType;
|
} CGroupIOLimitType;
|
||||||
|
|
||||||
extern const uint64_t cgroup_io_limit_defaults[_CGROUP_IO_LIMIT_TYPE_MAX];
|
extern const uint64_t cgroup_io_limit_defaults[_CGROUP_IO_LIMIT_TYPE_MAX];
|
||||||
@ -283,7 +283,7 @@ typedef enum ManagedOOMMode {
|
|||||||
MANAGED_OOM_AUTO,
|
MANAGED_OOM_AUTO,
|
||||||
MANAGED_OOM_KILL,
|
MANAGED_OOM_KILL,
|
||||||
_MANAGED_OOM_MODE_MAX,
|
_MANAGED_OOM_MODE_MAX,
|
||||||
_MANAGED_OOM_MODE_INVALID = -EINVAL,
|
_MANAGED_OOM_MODE_INVALID = -1,
|
||||||
} ManagedOOMMode;
|
} ManagedOOMMode;
|
||||||
|
|
||||||
const char* managed_oom_mode_to_string(ManagedOOMMode m) _const_;
|
const char* managed_oom_mode_to_string(ManagedOOMMode m) _const_;
|
||||||
|
@ -26,7 +26,7 @@ typedef enum LocaleVariable {
|
|||||||
VARIABLE_LC_MEASUREMENT,
|
VARIABLE_LC_MEASUREMENT,
|
||||||
VARIABLE_LC_IDENTIFICATION,
|
VARIABLE_LC_IDENTIFICATION,
|
||||||
_VARIABLE_LC_MAX,
|
_VARIABLE_LC_MAX,
|
||||||
_VARIABLE_LC_INVALID = -EINVAL,
|
_VARIABLE_LC_INVALID = -1
|
||||||
} LocaleVariable;
|
} LocaleVariable;
|
||||||
|
|
||||||
int get_locales(char ***l);
|
int get_locales(char ***l);
|
||||||
|
@ -1085,7 +1085,7 @@ int log_set_target_from_string(const char *e) {
|
|||||||
|
|
||||||
t = log_target_from_string(e);
|
t = log_target_from_string(e);
|
||||||
if (t < 0)
|
if (t < 0)
|
||||||
return t;
|
return -EINVAL;
|
||||||
|
|
||||||
log_set_target(t);
|
log_set_target(t);
|
||||||
return 0;
|
return 0;
|
||||||
@ -1096,7 +1096,7 @@ int log_set_max_level_from_string(const char *e) {
|
|||||||
|
|
||||||
t = log_level_from_string(e);
|
t = log_level_from_string(e);
|
||||||
if (t < 0)
|
if (t < 0)
|
||||||
return t;
|
return -EINVAL;
|
||||||
|
|
||||||
log_set_max_level(t);
|
log_set_max_level(t);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -23,7 +23,7 @@ typedef enum LogTarget{
|
|||||||
LOG_TARGET_AUTO, /* console if stderr is not journal, JOURNAL_OR_KMSG otherwise */
|
LOG_TARGET_AUTO, /* console if stderr is not journal, JOURNAL_OR_KMSG otherwise */
|
||||||
LOG_TARGET_NULL,
|
LOG_TARGET_NULL,
|
||||||
_LOG_TARGET_MAX,
|
_LOG_TARGET_MAX,
|
||||||
_LOG_TARGET_INVALID = -EINVAL,
|
_LOG_TARGET_INVALID = -1
|
||||||
} LogTarget;
|
} LogTarget;
|
||||||
|
|
||||||
/* Note to readers: << and >> have lower precedence than & and | */
|
/* Note to readers: << and >> have lower precedence than & and | */
|
||||||
|
@ -24,7 +24,7 @@ typedef enum SmackAttr {
|
|||||||
SMACK_ATTR_IPIN,
|
SMACK_ATTR_IPIN,
|
||||||
SMACK_ATTR_IPOUT,
|
SMACK_ATTR_IPOUT,
|
||||||
_SMACK_ATTR_MAX,
|
_SMACK_ATTR_MAX,
|
||||||
_SMACK_ATTR_INVALID = -EINVAL,
|
_SMACK_ATTR_INVALID = -1,
|
||||||
} SmackAttr;
|
} SmackAttr;
|
||||||
|
|
||||||
bool mac_smack_use(void);
|
bool mac_smack_use(void);
|
||||||
|
@ -63,7 +63,7 @@ typedef enum SocketAddressBindIPv6Only {
|
|||||||
SOCKET_ADDRESS_BOTH,
|
SOCKET_ADDRESS_BOTH,
|
||||||
SOCKET_ADDRESS_IPV6_ONLY,
|
SOCKET_ADDRESS_IPV6_ONLY,
|
||||||
_SOCKET_ADDRESS_BIND_IPV6_ONLY_MAX,
|
_SOCKET_ADDRESS_BIND_IPV6_ONLY_MAX,
|
||||||
_SOCKET_ADDRESS_BIND_IPV6_ONLY_INVALID = -EINVAL,
|
_SOCKET_ADDRESS_BIND_IPV6_ONLY_INVALID = -1
|
||||||
} SocketAddressBindIPv6Only;
|
} SocketAddressBindIPv6Only;
|
||||||
|
|
||||||
#define socket_address_family(a) ((a)->sockaddr.sa.sa_family)
|
#define socket_address_family(a) ((a)->sockaddr.sa.sa_family)
|
||||||
|
@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
ssize_t string_table_lookup(const char * const *table, size_t len, const char *key) {
|
ssize_t string_table_lookup(const char * const *table, size_t len, const char *key) {
|
||||||
if (!key)
|
if (!key)
|
||||||
return -EINVAL;
|
return -1;
|
||||||
|
|
||||||
for (size_t i = 0; i < len; ++i)
|
for (size_t i = 0; i < len; ++i)
|
||||||
if (streq_ptr(table[i], key))
|
if (streq_ptr(table[i], key))
|
||||||
return (ssize_t) i;
|
return (ssize_t) i;
|
||||||
|
|
||||||
return -EINVAL;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ ssize_t string_table_lookup(const char * const *table, size_t len, const char *k
|
|||||||
#define _DEFINE_STRING_TABLE_LOOKUP_FROM_STRING_WITH_BOOLEAN(name,type,yes,scope) \
|
#define _DEFINE_STRING_TABLE_LOOKUP_FROM_STRING_WITH_BOOLEAN(name,type,yes,scope) \
|
||||||
scope type name##_from_string(const char *s) { \
|
scope type name##_from_string(const char *s) { \
|
||||||
if (!s) \
|
if (!s) \
|
||||||
return -EINVAL; \
|
return -1; \
|
||||||
int b = parse_boolean(s); \
|
int b = parse_boolean(s); \
|
||||||
if (b == 0) \
|
if (b == 0) \
|
||||||
return (type) 0; \
|
return (type) 0; \
|
||||||
@ -60,16 +60,14 @@ ssize_t string_table_lookup(const char * const *table, size_t len, const char *k
|
|||||||
unsigned u = 0; \
|
unsigned u = 0; \
|
||||||
type i; \
|
type i; \
|
||||||
if (!s) \
|
if (!s) \
|
||||||
return -EINVAL; \
|
return (type) -1; \
|
||||||
i = (type) string_table_lookup(name##_table, ELEMENTSOF(name##_table), s); \
|
i = (type) string_table_lookup(name##_table, ELEMENTSOF(name##_table), s); \
|
||||||
if (i >= 0) \
|
if (i >= 0) \
|
||||||
return i; \
|
return i; \
|
||||||
if (safe_atou(s, &u) < 0) \
|
if (safe_atou(s, &u) >= 0 && u <= max) \
|
||||||
return -EINVAL; \
|
return (type) u; \
|
||||||
if (u > max) \
|
return (type) -1; \
|
||||||
return -EINVAL; \
|
} \
|
||||||
return (type) u; \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define _DEFINE_STRING_TABLE_LOOKUP(name,type,scope) \
|
#define _DEFINE_STRING_TABLE_LOOKUP(name,type,scope) \
|
||||||
_DEFINE_STRING_TABLE_LOOKUP_TO_STRING(name,type,scope) \
|
_DEFINE_STRING_TABLE_LOOKUP_TO_STRING(name,type,scope) \
|
||||||
|
@ -111,7 +111,7 @@ typedef enum ColorMode {
|
|||||||
/* Only 256 colors. */
|
/* Only 256 colors. */
|
||||||
COLOR_256 = 256,
|
COLOR_256 = 256,
|
||||||
|
|
||||||
_COLOR_INVALID = -EINVAL,
|
_COLOR_INVALID = -1,
|
||||||
} ColorMode;
|
} ColorMode;
|
||||||
|
|
||||||
int acquire_terminal(const char *name, AcquireTerminalFlags flags, usec_t timeout);
|
int acquire_terminal(const char *name, AcquireTerminalFlags flags, usec_t timeout);
|
||||||
|
@ -35,7 +35,7 @@ typedef enum TimestampStyle {
|
|||||||
TIMESTAMP_UTC,
|
TIMESTAMP_UTC,
|
||||||
TIMESTAMP_US_UTC,
|
TIMESTAMP_US_UTC,
|
||||||
_TIMESTAMP_STYLE_MAX,
|
_TIMESTAMP_STYLE_MAX,
|
||||||
_TIMESTAMP_STYLE_INVALID = -EINVAL,
|
_TIMESTAMP_STYLE_INVALID = -1,
|
||||||
} TimestampStyle;
|
} TimestampStyle;
|
||||||
|
|
||||||
#define USEC_INFINITY ((usec_t) UINT64_MAX)
|
#define USEC_INFINITY ((usec_t) UINT64_MAX)
|
||||||
|
@ -22,7 +22,7 @@ typedef enum UnitType {
|
|||||||
UNIT_SLICE,
|
UNIT_SLICE,
|
||||||
UNIT_SCOPE,
|
UNIT_SCOPE,
|
||||||
_UNIT_TYPE_MAX,
|
_UNIT_TYPE_MAX,
|
||||||
_UNIT_TYPE_INVALID = -EINVAL,
|
_UNIT_TYPE_INVALID = -1
|
||||||
} UnitType;
|
} UnitType;
|
||||||
|
|
||||||
typedef enum UnitLoadState {
|
typedef enum UnitLoadState {
|
||||||
@ -34,7 +34,7 @@ typedef enum UnitLoadState {
|
|||||||
UNIT_MERGED,
|
UNIT_MERGED,
|
||||||
UNIT_MASKED,
|
UNIT_MASKED,
|
||||||
_UNIT_LOAD_STATE_MAX,
|
_UNIT_LOAD_STATE_MAX,
|
||||||
_UNIT_LOAD_STATE_INVALID = -EINVAL,
|
_UNIT_LOAD_STATE_INVALID = -1
|
||||||
} UnitLoadState;
|
} UnitLoadState;
|
||||||
|
|
||||||
typedef enum UnitActiveState {
|
typedef enum UnitActiveState {
|
||||||
@ -46,7 +46,7 @@ typedef enum UnitActiveState {
|
|||||||
UNIT_DEACTIVATING,
|
UNIT_DEACTIVATING,
|
||||||
UNIT_MAINTENANCE,
|
UNIT_MAINTENANCE,
|
||||||
_UNIT_ACTIVE_STATE_MAX,
|
_UNIT_ACTIVE_STATE_MAX,
|
||||||
_UNIT_ACTIVE_STATE_INVALID = -EINVAL,
|
_UNIT_ACTIVE_STATE_INVALID = -1
|
||||||
} UnitActiveState;
|
} UnitActiveState;
|
||||||
|
|
||||||
typedef enum FreezerState {
|
typedef enum FreezerState {
|
||||||
@ -55,7 +55,7 @@ typedef enum FreezerState {
|
|||||||
FREEZER_FROZEN,
|
FREEZER_FROZEN,
|
||||||
FREEZER_THAWING,
|
FREEZER_THAWING,
|
||||||
_FREEZER_STATE_MAX,
|
_FREEZER_STATE_MAX,
|
||||||
_FREEZER_STATE_INVALID = -EINVAL,
|
_FREEZER_STATE_INVALID = -1
|
||||||
} FreezerState;
|
} FreezerState;
|
||||||
|
|
||||||
typedef enum AutomountState {
|
typedef enum AutomountState {
|
||||||
@ -64,7 +64,7 @@ typedef enum AutomountState {
|
|||||||
AUTOMOUNT_RUNNING,
|
AUTOMOUNT_RUNNING,
|
||||||
AUTOMOUNT_FAILED,
|
AUTOMOUNT_FAILED,
|
||||||
_AUTOMOUNT_STATE_MAX,
|
_AUTOMOUNT_STATE_MAX,
|
||||||
_AUTOMOUNT_STATE_INVALID = -EINVAL,
|
_AUTOMOUNT_STATE_INVALID = -1
|
||||||
} AutomountState;
|
} AutomountState;
|
||||||
|
|
||||||
/* We simply watch devices, we cannot plug/unplug them. That
|
/* We simply watch devices, we cannot plug/unplug them. That
|
||||||
@ -74,7 +74,7 @@ typedef enum DeviceState {
|
|||||||
DEVICE_TENTATIVE, /* mounted or swapped, but not (yet) announced by udev */
|
DEVICE_TENTATIVE, /* mounted or swapped, but not (yet) announced by udev */
|
||||||
DEVICE_PLUGGED, /* announced by udev */
|
DEVICE_PLUGGED, /* announced by udev */
|
||||||
_DEVICE_STATE_MAX,
|
_DEVICE_STATE_MAX,
|
||||||
_DEVICE_STATE_INVALID = -EINVAL,
|
_DEVICE_STATE_INVALID = -1
|
||||||
} DeviceState;
|
} DeviceState;
|
||||||
|
|
||||||
typedef enum MountState {
|
typedef enum MountState {
|
||||||
@ -91,7 +91,7 @@ typedef enum MountState {
|
|||||||
MOUNT_FAILED,
|
MOUNT_FAILED,
|
||||||
MOUNT_CLEANING,
|
MOUNT_CLEANING,
|
||||||
_MOUNT_STATE_MAX,
|
_MOUNT_STATE_MAX,
|
||||||
_MOUNT_STATE_INVALID = -EINVAL,
|
_MOUNT_STATE_INVALID = -1
|
||||||
} MountState;
|
} MountState;
|
||||||
|
|
||||||
typedef enum PathState {
|
typedef enum PathState {
|
||||||
@ -100,7 +100,7 @@ typedef enum PathState {
|
|||||||
PATH_RUNNING,
|
PATH_RUNNING,
|
||||||
PATH_FAILED,
|
PATH_FAILED,
|
||||||
_PATH_STATE_MAX,
|
_PATH_STATE_MAX,
|
||||||
_PATH_STATE_INVALID = -EINVAL,
|
_PATH_STATE_INVALID = -1
|
||||||
} PathState;
|
} PathState;
|
||||||
|
|
||||||
typedef enum ScopeState {
|
typedef enum ScopeState {
|
||||||
@ -111,7 +111,7 @@ typedef enum ScopeState {
|
|||||||
SCOPE_STOP_SIGKILL,
|
SCOPE_STOP_SIGKILL,
|
||||||
SCOPE_FAILED,
|
SCOPE_FAILED,
|
||||||
_SCOPE_STATE_MAX,
|
_SCOPE_STATE_MAX,
|
||||||
_SCOPE_STATE_INVALID = -EINVAL,
|
_SCOPE_STATE_INVALID = -1
|
||||||
} ScopeState;
|
} ScopeState;
|
||||||
|
|
||||||
typedef enum ServiceState {
|
typedef enum ServiceState {
|
||||||
@ -135,14 +135,14 @@ typedef enum ServiceState {
|
|||||||
SERVICE_AUTO_RESTART,
|
SERVICE_AUTO_RESTART,
|
||||||
SERVICE_CLEANING,
|
SERVICE_CLEANING,
|
||||||
_SERVICE_STATE_MAX,
|
_SERVICE_STATE_MAX,
|
||||||
_SERVICE_STATE_INVALID = -EINVAL,
|
_SERVICE_STATE_INVALID = -1
|
||||||
} ServiceState;
|
} ServiceState;
|
||||||
|
|
||||||
typedef enum SliceState {
|
typedef enum SliceState {
|
||||||
SLICE_DEAD,
|
SLICE_DEAD,
|
||||||
SLICE_ACTIVE,
|
SLICE_ACTIVE,
|
||||||
_SLICE_STATE_MAX,
|
_SLICE_STATE_MAX,
|
||||||
_SLICE_STATE_INVALID = -EINVAL,
|
_SLICE_STATE_INVALID = -1
|
||||||
} SliceState;
|
} SliceState;
|
||||||
|
|
||||||
typedef enum SocketState {
|
typedef enum SocketState {
|
||||||
@ -161,7 +161,7 @@ typedef enum SocketState {
|
|||||||
SOCKET_FAILED,
|
SOCKET_FAILED,
|
||||||
SOCKET_CLEANING,
|
SOCKET_CLEANING,
|
||||||
_SOCKET_STATE_MAX,
|
_SOCKET_STATE_MAX,
|
||||||
_SOCKET_STATE_INVALID = -EINVAL,
|
_SOCKET_STATE_INVALID = -1
|
||||||
} SocketState;
|
} SocketState;
|
||||||
|
|
||||||
typedef enum SwapState {
|
typedef enum SwapState {
|
||||||
@ -175,14 +175,14 @@ typedef enum SwapState {
|
|||||||
SWAP_FAILED,
|
SWAP_FAILED,
|
||||||
SWAP_CLEANING,
|
SWAP_CLEANING,
|
||||||
_SWAP_STATE_MAX,
|
_SWAP_STATE_MAX,
|
||||||
_SWAP_STATE_INVALID = -EINVAL,
|
_SWAP_STATE_INVALID = -1
|
||||||
} SwapState;
|
} SwapState;
|
||||||
|
|
||||||
typedef enum TargetState {
|
typedef enum TargetState {
|
||||||
TARGET_DEAD,
|
TARGET_DEAD,
|
||||||
TARGET_ACTIVE,
|
TARGET_ACTIVE,
|
||||||
_TARGET_STATE_MAX,
|
_TARGET_STATE_MAX,
|
||||||
_TARGET_STATE_INVALID = -EINVAL,
|
_TARGET_STATE_INVALID = -1
|
||||||
} TargetState;
|
} TargetState;
|
||||||
|
|
||||||
typedef enum TimerState {
|
typedef enum TimerState {
|
||||||
@ -192,7 +192,7 @@ typedef enum TimerState {
|
|||||||
TIMER_ELAPSED,
|
TIMER_ELAPSED,
|
||||||
TIMER_FAILED,
|
TIMER_FAILED,
|
||||||
_TIMER_STATE_MAX,
|
_TIMER_STATE_MAX,
|
||||||
_TIMER_STATE_INVALID = -EINVAL,
|
_TIMER_STATE_INVALID = -1
|
||||||
} TimerState;
|
} TimerState;
|
||||||
|
|
||||||
typedef enum UnitDependency {
|
typedef enum UnitDependency {
|
||||||
@ -237,7 +237,7 @@ typedef enum UnitDependency {
|
|||||||
UNIT_REFERENCED_BY,
|
UNIT_REFERENCED_BY,
|
||||||
|
|
||||||
_UNIT_DEPENDENCY_MAX,
|
_UNIT_DEPENDENCY_MAX,
|
||||||
_UNIT_DEPENDENCY_INVALID = -EINVAL,
|
_UNIT_DEPENDENCY_INVALID = -1
|
||||||
} UnitDependency;
|
} UnitDependency;
|
||||||
|
|
||||||
typedef enum NotifyAccess {
|
typedef enum NotifyAccess {
|
||||||
@ -246,7 +246,7 @@ typedef enum NotifyAccess {
|
|||||||
NOTIFY_MAIN,
|
NOTIFY_MAIN,
|
||||||
NOTIFY_EXEC,
|
NOTIFY_EXEC,
|
||||||
_NOTIFY_ACCESS_MAX,
|
_NOTIFY_ACCESS_MAX,
|
||||||
_NOTIFY_ACCESS_INVALID = -EINVAL,
|
_NOTIFY_ACCESS_INVALID = -1
|
||||||
} NotifyAccess;
|
} NotifyAccess;
|
||||||
|
|
||||||
char *unit_dbus_path_from_name(const char *name);
|
char *unit_dbus_path_from_name(const char *name);
|
||||||
|
@ -26,7 +26,7 @@ enum UnitFileState {
|
|||||||
UNIT_FILE_TRANSIENT,
|
UNIT_FILE_TRANSIENT,
|
||||||
UNIT_FILE_BAD,
|
UNIT_FILE_BAD,
|
||||||
_UNIT_FILE_STATE_MAX,
|
_UNIT_FILE_STATE_MAX,
|
||||||
_UNIT_FILE_STATE_INVALID = -EINVAL,
|
_UNIT_FILE_STATE_INVALID = -1
|
||||||
};
|
};
|
||||||
|
|
||||||
enum UnitFileScope {
|
enum UnitFileScope {
|
||||||
@ -34,7 +34,7 @@ enum UnitFileScope {
|
|||||||
UNIT_FILE_GLOBAL,
|
UNIT_FILE_GLOBAL,
|
||||||
UNIT_FILE_USER,
|
UNIT_FILE_USER,
|
||||||
_UNIT_FILE_SCOPE_MAX,
|
_UNIT_FILE_SCOPE_MAX,
|
||||||
_UNIT_FILE_SCOPE_INVALID = -EINVAL,
|
_UNIT_FILE_SCOPE_INVALID = -1
|
||||||
};
|
};
|
||||||
|
|
||||||
bool unit_type_may_alias(UnitType type) _const_;
|
bool unit_type_may_alias(UnitType type) _const_;
|
||||||
|
@ -252,7 +252,7 @@ int unit_name_build(const char *prefix, const char *instance, const char *suffix
|
|||||||
|
|
||||||
type = unit_type_from_string(suffix + 1);
|
type = unit_type_from_string(suffix + 1);
|
||||||
if (type < 0)
|
if (type < 0)
|
||||||
return type;
|
return -EINVAL;
|
||||||
|
|
||||||
return unit_name_build_from_type(prefix, instance, type, ret);
|
return unit_name_build_from_type(prefix, instance, type, ret);
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@ typedef enum UnitNameFlags {
|
|||||||
UNIT_NAME_TEMPLATE = 1 << 1, /* Allow foo@.service */
|
UNIT_NAME_TEMPLATE = 1 << 1, /* Allow foo@.service */
|
||||||
UNIT_NAME_INSTANCE = 1 << 2, /* Allow foo@bar.service */
|
UNIT_NAME_INSTANCE = 1 << 2, /* Allow foo@bar.service */
|
||||||
UNIT_NAME_ANY = UNIT_NAME_PLAIN|UNIT_NAME_TEMPLATE|UNIT_NAME_INSTANCE,
|
UNIT_NAME_ANY = UNIT_NAME_PLAIN|UNIT_NAME_TEMPLATE|UNIT_NAME_INSTANCE,
|
||||||
_UNIT_NAME_INVALID = -EINVAL,
|
_UNIT_NAME_INVALID = -1,
|
||||||
} UnitNameFlags;
|
} UnitNameFlags;
|
||||||
|
|
||||||
bool unit_name_is_valid(const char *n, UnitNameFlags flags) _pure_;
|
bool unit_name_is_valid(const char *n, UnitNameFlags flags) _pure_;
|
||||||
|
@ -41,7 +41,7 @@ enum {
|
|||||||
VIRTUALIZATION_CONTAINER_LAST = VIRTUALIZATION_CONTAINER_OTHER,
|
VIRTUALIZATION_CONTAINER_LAST = VIRTUALIZATION_CONTAINER_OTHER,
|
||||||
|
|
||||||
_VIRTUALIZATION_MAX,
|
_VIRTUALIZATION_MAX,
|
||||||
_VIRTUALIZATION_INVALID = -EINVAL,
|
_VIRTUALIZATION_INVALID = -1
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline bool VIRTUALIZATION_IS_VM(int x) {
|
static inline bool VIRTUALIZATION_IS_VM(int x) {
|
||||||
|
@ -2,14 +2,13 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <efi.h>
|
#include <efi.h>
|
||||||
#include <errno.h>
|
|
||||||
|
|
||||||
typedef enum RandomSeedMode {
|
typedef enum RandomSeedMode {
|
||||||
RANDOM_SEED_OFF,
|
RANDOM_SEED_OFF,
|
||||||
RANDOM_SEED_WITH_SYSTEM_TOKEN,
|
RANDOM_SEED_WITH_SYSTEM_TOKEN,
|
||||||
RANDOM_SEED_ALWAYS,
|
RANDOM_SEED_ALWAYS,
|
||||||
_RANDOM_SEED_MODE_MAX,
|
_RANDOM_SEED_MODE_MAX,
|
||||||
_RANDOM_SEED_MODE_INVALID = -EINVAL,
|
_RANDOM_SEED_MODE_INVALID = -1,
|
||||||
} RandomSeedMode;
|
} RandomSeedMode;
|
||||||
|
|
||||||
EFI_STATUS process_random_seed(EFI_FILE *root_dir, RandomSeedMode mode);
|
EFI_STATUS process_random_seed(EFI_FILE *root_dir, RandomSeedMode mode);
|
||||||
|
@ -12,7 +12,7 @@ typedef enum AutomountResult {
|
|||||||
AUTOMOUNT_FAILURE_START_LIMIT_HIT,
|
AUTOMOUNT_FAILURE_START_LIMIT_HIT,
|
||||||
AUTOMOUNT_FAILURE_MOUNT_START_LIMIT_HIT,
|
AUTOMOUNT_FAILURE_MOUNT_START_LIMIT_HIT,
|
||||||
_AUTOMOUNT_RESULT_MAX,
|
_AUTOMOUNT_RESULT_MAX,
|
||||||
_AUTOMOUNT_RESULT_INVALID = -EINVAL,
|
_AUTOMOUNT_RESULT_INVALID = -1
|
||||||
} AutomountResult;
|
} AutomountResult;
|
||||||
|
|
||||||
struct Automount {
|
struct Automount {
|
||||||
|
@ -44,7 +44,7 @@ typedef enum CGroupDevicePolicy {
|
|||||||
CGROUP_DEVICE_POLICY_STRICT,
|
CGROUP_DEVICE_POLICY_STRICT,
|
||||||
|
|
||||||
_CGROUP_DEVICE_POLICY_MAX,
|
_CGROUP_DEVICE_POLICY_MAX,
|
||||||
_CGROUP_DEVICE_POLICY_INVALID = -EINVAL,
|
_CGROUP_DEVICE_POLICY_INVALID = -1
|
||||||
} CGroupDevicePolicy;
|
} CGroupDevicePolicy;
|
||||||
|
|
||||||
typedef enum FreezerAction {
|
typedef enum FreezerAction {
|
||||||
@ -52,7 +52,7 @@ typedef enum FreezerAction {
|
|||||||
FREEZER_THAW,
|
FREEZER_THAW,
|
||||||
|
|
||||||
_FREEZER_ACTION_MAX,
|
_FREEZER_ACTION_MAX,
|
||||||
_FREEZER_ACTION_INVALID = -EINVAL,
|
_FREEZER_ACTION_INVALID = -1,
|
||||||
} FreezerAction;
|
} FreezerAction;
|
||||||
|
|
||||||
struct CGroupDeviceAllow {
|
struct CGroupDeviceAllow {
|
||||||
@ -173,7 +173,7 @@ typedef enum CGroupIPAccountingMetric {
|
|||||||
CGROUP_IP_EGRESS_BYTES,
|
CGROUP_IP_EGRESS_BYTES,
|
||||||
CGROUP_IP_EGRESS_PACKETS,
|
CGROUP_IP_EGRESS_PACKETS,
|
||||||
_CGROUP_IP_ACCOUNTING_METRIC_MAX,
|
_CGROUP_IP_ACCOUNTING_METRIC_MAX,
|
||||||
_CGROUP_IP_ACCOUNTING_METRIC_INVALID = -EINVAL,
|
_CGROUP_IP_ACCOUNTING_METRIC_INVALID = -1,
|
||||||
} CGroupIPAccountingMetric;
|
} CGroupIPAccountingMetric;
|
||||||
|
|
||||||
/* Used when querying IO accounting data */
|
/* Used when querying IO accounting data */
|
||||||
@ -183,7 +183,7 @@ typedef enum CGroupIOAccountingMetric {
|
|||||||
CGROUP_IO_READ_OPERATIONS,
|
CGROUP_IO_READ_OPERATIONS,
|
||||||
CGROUP_IO_WRITE_OPERATIONS,
|
CGROUP_IO_WRITE_OPERATIONS,
|
||||||
_CGROUP_IO_ACCOUNTING_METRIC_MAX,
|
_CGROUP_IO_ACCOUNTING_METRIC_MAX,
|
||||||
_CGROUP_IO_ACCOUNTING_METRIC_INVALID = -EINVAL,
|
_CGROUP_IO_ACCOUNTING_METRIC_INVALID = -1,
|
||||||
} CGroupIOAccountingMetric;
|
} CGroupIOAccountingMetric;
|
||||||
|
|
||||||
typedef struct Unit Unit;
|
typedef struct Unit Unit;
|
||||||
|
@ -1452,7 +1452,7 @@ int bus_cgroup_set_property(
|
|||||||
|
|
||||||
p = cgroup_device_policy_from_string(policy);
|
p = cgroup_device_policy_from_string(policy);
|
||||||
if (p < 0)
|
if (p < 0)
|
||||||
return p;
|
return -EINVAL;
|
||||||
|
|
||||||
if (!UNIT_WRITE_FLAGS_NOOP(flags)) {
|
if (!UNIT_WRITE_FLAGS_NOOP(flags)) {
|
||||||
c->device_policy = p;
|
c->device_policy = p;
|
||||||
|
@ -338,7 +338,7 @@ static int bus_timer_set_transient_property(
|
|||||||
|
|
||||||
b = timer_base_from_string(name);
|
b = timer_base_from_string(name);
|
||||||
if (b < 0)
|
if (b < 0)
|
||||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Unknown timer base %s", name);
|
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Unknown timer base");
|
||||||
|
|
||||||
r = sd_bus_message_read(message, "t", &usec);
|
r = sd_bus_message_read(message, "t", &usec);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
|
@ -1982,7 +1982,7 @@ static int bus_unit_set_transient_property(
|
|||||||
UnitWriteFlags flags,
|
UnitWriteFlags flags,
|
||||||
sd_bus_error *error) {
|
sd_bus_error *error) {
|
||||||
|
|
||||||
UnitDependency d;
|
UnitDependency d = _UNIT_DEPENDENCY_INVALID;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
assert(u);
|
assert(u);
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <errno.h>
|
|
||||||
|
|
||||||
typedef enum EmergencyAction {
|
typedef enum EmergencyAction {
|
||||||
EMERGENCY_ACTION_NONE,
|
EMERGENCY_ACTION_NONE,
|
||||||
EMERGENCY_ACTION_REBOOT,
|
EMERGENCY_ACTION_REBOOT,
|
||||||
@ -15,7 +13,7 @@ typedef enum EmergencyAction {
|
|||||||
_EMERGENCY_ACTION_FIRST_USER_ACTION = EMERGENCY_ACTION_EXIT,
|
_EMERGENCY_ACTION_FIRST_USER_ACTION = EMERGENCY_ACTION_EXIT,
|
||||||
EMERGENCY_ACTION_EXIT_FORCE,
|
EMERGENCY_ACTION_EXIT_FORCE,
|
||||||
_EMERGENCY_ACTION_MAX,
|
_EMERGENCY_ACTION_MAX,
|
||||||
_EMERGENCY_ACTION_INVALID = -EINVAL,
|
_EMERGENCY_ACTION_INVALID = -1
|
||||||
} EmergencyAction;
|
} EmergencyAction;
|
||||||
|
|
||||||
typedef enum EmergencyActionFlags {
|
typedef enum EmergencyActionFlags {
|
||||||
|
@ -33,7 +33,7 @@ typedef enum ExecUtmpMode {
|
|||||||
EXEC_UTMP_LOGIN,
|
EXEC_UTMP_LOGIN,
|
||||||
EXEC_UTMP_USER,
|
EXEC_UTMP_USER,
|
||||||
_EXEC_UTMP_MODE_MAX,
|
_EXEC_UTMP_MODE_MAX,
|
||||||
_EXEC_UTMP_MODE_INVALID = -EINVAL,
|
_EXEC_UTMP_MODE_INVALID = -1
|
||||||
} ExecUtmpMode;
|
} ExecUtmpMode;
|
||||||
|
|
||||||
typedef enum ExecInput {
|
typedef enum ExecInput {
|
||||||
@ -46,7 +46,7 @@ typedef enum ExecInput {
|
|||||||
EXEC_INPUT_DATA,
|
EXEC_INPUT_DATA,
|
||||||
EXEC_INPUT_FILE,
|
EXEC_INPUT_FILE,
|
||||||
_EXEC_INPUT_MAX,
|
_EXEC_INPUT_MAX,
|
||||||
_EXEC_INPUT_INVALID = -EINVAL,
|
_EXEC_INPUT_INVALID = -1
|
||||||
} ExecInput;
|
} ExecInput;
|
||||||
|
|
||||||
typedef enum ExecOutput {
|
typedef enum ExecOutput {
|
||||||
@ -63,7 +63,7 @@ typedef enum ExecOutput {
|
|||||||
EXEC_OUTPUT_FILE_APPEND,
|
EXEC_OUTPUT_FILE_APPEND,
|
||||||
EXEC_OUTPUT_FILE_TRUNCATE,
|
EXEC_OUTPUT_FILE_TRUNCATE,
|
||||||
_EXEC_OUTPUT_MAX,
|
_EXEC_OUTPUT_MAX,
|
||||||
_EXEC_OUTPUT_INVALID = -EINVAL,
|
_EXEC_OUTPUT_INVALID = -1
|
||||||
} ExecOutput;
|
} ExecOutput;
|
||||||
|
|
||||||
typedef enum ExecPreserveMode {
|
typedef enum ExecPreserveMode {
|
||||||
@ -71,7 +71,7 @@ typedef enum ExecPreserveMode {
|
|||||||
EXEC_PRESERVE_YES,
|
EXEC_PRESERVE_YES,
|
||||||
EXEC_PRESERVE_RESTART,
|
EXEC_PRESERVE_RESTART,
|
||||||
_EXEC_PRESERVE_MODE_MAX,
|
_EXEC_PRESERVE_MODE_MAX,
|
||||||
_EXEC_PRESERVE_MODE_INVALID = -EINVAL,
|
_EXEC_PRESERVE_MODE_INVALID = -1
|
||||||
} ExecPreserveMode;
|
} ExecPreserveMode;
|
||||||
|
|
||||||
typedef enum ExecKeyringMode {
|
typedef enum ExecKeyringMode {
|
||||||
@ -79,7 +79,7 @@ typedef enum ExecKeyringMode {
|
|||||||
EXEC_KEYRING_PRIVATE,
|
EXEC_KEYRING_PRIVATE,
|
||||||
EXEC_KEYRING_SHARED,
|
EXEC_KEYRING_SHARED,
|
||||||
_EXEC_KEYRING_MODE_MAX,
|
_EXEC_KEYRING_MODE_MAX,
|
||||||
_EXEC_KEYRING_MODE_INVALID = -EINVAL,
|
_EXEC_KEYRING_MODE_INVALID = -1,
|
||||||
} ExecKeyringMode;
|
} ExecKeyringMode;
|
||||||
|
|
||||||
/* Contains start and exit information about an executed command. */
|
/* Contains start and exit information about an executed command. */
|
||||||
@ -126,7 +126,7 @@ typedef enum ExecDirectoryType {
|
|||||||
EXEC_DIRECTORY_LOGS,
|
EXEC_DIRECTORY_LOGS,
|
||||||
EXEC_DIRECTORY_CONFIGURATION,
|
EXEC_DIRECTORY_CONFIGURATION,
|
||||||
_EXEC_DIRECTORY_TYPE_MAX,
|
_EXEC_DIRECTORY_TYPE_MAX,
|
||||||
_EXEC_DIRECTORY_TYPE_INVALID = -EINVAL,
|
_EXEC_DIRECTORY_TYPE_INVALID = -1,
|
||||||
} ExecDirectoryType;
|
} ExecDirectoryType;
|
||||||
|
|
||||||
typedef struct ExecDirectory {
|
typedef struct ExecDirectory {
|
||||||
@ -144,7 +144,7 @@ typedef enum ExecCleanMask {
|
|||||||
EXEC_CLEAN_CONFIGURATION = 1U << EXEC_DIRECTORY_CONFIGURATION,
|
EXEC_CLEAN_CONFIGURATION = 1U << EXEC_DIRECTORY_CONFIGURATION,
|
||||||
EXEC_CLEAN_NONE = 0,
|
EXEC_CLEAN_NONE = 0,
|
||||||
EXEC_CLEAN_ALL = (1U << _EXEC_DIRECTORY_TYPE_MAX) - 1,
|
EXEC_CLEAN_ALL = (1U << _EXEC_DIRECTORY_TYPE_MAX) - 1,
|
||||||
_EXEC_CLEAN_MASK_INVALID = -EINVAL,
|
_EXEC_CLEAN_MASK_INVALID = -1,
|
||||||
} ExecCleanMask;
|
} ExecCleanMask;
|
||||||
|
|
||||||
/* A credential configured with SetCredential= */
|
/* A credential configured with SetCredential= */
|
||||||
|
@ -57,14 +57,14 @@ enum JobType {
|
|||||||
JOB_RELOAD_OR_START, /* if running, reload, otherwise start */
|
JOB_RELOAD_OR_START, /* if running, reload, otherwise start */
|
||||||
|
|
||||||
_JOB_TYPE_MAX,
|
_JOB_TYPE_MAX,
|
||||||
_JOB_TYPE_INVALID = -EINVAL,
|
_JOB_TYPE_INVALID = -1
|
||||||
};
|
};
|
||||||
|
|
||||||
enum JobState {
|
enum JobState {
|
||||||
JOB_WAITING,
|
JOB_WAITING,
|
||||||
JOB_RUNNING,
|
JOB_RUNNING,
|
||||||
_JOB_STATE_MAX,
|
_JOB_STATE_MAX,
|
||||||
_JOB_STATE_INVALID = -EINVAL,
|
_JOB_STATE_INVALID = -1
|
||||||
};
|
};
|
||||||
|
|
||||||
enum JobMode {
|
enum JobMode {
|
||||||
@ -77,7 +77,7 @@ enum JobMode {
|
|||||||
JOB_IGNORE_REQUIREMENTS, /* Ignore requirement dependencies */
|
JOB_IGNORE_REQUIREMENTS, /* Ignore requirement dependencies */
|
||||||
JOB_TRIGGERING, /* Adds TRIGGERED_BY dependencies to the same transaction */
|
JOB_TRIGGERING, /* Adds TRIGGERED_BY dependencies to the same transaction */
|
||||||
_JOB_MODE_MAX,
|
_JOB_MODE_MAX,
|
||||||
_JOB_MODE_INVALID = -EINVAL,
|
_JOB_MODE_INVALID = -1
|
||||||
};
|
};
|
||||||
|
|
||||||
enum JobResult {
|
enum JobResult {
|
||||||
@ -93,7 +93,7 @@ enum JobResult {
|
|||||||
JOB_COLLECTED, /* Job was garbage collected, since nothing needed it anymore */
|
JOB_COLLECTED, /* Job was garbage collected, since nothing needed it anymore */
|
||||||
JOB_ONCE, /* Unit was started before, and hence can't be started again */
|
JOB_ONCE, /* Unit was started before, and hence can't be started again */
|
||||||
_JOB_RESULT_MAX,
|
_JOB_RESULT_MAX,
|
||||||
_JOB_RESULT_INVALID = -EINVAL,
|
_JOB_RESULT_INVALID = -1
|
||||||
};
|
};
|
||||||
|
|
||||||
#include "unit.h"
|
#include "unit.h"
|
||||||
|
@ -15,7 +15,7 @@ typedef enum KillMode {
|
|||||||
KILL_MIXED,
|
KILL_MIXED,
|
||||||
KILL_NONE,
|
KILL_NONE,
|
||||||
_KILL_MODE_MAX,
|
_KILL_MODE_MAX,
|
||||||
_KILL_MODE_INVALID = -EINVAL,
|
_KILL_MODE_INVALID = -1
|
||||||
} KillMode;
|
} KillMode;
|
||||||
|
|
||||||
struct KillContext {
|
struct KillContext {
|
||||||
@ -37,7 +37,7 @@ typedef enum KillWho {
|
|||||||
KILL_CONTROL_FAIL,
|
KILL_CONTROL_FAIL,
|
||||||
KILL_ALL_FAIL,
|
KILL_ALL_FAIL,
|
||||||
_KILL_WHO_MAX,
|
_KILL_WHO_MAX,
|
||||||
_KILL_WHO_INVALID = -EINVAL,
|
_KILL_WHO_INVALID = -1
|
||||||
} KillWho;
|
} KillWho;
|
||||||
|
|
||||||
void kill_context_init(KillContext *c);
|
void kill_context_init(KillContext *c);
|
||||||
|
@ -510,7 +510,7 @@ static int manager_setup_signals(Manager *m) {
|
|||||||
SIGCHLD, /* Child died */
|
SIGCHLD, /* Child died */
|
||||||
SIGTERM, /* Reexecute daemon */
|
SIGTERM, /* Reexecute daemon */
|
||||||
SIGHUP, /* Reload configuration */
|
SIGHUP, /* Reload configuration */
|
||||||
SIGUSR1, /* systemd: reconnect to D-Bus */
|
SIGUSR1, /* systemd/upstart: reconnect to D-Bus */
|
||||||
SIGUSR2, /* systemd: dump status */
|
SIGUSR2, /* systemd: dump status */
|
||||||
SIGINT, /* Kernel sends us this on control-alt-del */
|
SIGINT, /* Kernel sends us this on control-alt-del */
|
||||||
SIGWINCH, /* Kernel sends us this on kbrequest (alt-arrowup) */
|
SIGWINCH, /* Kernel sends us this on kbrequest (alt-arrowup) */
|
||||||
@ -3180,19 +3180,22 @@ static bool manager_timestamp_shall_serialize(ManagerTimestamp t) {
|
|||||||
#define DESTROY_IPC_FLAG (UINT32_C(1) << 31)
|
#define DESTROY_IPC_FLAG (UINT32_C(1) << 31)
|
||||||
|
|
||||||
static void manager_serialize_uid_refs_internal(
|
static void manager_serialize_uid_refs_internal(
|
||||||
|
Manager *m,
|
||||||
FILE *f,
|
FILE *f,
|
||||||
Hashmap *uid_refs,
|
Hashmap **uid_refs,
|
||||||
const char *field_name) {
|
const char *field_name) {
|
||||||
|
|
||||||
void *p, *k;
|
void *p, *k;
|
||||||
|
|
||||||
|
assert(m);
|
||||||
assert(f);
|
assert(f);
|
||||||
|
assert(uid_refs);
|
||||||
assert(field_name);
|
assert(field_name);
|
||||||
|
|
||||||
/* Serialize the UID reference table. Or actually, just the IPC destruction flag of it, as
|
/* Serialize the UID reference table. Or actually, just the IPC destruction flag of it, as
|
||||||
* the actual counter of it is better rebuild after a reload/reexec. */
|
* the actual counter of it is better rebuild after a reload/reexec. */
|
||||||
|
|
||||||
HASHMAP_FOREACH_KEY(p, k, uid_refs) {
|
HASHMAP_FOREACH_KEY(p, k, *uid_refs) {
|
||||||
uint32_t c;
|
uint32_t c;
|
||||||
uid_t uid;
|
uid_t uid;
|
||||||
|
|
||||||
@ -3207,11 +3210,11 @@ static void manager_serialize_uid_refs_internal(
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void manager_serialize_uid_refs(Manager *m, FILE *f) {
|
static void manager_serialize_uid_refs(Manager *m, FILE *f) {
|
||||||
manager_serialize_uid_refs_internal(f, m->uid_refs, "destroy-ipc-uid");
|
manager_serialize_uid_refs_internal(m, f, &m->uid_refs, "destroy-ipc-uid");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void manager_serialize_gid_refs(Manager *m, FILE *f) {
|
static void manager_serialize_gid_refs(Manager *m, FILE *f) {
|
||||||
manager_serialize_uid_refs_internal(f, m->gid_refs, "destroy-ipc-gid");
|
manager_serialize_uid_refs_internal(m, f, &m->gid_refs, "destroy-ipc-gid");
|
||||||
}
|
}
|
||||||
|
|
||||||
int manager_serialize(
|
int manager_serialize(
|
||||||
@ -3471,6 +3474,7 @@ void manager_retry_runtime_watchdog(Manager *m) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void manager_deserialize_uid_refs_one_internal(
|
static void manager_deserialize_uid_refs_one_internal(
|
||||||
|
Manager *m,
|
||||||
Hashmap** uid_refs,
|
Hashmap** uid_refs,
|
||||||
const char *value) {
|
const char *value) {
|
||||||
|
|
||||||
@ -3478,16 +3482,18 @@ static void manager_deserialize_uid_refs_one_internal(
|
|||||||
uint32_t c;
|
uint32_t c;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
|
assert(m);
|
||||||
assert(uid_refs);
|
assert(uid_refs);
|
||||||
assert(value);
|
assert(value);
|
||||||
|
|
||||||
r = parse_uid(value, &uid);
|
r = parse_uid(value, &uid);
|
||||||
if (r < 0 || uid == 0) {
|
if (r < 0 || uid == 0) {
|
||||||
log_debug("Unable to parse UID/GID reference serialization: " UID_FMT, uid);
|
log_debug("Unable to parse UID reference serialization: " UID_FMT, uid);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hashmap_ensure_allocated(uid_refs, &trivial_hash_ops) < 0) {
|
r = hashmap_ensure_allocated(uid_refs, &trivial_hash_ops);
|
||||||
|
if (r < 0) {
|
||||||
log_oom();
|
log_oom();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -3500,17 +3506,17 @@ static void manager_deserialize_uid_refs_one_internal(
|
|||||||
|
|
||||||
r = hashmap_replace(*uid_refs, UID_TO_PTR(uid), UINT32_TO_PTR(c));
|
r = hashmap_replace(*uid_refs, UID_TO_PTR(uid), UINT32_TO_PTR(c));
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
log_debug_errno(r, "Failed to add UID/GID reference entry: %m");
|
log_debug_errno(r, "Failed to add UID reference entry: %m");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void manager_deserialize_uid_refs_one(Manager *m, const char *value) {
|
static void manager_deserialize_uid_refs_one(Manager *m, const char *value) {
|
||||||
manager_deserialize_uid_refs_one_internal(&m->uid_refs, value);
|
manager_deserialize_uid_refs_one_internal(m, &m->uid_refs, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void manager_deserialize_gid_refs_one(Manager *m, const char *value) {
|
static void manager_deserialize_gid_refs_one(Manager *m, const char *value) {
|
||||||
manager_deserialize_uid_refs_one_internal(&m->gid_refs, value);
|
manager_deserialize_uid_refs_one_internal(m, &m->gid_refs, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
int manager_deserialize(Manager *m, FILE *f, FDSet *fds) {
|
int manager_deserialize(Manager *m, FILE *f, FDSet *fds) {
|
||||||
@ -4584,13 +4590,16 @@ ManagerState manager_state(Manager *m) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void manager_unref_uid_internal(
|
static void manager_unref_uid_internal(
|
||||||
Hashmap *uid_refs,
|
Manager *m,
|
||||||
|
Hashmap **uid_refs,
|
||||||
uid_t uid,
|
uid_t uid,
|
||||||
bool destroy_now,
|
bool destroy_now,
|
||||||
int (*_clean_ipc)(uid_t uid)) {
|
int (*_clean_ipc)(uid_t uid)) {
|
||||||
|
|
||||||
uint32_t c, n;
|
uint32_t c, n;
|
||||||
|
|
||||||
|
assert(m);
|
||||||
|
assert(uid_refs);
|
||||||
assert(uid_is_valid(uid));
|
assert(uid_is_valid(uid));
|
||||||
assert(_clean_ipc);
|
assert(_clean_ipc);
|
||||||
|
|
||||||
@ -4608,14 +4617,14 @@ static void manager_unref_uid_internal(
|
|||||||
if (uid == 0) /* We don't keep track of root, and will never destroy it */
|
if (uid == 0) /* We don't keep track of root, and will never destroy it */
|
||||||
return;
|
return;
|
||||||
|
|
||||||
c = PTR_TO_UINT32(hashmap_get(uid_refs, UID_TO_PTR(uid)));
|
c = PTR_TO_UINT32(hashmap_get(*uid_refs, UID_TO_PTR(uid)));
|
||||||
|
|
||||||
n = c & ~DESTROY_IPC_FLAG;
|
n = c & ~DESTROY_IPC_FLAG;
|
||||||
assert(n > 0);
|
assert(n > 0);
|
||||||
n--;
|
n--;
|
||||||
|
|
||||||
if (destroy_now && n == 0) {
|
if (destroy_now && n == 0) {
|
||||||
hashmap_remove(uid_refs, UID_TO_PTR(uid));
|
hashmap_remove(*uid_refs, UID_TO_PTR(uid));
|
||||||
|
|
||||||
if (c & DESTROY_IPC_FLAG) {
|
if (c & DESTROY_IPC_FLAG) {
|
||||||
log_debug("%s " UID_FMT " is no longer referenced, cleaning up its IPC.",
|
log_debug("%s " UID_FMT " is no longer referenced, cleaning up its IPC.",
|
||||||
@ -4625,19 +4634,20 @@ static void manager_unref_uid_internal(
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
c = n | (c & DESTROY_IPC_FLAG);
|
c = n | (c & DESTROY_IPC_FLAG);
|
||||||
assert_se(hashmap_update(uid_refs, UID_TO_PTR(uid), UINT32_TO_PTR(c)) >= 0);
|
assert_se(hashmap_update(*uid_refs, UID_TO_PTR(uid), UINT32_TO_PTR(c)) >= 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void manager_unref_uid(Manager *m, uid_t uid, bool destroy_now) {
|
void manager_unref_uid(Manager *m, uid_t uid, bool destroy_now) {
|
||||||
manager_unref_uid_internal(m->uid_refs, uid, destroy_now, clean_ipc_by_uid);
|
manager_unref_uid_internal(m, &m->uid_refs, uid, destroy_now, clean_ipc_by_uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
void manager_unref_gid(Manager *m, gid_t gid, bool destroy_now) {
|
void manager_unref_gid(Manager *m, gid_t gid, bool destroy_now) {
|
||||||
manager_unref_uid_internal(m->gid_refs, (uid_t) gid, destroy_now, clean_ipc_by_gid);
|
manager_unref_uid_internal(m, &m->gid_refs, (uid_t) gid, destroy_now, clean_ipc_by_gid);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int manager_ref_uid_internal(
|
static int manager_ref_uid_internal(
|
||||||
|
Manager *m,
|
||||||
Hashmap **uid_refs,
|
Hashmap **uid_refs,
|
||||||
uid_t uid,
|
uid_t uid,
|
||||||
bool clean_ipc) {
|
bool clean_ipc) {
|
||||||
@ -4645,6 +4655,7 @@ static int manager_ref_uid_internal(
|
|||||||
uint32_t c, n;
|
uint32_t c, n;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
|
assert(m);
|
||||||
assert(uid_refs);
|
assert(uid_refs);
|
||||||
assert(uid_is_valid(uid));
|
assert(uid_is_valid(uid));
|
||||||
|
|
||||||
@ -4675,22 +4686,25 @@ static int manager_ref_uid_internal(
|
|||||||
}
|
}
|
||||||
|
|
||||||
int manager_ref_uid(Manager *m, uid_t uid, bool clean_ipc) {
|
int manager_ref_uid(Manager *m, uid_t uid, bool clean_ipc) {
|
||||||
return manager_ref_uid_internal(&m->uid_refs, uid, clean_ipc);
|
return manager_ref_uid_internal(m, &m->uid_refs, uid, clean_ipc);
|
||||||
}
|
}
|
||||||
|
|
||||||
int manager_ref_gid(Manager *m, gid_t gid, bool clean_ipc) {
|
int manager_ref_gid(Manager *m, gid_t gid, bool clean_ipc) {
|
||||||
return manager_ref_uid_internal(&m->gid_refs, (uid_t) gid, clean_ipc);
|
return manager_ref_uid_internal(m, &m->gid_refs, (uid_t) gid, clean_ipc);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void manager_vacuum_uid_refs_internal(
|
static void manager_vacuum_uid_refs_internal(
|
||||||
Hashmap *uid_refs,
|
Manager *m,
|
||||||
|
Hashmap **uid_refs,
|
||||||
int (*_clean_ipc)(uid_t uid)) {
|
int (*_clean_ipc)(uid_t uid)) {
|
||||||
|
|
||||||
void *p, *k;
|
void *p, *k;
|
||||||
|
|
||||||
|
assert(m);
|
||||||
|
assert(uid_refs);
|
||||||
assert(_clean_ipc);
|
assert(_clean_ipc);
|
||||||
|
|
||||||
HASHMAP_FOREACH_KEY(p, k, uid_refs) {
|
HASHMAP_FOREACH_KEY(p, k, *uid_refs) {
|
||||||
uint32_t c, n;
|
uint32_t c, n;
|
||||||
uid_t uid;
|
uid_t uid;
|
||||||
|
|
||||||
@ -4708,16 +4722,16 @@ static void manager_vacuum_uid_refs_internal(
|
|||||||
(void) _clean_ipc(uid);
|
(void) _clean_ipc(uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
assert_se(hashmap_remove(uid_refs, k) == p);
|
assert_se(hashmap_remove(*uid_refs, k) == p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void manager_vacuum_uid_refs(Manager *m) {
|
static void manager_vacuum_uid_refs(Manager *m) {
|
||||||
manager_vacuum_uid_refs_internal(m->uid_refs, clean_ipc_by_uid);
|
manager_vacuum_uid_refs_internal(m, &m->uid_refs, clean_ipc_by_uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void manager_vacuum_gid_refs(Manager *m) {
|
static void manager_vacuum_gid_refs(Manager *m) {
|
||||||
manager_vacuum_uid_refs_internal(m->gid_refs, clean_ipc_by_gid);
|
manager_vacuum_uid_refs_internal(m, &m->gid_refs, clean_ipc_by_gid);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void manager_vacuum(Manager *m) {
|
static void manager_vacuum(Manager *m) {
|
||||||
|
@ -36,7 +36,7 @@ typedef enum ManagerState {
|
|||||||
MANAGER_MAINTENANCE,
|
MANAGER_MAINTENANCE,
|
||||||
MANAGER_STOPPING,
|
MANAGER_STOPPING,
|
||||||
_MANAGER_STATE_MAX,
|
_MANAGER_STATE_MAX,
|
||||||
_MANAGER_STATE_INVALID = -EINVAL,
|
_MANAGER_STATE_INVALID = -1
|
||||||
} ManagerState;
|
} ManagerState;
|
||||||
|
|
||||||
typedef enum ManagerObjective {
|
typedef enum ManagerObjective {
|
||||||
@ -50,7 +50,7 @@ typedef enum ManagerObjective {
|
|||||||
MANAGER_KEXEC,
|
MANAGER_KEXEC,
|
||||||
MANAGER_SWITCH_ROOT,
|
MANAGER_SWITCH_ROOT,
|
||||||
_MANAGER_OBJECTIVE_MAX,
|
_MANAGER_OBJECTIVE_MAX,
|
||||||
_MANAGER_OBJECTIVE_INVALID = -EINVAL,
|
_MANAGER_OBJECTIVE_INVALID = -1
|
||||||
} ManagerObjective;
|
} ManagerObjective;
|
||||||
|
|
||||||
typedef enum StatusType {
|
typedef enum StatusType {
|
||||||
@ -65,7 +65,7 @@ typedef enum OOMPolicy {
|
|||||||
OOM_STOP, /* The kernel kills the process it wants to kill, and we stop the unit */
|
OOM_STOP, /* The kernel kills the process it wants to kill, and we stop the unit */
|
||||||
OOM_KILL, /* The kernel kills the process it wants to kill, and all others in the unit, and we stop the unit */
|
OOM_KILL, /* The kernel kills the process it wants to kill, and all others in the unit, and we stop the unit */
|
||||||
_OOM_POLICY_MAX,
|
_OOM_POLICY_MAX,
|
||||||
_OOM_POLICY_INVALID = -EINVAL,
|
_OOM_POLICY_INVALID = -1
|
||||||
} OOMPolicy;
|
} OOMPolicy;
|
||||||
|
|
||||||
/* Notes:
|
/* Notes:
|
||||||
@ -111,7 +111,7 @@ typedef enum ManagerTimestamp {
|
|||||||
MANAGER_TIMESTAMP_INITRD_UNITS_LOAD_START,
|
MANAGER_TIMESTAMP_INITRD_UNITS_LOAD_START,
|
||||||
MANAGER_TIMESTAMP_INITRD_UNITS_LOAD_FINISH,
|
MANAGER_TIMESTAMP_INITRD_UNITS_LOAD_FINISH,
|
||||||
_MANAGER_TIMESTAMP_MAX,
|
_MANAGER_TIMESTAMP_MAX,
|
||||||
_MANAGER_TIMESTAMP_INVALID = -EINVAL,
|
_MANAGER_TIMESTAMP_INVALID = -1,
|
||||||
} ManagerTimestamp;
|
} ManagerTimestamp;
|
||||||
|
|
||||||
typedef enum WatchdogType {
|
typedef enum WatchdogType {
|
||||||
@ -311,25 +311,25 @@ struct Manager {
|
|||||||
|
|
||||||
/* The stat() data the last time we saw /etc/localtime */
|
/* The stat() data the last time we saw /etc/localtime */
|
||||||
usec_t etc_localtime_mtime;
|
usec_t etc_localtime_mtime;
|
||||||
bool etc_localtime_accessible;
|
bool etc_localtime_accessible:1;
|
||||||
|
|
||||||
ManagerObjective objective;
|
ManagerObjective objective:5;
|
||||||
|
|
||||||
/* Flags */
|
/* Flags */
|
||||||
bool dispatching_load_queue;
|
bool dispatching_load_queue:1;
|
||||||
|
|
||||||
bool taint_usr;
|
bool taint_usr:1;
|
||||||
|
|
||||||
/* Have we already sent out the READY=1 notification? */
|
/* Have we already sent out the READY=1 notification? */
|
||||||
bool ready_sent;
|
bool ready_sent:1;
|
||||||
|
|
||||||
/* Have we already printed the taint line if necessary? */
|
/* Have we already printed the taint line if necessary? */
|
||||||
bool taint_logged;
|
bool taint_logged:1;
|
||||||
|
|
||||||
/* Have we ever changed the "kernel.pid_max" sysctl? */
|
/* Have we ever changed the "kernel.pid_max" sysctl? */
|
||||||
bool sysctl_pid_max_changed;
|
bool sysctl_pid_max_changed:1;
|
||||||
|
|
||||||
ManagerTestRunFlags test_run_flags;
|
ManagerTestRunFlags test_run_flags:8;
|
||||||
|
|
||||||
/* If non-zero, exit with the following value when the systemd
|
/* If non-zero, exit with the following value when the systemd
|
||||||
* process terminate. Useful for containers: systemd-nspawn could get
|
* process terminate. Useful for containers: systemd-nspawn could get
|
||||||
@ -366,8 +366,8 @@ struct Manager {
|
|||||||
|
|
||||||
int original_log_level;
|
int original_log_level;
|
||||||
LogTarget original_log_target;
|
LogTarget original_log_target;
|
||||||
bool log_level_overridden;
|
bool log_level_overridden:1;
|
||||||
bool log_target_overridden;
|
bool log_target_overridden:1;
|
||||||
|
|
||||||
struct rlimit *rlimit[_RLIMIT_MAX];
|
struct rlimit *rlimit[_RLIMIT_MAX];
|
||||||
|
|
||||||
@ -537,7 +537,7 @@ void manager_unref_uid(Manager *m, uid_t uid, bool destroy_now);
|
|||||||
int manager_ref_uid(Manager *m, uid_t uid, bool clean_ipc);
|
int manager_ref_uid(Manager *m, uid_t uid, bool clean_ipc);
|
||||||
|
|
||||||
void manager_unref_gid(Manager *m, gid_t gid, bool destroy_now);
|
void manager_unref_gid(Manager *m, gid_t gid, bool destroy_now);
|
||||||
int manager_ref_gid(Manager *m, gid_t gid, bool clean_ipc);
|
int manager_ref_gid(Manager *m, gid_t gid, bool destroy_now);
|
||||||
|
|
||||||
char *manager_taint_string(Manager *m);
|
char *manager_taint_string(Manager *m);
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ typedef enum MountExecCommand {
|
|||||||
MOUNT_EXEC_UNMOUNT,
|
MOUNT_EXEC_UNMOUNT,
|
||||||
MOUNT_EXEC_REMOUNT,
|
MOUNT_EXEC_REMOUNT,
|
||||||
_MOUNT_EXEC_COMMAND_MAX,
|
_MOUNT_EXEC_COMMAND_MAX,
|
||||||
_MOUNT_EXEC_COMMAND_INVALID = -EINVAL,
|
_MOUNT_EXEC_COMMAND_INVALID = -1
|
||||||
} MountExecCommand;
|
} MountExecCommand;
|
||||||
|
|
||||||
typedef enum MountResult {
|
typedef enum MountResult {
|
||||||
@ -25,7 +25,7 @@ typedef enum MountResult {
|
|||||||
MOUNT_FAILURE_START_LIMIT_HIT,
|
MOUNT_FAILURE_START_LIMIT_HIT,
|
||||||
MOUNT_FAILURE_PROTOCOL,
|
MOUNT_FAILURE_PROTOCOL,
|
||||||
_MOUNT_RESULT_MAX,
|
_MOUNT_RESULT_MAX,
|
||||||
_MOUNT_RESULT_INVALID = -EINVAL,
|
_MOUNT_RESULT_INVALID = -1
|
||||||
} MountResult;
|
} MountResult;
|
||||||
|
|
||||||
typedef struct MountParameters {
|
typedef struct MountParameters {
|
||||||
|
@ -23,7 +23,7 @@ typedef enum ProtectHome {
|
|||||||
PROTECT_HOME_READ_ONLY,
|
PROTECT_HOME_READ_ONLY,
|
||||||
PROTECT_HOME_TMPFS,
|
PROTECT_HOME_TMPFS,
|
||||||
_PROTECT_HOME_MAX,
|
_PROTECT_HOME_MAX,
|
||||||
_PROTECT_HOME_INVALID = -EINVAL,
|
_PROTECT_HOME_INVALID = -1
|
||||||
} ProtectHome;
|
} ProtectHome;
|
||||||
|
|
||||||
typedef enum NamespaceType {
|
typedef enum NamespaceType {
|
||||||
@ -35,7 +35,7 @@ typedef enum NamespaceType {
|
|||||||
NAMESPACE_PID,
|
NAMESPACE_PID,
|
||||||
NAMESPACE_NET,
|
NAMESPACE_NET,
|
||||||
_NAMESPACE_TYPE_MAX,
|
_NAMESPACE_TYPE_MAX,
|
||||||
_NAMESPACE_TYPE_INVALID = -EINVAL,
|
_NAMESPACE_TYPE_INVALID = -1,
|
||||||
} NamespaceType;
|
} NamespaceType;
|
||||||
|
|
||||||
typedef enum ProtectSystem {
|
typedef enum ProtectSystem {
|
||||||
@ -44,7 +44,7 @@ typedef enum ProtectSystem {
|
|||||||
PROTECT_SYSTEM_FULL,
|
PROTECT_SYSTEM_FULL,
|
||||||
PROTECT_SYSTEM_STRICT,
|
PROTECT_SYSTEM_STRICT,
|
||||||
_PROTECT_SYSTEM_MAX,
|
_PROTECT_SYSTEM_MAX,
|
||||||
_PROTECT_SYSTEM_INVALID = -EINVAL,
|
_PROTECT_SYSTEM_INVALID = -1
|
||||||
} ProtectSystem;
|
} ProtectSystem;
|
||||||
|
|
||||||
typedef enum ProtectProc {
|
typedef enum ProtectProc {
|
||||||
@ -53,14 +53,14 @@ typedef enum ProtectProc {
|
|||||||
PROTECT_PROC_INVISIBLE, /* hidepid=invisible */
|
PROTECT_PROC_INVISIBLE, /* hidepid=invisible */
|
||||||
PROTECT_PROC_PTRACEABLE, /* hidepid=ptraceable */
|
PROTECT_PROC_PTRACEABLE, /* hidepid=ptraceable */
|
||||||
_PROTECT_PROC_MAX,
|
_PROTECT_PROC_MAX,
|
||||||
_PROTECT_PROC_INVALID = -EINVAL,
|
_PROTECT_PROC_INVALID = -1,
|
||||||
} ProtectProc;
|
} ProtectProc;
|
||||||
|
|
||||||
typedef enum ProcSubset {
|
typedef enum ProcSubset {
|
||||||
PROC_SUBSET_ALL,
|
PROC_SUBSET_ALL,
|
||||||
PROC_SUBSET_PID, /* subset=pid */
|
PROC_SUBSET_PID, /* subset=pid */
|
||||||
_PROC_SUBSET_MAX,
|
_PROC_SUBSET_MAX,
|
||||||
_PROC_SUBSET_INVALID = -EINVAL,
|
_PROC_SUBSET_INVALID = -1,
|
||||||
} ProcSubset;
|
} ProcSubset;
|
||||||
|
|
||||||
struct NamespaceInfo {
|
struct NamespaceInfo {
|
||||||
|
@ -13,7 +13,7 @@ typedef enum PathType {
|
|||||||
PATH_CHANGED,
|
PATH_CHANGED,
|
||||||
PATH_MODIFIED,
|
PATH_MODIFIED,
|
||||||
_PATH_TYPE_MAX,
|
_PATH_TYPE_MAX,
|
||||||
_PATH_TYPE_INVALID = -EINVAL,
|
_PATH_TYPE_INVALID = -1
|
||||||
} PathType;
|
} PathType;
|
||||||
|
|
||||||
typedef struct PathSpec {
|
typedef struct PathSpec {
|
||||||
@ -47,7 +47,7 @@ typedef enum PathResult {
|
|||||||
PATH_FAILURE_START_LIMIT_HIT,
|
PATH_FAILURE_START_LIMIT_HIT,
|
||||||
PATH_FAILURE_UNIT_START_LIMIT_HIT,
|
PATH_FAILURE_UNIT_START_LIMIT_HIT,
|
||||||
_PATH_RESULT_MAX,
|
_PATH_RESULT_MAX,
|
||||||
_PATH_RESULT_INVALID = -EINVAL,
|
_PATH_RESULT_INVALID = -1
|
||||||
} PathResult;
|
} PathResult;
|
||||||
|
|
||||||
struct Path {
|
struct Path {
|
||||||
|
@ -12,7 +12,7 @@ typedef enum ScopeResult {
|
|||||||
SCOPE_FAILURE_RESOURCES,
|
SCOPE_FAILURE_RESOURCES,
|
||||||
SCOPE_FAILURE_TIMEOUT,
|
SCOPE_FAILURE_TIMEOUT,
|
||||||
_SCOPE_RESULT_MAX,
|
_SCOPE_RESULT_MAX,
|
||||||
_SCOPE_RESULT_INVALID = -EINVAL,
|
_SCOPE_RESULT_INVALID = -1
|
||||||
} ScopeResult;
|
} ScopeResult;
|
||||||
|
|
||||||
struct Scope {
|
struct Scope {
|
||||||
|
@ -2738,7 +2738,7 @@ static int service_deserialize_exec_command(
|
|||||||
STATE_EXEC_COMMAND_PATH,
|
STATE_EXEC_COMMAND_PATH,
|
||||||
STATE_EXEC_COMMAND_ARGS,
|
STATE_EXEC_COMMAND_ARGS,
|
||||||
_STATE_EXEC_COMMAND_MAX,
|
_STATE_EXEC_COMMAND_MAX,
|
||||||
_STATE_EXEC_COMMAND_INVALID = -EINVAL,
|
_STATE_EXEC_COMMAND_INVALID = -1,
|
||||||
} state;
|
} state;
|
||||||
|
|
||||||
assert(s);
|
assert(s);
|
||||||
@ -2762,14 +2762,14 @@ static int service_deserialize_exec_command(
|
|||||||
case STATE_EXEC_COMMAND_TYPE:
|
case STATE_EXEC_COMMAND_TYPE:
|
||||||
id = service_exec_command_from_string(arg);
|
id = service_exec_command_from_string(arg);
|
||||||
if (id < 0)
|
if (id < 0)
|
||||||
return id;
|
return -EINVAL;
|
||||||
|
|
||||||
state = STATE_EXEC_COMMAND_INDEX;
|
state = STATE_EXEC_COMMAND_INDEX;
|
||||||
break;
|
break;
|
||||||
case STATE_EXEC_COMMAND_INDEX:
|
case STATE_EXEC_COMMAND_INDEX:
|
||||||
r = safe_atou(arg, &idx);
|
r = safe_atou(arg, &idx);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return -EINVAL;
|
||||||
|
|
||||||
state = STATE_EXEC_COMMAND_PATH;
|
state = STATE_EXEC_COMMAND_PATH;
|
||||||
break;
|
break;
|
||||||
|
@ -20,7 +20,7 @@ typedef enum ServiceRestart {
|
|||||||
SERVICE_RESTART_ON_ABORT,
|
SERVICE_RESTART_ON_ABORT,
|
||||||
SERVICE_RESTART_ALWAYS,
|
SERVICE_RESTART_ALWAYS,
|
||||||
_SERVICE_RESTART_MAX,
|
_SERVICE_RESTART_MAX,
|
||||||
_SERVICE_RESTART_INVALID = -EINVAL,
|
_SERVICE_RESTART_INVALID = -1
|
||||||
} ServiceRestart;
|
} ServiceRestart;
|
||||||
|
|
||||||
typedef enum ServiceType {
|
typedef enum ServiceType {
|
||||||
@ -32,7 +32,7 @@ typedef enum ServiceType {
|
|||||||
SERVICE_IDLE, /* much like simple, but delay exec() until all jobs are dispatched. */
|
SERVICE_IDLE, /* much like simple, but delay exec() until all jobs are dispatched. */
|
||||||
SERVICE_EXEC, /* we fork and wait until we execute exec() (this means our own setup is waited for) */
|
SERVICE_EXEC, /* we fork and wait until we execute exec() (this means our own setup is waited for) */
|
||||||
_SERVICE_TYPE_MAX,
|
_SERVICE_TYPE_MAX,
|
||||||
_SERVICE_TYPE_INVALID = -EINVAL,
|
_SERVICE_TYPE_INVALID = -1
|
||||||
} ServiceType;
|
} ServiceType;
|
||||||
|
|
||||||
typedef enum ServiceExecCommand {
|
typedef enum ServiceExecCommand {
|
||||||
@ -44,7 +44,7 @@ typedef enum ServiceExecCommand {
|
|||||||
SERVICE_EXEC_STOP,
|
SERVICE_EXEC_STOP,
|
||||||
SERVICE_EXEC_STOP_POST,
|
SERVICE_EXEC_STOP_POST,
|
||||||
_SERVICE_EXEC_COMMAND_MAX,
|
_SERVICE_EXEC_COMMAND_MAX,
|
||||||
_SERVICE_EXEC_COMMAND_INVALID = -EINVAL,
|
_SERVICE_EXEC_COMMAND_INVALID = -1
|
||||||
} ServiceExecCommand;
|
} ServiceExecCommand;
|
||||||
|
|
||||||
typedef enum NotifyState {
|
typedef enum NotifyState {
|
||||||
@ -53,7 +53,7 @@ typedef enum NotifyState {
|
|||||||
NOTIFY_RELOADING,
|
NOTIFY_RELOADING,
|
||||||
NOTIFY_STOPPING,
|
NOTIFY_STOPPING,
|
||||||
_NOTIFY_STATE_MAX,
|
_NOTIFY_STATE_MAX,
|
||||||
_NOTIFY_STATE_INVALID = -EINVAL,
|
_NOTIFY_STATE_INVALID = -1
|
||||||
} NotifyState;
|
} NotifyState;
|
||||||
|
|
||||||
/* The values of this enum are referenced in man/systemd.exec.xml and src/shared/bus-unit-util.c.
|
/* The values of this enum are referenced in man/systemd.exec.xml and src/shared/bus-unit-util.c.
|
||||||
@ -71,7 +71,7 @@ typedef enum ServiceResult {
|
|||||||
SERVICE_FAILURE_OOM_KILL,
|
SERVICE_FAILURE_OOM_KILL,
|
||||||
SERVICE_SKIP_CONDITION,
|
SERVICE_SKIP_CONDITION,
|
||||||
_SERVICE_RESULT_MAX,
|
_SERVICE_RESULT_MAX,
|
||||||
_SERVICE_RESULT_INVALID = -EINVAL,
|
_SERVICE_RESULT_INVALID = -1
|
||||||
} ServiceResult;
|
} ServiceResult;
|
||||||
|
|
||||||
typedef enum ServiceTimeoutFailureMode {
|
typedef enum ServiceTimeoutFailureMode {
|
||||||
@ -79,7 +79,7 @@ typedef enum ServiceTimeoutFailureMode {
|
|||||||
SERVICE_TIMEOUT_ABORT,
|
SERVICE_TIMEOUT_ABORT,
|
||||||
SERVICE_TIMEOUT_KILL,
|
SERVICE_TIMEOUT_KILL,
|
||||||
_SERVICE_TIMEOUT_FAILURE_MODE_MAX,
|
_SERVICE_TIMEOUT_FAILURE_MODE_MAX,
|
||||||
_SERVICE_TIMEOUT_FAILURE_MODE_INVALID = -EINVAL,
|
_SERVICE_TIMEOUT_FAILURE_MODE_INVALID = -1
|
||||||
} ServiceTimeoutFailureMode;
|
} ServiceTimeoutFailureMode;
|
||||||
|
|
||||||
struct ServiceFDStore {
|
struct ServiceFDStore {
|
||||||
|
@ -14,7 +14,7 @@ typedef enum ShowStatus {
|
|||||||
SHOW_STATUS_TEMPORARY, /* enabled temporarily, may flip back to _AUTO */
|
SHOW_STATUS_TEMPORARY, /* enabled temporarily, may flip back to _AUTO */
|
||||||
SHOW_STATUS_YES, /* printing of status is enabled */
|
SHOW_STATUS_YES, /* printing of status is enabled */
|
||||||
_SHOW_STATUS_MAX,
|
_SHOW_STATUS_MAX,
|
||||||
_SHOW_STATUS_INVALID = -EINVAL,
|
_SHOW_STATUS_INVALID = -1,
|
||||||
} ShowStatus;
|
} ShowStatus;
|
||||||
|
|
||||||
typedef enum ShowStatusFlags {
|
typedef enum ShowStatusFlags {
|
||||||
@ -26,7 +26,7 @@ typedef enum StatusUnitFormat {
|
|||||||
STATUS_UNIT_FORMAT_NAME,
|
STATUS_UNIT_FORMAT_NAME,
|
||||||
STATUS_UNIT_FORMAT_DESCRIPTION,
|
STATUS_UNIT_FORMAT_DESCRIPTION,
|
||||||
_STATUS_UNIT_FORMAT_MAX,
|
_STATUS_UNIT_FORMAT_MAX,
|
||||||
_STATUS_UNIT_FORMAT_INVALID = -EINVAL,
|
_STATUS_UNIT_FORMAT_INVALID = -1,
|
||||||
} StatusUnitFormat;
|
} StatusUnitFormat;
|
||||||
|
|
||||||
static inline bool show_status_on(ShowStatus s) {
|
static inline bool show_status_on(ShowStatus s) {
|
||||||
|
@ -16,7 +16,7 @@ typedef enum SocketExecCommand {
|
|||||||
SOCKET_EXEC_STOP_PRE,
|
SOCKET_EXEC_STOP_PRE,
|
||||||
SOCKET_EXEC_STOP_POST,
|
SOCKET_EXEC_STOP_POST,
|
||||||
_SOCKET_EXEC_COMMAND_MAX,
|
_SOCKET_EXEC_COMMAND_MAX,
|
||||||
_SOCKET_EXEC_COMMAND_INVALID = -EINVAL,
|
_SOCKET_EXEC_COMMAND_INVALID = -1
|
||||||
} SocketExecCommand;
|
} SocketExecCommand;
|
||||||
|
|
||||||
typedef enum SocketType {
|
typedef enum SocketType {
|
||||||
@ -26,7 +26,7 @@ typedef enum SocketType {
|
|||||||
SOCKET_MQUEUE,
|
SOCKET_MQUEUE,
|
||||||
SOCKET_USB_FUNCTION,
|
SOCKET_USB_FUNCTION,
|
||||||
_SOCKET_TYPE_MAX,
|
_SOCKET_TYPE_MAX,
|
||||||
_SOCKET_TYPE_INVALID = -EINVAL,
|
_SOCKET_TYPE_INVALID = -1
|
||||||
} SocketType;
|
} SocketType;
|
||||||
|
|
||||||
typedef enum SocketResult {
|
typedef enum SocketResult {
|
||||||
@ -40,7 +40,7 @@ typedef enum SocketResult {
|
|||||||
SOCKET_FAILURE_TRIGGER_LIMIT_HIT,
|
SOCKET_FAILURE_TRIGGER_LIMIT_HIT,
|
||||||
SOCKET_FAILURE_SERVICE_START_LIMIT_HIT,
|
SOCKET_FAILURE_SERVICE_START_LIMIT_HIT,
|
||||||
_SOCKET_RESULT_MAX,
|
_SOCKET_RESULT_MAX,
|
||||||
_SOCKET_RESULT_INVALID = -EINVAL,
|
_SOCKET_RESULT_INVALID = -1
|
||||||
} SocketResult;
|
} SocketResult;
|
||||||
|
|
||||||
typedef struct SocketPort {
|
typedef struct SocketPort {
|
||||||
@ -63,7 +63,7 @@ typedef enum SocketTimestamping {
|
|||||||
SOCKET_TIMESTAMPING_US, /* SO_TIMESTAMP */
|
SOCKET_TIMESTAMPING_US, /* SO_TIMESTAMP */
|
||||||
SOCKET_TIMESTAMPING_NS, /* SO_TIMESTAMPNS */
|
SOCKET_TIMESTAMPING_NS, /* SO_TIMESTAMPNS */
|
||||||
_SOCKET_TIMESTAMPING_MAX,
|
_SOCKET_TIMESTAMPING_MAX,
|
||||||
_SOCKET_TIMESTAMPING_INVALID = -EINVAL,
|
_SOCKET_TIMESTAMPING_INVALID = -1,
|
||||||
} SocketTimestamping;
|
} SocketTimestamping;
|
||||||
|
|
||||||
struct Socket {
|
struct Socket {
|
||||||
|
@ -14,7 +14,7 @@ typedef enum SwapExecCommand {
|
|||||||
SWAP_EXEC_ACTIVATE,
|
SWAP_EXEC_ACTIVATE,
|
||||||
SWAP_EXEC_DEACTIVATE,
|
SWAP_EXEC_DEACTIVATE,
|
||||||
_SWAP_EXEC_COMMAND_MAX,
|
_SWAP_EXEC_COMMAND_MAX,
|
||||||
_SWAP_EXEC_COMMAND_INVALID = -EINVAL,
|
_SWAP_EXEC_COMMAND_INVALID = -1
|
||||||
} SwapExecCommand;
|
} SwapExecCommand;
|
||||||
|
|
||||||
typedef enum SwapResult {
|
typedef enum SwapResult {
|
||||||
@ -26,7 +26,7 @@ typedef enum SwapResult {
|
|||||||
SWAP_FAILURE_CORE_DUMP,
|
SWAP_FAILURE_CORE_DUMP,
|
||||||
SWAP_FAILURE_START_LIMIT_HIT,
|
SWAP_FAILURE_START_LIMIT_HIT,
|
||||||
_SWAP_RESULT_MAX,
|
_SWAP_RESULT_MAX,
|
||||||
_SWAP_RESULT_INVALID = -EINVAL,
|
_SWAP_RESULT_INVALID = -1
|
||||||
} SwapResult;
|
} SwapResult;
|
||||||
|
|
||||||
typedef struct SwapParameters {
|
typedef struct SwapParameters {
|
||||||
|
@ -14,7 +14,7 @@ typedef enum TimerBase {
|
|||||||
TIMER_UNIT_INACTIVE,
|
TIMER_UNIT_INACTIVE,
|
||||||
TIMER_CALENDAR,
|
TIMER_CALENDAR,
|
||||||
_TIMER_BASE_MAX,
|
_TIMER_BASE_MAX,
|
||||||
_TIMER_BASE_INVALID = -EINVAL,
|
_TIMER_BASE_INVALID = -1
|
||||||
} TimerBase;
|
} TimerBase;
|
||||||
|
|
||||||
typedef struct TimerValue {
|
typedef struct TimerValue {
|
||||||
@ -33,7 +33,7 @@ typedef enum TimerResult {
|
|||||||
TIMER_FAILURE_RESOURCES,
|
TIMER_FAILURE_RESOURCES,
|
||||||
TIMER_FAILURE_START_LIMIT_HIT,
|
TIMER_FAILURE_START_LIMIT_HIT,
|
||||||
_TIMER_RESULT_MAX,
|
_TIMER_RESULT_MAX,
|
||||||
_TIMER_RESULT_INVALID = -EINVAL,
|
_TIMER_RESULT_INVALID = -1
|
||||||
} TimerResult;
|
} TimerResult;
|
||||||
|
|
||||||
struct Timer {
|
struct Timer {
|
||||||
|
@ -6094,7 +6094,7 @@ void unit_log_success(Unit *u) {
|
|||||||
"MESSAGE_ID=" SD_MESSAGE_UNIT_SUCCESS_STR,
|
"MESSAGE_ID=" SD_MESSAGE_UNIT_SUCCESS_STR,
|
||||||
LOG_UNIT_ID(u),
|
LOG_UNIT_ID(u),
|
||||||
LOG_UNIT_INVOCATION_ID(u),
|
LOG_UNIT_INVOCATION_ID(u),
|
||||||
LOG_UNIT_MESSAGE(u, "Deactivated successfully."));
|
LOG_UNIT_MESSAGE(u, "Succeeded."));
|
||||||
}
|
}
|
||||||
|
|
||||||
void unit_log_failure(Unit *u, const char *result) {
|
void unit_log_failure(Unit *u, const char *result) {
|
||||||
|
@ -23,14 +23,14 @@ typedef enum KillOperation {
|
|||||||
KILL_KILL,
|
KILL_KILL,
|
||||||
KILL_WATCHDOG,
|
KILL_WATCHDOG,
|
||||||
_KILL_OPERATION_MAX,
|
_KILL_OPERATION_MAX,
|
||||||
_KILL_OPERATION_INVALID = -EINVAL,
|
_KILL_OPERATION_INVALID = -1
|
||||||
} KillOperation;
|
} KillOperation;
|
||||||
|
|
||||||
typedef enum CollectMode {
|
typedef enum CollectMode {
|
||||||
COLLECT_INACTIVE,
|
COLLECT_INACTIVE,
|
||||||
COLLECT_INACTIVE_OR_FAILED,
|
COLLECT_INACTIVE_OR_FAILED,
|
||||||
_COLLECT_MODE_MAX,
|
_COLLECT_MODE_MAX,
|
||||||
_COLLECT_MODE_INVALID = -EINVAL,
|
_COLLECT_MODE_INVALID = -1,
|
||||||
} CollectMode;
|
} CollectMode;
|
||||||
|
|
||||||
static inline bool UNIT_IS_ACTIVE_OR_RELOADING(UnitActiveState t) {
|
static inline bool UNIT_IS_ACTIVE_OR_RELOADING(UnitActiveState t) {
|
||||||
|
@ -124,7 +124,7 @@ typedef enum CoredumpStorage {
|
|||||||
COREDUMP_STORAGE_EXTERNAL,
|
COREDUMP_STORAGE_EXTERNAL,
|
||||||
COREDUMP_STORAGE_JOURNAL,
|
COREDUMP_STORAGE_JOURNAL,
|
||||||
_COREDUMP_STORAGE_MAX,
|
_COREDUMP_STORAGE_MAX,
|
||||||
_COREDUMP_STORAGE_INVALID = -EINVAL,
|
_COREDUMP_STORAGE_INVALID = -1
|
||||||
} CoredumpStorage;
|
} CoredumpStorage;
|
||||||
|
|
||||||
static const char* const coredump_storage_table[_COREDUMP_STORAGE_MAX] = {
|
static const char* const coredump_storage_table[_COREDUMP_STORAGE_MAX] = {
|
||||||
|
@ -16,7 +16,6 @@
|
|||||||
#include "compress.h"
|
#include "compress.h"
|
||||||
#include "def.h"
|
#include "def.h"
|
||||||
#include "fd-util.h"
|
#include "fd-util.h"
|
||||||
#include "format-table.h"
|
|
||||||
#include "fs-util.h"
|
#include "fs-util.h"
|
||||||
#include "glob-util.h"
|
#include "glob-util.h"
|
||||||
#include "journal-internal.h"
|
#include "journal-internal.h"
|
||||||
@ -48,10 +47,9 @@ static const char *arg_debugger = NULL;
|
|||||||
static char **arg_debugger_args = NULL;
|
static char **arg_debugger_args = NULL;
|
||||||
static const char *arg_directory = NULL;
|
static const char *arg_directory = NULL;
|
||||||
static char **arg_file = NULL;
|
static char **arg_file = NULL;
|
||||||
static JsonFormatFlags arg_json_format_flags = JSON_FORMAT_OFF;
|
|
||||||
static PagerFlags arg_pager_flags = 0;
|
static PagerFlags arg_pager_flags = 0;
|
||||||
static int arg_legend = true;
|
static int arg_no_legend = false;
|
||||||
static size_t arg_rows_max = SIZE_MAX;
|
static int arg_one = false;
|
||||||
static const char* arg_output = NULL;
|
static const char* arg_output = NULL;
|
||||||
static bool arg_reverse = false;
|
static bool arg_reverse = false;
|
||||||
static bool arg_quiet = false;
|
static bool arg_quiet = false;
|
||||||
@ -157,23 +155,20 @@ static int help(void) {
|
|||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_oom();
|
return log_oom();
|
||||||
|
|
||||||
printf("%1$s [OPTIONS...] COMMAND ...\n\n"
|
printf("%s [OPTIONS...] COMMAND ...\n\n"
|
||||||
"%5$sList or retrieve coredumps from the journal.%6$s\n"
|
"%sList or retrieve coredumps from the journal.%s\n"
|
||||||
"\n%3$sCommands:%4$s\n"
|
"\nCommands:\n"
|
||||||
" list [MATCHES...] List available coredumps (default)\n"
|
" list [MATCHES...] List available coredumps (default)\n"
|
||||||
" info [MATCHES...] Show detailed information about one or more coredumps\n"
|
" info [MATCHES...] Show detailed information about one or more coredumps\n"
|
||||||
" dump [MATCHES...] Print first matching coredump to stdout\n"
|
" dump [MATCHES...] Print first matching coredump to stdout\n"
|
||||||
" debug [MATCHES...] Start a debugger for the first matching coredump\n"
|
" debug [MATCHES...] Start a debugger for the first matching coredump\n"
|
||||||
"\n%3$sOptions:%4$s\n"
|
"\nOptions:\n"
|
||||||
" -h --help Show this help\n"
|
" -h --help Show this help\n"
|
||||||
" --version Print version string\n"
|
" --version Print version string\n"
|
||||||
" --no-pager Do not pipe output into a pager\n"
|
" --no-pager Do not pipe output into a pager\n"
|
||||||
" --no-legend Do not print the column headers\n"
|
" --no-legend Do not print the column headers\n"
|
||||||
" --json=pretty|short|off\n"
|
|
||||||
" Generate JSON output\n"
|
|
||||||
" --debugger=DEBUGGER Use the given debugger\n"
|
" --debugger=DEBUGGER Use the given debugger\n"
|
||||||
" -A --debugger-arguments=ARGS Pass the given arguments to the debugger\n"
|
" -A --debugger-arguments=ARGS Pass the given arguments to the debugger\n"
|
||||||
" -n INT Show maximum number of rows\n"
|
|
||||||
" -1 Show information about most recent entry only\n"
|
" -1 Show information about most recent entry only\n"
|
||||||
" -S --since=DATE Only print coredumps since the date\n"
|
" -S --since=DATE Only print coredumps since the date\n"
|
||||||
" -U --until=DATE Only print coredumps until the date\n"
|
" -U --until=DATE Only print coredumps until the date\n"
|
||||||
@ -183,13 +178,11 @@ static int help(void) {
|
|||||||
" --file=PATH Use journal file\n"
|
" --file=PATH Use journal file\n"
|
||||||
" -D --directory=DIR Use journal files from directory\n\n"
|
" -D --directory=DIR Use journal files from directory\n\n"
|
||||||
" -q --quiet Do not show info messages and privilege warning\n"
|
" -q --quiet Do not show info messages and privilege warning\n"
|
||||||
"\nSee the %2$s for details.\n",
|
"\nSee the %s for details.\n",
|
||||||
program_invocation_short_name,
|
program_invocation_short_name,
|
||||||
link,
|
|
||||||
ansi_underline(),
|
|
||||||
ansi_normal(),
|
|
||||||
ansi_highlight(),
|
ansi_highlight(),
|
||||||
ansi_normal());
|
ansi_normal(),
|
||||||
|
link);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -199,7 +192,6 @@ static int parse_argv(int argc, char *argv[]) {
|
|||||||
ARG_VERSION = 0x100,
|
ARG_VERSION = 0x100,
|
||||||
ARG_NO_PAGER,
|
ARG_NO_PAGER,
|
||||||
ARG_NO_LEGEND,
|
ARG_NO_LEGEND,
|
||||||
ARG_JSON,
|
|
||||||
ARG_DEBUGGER,
|
ARG_DEBUGGER,
|
||||||
ARG_FILE,
|
ARG_FILE,
|
||||||
};
|
};
|
||||||
@ -221,14 +213,13 @@ static int parse_argv(int argc, char *argv[]) {
|
|||||||
{ "since", required_argument, NULL, 'S' },
|
{ "since", required_argument, NULL, 'S' },
|
||||||
{ "until", required_argument, NULL, 'U' },
|
{ "until", required_argument, NULL, 'U' },
|
||||||
{ "quiet", no_argument, NULL, 'q' },
|
{ "quiet", no_argument, NULL, 'q' },
|
||||||
{ "json", required_argument, NULL, ARG_JSON },
|
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
assert(argc >= 0);
|
assert(argc >= 0);
|
||||||
assert(argv);
|
assert(argv);
|
||||||
|
|
||||||
while ((c = getopt_long(argc, argv, "hA:o:F:1D:rS:U:qn:", options, NULL)) >= 0)
|
while ((c = getopt_long(argc, argv, "hA:o:F:1D:rS:U:q", options, NULL)) >= 0)
|
||||||
switch(c) {
|
switch(c) {
|
||||||
case 'h':
|
case 'h':
|
||||||
return help();
|
return help();
|
||||||
@ -241,7 +232,7 @@ static int parse_argv(int argc, char *argv[]) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case ARG_NO_LEGEND:
|
case ARG_NO_LEGEND:
|
||||||
arg_legend = false;
|
arg_no_legend = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ARG_DEBUGGER:
|
case ARG_DEBUGGER:
|
||||||
@ -291,22 +282,9 @@ static int parse_argv(int argc, char *argv[]) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case '1':
|
case '1':
|
||||||
arg_rows_max = 1;
|
arg_one = true;
|
||||||
arg_reverse = true;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'n': {
|
|
||||||
unsigned n;
|
|
||||||
|
|
||||||
r = safe_atou(optarg, &n);
|
|
||||||
if (r < 0 || n < 1)
|
|
||||||
return log_error_errno(r < 0 ? r : SYNTHETIC_ERRNO(EINVAL),
|
|
||||||
"Invalid numeric parameter to -n: %s", optarg);
|
|
||||||
|
|
||||||
arg_rows_max = n;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case 'D':
|
case 'D':
|
||||||
arg_directory = optarg;
|
arg_directory = optarg;
|
||||||
break;
|
break;
|
||||||
@ -319,13 +297,6 @@ static int parse_argv(int argc, char *argv[]) {
|
|||||||
arg_quiet = true;
|
arg_quiet = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ARG_JSON:
|
|
||||||
r = json_parse_cmdline_parameter_and_warn(optarg, &arg_json_format_flags);
|
|
||||||
if (r <= 0)
|
|
||||||
return r;
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '?':
|
case '?':
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
@ -405,78 +376,21 @@ static int print_field(FILE* file, sd_journal *j) {
|
|||||||
continue; \
|
continue; \
|
||||||
}
|
}
|
||||||
|
|
||||||
static void analyze_coredump_file(
|
static int print_list(FILE* file, sd_journal *j, int had_legend) {
|
||||||
const char *path,
|
|
||||||
const char **ret_state,
|
|
||||||
const char **ret_color,
|
|
||||||
uint64_t *ret_size) {
|
|
||||||
|
|
||||||
_cleanup_close_ int fd = -1;
|
|
||||||
struct stat st;
|
|
||||||
int r;
|
|
||||||
|
|
||||||
assert(path);
|
|
||||||
assert(ret_state);
|
|
||||||
assert(ret_color);
|
|
||||||
assert(ret_size);
|
|
||||||
|
|
||||||
fd = open(path, O_PATH|O_CLOEXEC);
|
|
||||||
if (fd < 0) {
|
|
||||||
if (errno == ENOENT) {
|
|
||||||
*ret_state = "missing";
|
|
||||||
*ret_color = ansi_grey();
|
|
||||||
*ret_size = UINT64_MAX;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
r = -errno;
|
|
||||||
} else
|
|
||||||
r = access_fd(fd, R_OK);
|
|
||||||
if (ERRNO_IS_PRIVILEGE(r)) {
|
|
||||||
*ret_state = "inaccessible";
|
|
||||||
*ret_color = ansi_highlight_yellow();
|
|
||||||
*ret_size = UINT64_MAX;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (r < 0)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
if (fstat(fd, &st) < 0)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
if (!S_ISREG(st.st_mode))
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
*ret_state = "present";
|
|
||||||
*ret_color = NULL;
|
|
||||||
*ret_size = st.st_size;
|
|
||||||
return;
|
|
||||||
|
|
||||||
error:
|
|
||||||
*ret_state = "error";
|
|
||||||
*ret_color = ansi_highlight_red();
|
|
||||||
*ret_size = UINT64_MAX;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int print_list(FILE* file, sd_journal *j, Table *t) {
|
|
||||||
_cleanup_free_ char
|
_cleanup_free_ char
|
||||||
*mid = NULL, *pid = NULL, *uid = NULL, *gid = NULL,
|
*mid = NULL, *pid = NULL, *uid = NULL, *gid = NULL,
|
||||||
*sgnl = NULL, *exe = NULL, *comm = NULL, *cmdline = NULL,
|
*sgnl = NULL, *exe = NULL, *comm = NULL, *cmdline = NULL,
|
||||||
*filename = NULL, *truncated = NULL, *coredump = NULL;
|
*filename = NULL, *truncated = NULL, *coredump = NULL;
|
||||||
const void *d;
|
const void *d;
|
||||||
size_t l;
|
size_t l;
|
||||||
usec_t ts;
|
usec_t t;
|
||||||
int r, signal_as_int = 0;
|
char buf[FORMAT_TIMESTAMP_MAX];
|
||||||
const char *present = NULL, *color = NULL;
|
int r;
|
||||||
uint64_t size = UINT64_MAX;
|
const char *present;
|
||||||
bool normal_coredump;
|
bool normal_coredump;
|
||||||
uid_t uid_as_int = UID_INVALID;
|
|
||||||
gid_t gid_as_int = GID_INVALID;
|
|
||||||
pid_t pid_as_int = 0;
|
|
||||||
|
|
||||||
assert(file);
|
assert(file);
|
||||||
assert(j);
|
assert(j);
|
||||||
assert(t);
|
|
||||||
|
|
||||||
SD_JOURNAL_FOREACH_DATA(j, d, l) {
|
SD_JOURNAL_FOREACH_DATA(j, d, l) {
|
||||||
RETRIEVE(d, l, "MESSAGE_ID", mid);
|
RETRIEVE(d, l, "MESSAGE_ID", mid);
|
||||||
@ -492,46 +406,54 @@ static int print_list(FILE* file, sd_journal *j, Table *t) {
|
|||||||
RETRIEVE(d, l, "COREDUMP", coredump);
|
RETRIEVE(d, l, "COREDUMP", coredump);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!pid && !uid && !gid && !sgnl && !exe && !comm && !cmdline && !filename)
|
if (!pid && !uid && !gid && !sgnl && !exe && !comm && !cmdline && !filename) {
|
||||||
return log_warning_errno(SYNTHETIC_ERRNO(EINVAL), "Empty coredump log entry");
|
log_warning("Empty coredump log entry");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
(void) parse_uid(uid, &uid_as_int);
|
r = sd_journal_get_realtime_usec(j, &t);
|
||||||
(void) parse_gid(gid, &gid_as_int);
|
|
||||||
(void) parse_pid(pid, &pid_as_int);
|
|
||||||
signal_as_int = signal_from_string(sgnl);
|
|
||||||
|
|
||||||
r = sd_journal_get_realtime_usec(j, &ts);
|
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_error_errno(r, "Failed to get realtime timestamp: %m");
|
return log_error_errno(r, "Failed to get realtime timestamp: %m");
|
||||||
|
|
||||||
|
format_timestamp(buf, sizeof(buf), t);
|
||||||
|
|
||||||
|
if (!had_legend && !arg_no_legend)
|
||||||
|
fprintf(file, "%-*s %*s %*s %*s %*s %-*s %s\n",
|
||||||
|
FORMAT_TIMESTAMP_WIDTH, "TIME",
|
||||||
|
6, "PID",
|
||||||
|
5, "UID",
|
||||||
|
5, "GID",
|
||||||
|
3, "SIG",
|
||||||
|
9, "COREFILE",
|
||||||
|
"EXE");
|
||||||
|
|
||||||
normal_coredump = streq_ptr(mid, SD_MESSAGE_COREDUMP_STR);
|
normal_coredump = streq_ptr(mid, SD_MESSAGE_COREDUMP_STR);
|
||||||
|
|
||||||
if (filename)
|
if (filename)
|
||||||
analyze_coredump_file(filename, &present, &color, &size);
|
if (access(filename, R_OK) == 0)
|
||||||
|
present = "present";
|
||||||
|
else if (errno == ENOENT)
|
||||||
|
present = "missing";
|
||||||
|
else
|
||||||
|
present = "error";
|
||||||
else if (coredump)
|
else if (coredump)
|
||||||
present = "journal";
|
present = "journal";
|
||||||
else if (normal_coredump) {
|
else if (normal_coredump)
|
||||||
present = "none";
|
present = "none";
|
||||||
color = ansi_grey();
|
else
|
||||||
} else
|
present = "-";
|
||||||
present = NULL;
|
|
||||||
|
|
||||||
if (STRPTR_IN_SET(present, "present", "journal") && truncated && parse_boolean(truncated) > 0)
|
if (STR_IN_SET(present, "present", "journal") && truncated && parse_boolean(truncated) > 0)
|
||||||
present = "truncated";
|
present = "truncated";
|
||||||
|
|
||||||
r = table_add_many(
|
fprintf(file, "%-*s %*s %*s %*s %*s %-*s %s\n",
|
||||||
t,
|
FORMAT_TIMESTAMP_WIDTH, buf,
|
||||||
TABLE_TIMESTAMP, ts,
|
6, strna(pid),
|
||||||
TABLE_PID, pid_as_int,
|
5, strna(uid),
|
||||||
TABLE_UID, uid_as_int,
|
5, strna(gid),
|
||||||
TABLE_GID, gid_as_int,
|
3, normal_coredump ? strna(sgnl) : "-",
|
||||||
TABLE_SIGNAL, normal_coredump ? signal_as_int : 0,
|
9, present,
|
||||||
TABLE_STRING, present,
|
strna(exe ?: (comm ?: cmdline)));
|
||||||
TABLE_SET_COLOR, color,
|
|
||||||
TABLE_STRING, exe ?: comm ?: cmdline,
|
|
||||||
TABLE_SIZE, size);
|
|
||||||
if (r < 0)
|
|
||||||
return table_log_add_error(r);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -690,27 +612,24 @@ static int print_info(FILE *file, sd_journal *j, bool need_space) {
|
|||||||
fprintf(file, " Hostname: %s\n", hostname);
|
fprintf(file, " Hostname: %s\n", hostname);
|
||||||
|
|
||||||
if (filename) {
|
if (filename) {
|
||||||
const char *state = NULL, *color = NULL;
|
bool inacc, trunc;
|
||||||
uint64_t size = UINT64_MAX;
|
|
||||||
char buf[FORMAT_BYTES_MAX];
|
|
||||||
|
|
||||||
analyze_coredump_file(filename, &state, &color, &size);
|
inacc = access(filename, R_OK) < 0;
|
||||||
|
trunc = truncated && parse_boolean(truncated) > 0;
|
||||||
|
|
||||||
if (STRPTR_IN_SET(state, "present", "journal") && truncated && parse_boolean(truncated) > 0)
|
if (inacc || trunc)
|
||||||
state = "truncated";
|
fprintf(file, " Storage: %s%s (%s%s%s)%s\n",
|
||||||
|
ansi_highlight_red(),
|
||||||
|
filename,
|
||||||
|
inacc ? "inaccessible" : "",
|
||||||
|
inacc && trunc ? ", " : "",
|
||||||
|
trunc ? "truncated" : "",
|
||||||
|
ansi_normal());
|
||||||
|
else
|
||||||
|
fprintf(file, " Storage: %s\n", filename);
|
||||||
|
}
|
||||||
|
|
||||||
fprintf(file,
|
else if (coredump)
|
||||||
" Storage: %s%s (%s)%s\n",
|
|
||||||
strempty(color),
|
|
||||||
filename,
|
|
||||||
state,
|
|
||||||
ansi_normal());
|
|
||||||
|
|
||||||
if (size != UINT64_MAX)
|
|
||||||
fprintf(file,
|
|
||||||
" Disk Size: %s\n",
|
|
||||||
format_bytes(buf, sizeof(buf), size));
|
|
||||||
} else if (coredump)
|
|
||||||
fprintf(file, " Storage: journal\n");
|
fprintf(file, " Storage: journal\n");
|
||||||
else
|
else
|
||||||
fprintf(file, " Storage: none\n");
|
fprintf(file, " Storage: none\n");
|
||||||
@ -740,61 +659,43 @@ static int focus(sd_journal *j) {
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int print_entry(
|
static int print_entry(sd_journal *j, unsigned n_found, bool verb_is_info) {
|
||||||
sd_journal *j,
|
|
||||||
size_t n_found,
|
|
||||||
Table *t) {
|
|
||||||
|
|
||||||
assert(j);
|
assert(j);
|
||||||
|
|
||||||
if (t)
|
if (verb_is_info)
|
||||||
return print_list(stdout, j, t);
|
return print_info(stdout, j, n_found);
|
||||||
else if (arg_field)
|
else if (arg_field)
|
||||||
return print_field(stdout, j);
|
return print_field(stdout, j);
|
||||||
else
|
else
|
||||||
return print_info(stdout, j, n_found > 0);
|
return print_list(stdout, j, n_found);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dump_list(int argc, char **argv, void *userdata) {
|
static int dump_list(int argc, char **argv, void *userdata) {
|
||||||
_cleanup_(sd_journal_closep) sd_journal *j = NULL;
|
_cleanup_(sd_journal_closep) sd_journal *j = NULL;
|
||||||
_cleanup_(table_unrefp) Table *t = NULL;
|
unsigned n_found = 0;
|
||||||
size_t n_found = 0;
|
|
||||||
bool verb_is_info;
|
bool verb_is_info;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
verb_is_info = argc >= 1 && streq(argv[0], "info");
|
verb_is_info = (argc >= 1 && streq(argv[0], "info"));
|
||||||
|
|
||||||
r = acquire_journal(&j, argv + 1);
|
r = acquire_journal(&j, argv + 1);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
/* The coredumps are likely compressed, and for just listing them we don't need to decompress them,
|
(void) pager_open(arg_pager_flags);
|
||||||
* so let's pick a fairly low data threshold here */
|
|
||||||
(void) sd_journal_set_data_threshold(j, 4096);
|
|
||||||
|
|
||||||
if (!verb_is_info && !arg_field) {
|
/* The coredumps are likely to compressed, and for just
|
||||||
t = table_new("time", "pid", "uid", "gid", "sig", "corefile", "exe", "size");
|
* listing them we don't need to decompress them, so let's
|
||||||
if (!t)
|
* pick a fairly low data threshold here */
|
||||||
return log_oom();
|
sd_journal_set_data_threshold(j, 4096);
|
||||||
|
|
||||||
(void) table_set_align_percent(t, TABLE_HEADER_CELL(1), 100);
|
|
||||||
(void) table_set_align_percent(t, TABLE_HEADER_CELL(2), 100);
|
|
||||||
(void) table_set_align_percent(t, TABLE_HEADER_CELL(3), 100);
|
|
||||||
(void) table_set_align_percent(t, TABLE_HEADER_CELL(7), 100);
|
|
||||||
|
|
||||||
(void) table_set_empty_string(t, "-");
|
|
||||||
} else
|
|
||||||
(void) pager_open(arg_pager_flags);
|
|
||||||
|
|
||||||
/* "info" without pattern implies "-1" */
|
/* "info" without pattern implies "-1" */
|
||||||
if ((arg_rows_max == 1 && arg_reverse) || (verb_is_info && argc == 1)) {
|
if (arg_one || (verb_is_info && argc == 1)) {
|
||||||
r = focus(j);
|
r = focus(j);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
r = print_entry(j, 0, t);
|
return print_entry(j, 0, verb_is_info);
|
||||||
if (r < 0)
|
|
||||||
return r;
|
|
||||||
} else {
|
} else {
|
||||||
if (arg_since != USEC_INFINITY && !arg_reverse)
|
if (arg_since != USEC_INFINITY && !arg_reverse)
|
||||||
r = sd_journal_seek_realtime_usec(j, arg_since);
|
r = sd_journal_seek_realtime_usec(j, arg_since);
|
||||||
@ -812,8 +713,10 @@ static int dump_list(int argc, char **argv, void *userdata) {
|
|||||||
r = sd_journal_next(j);
|
r = sd_journal_next(j);
|
||||||
else
|
else
|
||||||
r = sd_journal_previous(j);
|
r = sd_journal_previous(j);
|
||||||
|
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_error_errno(r, "Failed to iterate through journal: %m");
|
return log_error_errno(r, "Failed to iterate through journal: %m");
|
||||||
|
|
||||||
if (r == 0)
|
if (r == 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -837,12 +740,9 @@ static int dump_list(int argc, char **argv, void *userdata) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
r = print_entry(j, n_found++, t);
|
r = print_entry(j, n_found++, verb_is_info);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
if (arg_rows_max != SIZE_MAX && n_found >= arg_rows_max)
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!arg_field && n_found <= 0) {
|
if (!arg_field && n_found <= 0) {
|
||||||
@ -852,12 +752,6 @@ static int dump_list(int argc, char **argv, void *userdata) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (t) {
|
|
||||||
r = table_print_with_pager(t, arg_json_format_flags, arg_pager_flags, arg_legend);
|
|
||||||
if (r < 0)
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <errno.h>
|
|
||||||
|
|
||||||
typedef enum EnrollType {
|
typedef enum EnrollType {
|
||||||
ENROLL_PASSWORD,
|
ENROLL_PASSWORD,
|
||||||
ENROLL_RECOVERY,
|
ENROLL_RECOVERY,
|
||||||
@ -10,7 +8,7 @@ typedef enum EnrollType {
|
|||||||
ENROLL_FIDO2,
|
ENROLL_FIDO2,
|
||||||
ENROLL_TPM2,
|
ENROLL_TPM2,
|
||||||
_ENROLL_TYPE_MAX,
|
_ENROLL_TYPE_MAX,
|
||||||
_ENROLL_TYPE_INVALID = -EINVAL,
|
_ENROLL_TYPE_INVALID = -1,
|
||||||
} EnrollType;
|
} EnrollType;
|
||||||
|
|
||||||
typedef enum WipeScope {
|
typedef enum WipeScope {
|
||||||
@ -18,7 +16,7 @@ typedef enum WipeScope {
|
|||||||
WIPE_ALL, /* wipe all slots */
|
WIPE_ALL, /* wipe all slots */
|
||||||
WIPE_EMPTY_PASSPHRASE, /* wipe slots with empty passphrases plus listed slots */
|
WIPE_EMPTY_PASSPHRASE, /* wipe slots with empty passphrases plus listed slots */
|
||||||
_WIPE_SCOPE_MAX,
|
_WIPE_SCOPE_MAX,
|
||||||
_WIPE_SCOPE_INVALID = -EINVAL,
|
_WIPE_SCOPE_INVALID = -1,
|
||||||
} WipeScope;
|
} WipeScope;
|
||||||
|
|
||||||
const char* enroll_type_to_string(EnrollType t);
|
const char* enroll_type_to_string(EnrollType t);
|
||||||
|
@ -82,16 +82,17 @@ static int parse_argv(int argc, char *argv[]) {
|
|||||||
case ARG_VERSION:
|
case ARG_VERSION:
|
||||||
return version();
|
return version();
|
||||||
|
|
||||||
case ARG_SUFFIX: {
|
case ARG_SUFFIX:
|
||||||
UnitType t = unit_type_from_string(optarg);
|
|
||||||
if (t < 0)
|
if (unit_type_from_string(optarg) < 0)
|
||||||
return log_error_errno(t, "Invalid unit suffix type \"%s\".", optarg);
|
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||||
|
"Invalid unit suffix type %s.", optarg);
|
||||||
|
|
||||||
arg_suffix = optarg;
|
arg_suffix = optarg;
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
|
|
||||||
case ARG_TEMPLATE:
|
case ARG_TEMPLATE:
|
||||||
|
|
||||||
if (!unit_name_is_valid(optarg, UNIT_NAME_TEMPLATE))
|
if (!unit_name_is_valid(optarg, UNIT_NAME_TEMPLATE))
|
||||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||||
"Template name %s is not valid.", optarg);
|
"Template name %s is not valid.", optarg);
|
||||||
|
@ -888,7 +888,7 @@ static int parse_proc_cmdline_item(const char *key, const char *value, void *dat
|
|||||||
if (value) {
|
if (value) {
|
||||||
m = volatile_mode_from_string(value);
|
m = volatile_mode_from_string(value);
|
||||||
if (m < 0)
|
if (m < 0)
|
||||||
log_warning_errno(m, "Failed to parse systemd.volatile= argument: %s", value);
|
log_warning("Failed to parse systemd.volatile= argument: %s", value);
|
||||||
else
|
else
|
||||||
arg_volatile_mode = m;
|
arg_volatile_mode = m;
|
||||||
} else
|
} else
|
||||||
|
@ -2393,7 +2393,7 @@ static int parse_argv(int argc, char *argv[]) {
|
|||||||
|
|
||||||
l = rlimit_from_string_harder(field);
|
l = rlimit_from_string_harder(field);
|
||||||
if (l < 0)
|
if (l < 0)
|
||||||
return log_error_errno(l, "Unknown resource limit type: %s", field);
|
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Unknown resource limit type: %s", field);
|
||||||
|
|
||||||
if (isempty(eq + 1)) {
|
if (isempty(eq + 1)) {
|
||||||
/* Remove only the specific rlimit */
|
/* Remove only the specific rlimit */
|
||||||
|
@ -37,7 +37,7 @@ typedef enum HomeState {
|
|||||||
HOME_AUTHENTICATING_WHILE_ACTIVE,
|
HOME_AUTHENTICATING_WHILE_ACTIVE,
|
||||||
HOME_AUTHENTICATING_FOR_ACQUIRE, /* authenticating because Acquire() was called */
|
HOME_AUTHENTICATING_FOR_ACQUIRE, /* authenticating because Acquire() was called */
|
||||||
_HOME_STATE_MAX,
|
_HOME_STATE_MAX,
|
||||||
_HOME_STATE_INVALID = -EINVAL,
|
_HOME_STATE_INVALID = -1
|
||||||
} HomeState;
|
} HomeState;
|
||||||
|
|
||||||
static inline bool HOME_STATE_IS_ACTIVE(HomeState state) {
|
static inline bool HOME_STATE_IS_ACTIVE(HomeState state) {
|
||||||
|
@ -14,7 +14,7 @@ typedef enum OperationType {
|
|||||||
OPERATION_DEACTIVATE_FORCE, /* enqueued on hard $HOME unplug */
|
OPERATION_DEACTIVATE_FORCE, /* enqueued on hard $HOME unplug */
|
||||||
OPERATION_IMMEDIATE, /* this is never enqueued, it's just a marker we immediately started executing an operation without enqueuing anything first. */
|
OPERATION_IMMEDIATE, /* this is never enqueued, it's just a marker we immediately started executing an operation without enqueuing anything first. */
|
||||||
_OPERATION_MAX,
|
_OPERATION_MAX,
|
||||||
_OPERATION_INVALID = -EINVAL,
|
_OPERATION_INVALID = -1,
|
||||||
} OperationType;
|
} OperationType;
|
||||||
|
|
||||||
/* Encapsulates an operation on one or more home directories. This has two uses:
|
/* Encapsulates an operation on one or more home directories. This has two uses:
|
||||||
|
@ -14,7 +14,7 @@ typedef enum UserReconcileMode {
|
|||||||
USER_RECONCILE_REQUIRE_NEWER, /* host version must be newer than embedded version */
|
USER_RECONCILE_REQUIRE_NEWER, /* host version must be newer than embedded version */
|
||||||
USER_RECONCILE_REQUIRE_NEWER_OR_EQUAL, /* similar, but may also be equal */
|
USER_RECONCILE_REQUIRE_NEWER_OR_EQUAL, /* similar, but may also be equal */
|
||||||
_USER_RECONCILE_MODE_MAX,
|
_USER_RECONCILE_MODE_MAX,
|
||||||
_USER_RECONCILE_MODE_INVALID = -EINVAL,
|
_USER_RECONCILE_MODE_INVALID = -1,
|
||||||
} UserReconcileMode;
|
} UserReconcileMode;
|
||||||
|
|
||||||
enum { /* return values */
|
enum { /* return values */
|
||||||
|
@ -59,7 +59,7 @@ enum {
|
|||||||
PROP_OS_CPE_NAME,
|
PROP_OS_CPE_NAME,
|
||||||
PROP_OS_HOME_URL,
|
PROP_OS_HOME_URL,
|
||||||
_PROP_MAX,
|
_PROP_MAX,
|
||||||
_PROP_INVALID = -EINVAL,
|
_PROP_INVALID = -1,
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct Context {
|
typedef struct Context {
|
||||||
|
@ -17,7 +17,7 @@ typedef enum ImportCompressType {
|
|||||||
IMPORT_COMPRESS_GZIP,
|
IMPORT_COMPRESS_GZIP,
|
||||||
IMPORT_COMPRESS_BZIP2,
|
IMPORT_COMPRESS_BZIP2,
|
||||||
_IMPORT_COMPRESS_TYPE_MAX,
|
_IMPORT_COMPRESS_TYPE_MAX,
|
||||||
_IMPORT_COMPRESS_TYPE_INVALID = -EINVAL,
|
_IMPORT_COMPRESS_TYPE_INVALID = -1,
|
||||||
} ImportCompressType;
|
} ImportCompressType;
|
||||||
|
|
||||||
typedef struct ImportCompress {
|
typedef struct ImportCompress {
|
||||||
|
@ -46,7 +46,7 @@ typedef enum TransferType {
|
|||||||
TRANSFER_PULL_TAR,
|
TRANSFER_PULL_TAR,
|
||||||
TRANSFER_PULL_RAW,
|
TRANSFER_PULL_RAW,
|
||||||
_TRANSFER_TYPE_MAX,
|
_TRANSFER_TYPE_MAX,
|
||||||
_TRANSFER_TYPE_INVALID = -EINVAL,
|
_TRANSFER_TYPE_INVALID = -1,
|
||||||
} TransferType;
|
} TransferType;
|
||||||
|
|
||||||
struct Transfer {
|
struct Transfer {
|
||||||
|
@ -33,7 +33,7 @@ typedef enum VerificationStyle {
|
|||||||
VERIFICATION_PER_FILE, /* SuSE-style ".sha256" files with inline gpg signature */
|
VERIFICATION_PER_FILE, /* SuSE-style ".sha256" files with inline gpg signature */
|
||||||
VERIFICATION_PER_DIRECTORY, /* Ubuntu-style SHA256SUM files with detached SHA256SUM.gpg signatures */
|
VERIFICATION_PER_DIRECTORY, /* Ubuntu-style SHA256SUM files with detached SHA256SUM.gpg signatures */
|
||||||
_VERIFICATION_STYLE_MAX,
|
_VERIFICATION_STYLE_MAX,
|
||||||
_VERIFICATION_STYLE_INVALID = -EINVAL,
|
_VERIFICATION_STYLE_INVALID = -1,
|
||||||
} VerificationStyle;
|
} VerificationStyle;
|
||||||
|
|
||||||
int verification_style_from_url(const char *url, VerificationStyle *style);
|
int verification_style_from_url(const char *url, VerificationStyle *style);
|
||||||
|
@ -22,7 +22,7 @@ typedef enum PullJobState {
|
|||||||
PULL_JOB_DONE,
|
PULL_JOB_DONE,
|
||||||
PULL_JOB_FAILED,
|
PULL_JOB_FAILED,
|
||||||
_PULL_JOB_STATE_MAX,
|
_PULL_JOB_STATE_MAX,
|
||||||
_PULL_JOB_STATE_INVALID = -EINVAL,
|
_PULL_JOB_STATE_INVALID = -1,
|
||||||
} PullJobState;
|
} PullJobState;
|
||||||
|
|
||||||
#define PULL_JOB_IS_COMPLETE(j) (IN_SET((j)->state, PULL_JOB_DONE, PULL_JOB_FAILED))
|
#define PULL_JOB_IS_COMPLETE(j) (IN_SET((j)->state, PULL_JOB_DONE, PULL_JOB_FAILED))
|
||||||
|
@ -961,14 +961,16 @@ static int parse_argv(int argc, char *argv[]) {
|
|||||||
case ARG_SPLIT_MODE:
|
case ARG_SPLIT_MODE:
|
||||||
arg_split_mode = journal_write_split_mode_from_string(optarg);
|
arg_split_mode = journal_write_split_mode_from_string(optarg);
|
||||||
if (arg_split_mode == _JOURNAL_WRITE_SPLIT_INVALID)
|
if (arg_split_mode == _JOURNAL_WRITE_SPLIT_INVALID)
|
||||||
return log_error_errno(arg_split_mode, "Invalid split mode: %s", optarg);
|
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||||
|
"Invalid split mode: %s", optarg);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ARG_COMPRESS:
|
case ARG_COMPRESS:
|
||||||
if (optarg) {
|
if (optarg) {
|
||||||
r = parse_boolean(optarg);
|
r = parse_boolean(optarg);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_error_errno(r, "Failed to parse --compress= parameter.");
|
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||||
|
"Failed to parse --compress= parameter.");
|
||||||
|
|
||||||
arg_compress = !!r;
|
arg_compress = !!r;
|
||||||
} else
|
} else
|
||||||
|
@ -36,5 +36,5 @@ typedef enum JournalWriteSplitMode {
|
|||||||
JOURNAL_WRITE_SPLIT_NONE,
|
JOURNAL_WRITE_SPLIT_NONE,
|
||||||
JOURNAL_WRITE_SPLIT_HOST,
|
JOURNAL_WRITE_SPLIT_HOST,
|
||||||
_JOURNAL_WRITE_SPLIT_MAX,
|
_JOURNAL_WRITE_SPLIT_MAX,
|
||||||
_JOURNAL_WRITE_SPLIT_INVALID = -EINVAL,
|
_JOURNAL_WRITE_SPLIT_INVALID = -1
|
||||||
} JournalWriteSplitMode;
|
} JournalWriteSplitMode;
|
||||||
|
@ -413,7 +413,7 @@ static int setup_uploader(Uploader *u, const char *url, const char *state_file)
|
|||||||
assert(url);
|
assert(url);
|
||||||
|
|
||||||
*u = (Uploader) {
|
*u = (Uploader) {
|
||||||
.input = -1,
|
.input = -1
|
||||||
};
|
};
|
||||||
|
|
||||||
host = STARTSWITH_SET(url, "http://", "https://");
|
host = STARTSWITH_SET(url, "http://", "https://");
|
||||||
|
@ -565,7 +565,7 @@ static int parse_argv(int argc, char *argv[]) {
|
|||||||
|
|
||||||
arg_output = output_mode_from_string(optarg);
|
arg_output = output_mode_from_string(optarg);
|
||||||
if (arg_output < 0)
|
if (arg_output < 0)
|
||||||
return log_error_errno(arg_output, "Unknown output format '%s'.", optarg);
|
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Unknown output format '%s'.", optarg);
|
||||||
|
|
||||||
if (IN_SET(arg_output, OUTPUT_EXPORT, OUTPUT_JSON, OUTPUT_JSON_PRETTY, OUTPUT_JSON_SSE, OUTPUT_JSON_SEQ, OUTPUT_CAT))
|
if (IN_SET(arg_output, OUTPUT_EXPORT, OUTPUT_JSON, OUTPUT_JSON_PRETTY, OUTPUT_JSON_SSE, OUTPUT_JSON_SEQ, OUTPUT_CAT))
|
||||||
arg_quiet = true;
|
arg_quiet = true;
|
||||||
@ -835,7 +835,7 @@ static int parse_argv(int argc, char *argv[]) {
|
|||||||
to = log_level_from_string(dots + 2);
|
to = log_level_from_string(dots + 2);
|
||||||
|
|
||||||
if (from < 0 || to < 0)
|
if (from < 0 || to < 0)
|
||||||
return log_error_errno(from < 0 ? from : to,
|
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||||
"Failed to parse log level range %s", optarg);
|
"Failed to parse log level range %s", optarg);
|
||||||
|
|
||||||
arg_priorities = 0;
|
arg_priorities = 0;
|
||||||
@ -853,7 +853,8 @@ static int parse_argv(int argc, char *argv[]) {
|
|||||||
|
|
||||||
p = log_level_from_string(optarg);
|
p = log_level_from_string(optarg);
|
||||||
if (p < 0)
|
if (p < 0)
|
||||||
return log_error_errno(p, "Unknown log level %s", optarg);
|
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||||
|
"Unknown log level %s", optarg);
|
||||||
|
|
||||||
arg_priorities = 0;
|
arg_priorities = 0;
|
||||||
|
|
||||||
@ -884,7 +885,8 @@ static int parse_argv(int argc, char *argv[]) {
|
|||||||
|
|
||||||
num = log_facility_unshifted_from_string(fac);
|
num = log_facility_unshifted_from_string(fac);
|
||||||
if (num < 0)
|
if (num < 0)
|
||||||
return log_error_errno(num, "Bad --facility= argument \"%s\".", fac);
|
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||||
|
"Bad --facility= argument \"%s\".", fac);
|
||||||
|
|
||||||
if (set_ensure_put(&arg_facilities, NULL, INT_TO_PTR(num)) < 0)
|
if (set_ensure_put(&arg_facilities, NULL, INT_TO_PTR(num)) < 0)
|
||||||
return log_oom();
|
return log_oom();
|
||||||
|
@ -368,7 +368,7 @@ static int client_context_read_log_level_max(
|
|||||||
|
|
||||||
ll = log_level_from_string(value);
|
ll = log_level_from_string(value);
|
||||||
if (ll < 0)
|
if (ll < 0)
|
||||||
return ll;
|
return -EINVAL;
|
||||||
|
|
||||||
c->log_level_max = ll;
|
c->log_level_max = ll;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -25,7 +25,7 @@ typedef enum Storage {
|
|||||||
STORAGE_PERSISTENT,
|
STORAGE_PERSISTENT,
|
||||||
STORAGE_NONE,
|
STORAGE_NONE,
|
||||||
_STORAGE_MAX,
|
_STORAGE_MAX,
|
||||||
_STORAGE_INVALID = -EINVAL,
|
_STORAGE_INVALID = -1
|
||||||
} Storage;
|
} Storage;
|
||||||
|
|
||||||
typedef enum SplitMode {
|
typedef enum SplitMode {
|
||||||
@ -33,7 +33,7 @@ typedef enum SplitMode {
|
|||||||
SPLIT_LOGIN, /* deprecated */
|
SPLIT_LOGIN, /* deprecated */
|
||||||
SPLIT_NONE,
|
SPLIT_NONE,
|
||||||
_SPLIT_MAX,
|
_SPLIT_MAX,
|
||||||
_SPLIT_INVALID = -EINVAL,
|
_SPLIT_INVALID = -1
|
||||||
} SplitMode;
|
} SplitMode;
|
||||||
|
|
||||||
typedef struct JournalCompressOptions {
|
typedef struct JournalCompressOptions {
|
||||||
|
@ -60,7 +60,7 @@ typedef enum LineBreak {
|
|||||||
LINE_BREAK_EOF,
|
LINE_BREAK_EOF,
|
||||||
LINE_BREAK_PID_CHANGE,
|
LINE_BREAK_PID_CHANGE,
|
||||||
_LINE_BREAK_MAX,
|
_LINE_BREAK_MAX,
|
||||||
_LINE_BREAK_INVALID = -EINVAL,
|
_LINE_BREAK_INVALID = -1,
|
||||||
} LineBreak;
|
} LineBreak;
|
||||||
|
|
||||||
struct StdoutStream {
|
struct StdoutStream {
|
||||||
|
@ -46,7 +46,7 @@ typedef enum IPv4ACDState {
|
|||||||
IPV4ACD_STATE_ANNOUNCING,
|
IPV4ACD_STATE_ANNOUNCING,
|
||||||
IPV4ACD_STATE_RUNNING,
|
IPV4ACD_STATE_RUNNING,
|
||||||
_IPV4ACD_STATE_MAX,
|
_IPV4ACD_STATE_MAX,
|
||||||
_IPV4ACD_STATE_INVALID = -EINVAL,
|
_IPV4ACD_STATE_INVALID = -1
|
||||||
} IPv4ACDState;
|
} IPv4ACDState;
|
||||||
|
|
||||||
struct sd_ipv4acd {
|
struct sd_ipv4acd {
|
||||||
|
@ -122,22 +122,22 @@ typedef enum BusSlotType {
|
|||||||
BUS_NODE_ENUMERATOR,
|
BUS_NODE_ENUMERATOR,
|
||||||
BUS_NODE_VTABLE,
|
BUS_NODE_VTABLE,
|
||||||
BUS_NODE_OBJECT_MANAGER,
|
BUS_NODE_OBJECT_MANAGER,
|
||||||
_BUS_SLOT_INVALID = -EINVAL,
|
_BUS_SLOT_INVALID = -1,
|
||||||
} BusSlotType;
|
} BusSlotType;
|
||||||
|
|
||||||
struct sd_bus_slot {
|
struct sd_bus_slot {
|
||||||
unsigned n_ref;
|
unsigned n_ref;
|
||||||
BusSlotType type:8;
|
BusSlotType type:5;
|
||||||
|
|
||||||
/* Slots can be "floating" or not. If they are not floating (the usual case) then they reference the
|
/* Slots can be "floating" or not. If they are not floating (the usual case) then they reference the bus object
|
||||||
* bus object they are associated with. This means the bus object stays allocated at least as long as
|
* they are associated with. This means the bus object stays allocated at least as long as there is a slot
|
||||||
* there is a slot around associated with it. If it is floating, then the slot's lifecycle is bound
|
* around associated with it. If it is floating, then the slot's lifecycle is bound to the lifecycle of the
|
||||||
* to the lifecycle of the bus: it will be disconnected from the bus when the bus is destroyed, and
|
* bus: it will be disconnected from the bus when the bus is destroyed, and it keeping the slot reffed hence
|
||||||
* it keeping the slot reffed hence won't mean the bus stays reffed too. Internally this means the
|
* won't mean the bus stays reffed too. Internally this means the reference direction is reversed: floating
|
||||||
* reference direction is reversed: floating slots objects are referenced by the bus object, and not
|
* slots objects are referenced by the bus object, and not vice versa. */
|
||||||
* vice versa. */
|
bool floating:1;
|
||||||
bool floating;
|
|
||||||
bool match_added;
|
bool match_added:1;
|
||||||
|
|
||||||
sd_bus *bus;
|
sd_bus *bus;
|
||||||
void *userdata;
|
void *userdata;
|
||||||
|
@ -27,7 +27,7 @@ enum bus_match_node_type {
|
|||||||
BUS_MATCH_ARG_HAS,
|
BUS_MATCH_ARG_HAS,
|
||||||
BUS_MATCH_ARG_HAS_LAST = BUS_MATCH_ARG_HAS + 63,
|
BUS_MATCH_ARG_HAS_LAST = BUS_MATCH_ARG_HAS + 63,
|
||||||
_BUS_MATCH_NODE_TYPE_MAX,
|
_BUS_MATCH_NODE_TYPE_MAX,
|
||||||
_BUS_MATCH_NODE_TYPE_INVALID = -EINVAL,
|
_BUS_MATCH_NODE_TYPE_INVALID = -1
|
||||||
};
|
};
|
||||||
|
|
||||||
struct bus_match_node {
|
struct bus_match_node {
|
||||||
|
@ -15,7 +15,7 @@ static void test_error(void) {
|
|||||||
const sd_bus_error temporarily_const_error = {
|
const sd_bus_error temporarily_const_error = {
|
||||||
.name = SD_BUS_ERROR_ACCESS_DENIED,
|
.name = SD_BUS_ERROR_ACCESS_DENIED,
|
||||||
.message = "oh! no",
|
.message = "oh! no",
|
||||||
._need_free = -1,
|
._need_free = -1
|
||||||
};
|
};
|
||||||
|
|
||||||
assert_se(!sd_bus_error_is_set(&error));
|
assert_se(!sd_bus_error_is_set(&error));
|
||||||
|
@ -21,7 +21,7 @@ typedef enum DeviceEnumerationType {
|
|||||||
DEVICE_ENUMERATION_TYPE_DEVICES,
|
DEVICE_ENUMERATION_TYPE_DEVICES,
|
||||||
DEVICE_ENUMERATION_TYPE_SUBSYSTEMS,
|
DEVICE_ENUMERATION_TYPE_SUBSYSTEMS,
|
||||||
_DEVICE_ENUMERATION_TYPE_MAX,
|
_DEVICE_ENUMERATION_TYPE_MAX,
|
||||||
_DEVICE_ENUMERATION_TYPE_INVALID = -EINVAL,
|
_DEVICE_ENUMERATION_TYPE_INVALID = -1,
|
||||||
} DeviceEnumerationType;
|
} DeviceEnumerationType;
|
||||||
|
|
||||||
struct sd_device_enumerator {
|
struct sd_device_enumerator {
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <errno.h>
|
|
||||||
|
|
||||||
#include "sd-device.h"
|
#include "sd-device.h"
|
||||||
|
|
||||||
typedef enum MonitorNetlinkGroup {
|
typedef enum MonitorNetlinkGroup {
|
||||||
@ -10,7 +8,7 @@ typedef enum MonitorNetlinkGroup {
|
|||||||
MONITOR_GROUP_KERNEL,
|
MONITOR_GROUP_KERNEL,
|
||||||
MONITOR_GROUP_UDEV,
|
MONITOR_GROUP_UDEV,
|
||||||
_MONITOR_NETLINK_GROUP_MAX,
|
_MONITOR_NETLINK_GROUP_MAX,
|
||||||
_MONITOR_NETLINK_GROUP_INVALID = -EINVAL,
|
_MONITOR_NETLINK_GROUP_INVALID = -1,
|
||||||
} MonitorNetlinkGroup;
|
} MonitorNetlinkGroup;
|
||||||
|
|
||||||
int device_monitor_new_full(sd_device_monitor **ret, MonitorNetlinkGroup group, int fd);
|
int device_monitor_new_full(sd_device_monitor **ret, MonitorNetlinkGroup group, int fd);
|
||||||
|
@ -204,7 +204,7 @@ static int device_set_action(sd_device *device, const char *action) {
|
|||||||
|
|
||||||
a = device_action_from_string(action);
|
a = device_action_from_string(action);
|
||||||
if (a < 0)
|
if (a < 0)
|
||||||
return a;
|
return -EINVAL;
|
||||||
|
|
||||||
r = device_add_property_internal(device, "ACTION", action);
|
r = device_add_property_internal(device, "ACTION", action);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
|
@ -20,7 +20,7 @@ typedef enum DeviceAction {
|
|||||||
DEVICE_ACTION_BIND,
|
DEVICE_ACTION_BIND,
|
||||||
DEVICE_ACTION_UNBIND,
|
DEVICE_ACTION_UNBIND,
|
||||||
_DEVICE_ACTION_MAX,
|
_DEVICE_ACTION_MAX,
|
||||||
_DEVICE_ACTION_INVALID = -EINVAL,
|
_DEVICE_ACTION_INVALID = -1,
|
||||||
} DeviceAction;
|
} DeviceAction;
|
||||||
|
|
||||||
int device_new_from_nulstr(sd_device **ret, uint8_t *nulstr, size_t len);
|
int device_new_from_nulstr(sd_device **ret, uint8_t *nulstr, size_t len);
|
||||||
|
@ -28,7 +28,7 @@ typedef enum EventSourceType {
|
|||||||
SOURCE_WATCHDOG,
|
SOURCE_WATCHDOG,
|
||||||
SOURCE_INOTIFY,
|
SOURCE_INOTIFY,
|
||||||
_SOURCE_EVENT_SOURCE_TYPE_MAX,
|
_SOURCE_EVENT_SOURCE_TYPE_MAX,
|
||||||
_SOURCE_EVENT_SOURCE_TYPE_INVALID = -EINVAL,
|
_SOURCE_EVENT_SOURCE_TYPE_INVALID = -1
|
||||||
} EventSourceType;
|
} EventSourceType;
|
||||||
|
|
||||||
/* All objects we use in epoll events start with this value, so that
|
/* All objects we use in epoll events start with this value, so that
|
||||||
@ -40,7 +40,7 @@ typedef enum WakeupType {
|
|||||||
WAKEUP_SIGNAL_DATA,
|
WAKEUP_SIGNAL_DATA,
|
||||||
WAKEUP_INOTIFY_DATA,
|
WAKEUP_INOTIFY_DATA,
|
||||||
_WAKEUP_TYPE_MAX,
|
_WAKEUP_TYPE_MAX,
|
||||||
_WAKEUP_TYPE_INVALID = -EINVAL,
|
_WAKEUP_TYPE_INVALID = -1,
|
||||||
} WakeupType;
|
} WakeupType;
|
||||||
|
|
||||||
struct inode_data;
|
struct inode_data;
|
||||||
@ -56,7 +56,7 @@ struct sd_event_source {
|
|||||||
|
|
||||||
char *description;
|
char *description;
|
||||||
|
|
||||||
EventSourceType type;
|
EventSourceType type:5;
|
||||||
signed int enabled:3;
|
signed int enabled:3;
|
||||||
bool pending:1;
|
bool pending:1;
|
||||||
bool dispatching:1;
|
bool dispatching:1;
|
||||||
|
@ -33,17 +33,17 @@ struct match_callback {
|
|||||||
typedef enum NetlinkSlotType {
|
typedef enum NetlinkSlotType {
|
||||||
NETLINK_REPLY_CALLBACK,
|
NETLINK_REPLY_CALLBACK,
|
||||||
NETLINK_MATCH_CALLBACK,
|
NETLINK_MATCH_CALLBACK,
|
||||||
_NETLINK_SLOT_INVALID = -EINVAL,
|
_NETLINK_SLOT_INVALID = -1,
|
||||||
} NetlinkSlotType;
|
} NetlinkSlotType;
|
||||||
|
|
||||||
struct sd_netlink_slot {
|
struct sd_netlink_slot {
|
||||||
unsigned n_ref;
|
unsigned n_ref;
|
||||||
NetlinkSlotType type:8;
|
|
||||||
bool floating;
|
|
||||||
sd_netlink *netlink;
|
sd_netlink *netlink;
|
||||||
void *userdata;
|
void *userdata;
|
||||||
sd_netlink_destroy_t destroy_callback;
|
sd_netlink_destroy_t destroy_callback;
|
||||||
|
NetlinkSlotType type:2;
|
||||||
|
|
||||||
|
bool floating:1;
|
||||||
char *description;
|
char *description;
|
||||||
|
|
||||||
LIST_FIELDS(sd_netlink_slot, slots);
|
LIST_FIELDS(sd_netlink_slot, slots);
|
||||||
|
@ -93,7 +93,7 @@ typedef enum NLUnionLinkInfoData {
|
|||||||
NL_UNION_LINK_INFO_DATA_IFB,
|
NL_UNION_LINK_INFO_DATA_IFB,
|
||||||
NL_UNION_LINK_INFO_DATA_BAREUDP,
|
NL_UNION_LINK_INFO_DATA_BAREUDP,
|
||||||
_NL_UNION_LINK_INFO_DATA_MAX,
|
_NL_UNION_LINK_INFO_DATA_MAX,
|
||||||
_NL_UNION_LINK_INFO_DATA_INVALID = -EINVAL,
|
_NL_UNION_LINK_INFO_DATA_INVALID = -1
|
||||||
} NLUnionLinkInfoData;
|
} NLUnionLinkInfoData;
|
||||||
|
|
||||||
const char *nl_union_link_info_data_to_string(NLUnionLinkInfoData p) _const_;
|
const char *nl_union_link_info_data_to_string(NLUnionLinkInfoData p) _const_;
|
||||||
@ -115,7 +115,7 @@ typedef enum NLUnionTCAOptionData {
|
|||||||
NL_UNION_TCA_OPTION_DATA_SFB,
|
NL_UNION_TCA_OPTION_DATA_SFB,
|
||||||
NL_UNION_TCA_OPTION_DATA_TBF,
|
NL_UNION_TCA_OPTION_DATA_TBF,
|
||||||
_NL_UNION_TCA_OPTION_DATA_MAX,
|
_NL_UNION_TCA_OPTION_DATA_MAX,
|
||||||
_NL_UNION_TCA_OPTION_DATA_INVALID = -EINVAL,
|
_NL_UNION_TCA_OPTION_DATA_INVALID = -1,
|
||||||
} NLUnionTCAOptionData;
|
} NLUnionTCAOptionData;
|
||||||
|
|
||||||
const char *nl_union_tca_option_data_to_string(NLUnionTCAOptionData p) _const_;
|
const char *nl_union_tca_option_data_to_string(NLUnionTCAOptionData p) _const_;
|
||||||
@ -131,7 +131,7 @@ typedef enum NLUnionNFTExprData {
|
|||||||
NL_UNION_NFT_EXPR_DATA_META,
|
NL_UNION_NFT_EXPR_DATA_META,
|
||||||
NL_UNION_NFT_EXPR_DATA_NAT,
|
NL_UNION_NFT_EXPR_DATA_NAT,
|
||||||
_NL_UNION_NFT_EXPR_DATA_MAX,
|
_NL_UNION_NFT_EXPR_DATA_MAX,
|
||||||
_NL_UNION_NFT_EXPR_DATA_INVALID = -EINVAL,
|
_NL_UNION_NFT_EXPR_DATA_INVALID = -1,
|
||||||
} NLUnionNFTExprData;
|
} NLUnionNFTExprData;
|
||||||
|
|
||||||
const char *nl_union_nft_expr_data_to_string(NLUnionNFTExprData p) _const_;
|
const char *nl_union_nft_expr_data_to_string(NLUnionNFTExprData p) _const_;
|
||||||
|
@ -22,7 +22,7 @@ typedef enum LinkOperationalState {
|
|||||||
LINK_OPERSTATE_ENSLAVED,
|
LINK_OPERSTATE_ENSLAVED,
|
||||||
LINK_OPERSTATE_ROUTABLE,
|
LINK_OPERSTATE_ROUTABLE,
|
||||||
_LINK_OPERSTATE_MAX,
|
_LINK_OPERSTATE_MAX,
|
||||||
_LINK_OPERSTATE_INVALID = -EINVAL,
|
_LINK_OPERSTATE_INVALID = -1
|
||||||
} LinkOperationalState;
|
} LinkOperationalState;
|
||||||
|
|
||||||
typedef enum LinkCarrierState {
|
typedef enum LinkCarrierState {
|
||||||
@ -33,7 +33,7 @@ typedef enum LinkCarrierState {
|
|||||||
LINK_CARRIER_STATE_CARRIER = LINK_OPERSTATE_CARRIER,
|
LINK_CARRIER_STATE_CARRIER = LINK_OPERSTATE_CARRIER,
|
||||||
LINK_CARRIER_STATE_ENSLAVED = LINK_OPERSTATE_ENSLAVED,
|
LINK_CARRIER_STATE_ENSLAVED = LINK_OPERSTATE_ENSLAVED,
|
||||||
_LINK_CARRIER_STATE_MAX,
|
_LINK_CARRIER_STATE_MAX,
|
||||||
_LINK_CARRIER_STATE_INVALID = -EINVAL,
|
_LINK_CARRIER_STATE_INVALID = -1
|
||||||
} LinkCarrierState;
|
} LinkCarrierState;
|
||||||
|
|
||||||
typedef enum LinkAddressState {
|
typedef enum LinkAddressState {
|
||||||
@ -41,7 +41,7 @@ typedef enum LinkAddressState {
|
|||||||
LINK_ADDRESS_STATE_DEGRADED,
|
LINK_ADDRESS_STATE_DEGRADED,
|
||||||
LINK_ADDRESS_STATE_ROUTABLE,
|
LINK_ADDRESS_STATE_ROUTABLE,
|
||||||
_LINK_ADDRESS_STATE_MAX,
|
_LINK_ADDRESS_STATE_MAX,
|
||||||
_LINK_ADDRESS_STATE_INVALID = -EINVAL,
|
_LINK_ADDRESS_STATE_INVALID = -1
|
||||||
} LinkAddressState;
|
} LinkAddressState;
|
||||||
|
|
||||||
const char* link_operstate_to_string(LinkOperationalState s) _const_;
|
const char* link_operstate_to_string(LinkOperationalState s) _const_;
|
||||||
|
@ -1371,7 +1371,8 @@ static int parse_argv(int argc, char *argv[]) {
|
|||||||
|
|
||||||
arg_output = output_mode_from_string(optarg);
|
arg_output = output_mode_from_string(optarg);
|
||||||
if (arg_output < 0)
|
if (arg_output < 0)
|
||||||
return log_error_errno(arg_output, "Unknown output '%s'.", optarg);
|
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||||
|
"Unknown output '%s'.", optarg);
|
||||||
|
|
||||||
if (OUTPUT_MODE_IS_JSON(arg_output))
|
if (OUTPUT_MODE_IS_JSON(arg_output))
|
||||||
arg_legend = false;
|
arg_legend = false;
|
||||||
@ -1402,7 +1403,8 @@ static int parse_argv(int argc, char *argv[]) {
|
|||||||
|
|
||||||
arg_signal = signal_from_string(optarg);
|
arg_signal = signal_from_string(optarg);
|
||||||
if (arg_signal < 0)
|
if (arg_signal < 0)
|
||||||
return log_error_errno(arg_signal, "Failed to parse signal string %s.", optarg);
|
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||||
|
"Failed to parse signal string %s.", optarg);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'H':
|
case 'H':
|
||||||
|
@ -15,7 +15,7 @@ typedef enum HandleAction {
|
|||||||
HANDLE_SUSPEND_THEN_HIBERNATE,
|
HANDLE_SUSPEND_THEN_HIBERNATE,
|
||||||
HANDLE_LOCK,
|
HANDLE_LOCK,
|
||||||
_HANDLE_ACTION_MAX,
|
_HANDLE_ACTION_MAX,
|
||||||
_HANDLE_ACTION_INVALID = -EINVAL,
|
_HANDLE_ACTION_INVALID = -1
|
||||||
} HandleAction;
|
} HandleAction;
|
||||||
|
|
||||||
#include "logind-inhibit.h"
|
#include "logind-inhibit.h"
|
||||||
|
@ -13,14 +13,14 @@ typedef enum InhibitWhat {
|
|||||||
INHIBIT_HANDLE_LID_SWITCH = 1 << 6,
|
INHIBIT_HANDLE_LID_SWITCH = 1 << 6,
|
||||||
INHIBIT_HANDLE_REBOOT_KEY = 1 << 7,
|
INHIBIT_HANDLE_REBOOT_KEY = 1 << 7,
|
||||||
_INHIBIT_WHAT_MAX = 1 << 8,
|
_INHIBIT_WHAT_MAX = 1 << 8,
|
||||||
_INHIBIT_WHAT_INVALID = -EINVAL,
|
_INHIBIT_WHAT_INVALID = -1
|
||||||
} InhibitWhat;
|
} InhibitWhat;
|
||||||
|
|
||||||
typedef enum InhibitMode {
|
typedef enum InhibitMode {
|
||||||
INHIBIT_BLOCK,
|
INHIBIT_BLOCK,
|
||||||
INHIBIT_DELAY,
|
INHIBIT_DELAY,
|
||||||
_INHIBIT_MODE_MAX,
|
_INHIBIT_MODE_MAX,
|
||||||
_INHIBIT_MODE_INVALID = -EINVAL,
|
_INHIBIT_MODE_INVALID = -1
|
||||||
} InhibitMode;
|
} InhibitMode;
|
||||||
|
|
||||||
#include "logind.h"
|
#include "logind.h"
|
||||||
|
@ -15,7 +15,7 @@ typedef enum SessionState {
|
|||||||
SESSION_ACTIVE, /* Logged in and in the fg */
|
SESSION_ACTIVE, /* Logged in and in the fg */
|
||||||
SESSION_CLOSING, /* Logged out, but scope is still there */
|
SESSION_CLOSING, /* Logged out, but scope is still there */
|
||||||
_SESSION_STATE_MAX,
|
_SESSION_STATE_MAX,
|
||||||
_SESSION_STATE_INVALID = -EINVAL,
|
_SESSION_STATE_INVALID = -1
|
||||||
} SessionState;
|
} SessionState;
|
||||||
|
|
||||||
typedef enum SessionClass {
|
typedef enum SessionClass {
|
||||||
@ -24,7 +24,7 @@ typedef enum SessionClass {
|
|||||||
SESSION_LOCK_SCREEN,
|
SESSION_LOCK_SCREEN,
|
||||||
SESSION_BACKGROUND,
|
SESSION_BACKGROUND,
|
||||||
_SESSION_CLASS_MAX,
|
_SESSION_CLASS_MAX,
|
||||||
_SESSION_CLASS_INVALID = -EINVAL,
|
_SESSION_CLASS_INVALID = -1
|
||||||
} SessionClass;
|
} SessionClass;
|
||||||
|
|
||||||
typedef enum SessionType {
|
typedef enum SessionType {
|
||||||
@ -35,7 +35,7 @@ typedef enum SessionType {
|
|||||||
SESSION_MIR,
|
SESSION_MIR,
|
||||||
SESSION_WEB,
|
SESSION_WEB,
|
||||||
_SESSION_TYPE_MAX,
|
_SESSION_TYPE_MAX,
|
||||||
_SESSION_TYPE_INVALID = -EINVAL,
|
_SESSION_TYPE_INVALID = -1
|
||||||
} SessionType;
|
} SessionType;
|
||||||
|
|
||||||
#define SESSION_TYPE_IS_GRAPHICAL(type) IN_SET(type, SESSION_X11, SESSION_WAYLAND, SESSION_MIR)
|
#define SESSION_TYPE_IS_GRAPHICAL(type) IN_SET(type, SESSION_X11, SESSION_WAYLAND, SESSION_MIR)
|
||||||
@ -44,7 +44,7 @@ enum KillWho {
|
|||||||
KILL_LEADER,
|
KILL_LEADER,
|
||||||
KILL_ALL,
|
KILL_ALL,
|
||||||
_KILL_WHO_MAX,
|
_KILL_WHO_MAX,
|
||||||
_KILL_WHO_INVALID = -EINVAL,
|
_KILL_WHO_INVALID = -1
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef enum TTYValidity {
|
typedef enum TTYValidity {
|
||||||
@ -52,7 +52,7 @@ typedef enum TTYValidity {
|
|||||||
TTY_FROM_UTMP,
|
TTY_FROM_UTMP,
|
||||||
TTY_UTMP_INCONSISTENT, /* may happen on ssh sessions with multiplexed TTYs */
|
TTY_UTMP_INCONSISTENT, /* may happen on ssh sessions with multiplexed TTYs */
|
||||||
_TTY_VALIDITY_MAX,
|
_TTY_VALIDITY_MAX,
|
||||||
_TTY_VALIDITY_INVALID = -EINVAL,
|
_TTY_VALIDITY_INVALID = -1,
|
||||||
} TTYValidity;
|
} TTYValidity;
|
||||||
|
|
||||||
struct Session {
|
struct Session {
|
||||||
|
@ -16,7 +16,7 @@ typedef enum UserState {
|
|||||||
USER_ACTIVE, /* User logged in and has a session in the fg */
|
USER_ACTIVE, /* User logged in and has a session in the fg */
|
||||||
USER_CLOSING, /* User logged out, but processes still remain and lingering is not enabled */
|
USER_CLOSING, /* User logged out, but processes still remain and lingering is not enabled */
|
||||||
_USER_STATE_MAX,
|
_USER_STATE_MAX,
|
||||||
_USER_STATE_INVALID = -EINVAL,
|
_USER_STATE_INVALID = -1
|
||||||
} UserState;
|
} UserState;
|
||||||
|
|
||||||
struct User {
|
struct User {
|
||||||
|
@ -14,7 +14,7 @@ typedef enum MachineState {
|
|||||||
MACHINE_RUNNING, /* Machine is running */
|
MACHINE_RUNNING, /* Machine is running */
|
||||||
MACHINE_CLOSING, /* Machine is terminating */
|
MACHINE_CLOSING, /* Machine is terminating */
|
||||||
_MACHINE_STATE_MAX,
|
_MACHINE_STATE_MAX,
|
||||||
_MACHINE_STATE_INVALID = -EINVAL,
|
_MACHINE_STATE_INVALID = -1
|
||||||
} MachineState;
|
} MachineState;
|
||||||
|
|
||||||
typedef enum MachineClass {
|
typedef enum MachineClass {
|
||||||
@ -22,14 +22,14 @@ typedef enum MachineClass {
|
|||||||
MACHINE_VM,
|
MACHINE_VM,
|
||||||
MACHINE_HOST,
|
MACHINE_HOST,
|
||||||
_MACHINE_CLASS_MAX,
|
_MACHINE_CLASS_MAX,
|
||||||
_MACHINE_CLASS_INVALID = -EINVAL,
|
_MACHINE_CLASS_INVALID = -1
|
||||||
} MachineClass;
|
} MachineClass;
|
||||||
|
|
||||||
enum KillWho {
|
enum KillWho {
|
||||||
KILL_LEADER,
|
KILL_LEADER,
|
||||||
KILL_ALL,
|
KILL_ALL,
|
||||||
_KILL_WHO_MAX,
|
_KILL_WHO_MAX,
|
||||||
_KILL_WHO_INVALID = -EINVAL,
|
_KILL_WHO_INVALID = -1
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Machine {
|
struct Machine {
|
||||||
|
@ -2693,10 +2693,10 @@ static int parse_argv(int argc, char *argv[]) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
r = output_mode_from_string(optarg);
|
arg_output = output_mode_from_string(optarg);
|
||||||
if (r < 0)
|
if (arg_output < 0)
|
||||||
return log_error_errno(r, "Unknown output '%s'.", optarg);
|
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||||
arg_output = r;
|
"Unknown output '%s'.", optarg);
|
||||||
|
|
||||||
if (OUTPUT_MODE_IS_JSON(arg_output))
|
if (OUTPUT_MODE_IS_JSON(arg_output))
|
||||||
arg_legend = false;
|
arg_legend = false;
|
||||||
@ -2720,10 +2720,10 @@ static int parse_argv(int argc, char *argv[]) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
r = signal_from_string(optarg);
|
arg_signal = signal_from_string(optarg);
|
||||||
if (r < 0)
|
if (arg_signal < 0)
|
||||||
return log_error_errno(r, "Failed to parse signal string %s.", optarg);
|
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||||
arg_signal = r;
|
"Failed to parse signal string %s.", optarg);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ARG_NO_ASK_PASSWORD:
|
case ARG_NO_ASK_PASSWORD:
|
||||||
@ -2758,10 +2758,10 @@ static int parse_argv(int argc, char *argv[]) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
r = import_verify_from_string(optarg);
|
arg_verify = import_verify_from_string(optarg);
|
||||||
if (r < 0)
|
if (arg_verify < 0)
|
||||||
return log_error_errno(r, "Failed to parse --verify= setting: %s", optarg);
|
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||||
arg_verify = r;
|
"Failed to parse --verify= setting: %s", optarg);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ARG_FORCE:
|
case ARG_FORCE:
|
||||||
|
@ -313,7 +313,7 @@ static int network_set_dhcp_type(Context *context, const char *ifname, const cha
|
|||||||
|
|
||||||
t = dracut_dhcp_type_from_string(dhcp_type);
|
t = dracut_dhcp_type_from_string(dhcp_type);
|
||||||
if (t < 0)
|
if (t < 0)
|
||||||
return t;
|
return -EINVAL;
|
||||||
|
|
||||||
network = network_get(context, ifname);
|
network = network_get(context, ifname);
|
||||||
if (!network) {
|
if (!network) {
|
||||||
|
@ -19,7 +19,7 @@ typedef enum DHCPType {
|
|||||||
DHCP_TYPE_EITHER6,
|
DHCP_TYPE_EITHER6,
|
||||||
DHCP_TYPE_IBFT,
|
DHCP_TYPE_IBFT,
|
||||||
_DHCP_TYPE_MAX,
|
_DHCP_TYPE_MAX,
|
||||||
_DHCP_TYPE_INVALID = -EINVAL,
|
_DHCP_TYPE_INVALID = -1,
|
||||||
} DHCPType;
|
} DHCPType;
|
||||||
|
|
||||||
typedef struct Address Address;
|
typedef struct Address Address;
|
||||||
|
@ -15,7 +15,7 @@ typedef enum BareUDPProtocol {
|
|||||||
BARE_UDP_PROTOCOL_MPLS_UC = ETH_P_MPLS_UC,
|
BARE_UDP_PROTOCOL_MPLS_UC = ETH_P_MPLS_UC,
|
||||||
BARE_UDP_PROTOCOL_MPLS_MC = ETH_P_MPLS_MC,
|
BARE_UDP_PROTOCOL_MPLS_MC = ETH_P_MPLS_MC,
|
||||||
_BARE_UDP_PROTOCOL_MAX,
|
_BARE_UDP_PROTOCOL_MAX,
|
||||||
_BARE_UDP_PROTOCOL_INVALID = -EINVAL,
|
_BARE_UDP_PROTOCOL_INVALID = -1
|
||||||
} BareUDPProtocol;
|
} BareUDPProtocol;
|
||||||
|
|
||||||
struct BareUDP {
|
struct BareUDP {
|
||||||
|
@ -35,7 +35,7 @@ typedef enum MulticastRouter {
|
|||||||
MULTICAST_ROUTER_PERMANENT = MDB_RTR_TYPE_PERM,
|
MULTICAST_ROUTER_PERMANENT = MDB_RTR_TYPE_PERM,
|
||||||
MULTICAST_ROUTER_TEMPORARY = MDB_RTR_TYPE_TEMP,
|
MULTICAST_ROUTER_TEMPORARY = MDB_RTR_TYPE_TEMP,
|
||||||
_MULTICAST_ROUTER_MAX,
|
_MULTICAST_ROUTER_MAX,
|
||||||
_MULTICAST_ROUTER_INVALID = -EINVAL,
|
_MULTICAST_ROUTER_INVALID = -1,
|
||||||
} MulticastRouter;
|
} MulticastRouter;
|
||||||
|
|
||||||
DEFINE_NETDEV_CAST(BRIDGE, Bridge);
|
DEFINE_NETDEV_CAST(BRIDGE, Bridge);
|
||||||
|
@ -12,7 +12,7 @@ typedef enum FooOverUDPEncapType {
|
|||||||
NETDEV_FOO_OVER_UDP_ENCAP_DIRECT = FOU_ENCAP_DIRECT,
|
NETDEV_FOO_OVER_UDP_ENCAP_DIRECT = FOU_ENCAP_DIRECT,
|
||||||
NETDEV_FOO_OVER_UDP_ENCAP_GUE = FOU_ENCAP_GUE,
|
NETDEV_FOO_OVER_UDP_ENCAP_GUE = FOU_ENCAP_GUE,
|
||||||
_NETDEV_FOO_OVER_UDP_ENCAP_MAX,
|
_NETDEV_FOO_OVER_UDP_ENCAP_MAX,
|
||||||
_NETDEV_FOO_OVER_UDP_ENCAP_INVALID = -EINVAL,
|
_NETDEV_FOO_OVER_UDP_ENCAP_INVALID = -1,
|
||||||
} FooOverUDPEncapType;
|
} FooOverUDPEncapType;
|
||||||
|
|
||||||
typedef struct FouTunnel {
|
typedef struct FouTunnel {
|
||||||
|
@ -14,7 +14,7 @@ typedef enum GeneveDF {
|
|||||||
NETDEV_GENEVE_DF_YES = GENEVE_DF_SET,
|
NETDEV_GENEVE_DF_YES = GENEVE_DF_SET,
|
||||||
NETDEV_GENEVE_DF_INHERIT = GENEVE_DF_INHERIT,
|
NETDEV_GENEVE_DF_INHERIT = GENEVE_DF_INHERIT,
|
||||||
_NETDEV_GENEVE_DF_MAX,
|
_NETDEV_GENEVE_DF_MAX,
|
||||||
_NETDEV_GENEVE_DF_INVALID = -EINVAL,
|
_NETDEV_GENEVE_DF_INVALID = -1
|
||||||
} GeneveDF;
|
} GeneveDF;
|
||||||
|
|
||||||
struct Geneve {
|
struct Geneve {
|
||||||
|
@ -12,14 +12,14 @@ typedef enum L2tpL2specType {
|
|||||||
NETDEV_L2TP_L2SPECTYPE_NONE = L2TP_L2SPECTYPE_NONE,
|
NETDEV_L2TP_L2SPECTYPE_NONE = L2TP_L2SPECTYPE_NONE,
|
||||||
NETDEV_L2TP_L2SPECTYPE_DEFAULT = L2TP_L2SPECTYPE_DEFAULT,
|
NETDEV_L2TP_L2SPECTYPE_DEFAULT = L2TP_L2SPECTYPE_DEFAULT,
|
||||||
_NETDEV_L2TP_L2SPECTYPE_MAX,
|
_NETDEV_L2TP_L2SPECTYPE_MAX,
|
||||||
_NETDEV_L2TP_L2SPECTYPE_INVALID = -EINVAL,
|
_NETDEV_L2TP_L2SPECTYPE_INVALID = -1,
|
||||||
} L2tpL2specType;
|
} L2tpL2specType;
|
||||||
|
|
||||||
typedef enum L2tpEncapType {
|
typedef enum L2tpEncapType {
|
||||||
NETDEV_L2TP_ENCAPTYPE_UDP = L2TP_ENCAPTYPE_UDP,
|
NETDEV_L2TP_ENCAPTYPE_UDP = L2TP_ENCAPTYPE_UDP,
|
||||||
NETDEV_L2TP_ENCAPTYPE_IP = L2TP_ENCAPTYPE_IP,
|
NETDEV_L2TP_ENCAPTYPE_IP = L2TP_ENCAPTYPE_IP,
|
||||||
_NETDEV_L2TP_ENCAPTYPE_MAX,
|
_NETDEV_L2TP_ENCAPTYPE_MAX,
|
||||||
_NETDEV_L2TP_ENCAPTYPE_INVALID = -EINVAL,
|
_NETDEV_L2TP_ENCAPTYPE_INVALID = -1,
|
||||||
} L2tpEncapType;
|
} L2tpEncapType;
|
||||||
|
|
||||||
typedef enum L2tpLocalAddressType {
|
typedef enum L2tpLocalAddressType {
|
||||||
@ -27,7 +27,7 @@ typedef enum L2tpLocalAddressType {
|
|||||||
NETDEV_L2TP_LOCAL_ADDRESS_STATIC,
|
NETDEV_L2TP_LOCAL_ADDRESS_STATIC,
|
||||||
NETDEV_L2TP_LOCAL_ADDRESS_DYNAMIC,
|
NETDEV_L2TP_LOCAL_ADDRESS_DYNAMIC,
|
||||||
_NETDEV_L2TP_LOCAL_ADDRESS_MAX,
|
_NETDEV_L2TP_LOCAL_ADDRESS_MAX,
|
||||||
_NETDEV_L2TP_LOCAL_ADDRESS_INVALID = -EINVAL,
|
_NETDEV_L2TP_LOCAL_ADDRESS_INVALID = -1,
|
||||||
} L2tpLocalAddressType;
|
} L2tpLocalAddressType;
|
||||||
|
|
||||||
typedef struct L2tpTunnel L2tpTunnel;
|
typedef struct L2tpTunnel L2tpTunnel;
|
||||||
|
@ -85,7 +85,7 @@ typedef enum NetDevKind {
|
|||||||
NETDEV_KIND_BAREUDP,
|
NETDEV_KIND_BAREUDP,
|
||||||
_NETDEV_KIND_MAX,
|
_NETDEV_KIND_MAX,
|
||||||
_NETDEV_KIND_TUNNEL, /* Used by config_parse_stacked_netdev() */
|
_NETDEV_KIND_TUNNEL, /* Used by config_parse_stacked_netdev() */
|
||||||
_NETDEV_KIND_INVALID = -EINVAL,
|
_NETDEV_KIND_INVALID = -1
|
||||||
} NetDevKind;
|
} NetDevKind;
|
||||||
|
|
||||||
typedef enum NetDevState {
|
typedef enum NetDevState {
|
||||||
@ -95,7 +95,7 @@ typedef enum NetDevState {
|
|||||||
NETDEV_STATE_READY,
|
NETDEV_STATE_READY,
|
||||||
NETDEV_STATE_LINGER,
|
NETDEV_STATE_LINGER,
|
||||||
_NETDEV_STATE_MAX,
|
_NETDEV_STATE_MAX,
|
||||||
_NETDEV_STATE_INVALID = -EINVAL,
|
_NETDEV_STATE_INVALID = -1,
|
||||||
} NetDevState;
|
} NetDevState;
|
||||||
|
|
||||||
typedef enum NetDevCreateType {
|
typedef enum NetDevCreateType {
|
||||||
@ -104,7 +104,7 @@ typedef enum NetDevCreateType {
|
|||||||
NETDEV_CREATE_STACKED,
|
NETDEV_CREATE_STACKED,
|
||||||
NETDEV_CREATE_AFTER_CONFIGURED,
|
NETDEV_CREATE_AFTER_CONFIGURED,
|
||||||
_NETDEV_CREATE_MAX,
|
_NETDEV_CREATE_MAX,
|
||||||
_NETDEV_CREATE_INVALID = -EINVAL,
|
_NETDEV_CREATE_INVALID = -1,
|
||||||
} NetDevCreateType;
|
} NetDevCreateType;
|
||||||
|
|
||||||
typedef struct Manager Manager;
|
typedef struct Manager Manager;
|
||||||
|
@ -12,13 +12,13 @@ typedef enum Ip6TnlMode {
|
|||||||
NETDEV_IP6_TNL_MODE_IPIP6,
|
NETDEV_IP6_TNL_MODE_IPIP6,
|
||||||
NETDEV_IP6_TNL_MODE_ANYIP6,
|
NETDEV_IP6_TNL_MODE_ANYIP6,
|
||||||
_NETDEV_IP6_TNL_MODE_MAX,
|
_NETDEV_IP6_TNL_MODE_MAX,
|
||||||
_NETDEV_IP6_TNL_MODE_INVALID = -EINVAL,
|
_NETDEV_IP6_TNL_MODE_INVALID = -1,
|
||||||
} Ip6TnlMode;
|
} Ip6TnlMode;
|
||||||
|
|
||||||
typedef enum IPv6FlowLabel {
|
typedef enum IPv6FlowLabel {
|
||||||
NETDEV_IPV6_FLOWLABEL_INHERIT = 0xFFFFF + 1,
|
NETDEV_IPV6_FLOWLABEL_INHERIT = 0xFFFFF + 1,
|
||||||
_NETDEV_IPV6_FLOWLABEL_MAX,
|
_NETDEV_IPV6_FLOWLABEL_MAX,
|
||||||
_NETDEV_IPV6_FLOWLABEL_INVALID = -EINVAL,
|
_NETDEV_IPV6_FLOWLABEL_INVALID = -1,
|
||||||
} IPv6FlowLabel;
|
} IPv6FlowLabel;
|
||||||
|
|
||||||
typedef struct Tunnel {
|
typedef struct Tunnel {
|
||||||
|
@ -16,7 +16,7 @@ typedef enum VxLanDF {
|
|||||||
NETDEV_VXLAN_DF_YES = VXLAN_DF_SET,
|
NETDEV_VXLAN_DF_YES = VXLAN_DF_SET,
|
||||||
NETDEV_VXLAN_DF_INHERIT = VXLAN_DF_INHERIT,
|
NETDEV_VXLAN_DF_INHERIT = VXLAN_DF_INHERIT,
|
||||||
_NETDEV_VXLAN_DF_MAX,
|
_NETDEV_VXLAN_DF_MAX,
|
||||||
_NETDEV_VXLAN_DF_INVALID = -EINVAL,
|
_NETDEV_VXLAN_DF_INVALID = -1
|
||||||
} VxLanDF;
|
} VxLanDF;
|
||||||
|
|
||||||
struct VxLan {
|
struct VxLan {
|
||||||
|
@ -1754,6 +1754,7 @@ int config_parse_duplicate_address_detection(
|
|||||||
|
|
||||||
Network *network = userdata;
|
Network *network = userdata;
|
||||||
_cleanup_(address_free_or_set_invalidp) Address *n = NULL;
|
_cleanup_(address_free_or_set_invalidp) Address *n = NULL;
|
||||||
|
AddressFamily a;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
assert(filename);
|
assert(filename);
|
||||||
@ -1782,14 +1783,14 @@ int config_parse_duplicate_address_detection(
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
AddressFamily a = duplicate_address_detection_address_family_from_string(rvalue);
|
a = duplicate_address_detection_address_family_from_string(rvalue);
|
||||||
if (a < 0) {
|
if (a < 0) {
|
||||||
log_syntax(unit, LOG_WARNING, filename, line, a,
|
log_syntax(unit, LOG_WARNING, filename, line, SYNTHETIC_ERRNO(EINVAL),
|
||||||
"Failed to parse %s=, ignoring: %s", lvalue, rvalue);
|
"Failed to parse %s=, ignoring: %s", lvalue, rvalue);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
n->duplicate_address_detection = a;
|
|
||||||
|
|
||||||
|
n->duplicate_address_detection = a;
|
||||||
TAKE_PTR(n);
|
TAKE_PTR(n);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user