Compare commits

..

No commits in common. "f5c38922666a4b5a2012edb67837238a48c9e4ba" and "1a92b3f2ecfc143155e5fafee49fe5bf345f46ee" have entirely different histories.

15 changed files with 78 additions and 85 deletions

View File

@ -348,7 +348,7 @@ Most timer unit settings are available to transient units.
✓ OnCalendar= ✓ OnCalendar=
✓ OnClockChange= ✓ OnClockChange=
✓ OnStartupSec= ✓ OnStartupSec=
✓ OnTimezoneChange= ✓ OnTimezoneChange
✓ OnUnitActiveSec= ✓ OnUnitActiveSec=
✓ OnUnitInactiveSec= ✓ OnUnitInactiveSec=
✓ Persistent= ✓ Persistent=

View File

@ -73,17 +73,6 @@
</listitem> </listitem>
</varlistentry> </varlistentry>
<!-- This is not documented on purpose, because it is not clear if $NO_COLOR will become supported
widely enough. So let's provide support, but without advertising this.
<varlistentry id='no-color'>
<term><varname>$NO_COLOR</varname></term>
<listitem><para>If set (to any value), and <varname>$SYSTEMD_COLORS</varname> is not set, equivalent to
<option>SYSTEMD_COLORS=0</option>. See <ulink url="https://no-color.org/">no-color.org</ulink>.</para>
</listitem>
</varlistentry>
-->
<varlistentry id='urlify'> <varlistentry id='urlify'>
<term><varname>$SYSTEMD_URLIFY</varname></term> <term><varname>$SYSTEMD_URLIFY</varname></term>

View File

@ -2161,8 +2161,6 @@ Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output err
<xi:include href="less-variables.xml" xpointer="pager"/> <xi:include href="less-variables.xml" xpointer="pager"/>
<xi:include href="less-variables.xml" xpointer="less"/> <xi:include href="less-variables.xml" xpointer="less"/>
<xi:include href="less-variables.xml" xpointer="lesscharset"/> <xi:include href="less-variables.xml" xpointer="lesscharset"/>
<xi:include href="less-variables.xml" xpointer="colors"/>
<xi:include href="less-variables.xml" xpointer="urlify"/>
</refsect1> </refsect1>
<refsect1> <refsect1>

View File

@ -1263,12 +1263,9 @@
<varlistentry> <varlistentry>
<term><varname>Scope=</varname></term> <term><varname>Scope=</varname></term>
<listitem> <listitem>
<para>The scope of the route, which can be <literal>global</literal>, <literal>site</literal>, <para>The scope of the route, which can be <literal>global</literal>,
<literal>link</literal>, <literal>host</literal>, or <literal>nowhere</literal>. For IPv4 route, <literal>link</literal> or <literal>host</literal>. Defaults to
defaults to <literal>host</literal> if <varname>Type=</varname> is <literal>local</literal> <literal>global</literal>.</para>
or <literal>nat</literal>, and <literal>link</literal> if <varname>Type=</varname> is
<literal>broadcast</literal>, <literal>multicast</literal>, or <literal>anycast</literal>.
In other cases, defaults to <literal>global</literal>.</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
@ -1280,14 +1277,10 @@
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><varname>Table=</varname></term> <term><varname>Table=<replaceable>num</replaceable></varname></term>
<listitem> <listitem>
<para>The table identifier for the route. Takes <literal>default</literal>, <para>The table identifier for the route (a number between 1 and 4294967295, or 0 to unset).
<literal>main</literal>, <literal>local</literal> or a number between 1 and 4294967295.
The table can be retrieved using <command>ip route show table <replaceable>num</replaceable></command>. The table can be retrieved using <command>ip route show table <replaceable>num</replaceable></command>.
If unset and <varname>Type=</varname> is <literal>local</literal>, <literal>broadcast</literal>,
<literal>anycast</literal>, or <literal>nat</literal>, then <literal>local</literal> is used.
In other cases, defaults to <literal>main</literal>.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>

View File

@ -32,32 +32,58 @@
<refsect1> <refsect1>
<title>Description</title> <title>Description</title>
<para>An nspawn container settings file (suffix <filename>.nspawn</filename>) contains runtime <para>An nspawn container settings file (suffix
configuration for a local container, and is used used by <filename>.nspawn</filename>) encodes additional runtime
<citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry>. information about a local container, and is searched, read and
Files of this type are named after the containers they define settings for. They are optional, and only used by
required for containers whose execution environment shall differ from the defaults. Files of this type <citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry>
mostly contain settings that may also be set on the <command>systemd-nspawn</command> command line, and when starting a container. Files of this type are named after the
make it easier to persistently attach specific settings to specific containers. The syntax of these files containers they define settings for. They are optional, and only
is inspired by <filename>.desktop</filename> files, similarly to other configuration files supported by required for containers whose execution environment shall differ
the systemd project. See from the defaults. Files of this type mostly contain settings that
<citerefentry><refentrytitle>systemd.syntax</refentrytitle><manvolnum>7</manvolnum></citerefentry> for an may also be set on the <command>systemd-nspawn</command> command
overview.</para> line, and make it easier to persistently attach specific settings
to specific containers. The syntax of these files is inspired by
<filename>.desktop</filename> files following the <ulink
url="http://standards.freedesktop.org/desktop-entry-spec/latest/">XDG
Desktop Entry Specification</ulink>, which in turn are inspired by
Microsoft Windows <filename>.ini</filename> files.</para>
<para>Boolean arguments used in these settings files can be
written in various formats. For positive settings, the strings
<option>1</option>, <option>yes</option>, <option>true</option>
and <option>on</option> are equivalent. For negative settings, the
strings <option>0</option>, <option>no</option>,
<option>false</option> and <option>off</option> are
equivalent.</para>
<para>Empty lines and lines starting with # or ; are
ignored. This may be used for commenting. Lines ending
in a backslash are concatenated with the following
line while reading and the backslash is replaced by a
space character. This may be used to wrap long lines.</para>
</refsect1> </refsect1>
<refsect1> <refsect1>
<title><filename>.nspawn</filename> File Discovery</title> <title><filename>.nspawn</filename> File Discovery</title>
<para>Files are searched for by appending the <filename>.nspawn</filename> suffix to the machine name of <para>Files are searched by appending the
the container, as specified with the <option>--machine=</option> switch of <filename>.nspawn</filename> suffix to the machine name of the
<command>systemd-nspawn</command>, or derived from the directory or image file name. This file is first container, as specified with the <option>--machine=</option>
searched for in <filename>/etc/systemd/nspawn/</filename> and switch of <command>systemd-nspawn</command>, or derived from the
<filename>/run/systemd/nspawn/</filename>. If found there, the settings are read and all of them take directory or image file name. This file is first searched in
full effect (but may still be overridden by corresponding command line arguments). Otherwise, the file <filename>/etc/systemd/nspawn/</filename> and
will then be searched for next to the image file or in the immediate parent of the root directory of the <filename>/run/systemd/nspawn/</filename>. If found in these
container. If the file is found there, only a subset of the settings will take effect however. All directories, its settings are read and all of them take full effect
settings that possibly elevate privileges or grant additional access to resources of the host (such as (but are possibly overridden by corresponding command line
files or directories) are ignored. To which options this applies is documented below.</para> arguments). If not found, the file will then be searched next to
the image file or in the immediate parent of the root directory of
the container. If the file is found there, only a subset of the
settings will take effect however. All settings that possibly
elevate privileges or grant additional access to resources of the
host (such as files or directories) are ignored. To which options
this applies is documented below.</para>
<para>Persistent settings files created and maintained by the <para>Persistent settings files created and maintained by the
administrator (and thus trusted) should be placed in administrator (and thus trusted) should be placed in

View File

@ -42,9 +42,7 @@
<citerefentry><refentrytitle>systemd.path</refentrytitle><manvolnum>5</manvolnum></citerefentry>, <citerefentry><refentrytitle>systemd.path</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.timer</refentrytitle><manvolnum>5</manvolnum></citerefentry>, <citerefentry><refentrytitle>systemd.timer</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.slice</refentrytitle><manvolnum>5</manvolnum></citerefentry>, <citerefentry><refentrytitle>systemd.slice</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.scope</refentrytitle><manvolnum>5</manvolnum></citerefentry>, <citerefentry><refentrytitle>systemd.scope</refentrytitle><manvolnum>5</manvolnum></citerefentry></para></listitem>
<citerefentry><refentrytitle>systemd.nspawn</refentrytitle><manvolnum>5</manvolnum></citerefentry>
</para></listitem>
<listitem><para>daemon config files, see <listitem><para>daemon config files, see
<citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>, <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,

View File

@ -669,11 +669,8 @@
script runlevel link farms.</para></listitem> script runlevel link farms.</para></listitem>
</varlistentry> </varlistentry>
<xi:include href="less-variables.xml" xpointer="pager"/> <xi:include href="less-variables.xml" xpointer="colors" />
<xi:include href="less-variables.xml" xpointer="less"/> <xi:include href="less-variables.xml" xpointer="urlify" />
<xi:include href="less-variables.xml" xpointer="lesscharset"/>
<xi:include href="less-variables.xml" xpointer="colors"/>
<xi:include href="less-variables.xml" xpointer="urlify"/>
<varlistentry> <varlistentry>
<term><varname>$LISTEN_PID</varname></term> <term><varname>$LISTEN_PID</varname></term>

View File

@ -1206,11 +1206,6 @@ bool colors_enabled(void) {
val = getenv_bool("SYSTEMD_COLORS"); val = getenv_bool("SYSTEMD_COLORS");
if (val >= 0) if (val >= 0)
cached_colors_enabled = val; cached_colors_enabled = val;
else if (getenv("NO_COLOR"))
/* We only check for the presence of the variable; value is ignored. */
cached_colors_enabled = false;
else if (getpid_cached() == 1) else if (getpid_cached() == 1)
/* PID1 outputs to the console without holding it open all the time */ /* PID1 outputs to the console without holding it open all the time */
cached_colors_enabled = !getenv_terminal_is_dumb(); cached_colors_enabled = !getenv_terminal_is_dumb();
@ -1236,9 +1231,6 @@ bool dev_console_colors_enabled(void) {
if (b >= 0) if (b >= 0)
return b; return b;
if (getenv("NO_COLOR"))
return false;
if (getenv_for_pid(1, "TERM", &s) <= 0) if (getenv_for_pid(1, "TERM", &s) <= 0)
(void) proc_cmdline_get_key("TERM", 0, &s); (void) proc_cmdline_get_key("TERM", 0, &s);

View File

@ -166,8 +166,6 @@ $1.WatchdogSignal, config_parse_signal, 0,
)m4_dnl )m4_dnl
m4_define(`CGROUP_CONTEXT_CONFIG_ITEMS', m4_define(`CGROUP_CONTEXT_CONFIG_ITEMS',
`$1.Slice, config_parse_unit_slice, 0, 0 `$1.Slice, config_parse_unit_slice, 0, 0
$1.AllowedCPUs, config_parse_allowed_cpus, 0, offsetof($1, cgroup_context)
$1.AllowedMemoryNodes, config_parse_allowed_mems, 0, offsetof($1, cgroup_context)
$1.CPUAccounting, config_parse_bool, 0, offsetof($1, cgroup_context.cpu_accounting) $1.CPUAccounting, config_parse_bool, 0, offsetof($1, cgroup_context.cpu_accounting)
$1.CPUWeight, config_parse_cg_weight, 0, offsetof($1, cgroup_context.cpu_weight) $1.CPUWeight, config_parse_cg_weight, 0, offsetof($1, cgroup_context.cpu_weight)
$1.StartupCPUWeight, config_parse_cg_weight, 0, offsetof($1, cgroup_context.startup_cpu_weight) $1.StartupCPUWeight, config_parse_cg_weight, 0, offsetof($1, cgroup_context.startup_cpu_weight)
@ -175,6 +173,8 @@ $1.CPUShares, config_parse_cpu_shares, 0,
$1.StartupCPUShares, config_parse_cpu_shares, 0, offsetof($1, cgroup_context.startup_cpu_shares) $1.StartupCPUShares, config_parse_cpu_shares, 0, offsetof($1, cgroup_context.startup_cpu_shares)
$1.CPUQuota, config_parse_cpu_quota, 0, offsetof($1, cgroup_context) $1.CPUQuota, config_parse_cpu_quota, 0, offsetof($1, cgroup_context)
$1.CPUQuotaPeriodSec, config_parse_sec_def_infinity, 0, offsetof($1, cgroup_context.cpu_quota_period_usec) $1.CPUQuotaPeriodSec, config_parse_sec_def_infinity, 0, offsetof($1, cgroup_context.cpu_quota_period_usec)
$1.CPUSetCpus, config_parse_cpuset_cpus, 0, offsetof($1, cgroup_context)
$1.CPUSetMems, config_parse_cpuset_mems, 0, offsetof($1, cgroup_context)
$1.MemoryAccounting, config_parse_bool, 0, offsetof($1, cgroup_context.memory_accounting) $1.MemoryAccounting, config_parse_bool, 0, offsetof($1, cgroup_context.memory_accounting)
$1.MemoryMin, config_parse_memory_limit, 0, offsetof($1, cgroup_context) $1.MemoryMin, config_parse_memory_limit, 0, offsetof($1, cgroup_context)
$1.DefaultMemoryMin, config_parse_memory_limit, 0, offsetof($1, cgroup_context) $1.DefaultMemoryMin, config_parse_memory_limit, 0, offsetof($1, cgroup_context)

View File

@ -3146,7 +3146,7 @@ int config_parse_cpu_quota(
return 0; return 0;
} }
int config_parse_allowed_cpus( int config_parse_cpuset_cpus(
const char *unit, const char *unit,
const char *filename, const char *filename,
unsigned line, unsigned line,
@ -3165,7 +3165,7 @@ int config_parse_allowed_cpus(
return 0; return 0;
} }
int config_parse_allowed_mems( int config_parse_cpuset_mems(
const char *unit, const char *unit,
const char *filename, const char *filename,
unsigned line, unsigned line,

View File

@ -90,8 +90,8 @@ CONFIG_PARSER_PROTOTYPE(config_parse_set_status);
CONFIG_PARSER_PROTOTYPE(config_parse_namespace_path_strv); CONFIG_PARSER_PROTOTYPE(config_parse_namespace_path_strv);
CONFIG_PARSER_PROTOTYPE(config_parse_temporary_filesystems); CONFIG_PARSER_PROTOTYPE(config_parse_temporary_filesystems);
CONFIG_PARSER_PROTOTYPE(config_parse_cpu_quota); CONFIG_PARSER_PROTOTYPE(config_parse_cpu_quota);
CONFIG_PARSER_PROTOTYPE(config_parse_allowed_cpus); CONFIG_PARSER_PROTOTYPE(config_parse_cpuset_cpus);
CONFIG_PARSER_PROTOTYPE(config_parse_allowed_mems); CONFIG_PARSER_PROTOTYPE(config_parse_cpuset_mems);
CONFIG_PARSER_PROTOTYPE(config_parse_protect_home); CONFIG_PARSER_PROTOTYPE(config_parse_protect_home);
CONFIG_PARSER_PROTOTYPE(config_parse_protect_system); CONFIG_PARSER_PROTOTYPE(config_parse_protect_system);
CONFIG_PARSER_PROTOTYPE(config_parse_bus_name); CONFIG_PARSER_PROTOTYPE(config_parse_bus_name);

View File

@ -3758,11 +3758,11 @@ static int service_dispatch_timer(sd_event_source *source, usec_t usec, void *us
case SERVICE_AUTO_RESTART: case SERVICE_AUTO_RESTART:
if (s->restart_usec > 0) { if (s->restart_usec > 0) {
char buf_restart[FORMAT_TIMESPAN_MAX]; char buf_restart[FORMAT_TIMESPAN_MAX];
log_unit_debug(UNIT(s), log_unit_info(UNIT(s),
"Service RestartSec=%s expired, scheduling restart.", "Service RestartSec=%s expired, scheduling restart.",
format_timespan(buf_restart, sizeof buf_restart, s->restart_usec, USEC_PER_SEC)); format_timespan(buf_restart, sizeof buf_restart, s->restart_usec, USEC_PER_SEC));
} else } else
log_unit_debug(UNIT(s), log_unit_info(UNIT(s),
"Service has no hold-off time (RestartSec=0), scheduling restart."); "Service has no hold-off time (RestartSec=0), scheduling restart.");
service_enter_restart(s); service_enter_restart(s);

View File

@ -216,7 +216,7 @@ static void timer_dump(Unit *u, FILE *f, const char *prefix) {
"%sAccuracy: %s\n" "%sAccuracy: %s\n"
"%sRemainAfterElapse: %s\n" "%sRemainAfterElapse: %s\n"
"%sOnClockChange: %s\n" "%sOnClockChange: %s\n"
"%sOnTimeZoneChange: %s\n", "%sOnTimeZoneChange %s\n",
prefix, timer_state_to_string(t->state), prefix, timer_state_to_string(t->state),
prefix, timer_result_to_string(t->result), prefix, timer_result_to_string(t->result),
prefix, trigger ? trigger->id : "n/a", prefix, trigger ? trigger->id : "n/a",

View File

@ -1494,15 +1494,17 @@ int route_section_verify(Route *route, Network *network) {
route->section->filename, route->section->line); route->section->filename, route->section->line);
} }
if (route->family != AF_INET6) {
if (!route->table_set && IN_SET(route->type, RTN_LOCAL, RTN_BROADCAST, RTN_ANYCAST, RTN_NAT)) if (!route->table_set && IN_SET(route->type, RTN_LOCAL, RTN_BROADCAST, RTN_ANYCAST, RTN_NAT))
route->table = RT_TABLE_LOCAL; route->table = RT_TABLE_LOCAL;
if (!route->scope_set && route->family != AF_INET6) { if (!route->scope_set) {
if (IN_SET(route->type, RTN_LOCAL, RTN_NAT)) if (IN_SET(route->type, RTN_LOCAL, RTN_NAT))
route->scope = RT_SCOPE_HOST; route->scope = RT_SCOPE_HOST;
else if (IN_SET(route->type, RTN_BROADCAST, RTN_ANYCAST, RTN_MULTICAST)) else if (IN_SET(route->type, RTN_BROADCAST, RTN_ANYCAST))
route->scope = RT_SCOPE_LINK; route->scope = RT_SCOPE_LINK;
} }
}
if (network->n_static_addresses == 0 && if (network->n_static_addresses == 0 &&
in_addr_is_null(route->family, &route->gw) == 0 && in_addr_is_null(route->family, &route->gw) == 0 &&

View File

@ -3,8 +3,6 @@ Accept=
AccuracySec= AccuracySec=
After= After=
Alias= Alias=
AllowedCPUs=
AllowedMemoryNodes=
AllowIsolate= AllowIsolate=
Also= Also=
AmbientCapabilities= AmbientCapabilities=