<?xml version='1.0'?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->

<refentry id="systemd-network-generator.service" xmlns:xi="http://www.w3.org/2001/XInclude">

  <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 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>

    <para>Note: despite the name, this generator executes as a normal systemd service and is
    <emphasis>not</emphasis> an implementation of the
    <citerefentry><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>
    concept.</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>nameserver=</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>

          <para>In addition to the parameters <citerefentry
          project='man-pages'><refentrytitle>dracut.cmdline</refentrytitle><manvolnum>7</manvolnum></citerefentry>
          defines the <varname>ip=</varname> option accepts the special value
          <literal>link-local</literal>. If selected, the network interfaces will be configured for
          link-local addressing (IPv4LL, IPv6LL) only, DHCP or IPv6RA will not be enabled.</para>

          <xi:include href="version-info.xml" xpointer="v245"/>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>ifname=</varname></term>
        <term><varname>net.ifname_policy=</varname></term>
        <listitem>
          <para>Translated into
          <citerefentry><refentrytitle>systemd.link</refentrytitle><manvolnum>5</manvolnum></citerefentry>
          files.</para>

          <xi:include href="version-info.xml" xpointer="v245"/>
        </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>

          <xi:include href="version-info.xml" xpointer="v245"/>
        </listitem>
      </varlistentry>

      <!-- unsupported:
           team=<teammaster>:<teamslaves>
           bootdev=
           BOOTIF=
           bootdev=
           bootdev=
           bootdev=
      -->
    </variablelist>

    <para>See
    <citerefentry project='man-pages'><refentrytitle>dracut.cmdline</refentrytitle><manvolnum>7</manvolnum></citerefentry>
    and
    <citerefentry><refentrytitle>systemd-udevd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
    for option syntax and details.</para>
  </refsect1>

  <refsect1>
    <title>Credentials</title>

    <para><command>systemd-network-generator</command> supports the service credentials logic as implemented
    by
    <varname>ImportCredential=</varname>/<varname>LoadCredential=</varname>/<varname>SetCredential=</varname>
    (see <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry> for
    details). The following credentials are used when passed in:</para>

    <variablelist class='system-credentials'>
      <varlistentry>
        <term><varname>network.conf.*</varname></term>
        <term><varname>network.link.*</varname></term>
        <term><varname>network.netdev.*</varname></term>
        <term><varname>network.network.*</varname></term>

        <listitem><para>These credentials should contain valid
        <citerefentry><refentrytitle>networkd.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
        <citerefentry><refentrytitle>systemd.link</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
        <citerefentry><refentrytitle>systemd.netdev</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
        <citerefentry><refentrytitle>systemd.network</refentrytitle><manvolnum>5</manvolnum></citerefentry>
        configuration data. From each matching credential a separate file is created. Example: a passed
        credential <filename>network.link.50-foobar</filename> will be copied into a configuration file
        <filename>50-foobar.link</filename>.</para>

        <para>Note that the resulting files are created world-readable, it is hence recommended to not include
        secrets in these credentials, but to supply them via separate credentials directly to
        <citerefentry><refentrytitle>systemd-networkd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
        </para>

        <xi:include href="version-info.xml" xpointer="v256"/></listitem>
      </varlistentry>
    </variablelist>

    <para>Note that by default the
    <citerefentry><refentrytitle>systemd-networkd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
    service is set up to inherit the these credentials from the service manager.</para>
  </refsect1>

  <refsect1>
    <title>See Also</title>
    <para><simplelist type="inline">
      <member><citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
      <member><citerefentry><refentrytitle>systemd-networkd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry></member>
      <member><citerefentry project='man-pages'><refentrytitle>dracut</refentrytitle><manvolnum>8</manvolnum></citerefentry></member>
    </simplelist></para>
  </refsect1>

</refentry>
