Compare commits

...

6 Commits

Author SHA1 Message Date
Yu Watanabe 412be51fe8
Merge pull request #15013 from systemd/systemctl-list-dependencies
systemctl list-dependencies: fix duplicate output and take multiple arguments
2020-03-05 20:54:58 +09:00
Yu Watanabe c1817e2528
Merge pull request #15023 from keszybz/network-generator-man
Man page for systemd-network-generator
2020-03-05 20:54:32 +09:00
Zbigniew Jędrzejewski-Szmek 94c3a838da systemctl: make list-dependencies take multiple arguments
Other similar commands do, no reason not to do this here too.
2020-03-05 08:27:58 +01:00
Zbigniew Jędrzejewski-Szmek 82c8bdff12 man: mention networkctl in the networkd man page 2020-03-05 08:20:31 +01:00
Zbigniew Jędrzejewski-Szmek 4a29c185b7 man: add systemd-network-generator.service(8)
It's a bit bare-bones, but it should be enough to point the reader in the right
direction.
2020-03-05 08:20:06 +01:00
Zbigniew Jędrzejewski-Szmek dbf2801f5a systemctl: do not print items twice in list-dependencies
Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1807485.
2020-03-04 09:33:12 +01:00
6 changed files with 147 additions and 22 deletions

View File

@ -763,6 +763,10 @@ manpages = [
''],
['systemd-modules-load.service', '8', ['systemd-modules-load'], 'HAVE_KMOD'],
['systemd-mount', '1', ['systemd-umount'], ''],
['systemd-network-generator.service',
'8',
['systemd-network-generator'],
'ENABLE_NETWORKD'],
['systemd-networkd-wait-online.service',
'8',
['systemd-networkd-wait-online'],

View File

@ -507,17 +507,17 @@ Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output err
<varlistentry>
<term>
<command>list-dependencies</command>
<optional><replaceable>UNIT</replaceable></optional>
<optional><replaceable>UNIT</replaceable>...</optional>
</term>
<listitem>
<para>Shows units required and wanted by the specified
unit. This recursively lists units following the
units. This recursively lists units following the
<varname>Requires=</varname>,
<varname>Requisite=</varname>,
<varname>ConsistsOf=</varname>,
<varname>Wants=</varname>, <varname>BindsTo=</varname>
dependencies. If no unit is specified,
dependencies. If no units are specified,
<filename>default.target</filename> is implied.</para>
<para>By default, only target units are recursively

View File

@ -0,0 +1,103 @@
<?xml version='1.0'?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!-- SPDX-License-Identifier: LGPL-2.1+ -->
<refentry id="systemd-network-generator.service" conditional='ENABLE_NETWORKD'>
<refentryinfo>
<title>systemd-network-generator.service</title>
<productname>systemd</productname>
</refentryinfo>
<refmeta>
<refentrytitle>systemd-network-generator.service</refentrytitle>
<manvolnum>8</manvolnum>
</refmeta>
<refnamediv>
<refname>systemd-network-generator.service</refname>
<refname>systemd-network-generator</refname>
<refpurpose>Generate network configuration from the kernel command line</refpurpose>
</refnamediv>
<refsynopsisdiv>
<para><filename>systemd-network-generator.service</filename></para>
<para><filename>/usr/lib/systemd/systemd-network-generator</filename></para>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para><filename>systemd-network-generator.service</filename> is a system service that translates
<varname>ip=</varname> and the related settings on the kernel command line (see below) into
<citerefentry><refentrytitle>systemd.network</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.netdev</refentrytitle><manvolnum>5</manvolnum></citerefentry>, and
<citerefentry><refentrytitle>systemd.link</refentrytitle><manvolnum>5</manvolnum></citerefentry>
configuration files understood by
<citerefentry><refentrytitle>systemd-networkd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
and
<citerefentry><refentrytitle>systemd-udevd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
</para>
<para>Files are generated in <filename>/run/systemd/network/</filename>.</para>
</refsect1>
<refsect1><title>Kernel command line options</title>
<para>This tool understands the following options:</para>
<variablelist class='kernel-commandline-options'>
<varlistentry>
<term><varname>ip=</varname></term>
<term><varname>rd.route=</varname></term>
<term><varname>rd.peerdns=</varname></term>
<listitem>
<para>— translated into
<citerefentry><refentrytitle>systemd.network</refentrytitle><manvolnum>5</manvolnum></citerefentry> files.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>ifname=</varname></term>
<listitem>
<para>— translated into
<citerefentry><refentrytitle>systemd.link</refentrytitle><manvolnum>5</manvolnum></citerefentry> files.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>vlan=</varname></term>
<term><varname>bond=</varname></term>
<term><varname>bridge=</varname></term>
<term><varname>bootdev=</varname></term>
<listitem>
<para>— translated into
<citerefentry><refentrytitle>systemd.netdev</refentrytitle><manvolnum>5</manvolnum></citerefentry> files.</para>
</listitem>
</varlistentry>
<!-- unsupported:
team=<teammaster>:<teamslaves>
bootdev=
BOOTIF=
bootdev=
bootdev=
bootdev=
-->
</variablelist>
<para>See
<citerefentry project='man-pages'><refentrytitle>dracut.kernel</refentrytitle><manvolnum>7</manvolnum></citerefentry>
for option syntax and details.</para>
</refsect1>
<refsect1>
<title>See Also</title>
<para>
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd-networkd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
<citerefentry><refentrytitle>dracut</refentrytitle><manvolnum>8</manvolnum></citerefentry>
</para>
</refsect1>
</refentry>

View File

@ -61,6 +61,10 @@
<filename>systemd-networkd</filename> is restarted, netdev interfaces for
which configuration was removed will not be dropped, and may need to be
cleaned up manually.</para>
<para><command>systemd-networkd</command> may be introspected and controlled at runtime using
<citerefentry><refentrytitle>networkctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
</para>
</refsect1>
<refsect1><title>Configuration Files</title>
@ -82,11 +86,13 @@
<refsect1>
<title>See Also</title>
<para>
<citerefentry><refentrytitle>networkctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.link</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.network</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.netdev</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd-networkd-wait-online.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
<citerefentry><refentrytitle>systemd-networkd-wait-online.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd-networkd-generator.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
</para>
</refsect1>

View File

@ -785,6 +785,8 @@ static int list_dependencies_get_dependencies(sd_bus *bus, const char *name, cha
if (r < 0)
return log_error_errno(r, "Failed to get properties of %s: %s", name, bus_error_message(&error, r));
strv_uniq(deps); /* Sometimes a unit might have multiple deps on the other unit,
* but we still want to show it just once. */
*ret = TAKE_PTR(deps);
return 0;
@ -1786,30 +1788,39 @@ static int list_dependencies_one(
}
static int list_dependencies(int argc, char *argv[], void *userdata) {
_cleanup_strv_free_ char **units = NULL;
_cleanup_free_ char *unit = NULL;
const char *u;
_cleanup_strv_free_ char **units = NULL, **done = NULL;
char **u, **patterns;
sd_bus *bus;
int r;
if (argv[1]) {
r = unit_name_mangle(argv[1], arg_quiet ? 0 : UNIT_NAME_MANGLE_WARN, &unit);
if (r < 0)
return log_error_errno(r, "Failed to mangle unit name: %m");
u = unit;
} else
u = SPECIAL_DEFAULT_TARGET;
r = acquire_bus(BUS_MANAGER, &bus);
if (r < 0)
return r;
patterns = strv_skip(argv, 1);
if (strv_isempty(patterns)) {
units = strv_new(SPECIAL_DEFAULT_TARGET);
if (!units)
return log_oom();
} else {
r = expand_names(bus, patterns, NULL, &units, NULL);
if (r < 0)
return log_error_errno(r, "Failed to expand names: %m");
}
(void) pager_open(arg_pager_flags);
puts(u);
STRV_FOREACH(u, units) {
if (u != units)
puts("");
return list_dependencies_one(bus, u, 0, &units, 0);
puts(*u);
r = list_dependencies_one(bus, *u, 0, &done, 0);
if (r < 0)
return r;
}
return 0;
}
struct machine_info {
@ -7815,9 +7826,9 @@ static int systemctl_help(void) {
" help PATTERN...|PID... Show manual for one or more units\n"
" reset-failed [PATTERN...] Reset failed state for all, one, or more\n"
" units\n"
" list-dependencies [UNIT] Recursively show units which are required\n"
" or wanted by this unit or by which this\n"
" unit is required or wanted"
" list-dependencies [UNIT...] Recursively show units which are required\n"
" or wanted by the units or by which those\n"
" units are required or wanted"
"\n%3$sUnit File Commands:%4$s\n"
" list-unit-files [PATTERN...] List installed unit files\n"
" enable [UNIT...|PATH...] Enable one or more unit files\n"
@ -9116,7 +9127,7 @@ static int systemctl_main(int argc, char *argv[]) {
{ "link", 2, VERB_ANY, 0, enable_unit },
{ "revert", 2, VERB_ANY, 0, enable_unit },
{ "switch-root", 2, VERB_ANY, VERB_ONLINE_ONLY, switch_root },
{ "list-dependencies", VERB_ANY, 2, VERB_ONLINE_ONLY, list_dependencies },
{ "list-dependencies", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY, list_dependencies },
{ "set-default", 2, 2, 0, set_default },
{ "get-default", VERB_ANY, 1, 0, get_default },
{ "set-property", 3, VERB_ANY, VERB_ONLINE_ONLY, set_property },

View File

@ -9,6 +9,7 @@
[Unit]
Description=Generate network units from Kernel command line
Documentation=man:systemd-network-generator.service(8)
DefaultDependencies=no
Before=network-pre.target