mirror of
https://github.com/systemd/systemd
synced 2026-03-19 03:24:45 +01:00
Compare commits
No commits in common. "e4948b0f0ada46db50247f203e5d238cee01f471" and "f7bef77a16d58d1b0f68ad1c959cd3e72164a767" have entirely different histories.
e4948b0f0a
...
f7bef77a16
@ -58,9 +58,8 @@
|
|||||||
|
|
||||||
<para><parameter>callback</parameter> is called with the path and userdata pointer registered
|
<para><parameter>callback</parameter> is called with the path and userdata pointer registered
|
||||||
with <function>sd_bus_add_node_enumerator()</function>. When called, it should store all the
|
with <function>sd_bus_add_node_enumerator()</function>. When called, it should store all the
|
||||||
child object paths of the given path prefix in <parameter>ret_nodes</parameter> with a NULL
|
child object paths of the given path prefix in <parameter>ret_nodes</parameter> and return the
|
||||||
terminator item. The callback should return a non-negative value on success.
|
number of child objects under the given prefix. If an error occurs, it can either return a
|
||||||
If an error occurs, it can either return a
|
|
||||||
negative integer, set <parameter>ret_error</parameter> to a non-empty error or do both. Any
|
negative integer, set <parameter>ret_error</parameter> to a non-empty error or do both. Any
|
||||||
errors returned by the callback are encoded as D-Bus errors and sent back to the caller. Errors
|
errors returned by the callback are encoded as D-Bus errors and sent back to the caller. Errors
|
||||||
in <parameter>ret_error</parameter> take priority over negative return values.</para>
|
in <parameter>ret_error</parameter> take priority over negative return values.</para>
|
||||||
|
|||||||
@ -253,7 +253,7 @@
|
|||||||
<para><function>sd_bus_error_move()</function> is similar to <function>sd_bus_error_copy()</function>,
|
<para><function>sd_bus_error_move()</function> is similar to <function>sd_bus_error_copy()</function>,
|
||||||
but will move any error information from <parameter>e</parameter> into <parameter>dst</parameter>,
|
but will move any error information from <parameter>e</parameter> into <parameter>dst</parameter>,
|
||||||
resetting the former. This function cannot fail, as no new memory is allocated. Note that if
|
resetting the former. This function cannot fail, as no new memory is allocated. Note that if
|
||||||
<parameter>e</parameter> is not set, <parameter>dst</parameter> is initialized to
|
<parameter>e</parameter> is not set, <parameter>dst</parameter> is initializated to
|
||||||
<constant>SD_BUS_ERROR_NULL</constant>. Moreover, if <parameter>dst</parameter> is
|
<constant>SD_BUS_ERROR_NULL</constant>. Moreover, if <parameter>dst</parameter> is
|
||||||
<constant>NULL</constant> no operation is executed on it and resources held by <parameter>e</parameter>
|
<constant>NULL</constant> no operation is executed on it and resources held by <parameter>e</parameter>
|
||||||
are freed and reset. Returns a converted <varname>errno</varname>-like, non-positive error value.</para>
|
are freed and reset. Returns a converted <varname>errno</varname>-like, non-positive error value.</para>
|
||||||
|
|||||||
@ -461,17 +461,8 @@
|
|||||||
<listitem>
|
<listitem>
|
||||||
<para>Takes a boolean. If set to true, sets up the default route bound to the interface.
|
<para>Takes a boolean. If set to true, sets up the default route bound to the interface.
|
||||||
Defaults to false. This is useful when creating routes on point-to-point interfaces.
|
Defaults to false. This is useful when creating routes on point-to-point interfaces.
|
||||||
This is equivalent to e.g. the following,
|
This is equivalent to e.g. the following.
|
||||||
<programlisting>ip route add default dev veth99</programlisting>
|
<programlisting>ip route add default dev veth99</programlisting></para>
|
||||||
or,
|
|
||||||
<programlisting>[Route]
|
|
||||||
Gateway=0.0.0.0</programlisting></para>
|
|
||||||
<para>Currently, there are no way to specify e.g., the table for the route configured by
|
|
||||||
this setting. To configure the default route with such an additional property, please use
|
|
||||||
the following instead:
|
|
||||||
<programlisting>[Route]
|
|
||||||
Gateway=0.0.0.0
|
|
||||||
Table=1234</programlisting></para>
|
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
|
|||||||
@ -820,7 +820,7 @@ int wait_for_terminate_with_timeout(pid_t pid, usec_t timeout) {
|
|||||||
/* Assuming we woke due to the child exiting. */
|
/* Assuming we woke due to the child exiting. */
|
||||||
if (waitid(P_PID, pid, &status, WEXITED|WNOHANG) == 0) {
|
if (waitid(P_PID, pid, &status, WEXITED|WNOHANG) == 0) {
|
||||||
if (status.si_pid == pid) {
|
if (status.si_pid == pid) {
|
||||||
/* This is the correct child. */
|
/* This is the correct child.*/
|
||||||
if (status.si_code == CLD_EXITED)
|
if (status.si_code == CLD_EXITED)
|
||||||
return (status.si_status == 0) ? 0 : -EPROTO;
|
return (status.si_status == 0) ? 0 : -EPROTO;
|
||||||
else
|
else
|
||||||
|
|||||||
@ -188,7 +188,7 @@ int genuine_random_bytes(void *p, size_t n, RandomFlags flags) {
|
|||||||
* invocations or so. That's because we don't really care about the quality here. We
|
* invocations or so. That's because we don't really care about the quality here. We
|
||||||
* generally prefer using RDRAND if the caller allows us to, since this way we won't upset
|
* generally prefer using RDRAND if the caller allows us to, since this way we won't upset
|
||||||
* the kernel's random subsystem by accessing it before the pool is initialized (after all it
|
* the kernel's random subsystem by accessing it before the pool is initialized (after all it
|
||||||
* will kmsg log about every attempt to do so). */
|
* will kmsg log about every attempt to do so)..*/
|
||||||
for (;;) {
|
for (;;) {
|
||||||
unsigned long u;
|
unsigned long u;
|
||||||
size_t m;
|
size_t m;
|
||||||
|
|||||||
@ -107,7 +107,7 @@ int socket_address_verify(const SocketAddress *a, bool strict) {
|
|||||||
/* If there's no embedded NUL byte, then the size needs to match the whole
|
/* If there's no embedded NUL byte, then the size needs to match the whole
|
||||||
* structure or the structure with one extra NUL byte suffixed. (Yeah, Linux is awful,
|
* structure or the structure with one extra NUL byte suffixed. (Yeah, Linux is awful,
|
||||||
* and considers both equivalent: getsockname() even extends sockaddr_un beyond its
|
* and considers both equivalent: getsockname() even extends sockaddr_un beyond its
|
||||||
* size if the path is non NUL terminated.) */
|
* size if the path is non NUL terminated.)*/
|
||||||
if (!IN_SET(a->size, sizeof(a->sockaddr.un.sun_path), sizeof(a->sockaddr.un.sun_path)+1))
|
if (!IN_SET(a->size, sizeof(a->sockaddr.un.sun_path), sizeof(a->sockaddr.un.sun_path)+1))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
@ -1192,7 +1192,7 @@ int sockaddr_un_set_path(struct sockaddr_un *ret, const char *path) {
|
|||||||
/* Don't allow paths larger than the space in sockaddr_un. Note that we are a tiny bit more restrictive than
|
/* Don't allow paths larger than the space in sockaddr_un. Note that we are a tiny bit more restrictive than
|
||||||
* the kernel is: we insist on NUL termination (both for abstract namespace and regular file system socket
|
* the kernel is: we insist on NUL termination (both for abstract namespace and regular file system socket
|
||||||
* addresses!), which the kernel doesn't. We do this to reduce chance of incompatibility with other apps that
|
* addresses!), which the kernel doesn't. We do this to reduce chance of incompatibility with other apps that
|
||||||
* do not expect non-NUL terminated file system path. */
|
* do not expect non-NUL terminated file system path*/
|
||||||
if (l+1 > sizeof(ret->sun_path))
|
if (l+1 > sizeof(ret->sun_path))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
|||||||
@ -1030,7 +1030,7 @@ int parse_time(const char *t, usec_t *usec, usec_t default_unit) {
|
|||||||
|
|
||||||
s = extract_multiplier(p + strspn(p, WHITESPACE), &multiplier);
|
s = extract_multiplier(p + strspn(p, WHITESPACE), &multiplier);
|
||||||
if (s == p && *s != '\0')
|
if (s == p && *s != '\0')
|
||||||
/* Don't allow '12.34.56', but accept '12.34 .56' or '12.34s.56' */
|
/* Don't allow '12.34.56', but accept '12.34 .56' or '12.34s.56'*/
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
p = s;
|
p = s;
|
||||||
@ -1058,7 +1058,7 @@ int parse_time(const char *t, usec_t *usec, usec_t default_unit) {
|
|||||||
r += k;
|
r += k;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Don't allow "0.-0", "3.+1", "3. 1", "3.sec" or "3.hoge" */
|
/* Don't allow "0.-0", "3.+1", "3. 1", "3.sec" or "3.hoge"*/
|
||||||
if (b == e + 1)
|
if (b == e + 1)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
@ -1205,7 +1205,7 @@ int parse_nsec(const char *t, nsec_t *nsec) {
|
|||||||
|
|
||||||
s = extract_nsec_multiplier(p + strspn(p, WHITESPACE), &multiplier);
|
s = extract_nsec_multiplier(p + strspn(p, WHITESPACE), &multiplier);
|
||||||
if (s == p && *s != '\0')
|
if (s == p && *s != '\0')
|
||||||
/* Don't allow '12.34.56', but accept '12.34 .56' or '12.34s.56' */
|
/* Don't allow '12.34.56', but accept '12.34 .56' or '12.34s.56'*/
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
p = s;
|
p = s;
|
||||||
@ -1233,7 +1233,7 @@ int parse_nsec(const char *t, nsec_t *nsec) {
|
|||||||
r += k;
|
r += k;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Don't allow "0.-0", "3.+1", "3. 1", "3.sec" or "3.hoge" */
|
/* Don't allow "0.-0", "3.+1", "3. 1", "3.sec" or "3.hoge"*/
|
||||||
if (b == e + 1)
|
if (b == e + 1)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
@ -1438,7 +1438,7 @@ int get_timezone(char **ret) {
|
|||||||
|
|
||||||
r = readlink_malloc("/etc/localtime", &t);
|
r = readlink_malloc("/etc/localtime", &t);
|
||||||
if (r == -ENOENT) {
|
if (r == -ENOENT) {
|
||||||
/* If the symlink does not exist, assume "UTC", like glibc does */
|
/* If the symlink does not exist, assume "UTC", like glibc does*/
|
||||||
z = strdup("UTC");
|
z = strdup("UTC");
|
||||||
if (!z)
|
if (!z)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|||||||
@ -2450,7 +2450,7 @@ static int setup_exec_directory(
|
|||||||
|
|
||||||
/* Then, change the ownership of the whole tree, if necessary. When dynamic users are used we
|
/* Then, change the ownership of the whole tree, if necessary. When dynamic users are used we
|
||||||
* drop the suid/sgid bits, since we really don't want SUID/SGID files for dynamic UID/GID
|
* drop the suid/sgid bits, since we really don't want SUID/SGID files for dynamic UID/GID
|
||||||
* assignments to exist. */
|
* assignments to exist.*/
|
||||||
r = path_chown_recursive(pp ?: p, uid, gid, context->dynamic_user ? 01777 : 07777);
|
r = path_chown_recursive(pp ?: p, uid, gid, context->dynamic_user ? 01777 : 07777);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
goto fail;
|
goto fail;
|
||||||
@ -2886,7 +2886,7 @@ static int setup_credentials(
|
|||||||
* Yes it's nasty playing games with /dev/ and /dev/shm/ like this, since it does not exist
|
* Yes it's nasty playing games with /dev/ and /dev/shm/ like this, since it does not exist
|
||||||
* for this purpose, but there are few other candidates that work equally well for us, and
|
* for this purpose, but there are few other candidates that work equally well for us, and
|
||||||
* given that the we do this in a privately namespaced short-lived single-threaded process
|
* given that the we do this in a privately namespaced short-lived single-threaded process
|
||||||
* that no one else sees this should be OK to do. */
|
* that no one else sees this should be OK to do.*/
|
||||||
|
|
||||||
r = mount_nofollow_verbose(LOG_DEBUG, NULL, "/dev", NULL, MS_SLAVE|MS_REC, NULL); /* Turn off propagation from our namespace to host */
|
r = mount_nofollow_verbose(LOG_DEBUG, NULL, "/dev", NULL, MS_SLAVE|MS_REC, NULL); /* Turn off propagation from our namespace to host */
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
@ -3836,7 +3836,7 @@ static int exec_child(
|
|||||||
_cleanup_strv_free_ char **suggested_paths = NULL;
|
_cleanup_strv_free_ char **suggested_paths = NULL;
|
||||||
|
|
||||||
/* On top of that, make sure we bypass our own NSS module nss-systemd comprehensively for any NSS
|
/* On top of that, make sure we bypass our own NSS module nss-systemd comprehensively for any NSS
|
||||||
* checks, if DynamicUser=1 is used, as we shouldn't create a feedback loop with ourselves here. */
|
* checks, if DynamicUser=1 is used, as we shouldn't create a feedback loop with ourselves here.*/
|
||||||
if (putenv((char*) "SYSTEMD_NSS_DYNAMIC_BYPASS=1") != 0) {
|
if (putenv((char*) "SYSTEMD_NSS_DYNAMIC_BYPASS=1") != 0) {
|
||||||
*exit_status = EXIT_USER;
|
*exit_status = EXIT_USER;
|
||||||
return log_unit_error_errno(unit, errno, "Failed to update environment: %m");
|
return log_unit_error_errno(unit, errno, "Failed to update environment: %m");
|
||||||
|
|||||||
@ -3791,7 +3791,7 @@ int manager_reload(Manager *m) {
|
|||||||
|
|
||||||
/* Start by flushing out all jobs and units, all generated units, all runtime environments, all dynamic users
|
/* Start by flushing out all jobs and units, all generated units, all runtime environments, all dynamic users
|
||||||
* and everything else that is worth flushing out. We'll get it all back from the serialization — if we need
|
* and everything else that is worth flushing out. We'll get it all back from the serialization — if we need
|
||||||
* it. */
|
* it.*/
|
||||||
|
|
||||||
manager_clear_jobs_and_units(m);
|
manager_clear_jobs_and_units(m);
|
||||||
lookup_paths_flush_generator(&m->lookup_paths);
|
lookup_paths_flush_generator(&m->lookup_paths);
|
||||||
@ -3927,7 +3927,7 @@ static void manager_notify_finished(Manager *m) {
|
|||||||
|
|
||||||
if (dual_timestamp_is_set(&m->timestamps[MANAGER_TIMESTAMP_INITRD])) {
|
if (dual_timestamp_is_set(&m->timestamps[MANAGER_TIMESTAMP_INITRD])) {
|
||||||
|
|
||||||
/* The initrd case on bare-metal */
|
/* The initrd case on bare-metal*/
|
||||||
kernel_usec = m->timestamps[MANAGER_TIMESTAMP_INITRD].monotonic - m->timestamps[MANAGER_TIMESTAMP_KERNEL].monotonic;
|
kernel_usec = m->timestamps[MANAGER_TIMESTAMP_INITRD].monotonic - m->timestamps[MANAGER_TIMESTAMP_KERNEL].monotonic;
|
||||||
initrd_usec = m->timestamps[MANAGER_TIMESTAMP_USERSPACE].monotonic - m->timestamps[MANAGER_TIMESTAMP_INITRD].monotonic;
|
initrd_usec = m->timestamps[MANAGER_TIMESTAMP_USERSPACE].monotonic - m->timestamps[MANAGER_TIMESTAMP_INITRD].monotonic;
|
||||||
|
|
||||||
@ -3943,7 +3943,7 @@ static void manager_notify_finished(Manager *m) {
|
|||||||
format_timespan(userspace, sizeof(userspace), userspace_usec, USEC_PER_MSEC),
|
format_timespan(userspace, sizeof(userspace), userspace_usec, USEC_PER_MSEC),
|
||||||
format_timespan(sum, sizeof(sum), total_usec, USEC_PER_MSEC)));
|
format_timespan(sum, sizeof(sum), total_usec, USEC_PER_MSEC)));
|
||||||
} else {
|
} else {
|
||||||
/* The initrd-less case on bare-metal */
|
/* The initrd-less case on bare-metal*/
|
||||||
|
|
||||||
kernel_usec = m->timestamps[MANAGER_TIMESTAMP_USERSPACE].monotonic - m->timestamps[MANAGER_TIMESTAMP_KERNEL].monotonic;
|
kernel_usec = m->timestamps[MANAGER_TIMESTAMP_USERSPACE].monotonic - m->timestamps[MANAGER_TIMESTAMP_KERNEL].monotonic;
|
||||||
initrd_usec = 0;
|
initrd_usec = 0;
|
||||||
|
|||||||
@ -1584,7 +1584,7 @@ static int mount_setup_new_unit(
|
|||||||
|
|
||||||
/* This unit was generated because /proc/self/mountinfo reported it. Remember this, so that by the time we load
|
/* This unit was generated because /proc/self/mountinfo reported it. Remember this, so that by the time we load
|
||||||
* the unit file for it (and thus add in extra deps right after) we know what source to attributes the deps
|
* the unit file for it (and thus add in extra deps right after) we know what source to attributes the deps
|
||||||
* to. */
|
* to.*/
|
||||||
MOUNT(u)->from_proc_self_mountinfo = true;
|
MOUNT(u)->from_proc_self_mountinfo = true;
|
||||||
|
|
||||||
/* We have only allocated the stub now, let's enqueue this unit for loading now, so that everything else is
|
/* We have only allocated the stub now, let's enqueue this unit for loading now, so that everything else is
|
||||||
|
|||||||
@ -668,8 +668,7 @@ static int service_setup_bus_name(Service *s) {
|
|||||||
|
|
||||||
assert(s);
|
assert(s);
|
||||||
|
|
||||||
/* If s->bus_name is not set, then the unit will be refused by service_verify() later. */
|
if (s->type != SERVICE_DBUS)
|
||||||
if (s->type != SERVICE_DBUS || !s->bus_name)
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
r = unit_add_dependency_by_name(UNIT(s), UNIT_REQUIRES, SPECIAL_DBUS_SOCKET, true, UNIT_DEPENDENCY_FILE);
|
r = unit_add_dependency_by_name(UNIT(s), UNIT_REQUIRES, SPECIAL_DBUS_SOCKET, true, UNIT_DEPENDENCY_FILE);
|
||||||
|
|||||||
@ -2075,7 +2075,7 @@ bool unit_is_bound_by_inactive(Unit *u, Unit **ret_culprit) {
|
|||||||
assert(u);
|
assert(u);
|
||||||
|
|
||||||
/* Checks whether this unit is bound to another unit that is inactive, i.e. whether we should stop
|
/* Checks whether this unit is bound to another unit that is inactive, i.e. whether we should stop
|
||||||
* because the other unit is down. */
|
* because the other unit is down.*/
|
||||||
|
|
||||||
if (unit_active_state(u) != UNIT_ACTIVE || u->job) {
|
if (unit_active_state(u) != UNIT_ACTIVE || u->job) {
|
||||||
/* Don't clean up while the unit is transitioning or is even inactive. */
|
/* Don't clean up while the unit is transitioning or is even inactive. */
|
||||||
|
|||||||
@ -287,7 +287,7 @@ static int module_callback(Dwfl_Module *mod, void **userdata, const char *name,
|
|||||||
GElf_Phdr mem, *program_header;
|
GElf_Phdr mem, *program_header;
|
||||||
Elf_Data *data;
|
Elf_Data *data;
|
||||||
|
|
||||||
/* The core file stores the ELF files in the PT_LOAD segment. */
|
/* The core file stores the ELF files in the PT_LOAD segment .*/
|
||||||
program_header = gelf_getphdr(c->elf, i, &mem);
|
program_header = gelf_getphdr(c->elf, i, &mem);
|
||||||
if (!program_header || program_header->p_type != PT_LOAD)
|
if (!program_header || program_header->p_type != PT_LOAD)
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@ -1109,7 +1109,7 @@ static int attach_luks_or_plain_or_bitlk_by_tpm2(
|
|||||||
&keyslot,
|
&keyslot,
|
||||||
&token);
|
&token);
|
||||||
if (r == -ENXIO)
|
if (r == -ENXIO)
|
||||||
/* No further TPM2 tokens found in the LUKS2 header. */
|
/* No further TPM2 tokens found in the LUKS2 header.*/
|
||||||
return log_debug_errno(SYNTHETIC_ERRNO(EAGAIN),
|
return log_debug_errno(SYNTHETIC_ERRNO(EAGAIN),
|
||||||
found_some
|
found_some
|
||||||
? "No TPM2 metadata matching the current system state found in LUKS2 header, falling back to traditional unlocking."
|
? "No TPM2 metadata matching the current system state found in LUKS2 header, falling back to traditional unlocking."
|
||||||
|
|||||||
@ -84,7 +84,7 @@ struct Home {
|
|||||||
/* Note that the 'state' field is only set to a state while we are doing something (i.e. activating,
|
/* Note that the 'state' field is only set to a state while we are doing something (i.e. activating,
|
||||||
* deactivating, creating, removing, and such), or when the home is an "unfixated" one. When we are
|
* deactivating, creating, removing, and such), or when the home is an "unfixated" one. When we are
|
||||||
* done with an operation we invalidate the state. This is hint for home_get_state() to check the
|
* done with an operation we invalidate the state. This is hint for home_get_state() to check the
|
||||||
* state on request as needed from the mount table and similar. */
|
* state on request as needed from the mount table and similar.*/
|
||||||
HomeState state;
|
HomeState state;
|
||||||
int signed_locally; /* signed only by us */
|
int signed_locally; /* signed only by us */
|
||||||
|
|
||||||
|
|||||||
@ -40,7 +40,7 @@
|
|||||||
|
|
||||||
/* Round down to the nearest 1K size. Note that Linux generally handles block devices with 512 blocks only,
|
/* Round down to the nearest 1K size. Note that Linux generally handles block devices with 512 blocks only,
|
||||||
* but actually doesn't accept uneven numbers in many cases. To avoid any confusion around this we'll
|
* but actually doesn't accept uneven numbers in many cases. To avoid any confusion around this we'll
|
||||||
* strictly round disk sizes down to the next 1K boundary. */
|
* strictly round disk sizes down to the next 1K boundary.*/
|
||||||
#define DISK_SIZE_ROUND_DOWN(x) ((x) & ~UINT64_C(1023))
|
#define DISK_SIZE_ROUND_DOWN(x) ((x) & ~UINT64_C(1023))
|
||||||
|
|
||||||
int run_mark_dirty(int fd, bool b) {
|
int run_mark_dirty(int fd, bool b) {
|
||||||
|
|||||||
@ -199,7 +199,7 @@ int user_record_reconcile(
|
|||||||
if (!user_record_compatible(host, embedded))
|
if (!user_record_compatible(host, embedded))
|
||||||
return -EREMCHG;
|
return -EREMCHG;
|
||||||
|
|
||||||
/* Embedded identities may not contain secrets or binding info */
|
/* Embedded identities may not contain secrets or binding info*/
|
||||||
if ((embedded->mask & (USER_RECORD_SECRET|USER_RECORD_BINDING)) != 0)
|
if ((embedded->mask & (USER_RECORD_SECRET|USER_RECORD_BINDING)) != 0)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
|||||||
@ -242,7 +242,7 @@ void server_space_usage_message(Server *s, JournalStorage *storage) {
|
|||||||
|
|
||||||
static bool uid_for_system_journal(uid_t uid) {
|
static bool uid_for_system_journal(uid_t uid) {
|
||||||
|
|
||||||
/* Returns true if the specified UID shall get its data stored in the system journal. */
|
/* Returns true if the specified UID shall get its data stored in the system journal*/
|
||||||
|
|
||||||
return uid_is_system(uid) || uid_is_dynamic(uid) || uid == UID_NOBODY;
|
return uid_is_system(uid) || uid_is_dynamic(uid) || uid == UID_NOBODY;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1526,7 +1526,7 @@ int bus_set_address_machine(sd_bus *b, bool user, const char *machine) {
|
|||||||
* since the --user socket path depends on $XDG_RUNTIME_DIR which is set via PAM. Thus, to be
|
* since the --user socket path depends on $XDG_RUNTIME_DIR which is set via PAM. Thus, to be
|
||||||
* able to connect, we need to have a PAM session. Our way out? We use systemd-run to get
|
* able to connect, we need to have a PAM session. Our way out? We use systemd-run to get
|
||||||
* into the container and acquire a PAM session there, and then invoke systemd-stdio-bridge
|
* into the container and acquire a PAM session there, and then invoke systemd-stdio-bridge
|
||||||
* in it, which propagates the bus transport to us. */
|
* in it, which propagates the bus transport to us.*/
|
||||||
|
|
||||||
if (rhs) {
|
if (rhs) {
|
||||||
if (rhs > machine)
|
if (rhs > machine)
|
||||||
|
|||||||
@ -2854,7 +2854,7 @@ int journal_file_compare_locations(JournalFile *af, JournalFile *bf) {
|
|||||||
assert(bf->location_type == LOCATION_SEEK);
|
assert(bf->location_type == LOCATION_SEEK);
|
||||||
|
|
||||||
/* If contents, timestamps and seqnum match, these entries are
|
/* If contents, timestamps and seqnum match, these entries are
|
||||||
* identical. */
|
* identical*/
|
||||||
if (sd_id128_equal(af->current_boot_id, bf->current_boot_id) &&
|
if (sd_id128_equal(af->current_boot_id, bf->current_boot_id) &&
|
||||||
af->current_monotonic == bf->current_monotonic &&
|
af->current_monotonic == bf->current_monotonic &&
|
||||||
af->current_realtime == bf->current_realtime &&
|
af->current_realtime == bf->current_realtime &&
|
||||||
|
|||||||
@ -167,7 +167,7 @@ static int do_umount(const char *user) {
|
|||||||
int r;
|
int r;
|
||||||
|
|
||||||
/* The user may be already removed. So, first try to parse the string by parse_uid(),
|
/* The user may be already removed. So, first try to parse the string by parse_uid(),
|
||||||
* and if it fails, fall back to get_user_creds(). */
|
* and if it fails, fall back to get_user_creds().*/
|
||||||
if (parse_uid(user, &uid) < 0) {
|
if (parse_uid(user, &uid) < 0) {
|
||||||
r = get_user_creds(&user, &uid, NULL, NULL, NULL, 0);
|
r = get_user_creds(&user, &uid, NULL, NULL, NULL, 0);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
|
|||||||
@ -2126,7 +2126,7 @@ static int link_update_name(Link *link, sd_netlink_message *message) {
|
|||||||
|
|
||||||
r = sd_netlink_message_read_string(message, IFLA_IFNAME, &ifname);
|
r = sd_netlink_message_read_string(message, IFLA_IFNAME, &ifname);
|
||||||
if (r == -ENODATA)
|
if (r == -ENODATA)
|
||||||
/* Hmm?? But ok. */
|
/* Hmm?? But ok.*/
|
||||||
return 0;
|
return 0;
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_link_debug_errno(link, r, "Failed to read interface name in RTM_NEWLINK message: %m");
|
return log_link_debug_errno(link, r, "Failed to read interface name in RTM_NEWLINK message: %m");
|
||||||
|
|||||||
@ -41,7 +41,7 @@ static bool link_lldp_rx_enabled(Link *link) {
|
|||||||
|
|
||||||
/* LLDP should be handled on bridge and bond slaves as those have a direct connection to their peers,
|
/* LLDP should be handled on bridge and bond slaves as those have a direct connection to their peers,
|
||||||
* not on the bridge/bond master. Linux doesn't even (by default) forward lldp packets to the bridge
|
* not on the bridge/bond master. Linux doesn't even (by default) forward lldp packets to the bridge
|
||||||
* master. */
|
* master.*/
|
||||||
if (link->kind && STR_IN_SET(link->kind, "bridge", "bond"))
|
if (link->kind && STR_IN_SET(link->kind, "bridge", "bond"))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|||||||
@ -85,7 +85,7 @@ struct Manager {
|
|||||||
Hashmap *route_table_numbers_by_name;
|
Hashmap *route_table_numbers_by_name;
|
||||||
Hashmap *route_table_names_by_number;
|
Hashmap *route_table_names_by_number;
|
||||||
|
|
||||||
/* For link speed meter */
|
/* For link speed meter*/
|
||||||
bool use_speed_meter;
|
bool use_speed_meter;
|
||||||
sd_event_source *speed_meter_event_source;
|
sd_event_source *speed_meter_event_source;
|
||||||
usec_t speed_meter_interval_usec;
|
usec_t speed_meter_interval_usec;
|
||||||
|
|||||||
@ -160,7 +160,7 @@ struct Network {
|
|||||||
OrderedHashmap *dhcp_client_send_options;
|
OrderedHashmap *dhcp_client_send_options;
|
||||||
OrderedHashmap *dhcp_client_send_vendor_options;
|
OrderedHashmap *dhcp_client_send_vendor_options;
|
||||||
|
|
||||||
/* DHCPv6 Client support */
|
/* DHCPv6 Client support*/
|
||||||
bool dhcp6_use_address;
|
bool dhcp6_use_address;
|
||||||
bool dhcp6_use_dns;
|
bool dhcp6_use_dns;
|
||||||
bool dhcp6_use_dns_set;
|
bool dhcp6_use_dns_set;
|
||||||
|
|||||||
@ -390,7 +390,7 @@ static int link_configure(
|
|||||||
return log_link_debug_errno(link, r, "Could not open IFLA_AF_SPEC container: %m");
|
return log_link_debug_errno(link, r, "Could not open IFLA_AF_SPEC container: %m");
|
||||||
|
|
||||||
if (!link->network->bridge) {
|
if (!link->network->bridge) {
|
||||||
/* master needs BRIDGE_FLAGS_SELF flag */
|
/* master needs BRIDGE_FLAGS_SELF flag*/
|
||||||
r = sd_netlink_message_append_u16(req, IFLA_BRIDGE_FLAGS, BRIDGE_FLAGS_SELF);
|
r = sd_netlink_message_append_u16(req, IFLA_BRIDGE_FLAGS, BRIDGE_FLAGS_SELF);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_link_debug_errno(link, r, "Could not append IFLA_BRIDGE_FLAGS attribute: %m");
|
return log_link_debug_errno(link, r, "Could not append IFLA_BRIDGE_FLAGS attribute: %m");
|
||||||
|
|||||||
@ -3688,7 +3688,7 @@ static int outer_child(
|
|||||||
* --volatile=) without this interfering with our ability to access files such as
|
* --volatile=) without this interfering with our ability to access files such as
|
||||||
* /etc/localtime to copy into the container. Note that we use a fixed place for this
|
* /etc/localtime to copy into the container. Note that we use a fixed place for this
|
||||||
* (instead of a temporary directory, since we are living in our own mount namspace here
|
* (instead of a temporary directory, since we are living in our own mount namspace here
|
||||||
* already, and thus don't need to be afraid of colliding with anyone else's mounts). */
|
* already, and thus don't need to be afraid of colliding with anyone else's mounts).*/
|
||||||
(void) mkdir_p("/run/systemd/nspawn-root", 0755);
|
(void) mkdir_p("/run/systemd/nspawn-root", 0755);
|
||||||
|
|
||||||
r = mount_nofollow_verbose(LOG_ERR, "/", "/run/systemd/nspawn-root", NULL, MS_BIND|MS_REC, NULL);
|
r = mount_nofollow_verbose(LOG_ERR, "/", "/run/systemd/nspawn-root", NULL, MS_BIND|MS_REC, NULL);
|
||||||
|
|||||||
@ -4952,7 +4952,7 @@ static int run(int argc, char *argv[]) {
|
|||||||
r = context_open_copy_block_paths(
|
r = context_open_copy_block_paths(
|
||||||
context,
|
context,
|
||||||
arg_root,
|
arg_root,
|
||||||
loop_device ? loop_device->devno : /* if --image= is specified, only allow partitions on the loopback device */
|
loop_device ? loop_device->devno : /* if --image= is specified, only allow partitions on the loopback device*/
|
||||||
arg_root && !arg_image ? 0 : /* if --root= is specified, don't accept any block device */
|
arg_root && !arg_image ? 0 : /* if --root= is specified, don't accept any block device */
|
||||||
(dev_t) -1); /* if neither is specified, make no restrictions */
|
(dev_t) -1); /* if neither is specified, make no restrictions */
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
|
|||||||
@ -1102,7 +1102,7 @@ int dns_query_process_cname_one(DnsQuery *q) {
|
|||||||
* Hence we first check of the answers we collected are sufficient to answer all our questions
|
* Hence we first check of the answers we collected are sufficient to answer all our questions
|
||||||
* directly. If one question wasn't answered we go on, waiting for more replies. However, if there's
|
* directly. If one question wasn't answered we go on, waiting for more replies. However, if there's
|
||||||
* a CNAME/DNAME response we use it, and redirect to it, regardless if it was a response to the A or
|
* a CNAME/DNAME response we use it, and redirect to it, regardless if it was a response to the A or
|
||||||
* the AAAA query. */
|
* the AAAA query.*/
|
||||||
|
|
||||||
DNS_QUESTION_FOREACH(k, question) {
|
DNS_QUESTION_FOREACH(k, question) {
|
||||||
bool match = false;
|
bool match = false;
|
||||||
@ -1276,12 +1276,12 @@ bool dns_query_fully_authoritative(DnsQuery *q) {
|
|||||||
|
|
||||||
/* We are authoritative for everything synthetic (except if a previous CNAME/DNAME) wasn't
|
/* We are authoritative for everything synthetic (except if a previous CNAME/DNAME) wasn't
|
||||||
* synthetic. (Note: SD_RESOLVED_SYNTHETIC is reset on each CNAME/DNAME, hence the explicit check for
|
* synthetic. (Note: SD_RESOLVED_SYNTHETIC is reset on each CNAME/DNAME, hence the explicit check for
|
||||||
* previous synthetic DNAME/CNAME redirections.) */
|
* previous synthetic DNAME/CNAME redirections.)*/
|
||||||
if ((q->answer_query_flags & SD_RESOLVED_SYNTHETIC) && !q->previous_redirect_non_synthetic)
|
if ((q->answer_query_flags & SD_RESOLVED_SYNTHETIC) && !q->previous_redirect_non_synthetic)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
/* We are also authoritative for everything coming only from the trust anchor and the local
|
/* We are also authoritative for everything coming only from the trust anchor and the local
|
||||||
* zones. (Note: the SD_RESOLVED_FROM_xyz flags we merge on each redirect, hence no need to
|
* zones. (Note: the SD_RESOLVED_FROM_xyz flags we merge on each redirect, hence no need to
|
||||||
* explicitly check previous redirects here.) */
|
* explicitly check previous redirects here.)*/
|
||||||
return (q->answer_query_flags & SD_RESOLVED_FROM_MASK & ~(SD_RESOLVED_FROM_TRUST_ANCHOR | SD_RESOLVED_FROM_ZONE)) == 0;
|
return (q->answer_query_flags & SD_RESOLVED_FROM_MASK & ~(SD_RESOLVED_FROM_TRUST_ANCHOR | SD_RESOLVED_FROM_ZONE)) == 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2136,7 +2136,7 @@ int table_print(Table *t, FILE *f) {
|
|||||||
/* Never give more than requested. If we hit a column like this, there's more
|
/* Never give more than requested. If we hit a column like this, there's more
|
||||||
* space to allocate to other columns which means we need to restart the
|
* space to allocate to other columns which means we need to restart the
|
||||||
* iteration. However, if we hit a column like this, let's assign it the space
|
* iteration. However, if we hit a column like this, let's assign it the space
|
||||||
* it wanted for good early. */
|
* it wanted for good early.*/
|
||||||
|
|
||||||
w = requested_width[j];
|
w = requested_width[j];
|
||||||
restart = true;
|
restart = true;
|
||||||
|
|||||||
@ -560,7 +560,7 @@ static int umount_with_timeout(MountPoint *m, int umount_log_level) {
|
|||||||
* rather than blocking indefinitely. If the filesysten is
|
* rather than blocking indefinitely. If the filesysten is
|
||||||
* "busy", this may allow processes to die, thus making the
|
* "busy", this may allow processes to die, thus making the
|
||||||
* filesystem less busy so the unmount might succeed (rather
|
* filesystem less busy so the unmount might succeed (rather
|
||||||
* than return EBUSY). */
|
* then return EBUSY).*/
|
||||||
r = umount2(m->path, MNT_FORCE);
|
r = umount2(m->path, MNT_FORCE);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
log_full_errno(umount_log_level, errno, "Failed to unmount %s: %m", m->path);
|
log_full_errno(umount_log_level, errno, "Failed to unmount %s: %m", m->path);
|
||||||
|
|||||||
@ -281,7 +281,7 @@ static int make_backup(const char *target, const char *x) {
|
|||||||
if (rename(dst_tmp, backup) < 0)
|
if (rename(dst_tmp, backup) < 0)
|
||||||
return errno;
|
return errno;
|
||||||
|
|
||||||
dst_tmp = mfree(dst_tmp); /* disable the unlink_and_freep() hook now that the file has been renamed */
|
dst_tmp = mfree(dst_tmp); /* disable the unlink_and_freep() hook now that the file has been renamed*/
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -827,7 +827,7 @@ static void test_path_is_encrypted(void) {
|
|||||||
int booted = sd_booted(); /* If this is run in build environments such as koji, /dev might be a
|
int booted = sd_booted(); /* If this is run in build environments such as koji, /dev might be a
|
||||||
* reguar fs. Don't assume too much if not running under systemd. */
|
* reguar fs. Don't assume too much if not running under systemd. */
|
||||||
|
|
||||||
log_info("/* %s (sd_booted=%d) */", __func__, booted);
|
log_info("/* %s (sd_booted=%d)*/", __func__, booted);
|
||||||
|
|
||||||
test_path_is_encrypted_one("/home", -1);
|
test_path_is_encrypted_one("/home", -1);
|
||||||
test_path_is_encrypted_one("/var", -1);
|
test_path_is_encrypted_one("/var", -1);
|
||||||
|
|||||||
@ -36,7 +36,7 @@ static void test_make_salt(void) {
|
|||||||
static int test_hash_password(void) {
|
static int test_hash_password(void) {
|
||||||
log_info("/* %s */", __func__);
|
log_info("/* %s */", __func__);
|
||||||
|
|
||||||
/* As a warm-up exercise, check if we can hash passwords. */
|
/* As a warmup exercise, check if we can hash passwords. */
|
||||||
|
|
||||||
bool have_sane_hash = false;
|
bool have_sane_hash = false;
|
||||||
const char *hash;
|
const char *hash;
|
||||||
|
|||||||
@ -913,7 +913,7 @@ static void test_filename_is_valid(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void test_path_is_valid_and_safe_one(const char *p, bool ret) {
|
static void test_path_is_valid_and_safe_one(const char *p, bool ret) {
|
||||||
log_debug("/* %s(\"%s\") */", __func__, strnull(p));
|
log_debug("/* %s(\"%s\")*/", __func__, strnull(p));
|
||||||
|
|
||||||
assert_se(path_is_valid(p) == ret);
|
assert_se(path_is_valid(p) == ret);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
|||||||
@ -23,7 +23,7 @@ static void test_read_mem_pressure(void) {
|
|||||||
assert_se(write_string_file(path, "herpdederp\n", WRITE_STRING_FILE_CREATE) == 0);
|
assert_se(write_string_file(path, "herpdederp\n", WRITE_STRING_FILE_CREATE) == 0);
|
||||||
assert_se(read_resource_pressure(path, PRESSURE_TYPE_SOME, &rp) < 0);
|
assert_se(read_resource_pressure(path, PRESSURE_TYPE_SOME, &rp) < 0);
|
||||||
|
|
||||||
/* Pressure file with some invalid values */
|
/* Pressure file with some invalid values*/
|
||||||
assert_se(write_string_file(path, "some avg10=0.22=55 avg60=0.17=8 avg300=1.11=00 total=58761459\n"
|
assert_se(write_string_file(path, "some avg10=0.22=55 avg60=0.17=8 avg300=1.11=00 total=58761459\n"
|
||||||
"full avg10=0.23=55 avg60=0.16=8 avg300=1.08=00 total=58464525", WRITE_STRING_FILE_CREATE) == 0);
|
"full avg10=0.23=55 avg60=0.16=8 avg300=1.08=00 total=58464525", WRITE_STRING_FILE_CREATE) == 0);
|
||||||
assert_se(read_resource_pressure(path, PRESSURE_TYPE_SOME, &rp) < 0);
|
assert_se(read_resource_pressure(path, PRESSURE_TYPE_SOME, &rp) < 0);
|
||||||
|
|||||||
@ -35,7 +35,7 @@ struct range {
|
|||||||
unsigned end;
|
unsigned end;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* key code ranges above BTN_MISC (start is inclusive, stop is exclusive) */
|
/* key code ranges above BTN_MISC (start is inclusive, stop is exclusive)*/
|
||||||
static const struct range high_key_blocks[] = {
|
static const struct range high_key_blocks[] = {
|
||||||
{ KEY_OK, BTN_DPAD_UP },
|
{ KEY_OK, BTN_DPAD_UP },
|
||||||
{ KEY_ALS_TOGGLE, BTN_TRIGGER_HAPPY }
|
{ KEY_ALS_TOGGLE, BTN_TRIGGER_HAPPY }
|
||||||
|
|||||||
@ -282,7 +282,7 @@ static sd_device *handle_scsi_ata(sd_device *parent, char **path, char **compat_
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (bus != 0)
|
if (bus != 0)
|
||||||
/* Devices behind port multiplier have a bus != 0 */
|
/* Devices behind port multiplier have a bus != 0*/
|
||||||
path_prepend(path, "ata-%s.%u.0", port_no, bus);
|
path_prepend(path, "ata-%s.%u.0", port_no, bus);
|
||||||
else
|
else
|
||||||
/* Master/slave are distinguished by target id */
|
/* Master/slave are distinguished by target id */
|
||||||
|
|||||||
@ -560,7 +560,7 @@ static int worker_main(Manager *_manager, sd_device_monitor *monitor, sd_device
|
|||||||
if (r < 0)
|
if (r < 0)
|
||||||
log_debug_errno(r, "Failed to reset OOM score, ignoring: %m");
|
log_debug_errno(r, "Failed to reset OOM score, ignoring: %m");
|
||||||
|
|
||||||
/* Clear unnecessary data in Manager object. */
|
/* Clear unnecessary data in Manager object.*/
|
||||||
manager_clear_for_worker(manager);
|
manager_clear_for_worker(manager);
|
||||||
|
|
||||||
r = sd_event_new(&manager->event);
|
r = sd_event_new(&manager->event);
|
||||||
|
|||||||
@ -65,10 +65,6 @@ test -f /run/dbus1
|
|||||||
systemd-run --unit=dbus2.service --wait -p StandardOutput=tty -p StandardError=tty -p Type=dbus -p BusName=systemd.test.ExecStopPost -p ExecStopPost='/bin/touch /run/dbus2' true
|
systemd-run --unit=dbus2.service --wait -p StandardOutput=tty -p StandardError=tty -p Type=dbus -p BusName=systemd.test.ExecStopPost -p ExecStopPost='/bin/touch /run/dbus2' true
|
||||||
test -f /run/dbus2
|
test -f /run/dbus2
|
||||||
|
|
||||||
# https://github.com/systemd/systemd/issues/19920
|
|
||||||
systemd-run --unit=dbus3.service --wait -p StandardOutput=tty -p StandardError=tty -p Type=dbus -p ExecStopPost='/bin/touch /run/dbus3' true \
|
|
||||||
&& { echo 'unexpected success'; exit 1; }
|
|
||||||
|
|
||||||
cat >/tmp/notify1.sh <<EOF
|
cat >/tmp/notify1.sh <<EOF
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Dispatch Password Requests to Console Directory Watch
|
Description=Dispatch Password Requests to Console Directory Watch
|
||||||
Documentation=man:systemd-ask-password-console.path(8)
|
Documentation=man:systemd-ask-password-console.service(8)
|
||||||
DefaultDependencies=no
|
DefaultDependencies=no
|
||||||
Conflicts=shutdown.target emergency.service
|
Conflicts=shutdown.target emergency.service
|
||||||
After=plymouth-start.service
|
After=plymouth-start.service
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Forward Password Requests to Wall Directory Watch
|
Description=Forward Password Requests to Wall Directory Watch
|
||||||
Documentation=man:systemd-ask-password-wall.path(8)
|
Documentation=man:systemd-ask-password-console.service(8)
|
||||||
DefaultDependencies=no
|
DefaultDependencies=no
|
||||||
Conflicts=shutdown.target emergency.service
|
Conflicts=shutdown.target emergency.service
|
||||||
Before=paths.target shutdown.target cryptsetup.target
|
Before=paths.target shutdown.target cryptsetup.target
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Forward Password Requests to Wall
|
Description=Forward Password Requests to Wall
|
||||||
Documentation=man:systemd-ask-password-wall.service(8)
|
Documentation=man:systemd-ask-password-console.service(8)
|
||||||
After=systemd-user-sessions.service
|
After=systemd-user-sessions.service
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Hibernate
|
Description=Hibernate
|
||||||
Documentation=man:systemd-hibernate.service(8)
|
Documentation=man:systemd-suspend.service(8)
|
||||||
DefaultDependencies=no
|
DefaultDependencies=no
|
||||||
Requires=sleep.target
|
Requires=sleep.target
|
||||||
After=sleep.target
|
After=sleep.target
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Hybrid Suspend+Hibernate
|
Description=Hybrid Suspend+Hibernate
|
||||||
Documentation=man:systemd-hybrid-sleep.service(8)
|
Documentation=man:systemd-suspend.service(8)
|
||||||
DefaultDependencies=no
|
DefaultDependencies=no
|
||||||
Requires=sleep.target
|
Requires=sleep.target
|
||||||
After=sleep.target
|
After=sleep.target
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=initctl Compatibility Named Pipe
|
Description=initctl Compatibility Named Pipe
|
||||||
Documentation=man:systemd-initctl.socket(8)
|
Documentation=man:systemd-initctl.service(8)
|
||||||
DefaultDependencies=no
|
DefaultDependencies=no
|
||||||
Before=sockets.target
|
Before=sockets.target
|
||||||
|
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Reboot via kexec
|
Description=Reboot via kexec
|
||||||
Documentation=man:systemd-kexec.service(8)
|
Documentation=man:systemd-halt.service(8)
|
||||||
DefaultDependencies=no
|
DefaultDependencies=no
|
||||||
Requires=shutdown.target umount.target final.target
|
Requires=shutdown.target umount.target final.target
|
||||||
After=shutdown.target umount.target final.target
|
After=shutdown.target umount.target final.target
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Power-Off
|
Description=Power-Off
|
||||||
Documentation=man:systemd-poweroff.service(8)
|
Documentation=man:systemd-halt.service(8)
|
||||||
DefaultDependencies=no
|
DefaultDependencies=no
|
||||||
Requires=shutdown.target umount.target final.target
|
Requires=shutdown.target umount.target final.target
|
||||||
After=shutdown.target umount.target final.target
|
After=shutdown.target umount.target final.target
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Reboot
|
Description=Reboot
|
||||||
Documentation=man:systemd-reboot.service(8)
|
Documentation=man:systemd-halt.service(8)
|
||||||
DefaultDependencies=no
|
DefaultDependencies=no
|
||||||
Requires=shutdown.target umount.target final.target
|
Requires=shutdown.target umount.target final.target
|
||||||
After=shutdown.target umount.target final.target
|
After=shutdown.target umount.target final.target
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Suspend; Hibernate if not used for a period of time
|
Description=Suspend; Hibernate if not used for a period of time
|
||||||
Documentation=man:systemd-suspend-then-hibernate.service(8)
|
Documentation=man:systemd-suspend.service(8)
|
||||||
DefaultDependencies=no
|
DefaultDependencies=no
|
||||||
Requires=sleep.target
|
Requires=sleep.target
|
||||||
After=sleep.target
|
After=sleep.target
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=udev Control Socket
|
Description=udev Control Socket
|
||||||
Documentation=man:systemd-udevd-control.socket(8) man:udev(7)
|
Documentation=man:systemd-udevd.service(8) man:udev(7)
|
||||||
DefaultDependencies=no
|
DefaultDependencies=no
|
||||||
Before=sockets.target
|
Before=sockets.target
|
||||||
ConditionPathIsReadWrite=/sys
|
ConditionPathIsReadWrite=/sys
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=udev Kernel Socket
|
Description=udev Kernel Socket
|
||||||
Documentation=man:systemd-udevd-kernel.socket(8) man:udev(7)
|
Documentation=man:systemd-udevd.service(8) man:udev(7)
|
||||||
DefaultDependencies=no
|
DefaultDependencies=no
|
||||||
Before=sockets.target
|
Before=sockets.target
|
||||||
ConditionPathIsReadWrite=/sys
|
ConditionPathIsReadWrite=/sys
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Update UTMP about System Runlevel Changes
|
Description=Update UTMP about System Runlevel Changes
|
||||||
Documentation=man:systemd-update-utmp-runlevel.service(8) man:utmp(5)
|
Documentation=man:systemd-update-utmp.service(8) man:utmp(5)
|
||||||
DefaultDependencies=no
|
DefaultDependencies=no
|
||||||
RequiresMountsFor=/var/log/wtmp
|
RequiresMountsFor=/var/log/wtmp
|
||||||
Conflicts=shutdown.target
|
Conflicts=shutdown.target
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user