<?xml version='1.0'?>
<!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-or-later -->

<refentry id="systemd.network" conditional='ENABLE_NETWORKD'
          xmlns:xi="http://www.w3.org/2001/XInclude">

  <refentryinfo>
    <title>systemd.network</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>systemd.network</refentrytitle>
    <manvolnum>5</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>systemd.network</refname>
    <refpurpose>Network configuration</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <para><filename><replaceable>network</replaceable>.network</filename></para>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para>A plain ini-style text file that encodes network configuration for matching network
    interfaces, used by
    <citerefentry><refentrytitle>systemd-networkd</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
    See <citerefentry><refentrytitle>systemd.syntax</refentrytitle><manvolnum>7</manvolnum></citerefentry>
    for a general description of the syntax.</para>

    <para>The main network file must have the extension <filename>.network</filename>; other
    extensions are ignored. Networks are applied to links whenever the links appear.</para>

    <para>The <filename>.network</filename> files are read from the files located in the system network
    directories <filename>/usr/lib/systemd/network</filename> and
    <filename>/usr/local/lib/systemd/network</filename>, the volatile runtime network directory
    <filename>/run/systemd/network</filename> and the local administration network directory
    <filename>/etc/systemd/network</filename>. All configuration files are collectively sorted and
    processed in alphanumeric order, regardless of the directories in which they live. However, files
    with identical filenames replace each other. It is recommended that each filename is prefixed with
    a number (e.g. <filename>10-eth0.network</filename>). Otherwise, the default
    <filename>.network</filename> files or those generated by
    <citerefentry><refentrytitle>systemd-network-generator.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
    may take precedence over user configured files. Files in <filename>/etc/</filename> have the highest
    priority, files in <filename>/run/</filename> take precedence over files with the same name under
    <filename>/usr/</filename>. This can be used to override a system-supplied configuration file with
    a local file if needed. As a special case, an empty file (file size 0) or symlink with the same
    name pointing to <filename>/dev/null</filename> disables the configuration file entirely (it is
    "masked").</para>

    <para>Along with the network file <filename>foo.network</filename>, a "drop-in" directory
    <filename>foo.network.d/</filename> may exist. All files with the suffix
    <literal>.conf</literal> from this directory will be merged in the alphanumeric order and parsed
    after the main file itself has been parsed. This is useful to alter or add configuration settings,
    without having to modify the main configuration file. Each drop-in file must have appropriate
    section headers.</para>

    <para>In addition to <filename>/etc/systemd/network</filename>, drop-in <literal>.d</literal>
    directories can be placed in <filename>/usr/lib/systemd/network</filename> or
    <filename>/run/systemd/network</filename> directories. Drop-in files in
    <filename>/etc/</filename> take precedence over those in <filename>/run/</filename> which in turn
    take precedence over those in <filename>/usr/lib/</filename>. Drop-in files under any of these
    directories take precedence over the main network file wherever located.</para>
  </refsect1>

  <refsect1>
    <title>[Match] Section Options</title>

    <para>The network file contains a [Match] section, which determines if a given network file may
    be applied to a given interface; and a [Network] section specifying how the interface should be
    configured. The first (in alphanumeric order) of the network files that matches a given interface
    is applied, all later files are ignored, even if they match as well.</para>

    <para>A network file is said to match a network interface if all matches specified by the [Match]
    section are satisfied. When a network file does not contain valid settings in [Match] section, then
    the file will match all interfaces and <command>systemd-networkd</command> warns about that. Hint:
    to avoid the warning and to make it clear that all interfaces shall be matched, add the following:
    <programlisting>Name=*</programlisting> The following keys are accepted:</para>

    <variablelist class='network-directives'>
      <xi:include href="systemd.link.xml" xpointer="mac-address" />
      <xi:include href="systemd.link.xml" xpointer="permanent-mac-address" />
      <xi:include href="systemd.link.xml" xpointer="path" />
      <xi:include href="systemd.link.xml" xpointer="driver" />
      <xi:include href="systemd.link.xml" xpointer="type" />
      <xi:include href="systemd.link.xml" xpointer="kind" />
      <xi:include href="systemd.link.xml" xpointer="property" />

      <varlistentry>
        <term><varname>Name=</varname></term>
        <listitem>
          <para>A whitespace-separated list of shell-style globs matching the device name, as exposed
          by the udev property <literal>INTERFACE</literal>, or device's alternative names. If the
          list is prefixed with a "!", the test is inverted.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>WLANInterfaceType=</varname></term>
        <listitem>
          <para>A whitespace-separated list of wireless network type. Supported values are
          <literal>ad-hoc</literal>, <literal>station</literal>, <literal>ap</literal>,
          <literal>ap-vlan</literal>, <literal>wds</literal>, <literal>monitor</literal>,
          <literal>mesh-point</literal>, <literal>p2p-client</literal>, <literal>p2p-go</literal>,
          <literal>p2p-device</literal>, <literal>ocb</literal>, and <literal>nan</literal>. If the
          list is prefixed with a "!", the test is inverted. </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>SSID=</varname></term>
        <listitem>
          <para>A whitespace-separated list of shell-style globs matching the SSID of the currently
          connected wireless LAN. If the list is prefixed with a "!", the test is inverted.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>BSSID=</varname></term>
        <listitem>
          <para>A whitespace-separated list of hardware address of the currently connected wireless
          LAN. Use full colon-, hyphen- or dot-delimited hexadecimal. See the example in
          <varname>MACAddress=</varname>. This option may appear more than once, in which case the
          lists are merged. If the empty string is assigned to this option, the list is reset.</para>
        </listitem>
      </varlistentry>

      <xi:include href="systemd.link.xml" xpointer="host" />
      <xi:include href="systemd.link.xml" xpointer="virtualization" />
      <xi:include href="systemd.link.xml" xpointer="kernel-command-line" />
      <xi:include href="systemd.link.xml" xpointer="kernel-version" />
      <xi:include href="systemd.link.xml" xpointer="credential" />
      <xi:include href="systemd.link.xml" xpointer="architecture" />
      <xi:include href="systemd.link.xml" xpointer="firmware" />
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[Link] Section Options</title>

    <para>The [Link] section accepts the following keys:</para>

    <variablelist class='network-directives'>
      <varlistentry>
        <term><varname>MACAddress=</varname></term>
        <listitem>
          <para>The hardware address to set for the device.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>MTUBytes=</varname></term>
        <listitem>
          <para>The maximum transmission unit in bytes to set for the device. The usual suffixes K, M,
          G, are supported and are understood to the base of 1024.</para>
          <para>Note that if IPv6 is enabled on the interface, and the MTU is chosen below 1280 (the
          minimum MTU for IPv6) it will automatically be increased to this value.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>ARP=</varname></term>
        <listitem>
          <para>Takes a boolean. If set to true, the ARP (low-level Address Resolution Protocol)
          for this interface is enabled. When unset, the kernel's default will be used.</para>
          <para> For example, disabling ARP is useful when creating multiple MACVLAN or VLAN virtual
          interfaces atop a single lower-level physical interface, which will then only serve as a
          link/"bridge" device aggregating traffic to the same physical link and not participate in
          the network otherwise. Defaults to unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Multicast=</varname></term>
        <listitem>
          <para>Takes a boolean. If set to true, the multicast flag on the device is enabled. Defaults
          to unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>AllMulticast=</varname></term>
        <listitem>
          <para>Takes a boolean. If set to true, the driver retrieves all multicast packets from the
          network. This happens when multicast routing is enabled. Defaults to unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Promiscuous=</varname></term>
        <listitem>
          <para>Takes a boolean. If set to true, promiscuous mode of the interface is enabled. Defaults
          to unset.</para>
          <para>If this is set to false for the underlying link of a <literal>passthru</literal> mode
          MACVLAN/MACVTAP, the virtual interface will be created with the <literal>nopromisc</literal>
          flag set.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Unmanaged=</varname></term>
        <listitem>
          <para>Takes a boolean. When <literal>yes</literal>, no attempts are made to bring up or
          configure matching links, equivalent to when there are no matching network files. Defaults to
          <literal>no</literal>.</para>
          <para>This is useful for preventing later matching network files from interfering with
          certain interfaces that are fully controlled by other applications.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Group=</varname></term>
        <listitem>
          <para>Link groups are similar to port ranges found in managed switches. When network
          interfaces are added to a numbered group, operations on all the interfaces from that group
          can be performed at once. Takes an unsigned integer in the range 0…2147483647. Defaults to
          unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>RequiredForOnline=</varname></term>
        <listitem>
          <para>Takes a boolean or a minimum operational state and an optional maximum operational
          state. Please see
          <citerefentry><refentrytitle>networkctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
          for possible operational states. When <literal>yes</literal>, the network is deemed required
          when determining whether the system is online (including when running
          <command>systemd-networkd-wait-online</command>). When <literal>no</literal>, the network is
          ignored when determining the online state. When a minimum operational state and an optional
          maximum operational state are set, <literal>yes</literal> is implied, and this controls the
          minimum and maximum operational state required for the network interface to be considered
          online.</para>

          <para>Defaults to <literal>yes</literal> when <varname>ActivationPolicy=</varname> is not
          set, or set to <literal>up</literal>, <literal>always-up</literal>, or
          <literal>bound</literal>. Defaults to <literal>no</literal> when
          <varname>ActivationPolicy=</varname> is set to <literal>manual</literal> or
          <literal>down</literal>. This is forced to <literal>no</literal> when
          <varname>ActivationPolicy=</varname> is set to <literal>always-down</literal>.</para>

          <para>The network will be brought up normally (as configured by
          <varname>ActivationPolicy=</varname>), but in the event that there is no address being
          assigned by DHCP or the cable is not plugged in, the link will simply remain offline and be
          skipped automatically by <command>systemd-networkd-wait-online</command> if
          <literal>RequiredForOnline=no</literal>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>RequiredFamilyForOnline=</varname></term>
        <listitem>
          <para>Takes an address family. When specified, an IP address in the given family is deemed
          required when determining whether the link is online (including when running
          <command>systemd-networkd-wait-online</command>). Takes one of <literal>ipv4</literal>,
          <literal>ipv6</literal>, <literal>both</literal>, or <literal>any</literal>. Defaults to
          <literal>any</literal>. Note that this option has no effect if
          <literal>RequiredForOnline=no</literal>, or if <literal>RequiredForOnline=</literal>
          specifies a minimum operational state below <literal>degraded</literal>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>ActivationPolicy=</varname></term>
        <listitem>
          <para>Specifies the policy for <command>systemd-networkd</command> managing the link
          administrative state. Specifically, this controls how <command>systemd-networkd</command>
          changes the network device's <literal>IFF_UP</literal> flag, which is sometimes
          controlled by system administrators by running e.g.,
          <command>ip link set dev eth0 up</command> or <command>ip link set dev eth0 down</command>,
          and can also be changed with <command>networkctl up eth0</command> or
          <command>networkctl down eth0</command>.</para>

          <para>Takes one of <literal>up</literal>, <literal>always-up</literal>,
          <literal>manual</literal>, <literal>always-down</literal>, <literal>down</literal>,
          or <literal>bound</literal>. When <literal>manual</literal>,
          <command>systemd-networkd</command> will not change the link's admin state automatically;
          the system administrator must bring the interface up or down manually, as desired. When
          <literal>up</literal> (the default) or <literal>always-up</literal>, or
          <literal>down</literal> or <literal>always-down</literal>,
          <command>systemd-networkd</command> will set the link up or down, respectively, when the
          interface is (re)configured. When <literal>always-up</literal> or
          <literal>always-down</literal>, <command>systemd-networkd</command> will set the link up or
          down, respectively, any time <command>systemd-networkd</command> detects a change in the
          administrative state. When <varname>BindCarrier=</varname> is also set, this is automatically
          set to <literal>bound</literal> and any other value is ignored.</para>

          <para>When the policy is set to <literal>down</literal> or <literal>manual</literal>, the
          default value of <varname>RequiredForOnline=</varname> is <literal>no</literal>. When the
          policy is set to <literal>always-down</literal>, the value of
          <varname>RequiredForOnline=</varname> forced to <literal>no</literal>.</para>

          <para>The administrative state is not the same as the carrier state, so using
          <literal>always-up</literal> does not mean the link will never lose carrier. The link carrier
          depends on both the administrative state as well as the network device's physical connection.
          However, to avoid reconfiguration failures, when using <literal>always-up</literal>,
          <varname>IgnoreCarrierLoss=</varname> is forced to true.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <xi:include href="systemd.link.xml" xpointer="sr-iov" />

  <refsect1>
    <title>[Network] Section Options</title>

    <para>The [Network] section accepts the following keys:</para>

    <variablelist class='network-directives'>
      <varlistentry>
        <term><varname>Description=</varname></term>
        <listitem>
          <para>A description of the device. This is only used for presentation purposes.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>DHCP=</varname></term>
        <listitem>
          <para>Enables DHCPv4 and/or DHCPv6 client support. Accepts <literal>yes</literal>,
          <literal>no</literal>, <literal>ipv4</literal>, or <literal>ipv6</literal>. Defaults to
          <literal>no</literal>.</para>

          <para>Note that DHCPv6 will by default be triggered by Router Advertisements, if reception is
          enabled, regardless of this parameter. By explicitly enabling DHCPv6 support here, the DHCPv6
          client will be started in the mode specified by the <varname>WithoutRA=</varname> setting in the
          [DHCPv6] section, regardless of the presence of routers on the link, or what flags the routers
          pass. See <varname>IPv6AcceptRA=</varname>.</para>

          <para>Furthermore, note that by default the domain name specified through DHCP is not used
          for name resolution. See option <option>UseDomains=</option> below.</para>

          <para>See the [DHCPv4] or [DHCPv6] sections below for further configuration options for the
          DHCP client support.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>DHCPServer=</varname></term>
        <listitem>
          <para>Takes a boolean. If set to <literal>yes</literal>, DHCPv4 server will be started.
          Defaults to <literal>no</literal>. Further settings for the DHCP server may be set in the
          [DHCPServer] section described below.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>LinkLocalAddressing=</varname></term>
        <listitem>
          <para>Enables link-local address autoconfiguration. Accepts <option>yes</option>,
          <option>no</option>, <option>ipv4</option>, and <option>ipv6</option>. An IPv6 link-local
          address is configured when <option>yes</option> or <option>ipv6</option>. An IPv4 link-local
          address is configured when <option>yes</option> or <option>ipv4</option> and when DHCPv4
          autoconfiguration has been unsuccessful for some time. (IPv4 link-local address
          autoconfiguration will usually happen in parallel with repeated attempts to acquire a DHCPv4
          lease).</para>

          <para>Defaults to <option>no</option> when <varname>KeepMaster=</varname> or
          <varname>Bridge=</varname> is set or when the specified
          <varname>MACVLAN=</varname>/<varname>MACVTAP=</varname> has <varname>Mode=passthru</varname>,
          or <option>ipv6</option> otherwise.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>IPv6LinkLocalAddressGenerationMode=</varname></term>
        <listitem>
          <para>Specifies how IPv6 link-local address is generated. Takes one of
          <literal>eui64</literal>, <literal>none</literal>, <literal>stable-privacy</literal> and
          <literal>random</literal>. When unset, <literal>stable-privacy</literal> is used if
          <varname>IPv6StableSecretAddress=</varname> is specified, and if not,
          <literal>eui64</literal> is used. Note that if <varname>LinkLocalAddressing=</varname> is
          <literal>no</literal> or <literal>ipv4</literal>, then
          <varname>IPv6LinkLocalAddressGenerationMode=</varname> will be ignored. Also, even if
          <varname>LinkLocalAddressing=</varname> is <literal>yes</literal> or <literal>ipv6</literal>,
          setting <varname>IPv6LinkLocalAddressGenerationMode=none</varname>
          disables to configure an IPv6 link-local address.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>IPv6StableSecretAddress=</varname></term>
        <listitem>
          <para>Takes an IPv6 address. The specified address will be used as a stable secret for
          generating IPv6 link-local address. If this setting is specified, and
          <varname>IPv6LinkLocalAddressGenerationMode=</varname> is unset, then
          <varname>IPv6LinkLocalAddressGenerationMode=stable-privacy</varname> is implied.
          If this setting is not specified, and <literal>stable-privacy</literal> is set to
          <varname>IPv6LinkLocalAddressGenerationMode=</varname>,
          then a stable secret address will be generated from the local machine ID and the interface
          name.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>IPv4LLStartAddress=</varname></term>
        <listitem>
          <para>Specifies the first IPv4 link-local address to try. Takes an IPv4 address for example
          169.254.1.2, from the link-local address range: 169.254.0.0/16 except for 169.254.0.0/24 and
          169.254.255.0/24. This setting may be useful if the device should always have the same address
          as long as there is no address conflict. When unset, a random address will be automatically
          selected. Defaults to unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>IPv4LLRoute=</varname></term>
        <listitem>
          <para>Takes a boolean. If set to true, sets up the route needed for non-IPv4LL hosts to
          communicate with IPv4LL-only hosts. Defaults to false.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>DefaultRouteOnDevice=</varname></term>
        <listitem>
          <para>Takes a boolean. If set to true, sets up the IPv4 default route bound to the interface.
          Defaults to false. This is useful when creating routes on point-to-point interfaces. This is
          equivalent to e.g. the following,
          <programlisting>ip route add default dev veth99</programlisting>
          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>
          <para>If you'd like to create an IPv6 default route bound to the interface, please use the
          following:
          <programlisting>[Route]
Gateway=::
Table=1234</programlisting></para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>LLMNR=</varname></term>
        <listitem>
          <para>Takes a boolean or <literal>resolve</literal>. When true, enables
          <ulink url="https://tools.ietf.org/html/rfc4795">Link-Local Multicast Name Resolution</ulink>
          on the link. When set to <literal>resolve</literal>, only resolution is enabled, but not host
          registration and announcement. Defaults to true. This setting is read by
          <citerefentry><refentrytitle>systemd-resolved.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>MulticastDNS=</varname></term>
        <listitem>
          <para>Takes a boolean or <literal>resolve</literal>. When true, enables
          <ulink url="https://tools.ietf.org/html/rfc6762">Multicast DNS</ulink> support on the link.
          When set to <literal>resolve</literal>, only resolution is enabled, but not host or service
          registration and announcement. Defaults to false. This setting is read by
          <citerefentry><refentrytitle>systemd-resolved.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>DNSOverTLS=</varname></term>
        <listitem>
          <para>Takes a boolean or <literal>opportunistic</literal>. When true, enables
          <ulink url="https://tools.ietf.org/html/rfc7858">DNS-over-TLS</ulink> support on the link.
          When set to <literal>opportunistic</literal>, compatibility with non-DNS-over-TLS servers is
          increased, by automatically turning off DNS-over-TLS servers in this case. This option
          defines a per-interface setting for
          <citerefentry><refentrytitle>resolved.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>'s
          global <varname>DNSOverTLS=</varname> option. Defaults to unset, and the global setting will
          be used. This setting is read by
          <citerefentry><refentrytitle>systemd-resolved.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>DNSSEC=</varname></term>
        <listitem>
          <para>Takes a boolean or <literal>allow-downgrade</literal>. When true, enables
          <ulink url="https://tools.ietf.org/html/rfc4033">DNSSEC</ulink> DNS validation support on the
          link. When set to <literal>allow-downgrade</literal>, compatibility with non-DNSSEC capable
          networks is increased, by automatically turning off DNSSEC in this case. This option defines
          a per-interface setting for
          <citerefentry><refentrytitle>resolved.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>'s
          global <varname>DNSSEC=</varname> option. Defaults to unset, and the global setting will be
          used. This setting is read by
          <citerefentry><refentrytitle>systemd-resolved.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>DNSSECNegativeTrustAnchors=</varname></term>
        <listitem>
          <para>A space-separated list of DNSSEC negative trust anchor domains. If specified and DNSSEC
          is enabled, look-ups done via the interface's DNS server will be subject to the list of
          negative trust anchors, and not require authentication for the specified domains, or anything
          below it. Use this to disable DNSSEC authentication for specific private domains, that cannot
          be proven valid using the Internet DNS hierarchy. Defaults to the empty list. This setting is
          read by
          <citerefentry><refentrytitle>systemd-resolved.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>LLDP=</varname></term>
        <listitem>
          <para>Controls support for Ethernet LLDP packet reception. LLDP is a link-layer protocol
          commonly implemented on professional routers and bridges which announces which physical port
          a system is connected to, as well as other related data. Accepts a boolean or the special
          value <literal>routers-only</literal>. When true, incoming LLDP packets are accepted and a
          database of all LLDP neighbors maintained. If <literal>routers-only</literal> is set only
          LLDP data of various types of routers is collected and LLDP data about other types of devices
          ignored (such as stations, telephones and others). If false, LLDP reception is disabled.
          Defaults to <literal>routers-only</literal>. Use
          <citerefentry><refentrytitle>networkctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
          to query the collected neighbor data. LLDP is only available on Ethernet links. See
          <varname>EmitLLDP=</varname> below for enabling LLDP packet emission from the local system.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>EmitLLDP=</varname></term>
        <listitem>
          <para>Controls support for Ethernet LLDP packet emission. Accepts a boolean parameter or the
          special values <literal>nearest-bridge</literal>, <literal>non-tpmr-bridge</literal> and
          <literal>customer-bridge</literal>. Defaults to false, which turns off LLDP packet emission.
          If not false, a short LLDP packet with information about the local system is sent out in
          regular intervals on the link. The LLDP packet will contain information about the local
          hostname, the local machine ID (as stored in
          <citerefentry><refentrytitle>machine-id</refentrytitle><manvolnum>5</manvolnum></citerefentry>)
          and the local interface name, as well as the pretty hostname of the system (as set in
          <citerefentry><refentrytitle>machine-info</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
          LLDP emission is only available on Ethernet links. Note that this setting passes data
          suitable for identification of host to the network and should thus not be enabled on
          untrusted networks, where such identification data should not be made available. Use this
          option to permit other systems to identify on which interfaces they are connected to this
          system. The three special values control propagation of the LLDP packets. The
          <literal>nearest-bridge</literal> setting permits propagation only to the nearest connected
          bridge, <literal>non-tpmr-bridge</literal> permits propagation across Two-Port MAC Relays,
          but not any other bridges, and <literal>customer-bridge</literal> permits propagation until
          a customer bridge is reached. For details about these concepts, see
          <ulink url="https://standards.ieee.org/findstds/standard/802.1AB-2016.html">IEEE 802.1AB-2016</ulink>.
          Note that configuring this setting to true is equivalent to
          <literal>nearest-bridge</literal>, the recommended and most restricted level of propagation.
          See <varname>LLDP=</varname> above for an option to enable LLDP reception.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>BindCarrier=</varname></term>
        <listitem>
          <para>A link name or a list of link names. When set, controls the behavior of the current
          link. When all links in the list are in an operational down state, the current link is
          brought down. When at least one link has carrier, the current interface is brought up.</para>

          <para>This forces <varname>ActivationPolicy=</varname> to be set to <literal>bound</literal>.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Address=</varname></term>
        <listitem>
          <para>A static IPv4 or IPv6 address and its prefix length, separated by a
          <literal>/</literal> character. Specify this key more than once to configure several
          addresses. The format of the address must be as described in
          <citerefentry project='man-pages'><refentrytitle>inet_pton</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
          This is a short-hand for an [Address] section only containing an Address key (see below).
          This option may be specified more than once.</para>

          <para>If the specified address is <literal>0.0.0.0</literal> (for IPv4) or
          <literal>::</literal> (for IPv6), a new address range of the requested size is automatically
          allocated from a system-wide pool of unused ranges. Note that the prefix length must be equal
          or larger than 8 for IPv4, and 64 for IPv6. The allocated range is checked against all
          current network interfaces and all known network configuration files to avoid address range
          conflicts. The default system-wide pool consists of 192.168.0.0/16, 172.16.0.0/12 and
          10.0.0.0/8 for IPv4, and fd00::/8 for IPv6. This functionality is useful to manage a large
          number of dynamically created network interfaces with the same network configuration and
          automatic address range assignment.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Gateway=</varname></term>
        <listitem>
          <para>The gateway address, which must be in the format described in
          <citerefentry project='man-pages'><refentrytitle>inet_pton</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
          This is a short-hand for a [Route] section only containing a <varname>Gateway=</varname> key.
          This option may be specified more than once.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>DNS=</varname></term>
        <listitem>
          <para>A DNS server address, which must be in the format described in
          <citerefentry project='man-pages'><refentrytitle>inet_pton</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
          This option may be specified more than once. Each address can optionally take a port number
          separated with <literal>:</literal>, a network interface name or index separated with
          <literal>%</literal>, and a Server Name Indication (SNI) separated with <literal>#</literal>.
          When IPv6 address is specified with a port number, then the address must be in the square
          brackets. That is, the acceptable full formats are
          <literal>111.222.333.444:9953%ifname#example.com</literal> for IPv4 and
          <literal>[1111:2222::3333]:9953%ifname#example.com</literal> for IPv6. If an empty string is
          assigned, then the all previous assignments are cleared. This setting is read by
          <citerefentry><refentrytitle>systemd-resolved.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Domains=</varname></term>
        <listitem>
          <para>A whitespace-separated list of domains which should be resolved using the DNS servers
          on this link. Each item in the list should be a domain name, optionally prefixed with a tilde
          (<literal>~</literal>). The domains with the prefix are called "routing-only domains". The
          domains without the prefix are called "search domains" and are first used as search suffixes
          for extending single-label hostnames (hostnames containing no dots) to become fully qualified
          domain names (FQDNs). If a single-label hostname is resolved on this interface, each of the
          specified search domains are appended to it in turn, converting it into a fully qualified
          domain name, until one of them may be successfully resolved.</para>

          <para>Both "search" and "routing-only" domains are used for routing of DNS queries: look-ups
          for hostnames ending in those domains (hence also single label names, if any "search domains"
          are listed), are routed to the DNS servers configured for this interface. The domain routing
          logic is particularly useful on multi-homed hosts with DNS servers serving particular private
          DNS zones on each interface.</para>

          <para>The "routing-only" domain <literal>~.</literal> (the tilde indicating definition of a
          routing domain, the dot referring to the DNS root domain which is the implied suffix of all
          valid DNS names) has special effect. It causes all DNS traffic which does not match another
          configured domain routing entry to be routed to DNS servers specified for this interface.
          This setting is useful to prefer a certain set of DNS servers if a link on which they are
          connected is available.</para>

          <para>This setting is read by
          <citerefentry><refentrytitle>systemd-resolved.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
          "Search domains" correspond to the <varname>domain</varname> and <varname>search</varname>
          entries in
          <citerefentry project='man-pages'><refentrytitle>resolv.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
          Domain name routing has no equivalent in the traditional glibc API, which has no concept of
          domain name servers limited to a specific link.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>DNSDefaultRoute=</varname></term>
        <listitem>
          <para>Takes a boolean argument. If true, this link's configured DNS servers are used for
          resolving domain names that do not match any link's configured <varname>Domains=</varname>
          setting. If false, this link's configured DNS servers are never used for such domains, and
          are exclusively used for resolving names that match at least one of the domains configured on
          this link. If not specified defaults to an automatic mode: queries not matching any link's
          configured domains will be routed to this link if it has no routing-only domains configured.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>NTP=</varname></term>
        <listitem>
          <para>An NTP server address (either an IP address, or a hostname). This option may be
          specified more than once. This setting is read by
          <citerefentry><refentrytitle>systemd-timesyncd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>IPForward=</varname></term>
        <listitem>
          <para>Configures IP packet forwarding for the system. If enabled, incoming packets on any
          network interface will be forwarded to any other interfaces according to the routing table.
          Takes a boolean, or the values <literal>ipv4</literal> or <literal>ipv6</literal>, which only
          enable IP packet forwarding for the specified address family. This controls the
          <filename>net.ipv4.ip_forward</filename> and <filename>net.ipv6.conf.all.forwarding</filename>
          sysctl options of the network interface (see
          <ulink url="https://docs.kernel.org/networking/ip-sysctl.html">IP Sysctl</ulink>
          for details about sysctl options). Defaults to <literal>no</literal>.</para>

          <para>Note: this setting controls a global kernel option, and does so one way only: if a
          network that has this setting enabled is set up the global setting is turned on. However,
          it is never turned off again, even after all networks with this setting enabled are shut
          down again.</para>

          <para>To allow IP packet forwarding only between specific network interfaces use a firewall.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>IPMasquerade=</varname></term>
        <listitem>
          <para>Configures IP masquerading for the network interface. If enabled, packets forwarded
          from the network interface will be appear as coming from the local host. Takes one of
          <literal>ipv4</literal>, <literal>ipv6</literal>, <literal>both</literal>, or
          <literal>no</literal>. Defaults to <literal>no</literal>. If enabled, this automatically sets
          <varname>IPForward=</varname> to one of <literal>ipv4</literal>, <literal>ipv6</literal> or
          <literal>yes</literal>.</para>
          <para>Note. Any positive boolean values such as <literal>yes</literal> or
          <literal>true</literal> are now deprecated. Please use one of the values in the above.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>IPv6PrivacyExtensions=</varname></term>
        <listitem>
          <para>Configures use of stateless temporary addresses that change over time (see
          <ulink url="https://tools.ietf.org/html/rfc4941">RFC 4941</ulink>,
          Privacy Extensions for Stateless Address Autoconfiguration in IPv6). Takes a boolean or the
          special values <literal>prefer-public</literal> and <literal>kernel</literal>. When true,
          enables the privacy extensions and prefers temporary addresses over public addresses. When
          <literal>prefer-public</literal>, enables the privacy extensions, but prefers public
          addresses over temporary addresses. When false, the privacy extensions remain disabled. When
          <literal>kernel</literal>, the kernel's default setting will be left in place. Defaults to
          <literal>no</literal>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>IPv6AcceptRA=</varname></term>
        <listitem>
          <para>Takes a boolean. Controls IPv6 Router Advertisement (RA) reception support for the
          interface. If true, RAs are accepted; if false, RAs are ignored. When RAs are accepted, they
          may trigger the start of the DHCPv6 client if the relevant flags are set in the RA data, or
          if no routers are found on the link. The default is to disable RA reception for bridge
          devices or when IP forwarding is enabled, and to enable it otherwise. Cannot be enabled on
          devices aggregated in a bond device or when link-local addressing is disabled.</para>

          <para>Further settings for the IPv6 RA support may be configured in the [IPv6AcceptRA]
          section, see below.</para>

          <para>Also see
          <ulink url="https://docs.kernel.org/networking/ip-sysctl.html">IP Sysctl</ulink>
          in the kernel documentation regarding <literal>accept_ra</literal>, but note that systemd's
          setting of <constant>1</constant> (i.e. true) corresponds to kernel's setting of
          <constant>2</constant>.</para>

          <para>Note that kernel's implementation of the IPv6 RA protocol is always disabled,
          regardless of this setting. If this option is enabled, a userspace implementation of the IPv6
          RA protocol is used, and the kernel's own implementation remains disabled, since
          <command>systemd-networkd</command> needs to know all details supplied in the advertisements,
          and these are not available from the kernel if the kernel's own implementation is used.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>IPv6DuplicateAddressDetection=</varname></term>
        <listitem>
          <para>Configures the amount of IPv6 Duplicate Address Detection (DAD) probes to send. When
          unset, the kernel's default will be used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>IPv6HopLimit=</varname></term>
        <listitem>
          <para>Configures IPv6 Hop Limit. For each router that forwards the packet, the hop limit is
          decremented by 1. When the hop limit field reaches zero, the packet is discarded. When unset,
          the kernel's default will be used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>IPv4AcceptLocal=</varname></term>
        <listitem>
          <para>Takes a boolean. Accept packets with local source addresses. In combination with
          suitable routing, this can be used to direct packets between two local interfaces over the
          wire and have them accepted properly. When unset, the kernel's default will be used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>IPv4RouteLocalnet=</varname></term>
        <listitem>
          <para>Takes a boolean. When true, the kernel does not consider loopback addresses as martian
          source or destination while routing. This enables the use of 127.0.0.0/8 for local routing
          purposes. When unset, the kernel's default will be used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>IPv4ProxyARP=</varname></term>
        <listitem>
          <para>Takes a boolean. Configures proxy ARP for IPv4. Proxy ARP is the technique in which one
          host, usually a router, answers ARP requests intended for another machine. By "faking" its
          identity, the router accepts responsibility for routing packets to the "real" destination.
          See <ulink url="https://tools.ietf.org/html/rfc1027">RFC 1027</ulink>. When unset, the
          kernel's default will be used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>IPv6ProxyNDP=</varname></term>
        <listitem>
          <para>Takes a boolean. Configures proxy NDP for IPv6. Proxy NDP (Neighbor Discovery Protocol)
          is a technique for IPv6 to allow routing of addresses to a different destination when peers
          expect them to be present on a certain physical link. In this case a router answers Neighbour
          Advertisement messages intended for another machine by offering its own MAC address as
          destination. Unlike proxy ARP for IPv4, it is not enabled globally, but will only send
          Neighbour Advertisement messages for addresses in the IPv6 neighbor proxy table, which can
          also be shown by <command>ip -6 neighbour show proxy</command>. systemd-networkd will control
          the per-interface `proxy_ndp` switch for each configured interface depending on this option.
          When unset, the kernel's default will be used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>IPv6ProxyNDPAddress=</varname></term>
        <listitem>
          <para>An IPv6 address, for which Neighbour Advertisement messages will be proxied. This
          option may be specified more than once. systemd-networkd will add the
          <varname>IPv6ProxyNDPAddress=</varname> entries to the kernel's IPv6 neighbor proxy table.
          This setting implies <varname>IPv6ProxyNDP=yes</varname> but has no effect if
          <varname>IPv6ProxyNDP=</varname> has been set to false. When unset, the kernel's default will
          be used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>IPv6SendRA=</varname></term>
        <listitem>
          <para>Whether to enable or disable Router Advertisement sending on a link. Takes a boolean
          value. When enabled, prefixes configured in [IPv6Prefix] sections and routes configured in
          the [IPv6RoutePrefix] sections are distributed as defined in the [IPv6SendRA] section. If
          <varname>DHCPPrefixDelegation=</varname> is enabled, then the delegated prefixes are also
          distributed. See <varname>DCHPPrefixDelegation=</varname> setting and the [IPv6SendRA],
          [IPv6Prefix], [IPv6RoutePrefix], and [DHCPPrefixDelegation] sections for more configuration
          options.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>DHCPPrefixDelegation=</varname></term>
        <listitem>
          <para>Takes a boolean value. When enabled, requests subnet prefixes on another link via the DHCPv6
          protocol or via the 6RD option in the DHCPv4 protocol. An address within each delegated prefix will
          be assigned, and the prefixes will be announced through IPv6 Router Advertisement if
          <varname>IPv6SendRA=</varname> is enabled. This behaviour can be configured in the
          [DHCPPrefixDelegation] section. Defaults to disabled.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>IPv6MTUBytes=</varname></term>
        <listitem>
          <para>Configures IPv6 maximum transmission unit (MTU). An integer greater than or equal to
          1280 bytes. When unset, the kernel's default will be used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>KeepMaster=</varname></term>
        <listitem>
          <para>Takes a boolean value. When enabled, the current master interface index will not be
          changed, and <varname>BatmanAdvanced=</varname>, <varname>Bond=</varname>,
          <varname>Bridge=</varname>, and <varname>VRF=</varname> settings are ignored. This may be
          useful when a netdev with a master interface is created by another program, e.g.
          <citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
          Defaults to false.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>BatmanAdvanced=</varname></term>
        <term><varname>Bond=</varname></term>
        <term><varname>Bridge=</varname></term>
        <term><varname>VRF=</varname></term>
        <listitem>
          <para>The name of the B.A.T.M.A.N. Advanced, bond, bridge, or VRF interface to add the link
          to. See
          <citerefentry><refentrytitle>systemd.netdev</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>IPoIB=</varname></term>
        <term><varname>IPVLAN=</varname></term>
        <term><varname>IPVTAP=</varname></term>
        <term><varname>MACsec=</varname></term>
        <term><varname>MACVLAN=</varname></term>
        <term><varname>MACVTAP=</varname></term>
        <term><varname>Tunnel=</varname></term>
        <term><varname>VLAN=</varname></term>
        <term><varname>VXLAN=</varname></term>
        <term><varname>Xfrm=</varname></term>
        <listitem>
          <para>The name of an IPoIB, IPVLAN, IPVTAP, MACsec, MACVLAN, MACVTAP, tunnel, VLAN,
          VXLAN, or Xfrm to be created on the link. See
          <citerefentry><refentrytitle>systemd.netdev</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
          This option may be specified more than once.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>ActiveSlave=</varname></term>
        <listitem>
          <para>Takes a boolean. Specifies the new active slave. The <literal>ActiveSlave=</literal>
          option is only valid for following modes: <literal>active-backup</literal>,
          <literal>balance-alb</literal>, and <literal>balance-tlb</literal>. Defaults to false.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>PrimarySlave=</varname></term>
        <listitem>
          <para>Takes a boolean. Specifies which slave is the primary device. The specified device will
          always be the active slave while it is available. Only when the primary is off-line will
          alternate devices be used.  This is useful when one slave is preferred over another, e.g.
          when one slave has higher throughput than another. The <literal>PrimarySlave=</literal>
          option is only valid for following modes: <literal>active-backup</literal>,
          <literal>balance-alb</literal>, and <literal>balance-tlb</literal>. Defaults to false.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>ConfigureWithoutCarrier=</varname></term>
        <listitem>
          <para>Takes a boolean. Allows networkd to configure a specific link even if it has no
          carrier. Defaults to false. If enabled, and the <varname>IgnoreCarrierLoss=</varname> setting
          is not explicitly set, then it is enabled as well.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>IgnoreCarrierLoss=</varname></term>
        <listitem>
          <para>Takes a boolean or a timespan. When true, <command>systemd-networkd</command> retains
          both the static and dynamic configuration of the interface even if its carrier is lost. When
          false, <command>systemd-networkd</command> drops both the static and dynamic configuration of
          the interface. When a timespan is specified, <command>systemd-networkd</command> waits for
          the specified timespan, and ignores the carrier loss if the link regain its carrier within
          the timespan. Setting 0 seconds is equivalent to <literal>no</literal>, and
          <literal>infinite</literal> is equivalent to <literal>yes</literal>.</para>

          <para>Setting a finite timespan may be useful when e.g. in the following cases:
          <itemizedlist>
            <listitem>
              <para>A wireless interface connecting to a network which has multiple access points with
              the same SSID.</para>
            </listitem>
            <listitem>
              <para>Enslaving a wireless interface to a bond interface, which may disconnect from the
              connected access point and causes its carrier to be lost.</para>
            </listitem>
            <listitem>
              <para>The driver of the interface resets when the MTU is changed.</para>
            </listitem>
          </itemizedlist>
          </para>

          <para>When <varname>Bond=</varname> is specified to a wireless interface, defaults to 3
          seconds. When the DHCPv4 client is enabled and <varname>UseMTU=</varname> in the [DHCPv4]
          section enabled, defaults to 5 seconds. Otherwise, defaults to the value specified with
          <varname>ConfigureWithoutCarrier=</varname>. When <varname>ActivationPolicy=</varname> is set
          to <literal>always-up</literal>, this is forced to <literal>yes</literal>, and ignored any
          user specified values.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>KeepConfiguration=</varname></term>
        <listitem>
          <para>Takes a boolean or one of <literal>static</literal>, <literal>dhcp-on-stop</literal>,
          <literal>dhcp</literal>. When <literal>static</literal>, <command>systemd-networkd</command>
          will not drop static addresses and routes on starting up process. When set to
          <literal>dhcp-on-stop</literal>, <command>systemd-networkd</command> will not drop addresses
          and routes on stopping the daemon. When <literal>dhcp</literal>,
          the addresses and routes provided by a DHCP server will never be dropped even if the DHCP
          lease expires. This is contrary to the DHCP specification, but may be the best choice if,
          e.g., the root filesystem relies on this connection. The setting <literal>dhcp</literal>
          implies <literal>dhcp-on-stop</literal>, and <literal>yes</literal> implies
          <literal>dhcp</literal> and <literal>static</literal>. Defaults to
          <literal>dhcp-on-stop</literal> when <command>systemd-networkd</command> is running in
          initrd, <literal>yes</literal> when the root filesystem is a network filesystem, and
          <literal>no</literal> otherwise.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[Address] Section Options</title>

    <para>An [Address] section accepts the following keys. Specify several [Address] sections to
    configure several addresses.</para>

    <variablelist class='network-directives'>
      <varlistentry>
        <term><varname>Address=</varname></term>
        <listitem>
          <para>As in the [Network] section. This setting is mandatory. Each [Address] section can
          contain one <varname>Address=</varname> setting.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Peer=</varname></term>
        <listitem>
          <para>The peer address in a point-to-point connection. Accepts the same format as the
          <varname>Address=</varname> setting.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Broadcast=</varname></term>
        <listitem>
          <para>Takes an IPv4 address or boolean value. The address must be in the format described in
          <citerefentry project='man-pages'><refentrytitle>inet_pton</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
          If set to true, then the IPv4 broadcast address will be derived from the
          <varname>Address=</varname> setting. If set to false, then the broadcast address will not be
          set. Defaults to true, except for wireguard interfaces, where it default to false.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Label=</varname></term>
        <listitem>
          <para>Specifies the label for the IPv4 address. The label must be a 7-bit ASCII string with
          a length of 1…15 characters. Defaults to unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>PreferredLifetime=</varname></term>
        <listitem>
          <para>Allows the default "preferred lifetime" of the address to be overridden. Only three
          settings are accepted: <literal>forever</literal>, <literal>infinity</literal>, which is the
          default and means that the address never expires, and <literal>0</literal>, which means that
          the address is considered immediately "expired" and will not be used, unless explicitly
          requested. A setting of <option>PreferredLifetime=0</option> is useful for addresses which
          are added to be used only by a specific application, which is then configured to use them
          explicitly.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Scope=</varname></term>
        <listitem>
          <para>The scope of the address, which can be <literal>global</literal> (valid everywhere on
          the network, even through a gateway), <literal>link</literal> (only valid on this device,
          will not traverse a gateway) or <literal>host</literal> (only valid within the device itself,
          e.g. 127.0.0.1) or an integer in the range 0…255. Defaults to <literal>global</literal>.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>RouteMetric=</varname></term>
        <listitem>
          <para>The metric of the prefix route, which is pointing to the subnet of the configured IP
          address, taking the configured prefix length into account. Takes an unsigned integer in the
          range 0…4294967295. When unset or set to 0, the kernel's default value is used. This
          setting will be ignored when <varname>AddPrefixRoute=</varname> is false.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>HomeAddress=</varname></term>
        <listitem>
          <para>Takes a boolean. Designates this address the "home address" as defined in
          <ulink url="https://tools.ietf.org/html/rfc6275">RFC 6275</ulink>. Supported only on IPv6.
          Defaults to false.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>DuplicateAddressDetection=</varname></term>
        <listitem>
          <para>Takes one of <literal>ipv4</literal>, <literal>ipv6</literal>, <literal>both</literal>,
          or <literal>none</literal>. When <literal>ipv4</literal>, performs IPv4 Address Conflict
          Detection. See <ulink url="https://tools.ietf.org/html/rfc5227">RFC 5227</ulink>.
          When <literal>ipv6</literal>, performs IPv6 Duplicate Address Detection. See
          <ulink url="https://tools.ietf.org/html/rfc4862">RFC 4862</ulink>. Defaults to
          <literal>ipv4</literal> for IPv4 link-local addresses, <literal>ipv6</literal> for IPv6
          addresses, and <literal>none</literal> otherwise.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>ManageTemporaryAddress=</varname></term>
        <listitem>
          <para>Takes a boolean. If true the kernel manage temporary addresses created from this one as
          template on behalf of Privacy Extensions
          <ulink url="https://tools.ietf.org/html/rfc3041">RFC 3041</ulink>. For this to become active,
          the use_tempaddr sysctl setting has to be set to a value greater than zero. The given address
          needs to have a prefix length of 64. This flag allows using privacy extensions in a manually
          configured network, just like if stateless auto-configuration was active. Defaults to false.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>AddPrefixRoute=</varname></term>
        <listitem>
          <para>Takes a boolean. When true, the prefix route for the address is automatically added.
          Defaults to true.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>AutoJoin=</varname></term>
        <listitem>
          <para>Takes a boolean. Joining multicast group on ethernet level via
          <command>ip maddr</command> command would not work if we have an Ethernet switch that does
          IGMP snooping since the switch would not replicate multicast packets on  ports that did not
          have IGMP reports for the multicast addresses. Linux vxlan interfaces created via
          <command>ip link add vxlan</command> or networkd's netdev kind vxlan have the group option
          that enables them to do the required join. By extending <command>ip address</command> command
          with option <literal>autojoin</literal> we can get similar functionality for openvswitch (OVS)
          vxlan interfaces as well as other tunneling mechanisms that need to receive multicast traffic.
          Defaults to <literal>no</literal>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>NetLabel=</varname><replaceable>label</replaceable></term>
        <listitem>

          <para>This setting provides a method for integrating static and dynamic network configuration into
          Linux <ulink url="https://docs.kernel.org/netlabel/index.html">NetLabel</ulink> subsystem rules,
          used by <ulink url="https://en.wikipedia.org/wiki/Linux_Security_Modules">Linux Security Modules
          (LSMs)</ulink> for network access control. The label, with suitable LSM rules, can be used to
          control connectivity of (for example) a service with peers in the local network. At least with
          SELinux, only the ingress can be controlled but not egress. The benefit of using this setting is
          that it may be possible to apply interface independent part of NetLabel configuration at very early
          stage of system boot sequence, at the time when the network interfaces are not available yet, with
          <citerefentry
          project='man-pages'><refentrytitle>netlabelctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
          and the per-interface configuration with <command>systemd-networkd</command> once the interfaces
          appear later. Currently this feature is only implemented for SELinux.</para>

          <para>The option expects a single NetLabel label. The label must conform to lexical restrictions of
          LSM labels. When an interface is configured with IP addresses, the addresses and subnetwork masks
          will be appended to the <ulink
          url="https://github.com/SELinuxProject/selinux-notebook/blob/main/src/network_support.md">NetLabel
          Fallback Peer Labeling</ulink> rules. They will be removed when the interface is
          deconfigured. Failures to manage the labels will be ignored.</para>

          <para>Warning: Once labeling is enabled for network traffic, a lot of LSM access control points in
          Linux networking stack go from dormant to active. Care should be taken to avoid getting into a
          situation where for example remote connectivity is broken, when the security policy hasn't been
          updated to consider LSM per-packet access controls and no rules would allow any network
          traffic. Also note that additional configuration with <citerefentry
          project='man-pages'><refentrytitle>netlabelctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>
          is needed.</para>

          <para>Example:
          <programlisting>[Address]
NetLabel=system_u:object_r:localnet_peer_t:s0</programlisting>

          With the example rules applying for interface <literal>eth0</literal>, when the interface is
          configured with an IPv4 address of 10.0.0.123/8, <command>systemd-networkd</command> performs the
          equivalent of <command>netlabelctl</command> operation

          <programlisting>netlabelctl unlbl add interface eth0 address:10.0.0.0/8 label:system_u:object_r:localnet_peer_t:s0</programlisting>

          and the reverse operation when the IPv4 address is deconfigured. The configuration can be used with
          LSM rules; in case of SELinux to allow a SELinux domain to receive data from objects of SELinux
          <literal>peer</literal> class. For example:

          <programlisting>type localnet_peer_t;
allow my_server_t localnet_peer_t:peer recv;</programlisting>

          The effect of the above configuration and rules (in absence of other rules as may be the case) is
          to only allow <literal>my_server_t</literal> (and nothing else) to receive data from local subnet
          10.0.0.0/8 of interface <literal>eth0</literal>.
          </para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[Neighbor] Section Options</title>

    <para>A [Neighbor] section accepts the following keys. The neighbor section adds a permanent,
    static entry to the neighbor table (IPv6) or ARP table (IPv4) for the given hardware address on the
    links matched for the network. Specify several [Neighbor] sections to configure several static
    neighbors.</para>

    <variablelist class='network-directives'>
      <varlistentry>
        <term><varname>Address=</varname></term>
        <listitem>
          <para>The IP address of the neighbor.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>LinkLayerAddress=</varname></term>
        <listitem>
          <para>The link layer address (MAC address or IP address) of the neighbor.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[IPv6AddressLabel] Section Options</title>

    <para>An [IPv6AddressLabel] section accepts the following keys. Specify several [IPv6AddressLabel]
    sections to configure several address labels. IPv6 address labels are used for address selection.
    See <ulink url="https://tools.ietf.org/html/rfc3484">RFC 3484</ulink>. Precedence is managed by
    userspace, and only the label itself is stored in the kernel.</para>

    <variablelist class='network-directives'>
      <varlistentry>
        <term><varname>Label=</varname></term>
        <listitem>
          <para>The label for the prefix, an unsigned integer in the range 0…4294967294. 0xffffffff is
          reserved. This setting is mandatory.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Prefix=</varname></term>
        <listitem>
          <para>IPv6 prefix is an address with a prefix length, separated by a slash
          <literal>/</literal> character. This setting is mandatory. </para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[RoutingPolicyRule] Section Options</title>

    <para>An [RoutingPolicyRule] section accepts the following settings. Specify several
    [RoutingPolicyRule] sections to configure several rules.</para>

    <variablelist class='network-directives'>
      <varlistentry>
        <term><varname>TypeOfService=</varname></term>
        <listitem>
          <para>Takes a number between 0 and 255 that specifies the type of service to match.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>From=</varname></term>
        <listitem>
          <para>Specifies the source address prefix to match. Possibly followed by a slash and the
          prefix length.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>To=</varname></term>
        <listitem>
          <para>Specifies the destination address prefix to match. Possibly followed by a slash and the
          prefix length.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>FirewallMark=</varname></term>
        <listitem>
          <para>Specifies the iptables firewall mark value to match (a number in the range
          1…4294967295). Optionally, the firewall mask (also a number between 1…4294967295) can be
          suffixed with a slash (<literal>/</literal>), e.g., <literal>7/255</literal>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Table=</varname></term>
        <listitem>
          <para>Specifies the routing table identifier to look up if the rule selector matches. Takes
          one of predefined names <literal>default</literal>, <literal>main</literal>, and
          <literal>local</literal>, and names defined in <varname>RouteTable=</varname> in
          <citerefentry><refentrytitle>networkd.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
          or a number between 1 and 4294967295. Defaults to <literal>main</literal>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Priority=</varname></term>
        <listitem>
          <para>Specifies the priority of this rule. <varname>Priority=</varname> is an integer in the
          range 0…4294967295. Higher number means lower priority, and rules get processed in order of
          increasing number. Defaults to unset, and the kernel will pick a value dynamically.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>IncomingInterface=</varname></term>
        <listitem>
          <para>Specifies incoming device to match. If the interface is loopback, the rule only matches
          packets originating from this host.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>OutgoingInterface=</varname></term>
        <listitem>
          <para>Specifies the outgoing device to match. The outgoing interface is only available for
          packets originating from local sockets that are bound to a device.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>SourcePort=</varname></term>
        <listitem>
          <para>Specifies the source IP port or IP port range match in forwarding information base
          (FIB) rules. A port range is specified by the lower and upper port separated by a dash.
          Defaults to unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>DestinationPort=</varname></term>
        <listitem>
          <para>Specifies the destination IP port or IP port range match in forwarding information base
          (FIB) rules. A port range is specified by the lower and upper port separated by a dash.
          Defaults to unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>IPProtocol=</varname></term>
        <listitem>
          <para>Specifies the IP protocol to match in forwarding information base (FIB) rules. Takes IP
          protocol name such as <literal>tcp</literal>, <literal>udp</literal> or
          <literal>sctp</literal>, or IP protocol number such as <literal>6</literal> for
          <literal>tcp</literal> or <literal>17</literal> for <literal>udp</literal>. Defaults to unset.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>InvertRule=</varname></term>
        <listitem>
          <para>A boolean. Specifies whether the rule is to be inverted. Defaults to false.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Family=</varname></term>
        <listitem>
          <para>Takes a special value <literal>ipv4</literal>, <literal>ipv6</literal>, or
          <literal>both</literal>. By default, the address family is determined by the address
          specified in <varname>To=</varname> or <varname>From=</varname>. If neither
          <varname>To=</varname> nor <varname>From=</varname> are specified, then defaults to
          <literal>ipv4</literal>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>User=</varname></term>
        <listitem>
          <para>Takes a username, a user ID, or a range of user IDs separated by a dash. Defaults to
          unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>SuppressPrefixLength=</varname></term>
        <listitem>
          <para>Takes a number <replaceable>N</replaceable> in the range 0…128 and rejects routing
          decisions that have a prefix length of <replaceable>N</replaceable> or less. Defaults to
          unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>SuppressInterfaceGroup=</varname></term>
        <listitem>
          <para>Takes an integer in the range 0…2147483647 and rejects routing decisions that have
          an interface with the same group id. It has the same meaning as
          <option>suppress_ifgroup</option> in <command>ip rule</command>. Defaults to unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Type=</varname></term>
        <listitem>
          <para>Specifies Routing Policy Database (RPDB) rule type. Takes one of
          <literal>blackhole</literal>, <literal>unreachable</literal> or <literal>prohibit</literal>.
          </para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[NextHop] Section Options</title>

    <para>The [NextHop] section is used to manipulate entries in the kernel's "nexthop" tables. The
    [NextHop] section accepts the following settings. Specify several [NextHop] sections to configure
    several hops.</para>

    <variablelist class='network-directives'>
      <varlistentry>
        <term><varname>Id=</varname></term>
        <listitem>
          <para>The id of the next hop. Takes an integer in the range 1…4294967295. If unspecified,
          then automatically chosen by kernel.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Gateway=</varname></term>
        <listitem>
          <para>As in the [Network] section.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Family=</varname></term>
        <listitem>
          <para>Takes one of the special values <literal>ipv4</literal> or <literal>ipv6</literal>.
          By default, the family is determined by the address specified in
          <varname>Gateway=</varname>. If <varname>Gateway=</varname> is not specified, then defaults
          to <literal>ipv4</literal>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>OnLink=</varname></term>
        <listitem>
          <para>Takes a boolean. If set to true, the kernel does not have to check if the gateway is
          reachable directly by the current machine (i.e., attached to the local network), so that we
          can insert the nexthop in the kernel table without it being complained about. Defaults to
          <literal>no</literal>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Blackhole=</varname></term>
        <listitem>
          <para>Takes a boolean. If enabled, packets to the corresponding routes are discarded
          silently, and <varname>Gateway=</varname> cannot be specified. Defaults to
          <literal>no</literal>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Group=</varname></term>
        <listitem>
          <para>Takes a whitespace separated list of nexthop IDs. Each ID must be in the range
          1…4294967295. Optionally, each nexthop ID can take a weight after a colon
          (<literal><replaceable>id</replaceable><optional>:<replaceable>weight</replaceable></optional></literal>).
          The weight must be in the range 1…255. If the weight is not specified, then it is assumed
          that the weight is 1. This setting cannot be specified with <varname>Gateway=</varname>,
          <varname>Family=</varname>, <varname>Blackhole=</varname>. This setting can be specified
          multiple times. If an empty string is assigned, then the all previous assignments are
          cleared. Defaults to unset.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[Route] Section Options</title>

    <para>The [Route] section accepts the following settings. Specify several [Route] sections to
    configure several routes.</para>

    <variablelist class='network-directives'>
      <varlistentry>
        <term><varname>Gateway=</varname></term>
        <listitem>
          <para>Takes the gateway address or the special values <literal>_dhcp4</literal> and
          <literal>_ipv6ra</literal>. If <literal>_dhcp4</literal> or <literal>_ipv6ra</literal> is
          set, then the gateway address provided by DHCPv4 or IPv6 RA is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>GatewayOnLink=</varname></term>
        <listitem>
          <para>Takes a boolean. If set to true, the kernel does not have to check if the gateway is
          reachable directly by the current machine (i.e., attached to the local network), so that we
          can insert the route in the kernel table without it being complained about. Defaults to
          <literal>no</literal>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Destination=</varname></term>
        <listitem>
          <para>The destination prefix of the route. Possibly followed by a slash and the prefix
          length. If omitted, a full-length host route is assumed.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Source=</varname></term>
        <listitem>
          <para>The source prefix of the route. Possibly followed by a slash and the prefix length. If
          omitted, a full-length host route is assumed.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Metric=</varname></term>
        <listitem>
          <para>The metric of the route. Takes an unsigned integer in the range 0…4294967295. Defaults
          to unset, and the kernel's default will be used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>IPv6Preference=</varname></term>
        <listitem>
          <para>Specifies the route preference as defined in
          <ulink url="https://tools.ietf.org/html/rfc4191">RFC 4191</ulink> for Router Discovery
          messages. Which can be one of <literal>low</literal> the route has a lowest priority,
          <literal>medium</literal> the route has a default priority or <literal>high</literal> the
          route has a highest priority.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Scope=</varname></term>
        <listitem>
          <para>The scope of the IPv4 route, which can be <literal>global</literal>,
          <literal>site</literal>, <literal>link</literal>, <literal>host</literal>, or
          <literal>nowhere</literal>:</para>
          <itemizedlist>
            <listitem>
              <para><literal>global</literal> means the route can reach hosts more than one hop away.
              </para>
            </listitem>

            <listitem>
              <para><literal>site</literal> means an interior route in the local autonomous system.
              </para>
            </listitem>

            <listitem>
              <para><literal>link</literal> means the route can only reach hosts on the local network
              (one hop away).</para>
            </listitem>

            <listitem>
              <para><literal>host</literal> means the route will not leave the local machine (used for
              internal addresses like 127.0.0.1).</para>
            </listitem>

            <listitem>
              <para><literal>nowhere</literal> means the destination doesn't exist.</para>
            </listitem>
          </itemizedlist>

          <para>For IPv4 route, defaults to <literal>host</literal> if <varname>Type=</varname> is
          <literal>local</literal> or <literal>nat</literal>, and <literal>link</literal> if
          <varname>Type=</varname> is <literal>broadcast</literal>, <literal>multicast</literal>,
          <literal>anycast</literal>, or <literal>unicast</literal>. In other cases,
          defaults to <literal>global</literal>. The value is not used for IPv6.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>PreferredSource=</varname></term>
        <listitem>
          <para>The preferred source address of the route. The address must be in the format described
          in
          <citerefentry project='man-pages'><refentrytitle>inet_pton</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Table=</varname></term>
        <listitem>
          <para>The table identifier for the route. Takes one of predefined names
          <literal>default</literal>, <literal>main</literal>, and <literal>local</literal>, and names
          defined in <varname>RouteTable=</varname> in
          <citerefentry><refentrytitle>networkd.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
          or a number between 1 and 4294967295. 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>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Protocol=</varname></term>
        <listitem>
          <para>The protocol identifier for the route. Takes a number between 0 and 255 or the special
          values <literal>kernel</literal>, <literal>boot</literal>, <literal>static</literal>,
          <literal>ra</literal> and <literal>dhcp</literal>. Defaults to <literal>static</literal>.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Type=</varname></term>
        <listitem>
          <para>Specifies the type for the route. Takes one of <literal>unicast</literal>,
          <literal>local</literal>, <literal>broadcast</literal>, <literal>anycast</literal>,
          <literal>multicast</literal>, <literal>blackhole</literal>, <literal>unreachable</literal>,
          <literal>prohibit</literal>, <literal>throw</literal>, <literal>nat</literal>, and
          <literal>xresolve</literal>. If <literal>unicast</literal>, a regular route is defined, i.e.
          a route indicating the path to take to a destination network address. If
          <literal>blackhole</literal>, packets to the defined route are discarded silently. If
          <literal>unreachable</literal>, packets to the defined route are discarded and the ICMP
          message "Host Unreachable" is generated. If <literal>prohibit</literal>, packets to the
          defined route are discarded and the ICMP message "Communication Administratively Prohibited"
          is generated. If <literal>throw</literal>, route lookup in the current routing table will
          fail and the route selection process will return to Routing Policy Database (RPDB). Defaults
          to <literal>unicast</literal>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>InitialCongestionWindow=</varname></term>
        <listitem>
          <para>The TCP initial congestion window is used during the start of a TCP connection.
          During the start of a TCP session, when a client requests a resource, the server's initial
          congestion window determines how many packets will be sent during the initial burst of data
          without waiting for acknowledgement. Takes a number between 1 and 1023. Note that 100 is
          considered an extremely large value for this option. When unset, the kernel's default
          (typically 10) will be used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>InitialAdvertisedReceiveWindow=</varname></term>
        <listitem>
          <para>The TCP initial advertised receive window is the amount of receive data (in bytes)
          that can initially be buffered at one time on a connection. The sending host can send only
          that amount of data before waiting for an acknowledgment and window update from the
          receiving host. Takes a number between 1 and 1023. Note that 100 is considered an extremely
          large value for this option. When unset, the kernel's default will be used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>QuickAck=</varname></term>
        <listitem>
          <para>Takes a boolean. When true, the TCP quick ACK mode for the route is enabled. When unset,
          the kernel's default will be used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>FastOpenNoCookie=</varname></term>
        <listitem>
          <para>Takes a boolean. When true enables TCP fastopen without a cookie on a per-route basis.
          When unset, the kernel's default will be used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>TTLPropagate=</varname></term>
        <listitem>
          <para>Takes a boolean. When true enables TTL propagation at Label Switched Path (LSP) egress.
          When unset, the kernel's default will be used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>MTUBytes=</varname></term>
        <listitem>
          <para>The maximum transmission unit in bytes to set for the route. The usual suffixes K, M,
          G, are supported and are understood to the base of 1024.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>TCPAdvertisedMaximumSegmentSize=</varname></term>
        <listitem>
          <para>Specifies the Path MSS (in bytes) hints given on TCP layer. The usual suffixes K, M, G,
          are supported and are understood to the base of 1024. An unsigned integer in the range
          1…4294967294. When unset, the kernel's default will be used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>TCPCongestionControlAlgorithm=</varname></term>
        <listitem>
          <para>Specifies the TCP congestion control algorithm for the route. Takes a name of the algorithm,
          e.g. <literal>bbr</literal>, <literal>dctcp</literal>, or <literal>vegas</literal>. When unset,
          the kernel's default will be used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>MultiPathRoute=<replaceable>address</replaceable>[@<replaceable>name</replaceable>] [<replaceable>weight</replaceable>]</varname></term>
        <listitem>
          <para>Configures multipath route. Multipath routing is the technique of using multiple
          alternative paths through a network. Takes gateway address. Optionally, takes a network
          interface name or index separated with <literal>@</literal>, and a weight in 1..256 for this
          multipath route separated with whitespace. This setting can be specified multiple times. If
          an empty string is assigned, then the all previous assignments are cleared.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>NextHop=</varname></term>
        <listitem>
          <para>Specifies the nexthop id. Takes an unsigned integer in the range 1…4294967295. If set,
          the corresponding [NextHop] section must be configured. Defaults to unset.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[DHCPv4] Section Options</title>

    <para>The [DHCPv4] section configures the DHCPv4 client, if it is enabled with the
    <varname>DHCP=</varname> setting described above:</para>

    <variablelist class='network-directives'>

      <!-- DHCP packet contents -->

      <varlistentry>
        <term><varname>SendHostname=</varname></term>
        <listitem>
          <para>When true (the default), the machine's hostname (or the value specified with
          <varname>Hostname=</varname>, described below) will be sent to the DHCP server. Note that the
          hostname must consist only of 7-bit ASCII lower-case characters and no spaces or dots, and be
          formatted as a valid DNS domain name. Otherwise, the hostname is not sent even if this option
          is true.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Hostname=</varname></term>
        <listitem>
          <para>Use this value for the hostname which is sent to the DHCP server, instead of machine's
          hostname. Note that the specified hostname must consist only of 7-bit ASCII lower-case
          characters and no spaces or dots, and be formatted as a valid DNS domain name.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>MUDURL=</varname></term>
        <listitem>
          <para>When configured, the specified Manufacturer Usage Description (MUD) URL will be sent
          to the DHCPv4 server. Takes a URL of length up to 255 characters. A superficial verification
          that the string is a valid URL will be performed. DHCPv4 clients are intended to have at most
          one MUD URL associated with them. See
          <ulink url="https://tools.ietf.org/html/rfc8520">RFC 8520</ulink>.</para>

          <para>MUD is an embedded software standard defined by the IETF that allows IoT device makers
          to advertise device specifications, including the intended communication patterns for their
          device when it connects to the network. The network can then use this to author a
          context-specific access policy, so the device functions only within those parameters.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>ClientIdentifier=</varname></term>
        <listitem>
          <para>The DHCPv4 client identifier to use. Takes one of <option>mac</option>,
          <option>duid</option> or <option>duid-only</option>. If set to <option>mac</option>, the
          MAC address of the link is used. If set to <option>duid</option>, an RFC4361-compliant Client
          ID, which is the combination of IAID and DUID (see below), is used. If set to
          <option>duid-only</option>, only DUID is used, this may not be RFC compliant, but some setups
          may require to use this. Defaults to <option>duid</option>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>VendorClassIdentifier=</varname></term>
        <listitem>
          <para>The vendor class identifier used to identify vendor type and configuration.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>UserClass=</varname></term>
        <listitem>
          <para>A DHCPv4 client can use UserClass option to identify the type or category of user or
          applications it represents. The information contained in this option is a string that
          represents the user class of which the client is a member. Each class sets an identifying
          string of information to be used by the DHCP service to classify clients. Takes a
          whitespace-separated list of strings.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>DUIDType=</varname></term>
        <listitem>
          <para>Override the global <varname>DUIDType=</varname> setting for this network. See
          <citerefentry><refentrytitle>networkd.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
          for a description of possible values.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>DUIDRawData=</varname></term>
        <listitem>
          <para>Override the global <varname>DUIDRawData=</varname> setting for this network. See
          <citerefentry><refentrytitle>networkd.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
          for a description of possible values.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>IAID=</varname></term>
        <listitem>
          <para>The DHCP Identity Association Identifier (IAID) for the interface, a 32-bit unsigned
          integer.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Anonymize=</varname></term>
        <listitem>
          <para>Takes a boolean. When true, the options sent to the DHCP server will follow the
          <ulink url="https://tools.ietf.org/html/rfc7844">RFC 7844</ulink> (Anonymity Profiles for
          DHCP Clients) to minimize disclosure of identifying information. Defaults to false.</para>

          <para>This option should only be set to true when <varname>MACAddressPolicy=</varname> is set
          to <option>random</option> (see
          <citerefentry><refentrytitle>systemd.link</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
          </para>

          <para>When true, <varname>SendHostname=</varname>, <varname>ClientIdentifier=</varname>,
          <varname>VendorClassIdentifier=</varname>, <varname>UserClass=</varname>,
          <varname>RequestOptions=</varname>, <varname>SendOption=</varname>,
          <varname>SendVendorOption=</varname>, and <varname>MUDURL=</varname> are ignored.</para>

          <para>With this option enabled DHCP requests will mimic those generated by Microsoft
          Windows, in order to reduce the ability to fingerprint and recognize installations. This
          means DHCP request sizes will grow and lease data will be more comprehensive than normally,
          though most of the requested data is not actually used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>RequestOptions=</varname></term>
        <listitem>
          <para>Sets request options to be sent to the server in the DHCPv4 request options list. A
          whitespace-separated list of integers in the range 1…254. Defaults to unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>SendOption=</varname></term>
        <listitem>
          <para>Send an arbitrary raw option in the DHCPv4 request. Takes a DHCP option number, data
          type and data separated with a colon
          (<literal><replaceable>option</replaceable>:<replaceable>type</replaceable>:<replaceable>value</replaceable></literal>).
          The option number must be an integer in the range 1…254. The type takes one of
          <literal>uint8</literal>, <literal>uint16</literal>, <literal>uint32</literal>,
          <literal>ipv4address</literal>, or <literal>string</literal>. Special characters in the data
          string may be escaped using
          <ulink url="https://en.wikipedia.org/wiki/Escape_sequences_in_C#Table_of_escape_sequences">C-style
          escapes</ulink>. This setting can be specified multiple times. If an empty string is
          specified, then all options specified earlier are cleared. Defaults to unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>SendVendorOption=</varname></term>
        <listitem>
          <para>Send an arbitrary vendor option in the DHCPv4 request. Takes a DHCP option number, data
          type and data separated with a colon
          (<literal><replaceable>option</replaceable>:<replaceable>type</replaceable>:<replaceable>value</replaceable></literal>).
          The option number must be an integer in the range 1…254. The type takes one of
          <literal>uint8</literal>, <literal>uint16</literal>, <literal>uint32</literal>,
          <literal>ipv4address</literal>, or <literal>string</literal>. Special characters in the data
          string may be escaped using
          <ulink url="https://en.wikipedia.org/wiki/Escape_sequences_in_C#Table_of_escape_sequences">C-style
          escapes</ulink>. This setting can be specified multiple times. If an empty string is specified,
          then all options specified earlier are cleared. Defaults to unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>IPServiceType=</varname></term>
        <listitem>
          <para>Takes one of the special values <literal>none</literal>, <literal>CS6</literal>, or
          <literal>CS4</literal>. When <literal>none</literal> no IP service type is set to the packet
          sent from the DHCPv4 client. When <literal>CS6</literal> (network control) or
          <literal>CS4</literal> (realtime), the corresponding service type will be set. Defaults to
          <literal>CS6</literal>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>SocketPriority=</varname></term>
        <listitem>
          <para>The Linux socket option <constant>SO_PRIORITY</constant> applied to the raw IP socket used for
          initial DHCPv4 messages. Unset by default. Usual values range from 0 to 6.
          More details about <constant>SO_PRIORITY</constant> socket option in
          <citerefentry project='man-pages'><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>.
          Can be used in conjunction with [VLAN] section <varname>EgressQOSMaps=</varname> setting of .netdev
          file to set the 802.1Q VLAN ethernet tagged header priority, see
          <citerefentry><refentrytitle>systemd.netdev</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
          </para>
        </listitem>
      </varlistentry>

      <!-- How to use the DHCP lease -->

      <varlistentry>
        <term><varname>Label=</varname></term>
        <listitem>
          <para>Specifies the label for the IPv4 address received from the DHCP server. The label must
          be a 7-bit ASCII string with a length of 1…15 characters. Defaults to unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>UseDNS=</varname></term>
        <listitem>
          <para>When true (the default), the DNS servers received from the DHCP server will be used.
          </para>

          <para>This corresponds to the <option>nameserver</option> option in
          <citerefentry project='man-pages'><refentrytitle>resolv.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>RoutesToDNS=</varname></term>
        <listitem>
          <para>When true, the routes to the DNS servers received from the DHCP server will be
          configured. When <varname>UseDNS=</varname> is disabled, this setting is ignored. Defaults to
          true.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>UseNTP=</varname></term>
        <listitem>
          <para>When true (the default), the NTP servers received from the DHCP server will be used by
          <filename>systemd-timesyncd.service</filename>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>RoutesToNTP=</varname></term>
        <listitem>
          <para>When true, the routes to the NTP servers received from the DHCP server will be
          configured. When <varname>UseNTP=</varname> is disabled, this setting is ignored. Defaults to
          true.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>UseSIP=</varname></term>
        <listitem>
          <para>When true (the default), the SIP servers received from the DHCP server will be collected
          and made available to client programs.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>UseMTU=</varname></term>
        <listitem>
          <para>When true, the interface maximum transmission unit from the DHCP server will be used on
          the current link. If <varname>MTUBytes=</varname> is set, then this setting is ignored.
          Defaults to false.</para>

          <para>Note, some drivers will reset the interfaces if the MTU is changed. For such
          interfaces, please try to use <varname>IgnoreCarrierLoss=</varname> with a short timespan,
          e.g. <literal>3 seconds</literal>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>UseHostname=</varname></term>
        <listitem>
          <para>When true (the default), the hostname received from the DHCP server will be set as the
          transient hostname of the system.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>UseDomains=</varname></term>
        <listitem>
          <para>Takes a boolean, or the special value <option>route</option>. When true, the domain name
          received from the DHCP server will be used as DNS search domain over this link, similarly to the
          effect of the <option>Domains=</option> setting. If set to <option>route</option>, the domain name
          received from the DHCP server will be used for routing DNS queries only, but not for searching,
          similarly to the effect of the <option>Domains=</option> setting when the argument is prefixed with
          <literal>~</literal>. Defaults to false.</para>

          <para>It is recommended to enable this option only on trusted networks, as setting this
          affects resolution of all hostnames, in particular of single-label names. It is generally
          safer to use the supplied domain only as routing domain, rather than as search domain, in
          order to not have it affect local resolution of single-label names.</para>

          <para>When set to true, this setting corresponds to the <option>domain</option> option in
          <citerefentry project='man-pages'><refentrytitle>resolv.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>UseRoutes=</varname></term>
        <listitem>
          <para>When true (the default), the static routes will be requested from the DHCP server and
          added to the routing table with a metric of 1024, and a scope of <option>global</option>,
          <option>link</option> or <option>host</option>, depending on the route's destination and
          gateway. If the destination is on the local host, e.g., 127.x.x.x, or the same as the link's
          own address, the scope will be set to <option>host</option>. Otherwise if the gateway is null
          (a direct route), a <option>link</option> scope will be used. For anything else, scope
          defaults to <option>global</option>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>RouteMetric=</varname></term>
        <listitem>
          <para>Set the routing metric for routes specified by the DHCP server (including the prefix
          route added for the specified prefix). Takes an unsigned integer in the range 0…4294967295.
          Defaults to 1024.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>RouteTable=<replaceable>num</replaceable></varname></term>
        <listitem>
          <para>The table identifier for DHCP routes. Takes one of predefined names
          <literal>default</literal>, <literal>main</literal>, and <literal>local</literal>, and names
          defined in <varname>RouteTable=</varname> in
          <citerefentry><refentrytitle>networkd.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
          or a number between 1…4294967295.</para>

          <para>When used in combination with <varname>VRF=</varname>, the VRF's routing table is
          used when this parameter is not specified.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>RouteMTUBytes=</varname></term>
        <listitem>
          <para>Specifies the MTU for the DHCP routes. Please see the [Route] section for further
          details.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>QuickAck=</varname></term>
        <listitem>
          <para>Takes a boolean. When true, the TCP quick ACK mode is enabled for the routes configured by
          the acquired DHCPv4 lease. When unset, the kernel's default will be used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>UseGateway=</varname></term>
        <listitem>
          <para>When true, the gateway will be requested from the DHCP server and added to the routing
          table with a metric of 1024, and a scope of <option>link</option>. When unset, the value
          specified with <varname>UseRoutes=</varname> is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>UseTimezone=</varname></term>
        <listitem><para>When true, the timezone received from the DHCP server will be set as timezone
        of the local system. Defaults to false.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Use6RD=</varname></term>
        <listitem>
          <para>When true, subnets of the received IPv6 prefix are assigned to downstream interfaces
          which enables <varname>DHCPPrefixDelegation=</varname>. See also
          <varname>DHCPPrefixDelegation=</varname> in the [Network] section, the [DHCPPrefixDelegation]
          section, and <ulink url="https://tools.ietf.org/html/rfc5969">RFC 5969</ulink>. Defaults to
          false.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>FallbackLeaseLifetimeSec=</varname></term>
        <listitem>
          <para>Allows one to set DHCPv4 lease lifetime when DHCPv4 server does not send the lease
          lifetime. Takes one of <literal>forever</literal> or <literal>infinity</literal>. If
          specified, the acquired address never expires. Defaults to unset.</para>
        </listitem>
      </varlistentry>

      <!-- How to communicate with the server -->

      <varlistentry>
        <term><varname>RequestBroadcast=</varname></term>
        <listitem>
          <para>Request the server to use broadcast messages before the IP address has been configured.
          This is necessary for devices that cannot receive RAW packets, or that cannot receive packets
          at all before an IP address has been configured. On the other hand, this must not be enabled
          on networks where broadcasts are filtered out.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>MaxAttempts=</varname></term>
        <listitem>
          <para>Specifies how many times the DHCPv4 client configuration should be attempted. Takes a
          number or <literal>infinity</literal>. Defaults to <literal>infinity</literal>. Note that the
          time between retries is increased exponentially, up to approximately one per minute, so the
          network will not be overloaded even if this number is high. The default is suitable in most
          circumstances.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>ListenPort=</varname></term>
        <listitem>
          <para>Set the port from which the DHCP client packets originate.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>DenyList=</varname></term>
        <listitem>
          <para>A whitespace-separated list of IPv4 addresses. Each address can optionally take a
          prefix length after <literal>/</literal>. DHCP offers from servers in the list are rejected.
          Note that if <varname>AllowList=</varname> is configured then <varname>DenyList=</varname> is
          ignored.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>AllowList=</varname></term>
        <listitem>
          <para>A whitespace-separated list of IPv4 addresses. Each address can optionally take a
          prefix length after <literal>/</literal>. DHCP offers from servers in the list are accepted.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>SendRelease=</varname></term>
        <listitem>
          <para>When true, the DHCPv4 client sends a DHCP release packet when it stops. Defaults to
          true.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>SendDecline=</varname></term>
        <listitem>
          <para>A boolean. When true, <command>systemd-networkd</command> performs IPv4 Duplicate
          Address Detection to the acquired address by the DHCPv4 client. If duplicate is detected,
          the DHCPv4 client rejects the address by sending a <constant>DHCPDECLINE</constant> packet to
          the DHCP server, and tries to obtain an IP address again. See
          <ulink url="https://tools.ietf.org/html/rfc5227">RFC 5227</ulink>. Defaults to false.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>NetLabel=</varname></term>
        <listitem>
          <para>This applies the NetLabel for the addresses received with DHCP, like
          <varname>NetLabel=</varname> in [Address] section applies it to statically configured
          addresses. See <varname>NetLabel=</varname> in [Address] section for more details.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[DHCPv6] Section Options</title>

    <para>The [DHCPv6] section configures the DHCPv6 client, if it is enabled with the
    <varname>DHCP=</varname> setting described above, or invoked by the IPv6 Router Advertisement:
    </para>

    <variablelist class='network-directives'>

      <!-- DHCP packet contents -->

      <varlistentry>
        <term><varname>MUDURL=</varname></term>
        <term><varname>IAID=</varname></term>
        <term><varname>DUIDType=</varname></term>
        <term><varname>DUIDRawData=</varname></term>
        <term><varname>RequestOptions=</varname></term>
        <listitem>
          <para>As in the [DHCPv4] section.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>SendOption=</varname></term>
        <listitem>
          <para>As in the [DHCPv4] section, however because DHCPv6 uses 16-bit fields to store option
          numbers, the option number is an integer in the range 1…65536.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>SendVendorOption=</varname></term>
        <listitem>
          <para>Send an arbitrary vendor option in the DHCPv6 request. Takes an enterprise identifier,
          DHCP option number, data type, and data separated with a colon
          (<literal><replaceable>enterprise identifier</replaceable>:<replaceable>option</replaceable>:<replaceable>type</replaceable>:<replaceable>value</replaceable></literal>).
          Enterprise identifier is an unsigned integer in the range 1…4294967294. The option number
          must be an integer in the range 1…254. Data type takes one of <literal>uint8</literal>,
          <literal>uint16</literal>, <literal>uint32</literal>, <literal>ipv4address</literal>,
          <literal>ipv6address</literal>, or <literal>string</literal>. Special characters in the data
          string may be escaped using
          <ulink url="https://en.wikipedia.org/wiki/Escape_sequences_in_C#Table_of_escape_sequences">C-style
          escapes</ulink>. This setting can be specified multiple times. If an empty string is
          specified, then all options specified earlier are cleared. Defaults to unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>UserClass=</varname></term>
        <listitem>
          <para>A DHCPv6 client can use User Class option to identify the type or category of user or
          applications it represents. The information contained in this option is a string that
          represents the user class of which the client is a member. Each class sets an identifying
          string of information to be used by the DHCP service to classify clients. Special characters
          in the data string may be escaped using
          <ulink url="https://en.wikipedia.org/wiki/Escape_sequences_in_C#Table_of_escape_sequences">C-style
          escapes</ulink>. This setting can be specified multiple times. If an empty string is
          specified, then all options specified earlier are cleared. Takes a whitespace-separated list
          of strings. Note that currently <constant>NUL</constant> bytes are not allowed.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>VendorClass=</varname></term>
        <listitem>
          <para>A DHCPv6 client can use VendorClass option to identify the vendor that manufactured the
          hardware on which the client is running. The information contained in the data area of this
          option is contained in one or more opaque fields that identify details of the hardware
          configuration. Takes a whitespace-separated list of strings.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>PrefixDelegationHint=</varname></term>
        <listitem>
          <para>Takes an IPv6 address with prefix length in the same format as the
          <varname>Address=</varname> in the [Network] section. The DHCPv6 client will include a prefix
          hint in the DHCPv6 solicitation sent to the server. The prefix length must be in the range
          1…128. Defaults to unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>RapidCommit=</varname></term>
        <listitem>
          <para>Takes a boolean. The DHCPv6 client can obtain configuration parameters from a DHCPv6 server
          through a rapid two-message exchange (solicit and reply). When the rapid commit option is set by
          both the DHCPv6 client and the DHCPv6 server, the two-message exchange is used. Otherwise, the
          four-message exchange (solicit, advertise, request, and reply) is used. The two-message exchange
          provides faster client configuration. See
          <ulink url="https://tools.ietf.org/html/rfc3315#section-17.2.1">RFC 3315</ulink> for details.
          Defaults to true, and the two-message exchange will be used if the server support it.</para>
        </listitem>
      </varlistentry>

      <!-- How to use the DHCP lease -->

      <varlistentry>
        <term><varname>UseAddress=</varname></term>
        <listitem>
          <para>When true (the default), the IP addresses provided by the DHCPv6 server will be
          assigned.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>UseDelegatedPrefix=</varname></term>
        <listitem>
          <para>When true (the default), the client will request the DHCPv6 server to delegate
          prefixes. If the server provides prefixes to be delegated, then subnets of the prefixes are
          assigned to the interfaces that have <varname>DHCPPrefixDelegation=yes</varname>.
          See also the <varname>DHCPPrefixDelegation=</varname> setting in the [Network] section,
          settings in the [DHCPPrefixDelegation] section, and
          <ulink url="https://www.rfc-editor.org/rfc/rfc8415.html#section-6.3">RFC 8415</ulink>.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>UseDNS=</varname></term>
        <term><varname>UseNTP=</varname></term>
        <term><varname>UseHostname=</varname></term>
        <term><varname>UseDomains=</varname></term>
        <term><varname>NetLabel=</varname></term>
        <term><varname>SendRelease=</varname></term>
        <listitem>
          <para>As in the [DHCPv4] section.</para>
        </listitem>
      </varlistentry>

      <!-- How to communicate with the server -->

      <varlistentry>
        <term><varname>WithoutRA=</varname></term>
        <listitem>
          <para>Allows DHCPv6 client to start without router advertisements's
          <literal>managed</literal> or <literal>other configuration</literal> flag. Takes one of
          <literal>no</literal>, <literal>solicit</literal>, or
          <literal>information-request</literal>. If this is not specified,
          <literal>solicit</literal> is used when <varname>DHCPPrefixDelegation=</varname> is enabled
          and <varname>UplinkInterface=:self</varname> is specified in the [DHCPPrefixDelegation]
          section. Otherwise, defaults to <literal>no</literal>, and the DHCPv6 client will be started
          when an RA is received. See also the <varname>DHCPv6Client=</varname> setting in the
          [IPv6AcceptRA] section.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[DHCPPrefixDelegation] Section Options</title>
    <para>The [DHCPPrefixDelegation] section configures subnet prefixes of the delegated prefixes
    acquired by a DHCPv6 client or by a DHCPv4 client through the 6RD option on another interface.
    The settings in this section are used only when the <varname>DHCPPrefixDelegation=</varname>
    setting in the [Network] section is enabled.</para>

    <variablelist class='network-directives'>
      <varlistentry>
        <term><varname>UplinkInterface=</varname></term>
        <listitem>
          <para>Specifies the name or the index of the uplink interface, or one of the special values
          <literal>:self</literal> and <literal>:auto</literal>. When <literal>:self</literal>, the
          interface itself is considered the uplink interface, and
          <varname>WithoutRA=solicit</varname> is implied if the setting is not explicitly specified.
          When <literal>:auto</literal>, the first link which acquired prefixes to be delegated from
          the DHCPv6 or DHCPv4 server is selected. Defaults to <literal>:auto</literal>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>SubnetId=</varname></term>
        <listitem>
          <para>Configure a specific subnet ID on the interface from a (previously) received prefix
          delegation. You can either set "auto" (the default) or a specific subnet ID (as defined in
          <ulink url="https://tools.ietf.org/html/rfc4291#section-2.5.4">RFC 4291</ulink>, section
          2.5.4), in which case the allowed value is hexadecimal, from 0 to 0x7fffffffffffffff
          inclusive.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Announce=</varname></term>
        <listitem>
          <para>Takes a boolean. When enabled, and <varname>IPv6SendRA=</varname> in [Network] section
          is enabled, the delegated prefixes are distributed through the IPv6 Router Advertisement.
          This setting will be ignored when the <varname>DHCPPrefixDelegation=</varname> setting is
          enabled on the upstream interface. Defaults to yes.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Assign=</varname></term>
        <listitem>
          <para>Takes a boolean. Specifies whether to add an address from the delegated prefixes which
          are received from the WAN interface by the DHCPv6 Prefix Delegation. When true (on LAN
          interface), the EUI-64 algorithm will be used by default to form an interface identifier from
          the delegated prefixes. See also <varname>Token=</varname> setting below. Defaults to yes.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Token=</varname></term>
        <listitem>
          <para>Specifies an optional address generation mode for assigning an address in each
          delegated prefix. This accepts the same syntax as <varname>Token=</varname> in the
          [IPv6AcceptRA] section. If <varname>Assign=</varname> is set to false, then this setting will
          be ignored. Defaults to unset, which means the EUI-64 algorithm will be used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>ManageTemporaryAddress=</varname></term>
        <listitem>
          <para>As in the [Address] section, but defaults to true.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>RouteMetric=</varname></term>
        <listitem>
          <para>The metric of the route to the delegated prefix subnet. Takes an unsigned integer in
          the range 0…4294967295. When set to 0, the kernel's default value is used. Defaults to 256.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>NetLabel=</varname></term>
        <listitem>
          <para>This applies the NetLabel for the addresses received with DHCP, like
          <varname>NetLabel=</varname> in [Address] section applies it to statically configured
          addresses. See <varname>NetLabel=</varname> in [Address] section for more details.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[IPv6AcceptRA] Section Options</title>
    <para>The [IPv6AcceptRA] section configures the IPv6 Router Advertisement (RA) client, if it is enabled
    with the <varname>IPv6AcceptRA=</varname> setting described above:</para>

    <variablelist class='network-directives'>
      <varlistentry>
        <term><varname>Token=</varname></term>
        <listitem>
          <para>Specifies an optional address generation mode for the Stateless Address
          Autoconfiguration (SLAAC). The following values are supported:</para>

          <variablelist>
            <varlistentry>
              <term><option>eui64</option></term>
              <listitem>
                <para>
                  The EUI-64 algorithm will be used to generate an address for that prefix. Only
                  supported by Ethernet or InfiniBand interfaces.
                </para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term><option>static:<replaceable>ADDRESS</replaceable></option></term>
              <listitem>
                <para>
                  An IPv6 address must be specified after a colon (<literal>:</literal>), and the
                  lower bits of the supplied address are combined with the upper bits of a prefix
                  received in a Router Advertisement (RA) message to form a complete address. Note
                  that if multiple prefixes are received in an RA message, or in multiple RA messages,
                  addresses will be formed from each of them using the supplied address. This mode
                  implements SLAAC but uses a static interface identifier instead of an identifier
                  generated by using the EUI-64 algorithm. Because the interface identifier is static,
                  if Duplicate Address Detection detects that the computed address is a duplicate
                  (in use by another node on the link), then this mode will fail to provide an address
                  for that prefix. If an IPv6 address without mode is specified, then
                  <literal>static</literal> mode is assumed.
                </para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term><option>prefixstable[:<replaceable>ADDRESS</replaceable>][,<replaceable>UUID</replaceable>]</option></term>
              <listitem>
                <para>
                  The algorithm specified in
                  <ulink url="https://tools.ietf.org/html/rfc7217">RFC 7217</ulink> will be used to
                  generate interface identifiers. This mode can optionally take an IPv6 address
                  separated with a colon (<literal>:</literal>). If an IPv6 address is specified,
                  then an interface identifier is generated only when a prefix received in an RA
                  message matches the supplied address.
                </para>
                <para>
                  This mode can also optionally take a non-null UUID in the format which
                  <function>sd_id128_from_string()</function> accepts, e.g.
                  <literal>86b123b969ba4b7eb8b3d8605123525a</literal> or
                  <literal>86b123b9-69ba-4b7e-b8b3-d8605123525a</literal>. If a UUID is specified, the
                  value is used as the secret key to generate interface identifiers. If not specified,
                  then an application specific ID generated with the system's machine-ID will be used
                  as the secret key. See
                  <citerefentry><refentrytitle>sd-id128</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
                  <citerefentry><refentrytitle>sd_id128_from_string</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
                  and
                  <citerefentry><refentrytitle>sd_id128_get_machine</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
                </para>
                <para>
                  Note that the <literal>prefixstable</literal> algorithm uses both the interface
                  name and MAC address as input to the hash to compute the interface identifier, so
                  if either of those are changed the resulting interface identifier (and address)
                  will be changed, even if the prefix received in the RA message has not been
                  changed.
                </para>
              </listitem>
            </varlistentry>
          </variablelist>

          <para>If no address generation mode is specified (which is the default), or a received
          prefix does not match any of the addresses provided in <literal>prefixstable</literal>
          mode, then the EUI-64 algorithm will be used for Ethernet or InfiniBand interfaces,
          otherwise <literal>prefixstable</literal> will be used to form an interface identifier for
          that prefix.</para>

          <para>This setting can be specified multiple times. If an empty string is assigned, then
          the all previous assignments are cleared.</para>

          <para>Examples:
          <programlisting>Token=eui64
Token=::1a:2b:3c:4d
Token=static:::1a:2b:3c:4d
Token=prefixstable
Token=prefixstable:2002:da8:1::</programlisting></para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>UseDNS=</varname></term>
        <listitem>
          <para>When true (the default), the DNS servers received in the Router Advertisement will be used.</para>

          <para>This corresponds to the <option>nameserver</option> option in <citerefentry
          project='man-pages'><refentrytitle>resolv.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>UseDomains=</varname></term>
        <listitem>
          <para>Takes a boolean, or the special value <literal>route</literal>. When true, the domain name
          received via IPv6 Router Advertisement (RA) will be used as DNS search domain over this link,
          similarly to the effect of the <option>Domains=</option> setting. If set to
          <literal>route</literal>, the domain name received via IPv6 RA will be used for routing DNS queries
          only, but not for searching, similarly to the effect of the <option>Domains=</option> setting when
          the argument is prefixed with <literal>~</literal>. Defaults to false.</para>

          <para>It is recommended to enable this option only on trusted networks, as setting this affects resolution
          of all hostnames, in particular of single-label names. It is generally safer to use the supplied domain
          only as routing domain, rather than as search domain, in order to not have it affect local resolution of
          single-label names.</para>

          <para>When set to true, this setting corresponds to the <option>domain</option> option in <citerefentry
          project='man-pages'><refentrytitle>resolv.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>RouteTable=<replaceable>num</replaceable></varname></term>
        <listitem>
          <para>The table identifier for the routes received in the Router Advertisement. Takes one of
          predefined names <literal>default</literal>, <literal>main</literal>, and <literal>local</literal>,
          and names defined in <varname>RouteTable=</varname> in
          <citerefentry><refentrytitle>networkd.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
          or a number between 1…4294967295.</para>

          <para>When used in combination with <varname>VRF=</varname>, the VRF's routing table is
          used when this parameter is not specified.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>RouteMetric=</varname></term>
        <listitem>
          <para>Set the routing metric for the routes received in the Router Advertisement. Takes an unsigned
          integer in the range 0…4294967295, or three unsigned integer separated with <literal>:</literal>,
          in that case the first one is used when the router preference is high, the second is for medium
          preference, and the last is for low preference
          (<literal><replaceable>high</replaceable>:<replaceable>medium</replaceable>:<replaceable>low</replaceable></literal>).
          Defaults to <literal>512:1024:2048</literal>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>QuickAck=</varname></term>
        <listitem>
          <para>Takes a boolean. When true, the TCP quick ACK mode is enabled for the routes configured by
          the received RAs. When unset, the kernel's default will be used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>UseMTU=</varname></term>
        <listitem>
          <para>Takes a boolean. When true, the MTU received in the Router Advertisement will be
          used. Defaults to true.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>UseGateway=</varname></term>
        <listitem>
          <para>When true (the default), the router address will be configured as the default gateway.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>UseRoutePrefix=</varname></term>
        <listitem>
          <para>When true (the default), the routes corresponding to the route prefixes received in
          the Router Advertisement will be configured.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>UseAutonomousPrefix=</varname></term>
        <listitem>
          <para>When true (the default), the autonomous prefix received in the Router Advertisement will be used and take
          precedence over any statically configured ones.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>UseOnLinkPrefix=</varname></term>
        <listitem>
          <para>When true (the default), the onlink prefix received in the Router Advertisement will be
          used and takes precedence over any statically configured ones.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>RouterDenyList=</varname></term>
        <listitem>
          <para>A whitespace-separated list of IPv6 router addresses. Each address can optionally
          take a prefix length after <literal>/</literal>. Any information advertised by the listed
          router is ignored.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>RouterAllowList=</varname></term>
        <listitem>
          <para>A whitespace-separated list of IPv6 router addresses. Each address can optionally
          take a prefix length after <literal>/</literal>. Only information advertised by the listed
          router is accepted. Note that if <varname>RouterAllowList=</varname> is configured then
          <varname>RouterDenyList=</varname> is ignored.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>PrefixDenyList=</varname></term>
        <listitem>
          <para>A whitespace-separated list of IPv6 prefixes. Each prefix can optionally take its
          prefix length after <literal>/</literal>. IPv6 prefixes supplied via router advertisements
          in the list are ignored.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>PrefixAllowList=</varname></term>
        <listitem>
          <para>A whitespace-separated list of IPv6 prefixes. Each prefix can optionally take its
          prefix length after <literal>/</literal>. IPv6 prefixes supplied via router advertisements
          in the list are allowed. Note that if <varname>PrefixAllowList=</varname> is configured
          then <varname>PrefixDenyList=</varname> is ignored.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>RouteDenyList=</varname></term>
        <listitem>
          <para>A whitespace-separated list of IPv6 route prefixes. Each prefix can optionally take
          its prefix length after <literal>/</literal>. IPv6 route prefixes supplied via router
          advertisements in the list are ignored.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>RouteAllowList=</varname></term>
        <listitem>
          <para>A whitespace-separated list of IPv6 route prefixes. Each prefix can optionally take
          its prefix length after <literal>/</literal>. IPv6 route prefixes supplied via router
          advertisements in the list are allowed. Note that if <varname>RouteAllowList=</varname> is
          configured then <varname>RouteDenyList=</varname> is ignored.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>DHCPv6Client=</varname></term>
        <listitem>
          <para>Takes a boolean, or the special value <literal>always</literal>. When true, the
          DHCPv6 client will be started in <literal>solicit</literal> mode if the RA has the
          <literal>managed</literal> flag or <literal>information-request</literal> mode if the RA
          lacks the <literal>managed</literal> flag but has the
          <literal>other configuration</literal> flag. If set to <literal>always</literal>, the
          DHCPv6 client will be started in <literal>solicit</literal> mode when an RA is received,
          even if neither the <literal>managed</literal> nor the
          <literal>other configuration</literal> flag is set in the RA. This will be ignored when
          <varname>WithoutRA=</varname> in the [DHCPv6] section is enabled, or
          <varname>UplinkInterface=:self</varname> in the [DHCPPrefixDelegation] section is
          specified. Defaults to true.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>NetLabel=</varname></term>
        <listitem>
          <para>This applies the NetLabel for the addresses received with RA, like
          <varname>NetLabel=</varname> in [Address] section applies it to statically configured
          addresses. See <varname>NetLabel=</varname> in [Address] section for more details.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[DHCPServer] Section Options</title>
    <para>The [DHCPServer] section contains settings for the DHCP server, if enabled via the
    <varname>DHCPServer=</varname> option described above:</para>

    <variablelist class='network-directives'>

      <varlistentry>
        <term><varname>ServerAddress=</varname></term>
        <listitem><para>Specifies server address for the DHCP server. Takes an IPv4 address with prefix
        length, for example 192.168.0.1/24. This setting may be useful when the link on
        which the DHCP server is running has multiple static addresses. When unset, one of static addresses
        in the link will be automatically selected. Defaults to unset.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>PoolOffset=</varname></term>
        <term><varname>PoolSize=</varname></term>

        <listitem><para>Configures the pool of addresses to hand out. The pool
        is a contiguous sequence of IP addresses in the subnet configured for
        the server address, which does not include the subnet nor the broadcast
        address. <varname>PoolOffset=</varname> takes the offset of the pool
        from the start of subnet, or zero to use the default value.
        <varname>PoolSize=</varname> takes the number of IP addresses in the
        pool or zero to use the default value. By default, the pool starts at
        the first address after the subnet address and takes up the rest of
        the subnet, excluding the broadcast address. If the pool includes
        the server address (the default), this is reserved and not handed
        out to clients.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>DefaultLeaseTimeSec=</varname></term>
        <term><varname>MaxLeaseTimeSec=</varname></term>

        <listitem><para>Control the default and maximum DHCP lease
        time to pass to clients. These settings take time values in seconds or
        another common time unit, depending on the suffix. The default
        lease time is used for clients that did not ask for a specific
        lease time. If a client asks for a lease time longer than the
        maximum lease time, it is automatically shortened to the
        specified time. The default lease time defaults to 1h, the
        maximum lease time to 12h. Shorter lease times are beneficial
        if the configuration data in DHCP leases changes frequently
        and clients shall learn the new settings with shorter
        latencies. Longer lease times reduce the generated DHCP
        network traffic.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>UplinkInterface=</varname></term>
        <listitem><para>Specifies the name or the index of the uplink interface, or one of the special
        values <literal>:none</literal> and <literal>:auto</literal>. When emitting DNS, NTP, or SIP
        servers is enabled but no servers are specified, the servers configured in the uplink interface
        will be emitted. When <literal>:auto</literal>, the link which has a default gateway with the
        highest priority will be automatically selected. When <literal>:none</literal>, no uplink
        interface will be selected. Defaults to <literal>:auto</literal>.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>EmitDNS=</varname></term>
        <term><varname>DNS=</varname></term>

        <listitem><para><varname>EmitDNS=</varname> takes a boolean. Configures whether the DHCP leases
        handed out to clients shall contain DNS server information. Defaults to <literal>yes</literal>.
        The DNS servers to pass to clients may be configured with the <varname>DNS=</varname> option,
        which takes a list of IPv4 addresses, or special value <literal>_server_address</literal> which
        will be converted to the address used by the DHCP server.</para>

        <para>If the <varname>EmitDNS=</varname> option is enabled but no servers configured, the
        servers are automatically propagated from an "uplink" interface that has appropriate servers
        set. The "uplink" interface is determined by the default route of the system with the highest
        priority. Note that this information is acquired at the time the lease is handed out, and does
        not take uplink interfaces into account that acquire DNS server information at a later point.
        If no suitable uplink interface is found the DNS server data from
        <filename>/etc/resolv.conf</filename> is used. Also, note that the leases are not refreshed if
        the uplink network configuration changes. To ensure clients regularly acquire the most current
        uplink DNS server information, it is thus advisable to shorten the DHCP lease time via
        <varname>MaxLeaseTimeSec=</varname> described above.</para>

        <para>This setting can be specified multiple times. If an empty string is specified, then all
        DNS servers specified earlier are cleared.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>EmitNTP=</varname></term>
        <term><varname>NTP=</varname></term>
        <term><varname>EmitSIP=</varname></term>
        <term><varname>SIP=</varname></term>
        <term><varname>EmitPOP3=</varname></term>
        <term><varname>POP3=</varname></term>
        <term><varname>EmitSMTP=</varname></term>
        <term><varname>SMTP=</varname></term>
        <term><varname>EmitLPR=</varname></term>
        <term><varname>LPR=</varname></term>

        <listitem><para>Similar to the <varname>EmitDNS=</varname> and <varname>DNS=</varname> settings
        described above, these settings configure whether and what server information for the indicate
        protocol shall be emitted as part of the DHCP lease. The same syntax, propagation semantics and
        defaults apply as for <varname>EmitDNS=</varname> and <varname>DNS=</varname>.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>EmitRouter=</varname></term>
        <term><varname>Router=</varname></term>

        <listitem><para>The <varname>EmitRouter=</varname> setting takes a boolean value, and configures
        whether the DHCP lease should contain the router option. The <varname>Router=</varname> setting
        takes an IPv4 address, and configures the router address to be emitted. When the
        <varname>Router=</varname> setting is not specified, then the server address will be used for
        the router option. When the <varname>EmitRouter=</varname> setting is disabled, the
        <varname>Router=</varname> setting will be ignored. The <varname>EmitRouter=</varname> setting
        defaults to true, and the <varname>Router=</varname> setting defaults to unset.
        </para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>EmitTimezone=</varname></term>
        <term><varname>Timezone=</varname></term>

        <listitem><para>Takes a boolean. Configures whether the DHCP leases handed out
        to clients shall contain timezone information. Defaults to <literal>yes</literal>. The
        <varname>Timezone=</varname> setting takes a timezone string
        (such as <literal>Europe/Berlin</literal> or
        <literal>UTC</literal>) to pass to clients. If no explicit
        timezone is set, the system timezone of the local host is
        propagated, as determined by the
        <filename>/etc/localtime</filename> symlink.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>BootServerAddress=</varname></term>

        <listitem>
          <para>Takes an IPv4 address of the boot server used by e.g. PXE boot systems. When specified, this
          address is sent in the <option>siaddr</option> field of the DHCP message header. See <ulink
          url="https://www.rfc-editor.org/rfc/rfc2131.html">RFC 2131</ulink> for more details. Defaults to
          unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>BootServerName=</varname></term>

        <listitem>
          <para>Takes a name of the boot server used by e.g. PXE boot systems. When specified, this name is
          sent in the DHCP option 66 ("TFTP server name"). See <ulink
          url="https://www.rfc-editor.org/rfc/rfc2132.html">RFC 2132</ulink> for more details. Defaults to
          unset.</para>

          <para>Note that typically setting one of <varname>BootServerName=</varname> or
          <varname>BootServerAddress=</varname> is sufficient, but both can be set too, if desired.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>BootFilename=</varname></term>

        <listitem>
          <para>Takes a path or URL to a file loaded by e.g. a PXE boot loader. When specified, this path is
          sent in the DHCP option 67 ("Bootfile name"). See <ulink
          url="https://www.rfc-editor.org/rfc/rfc2132.html">RFC 2132</ulink> for more details. Defaults to
          unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>SendOption=</varname></term>
        <listitem>
          <para>Send a raw option with value via DHCPv4 server. Takes a DHCP option number, data type
          and data (<literal><replaceable>option</replaceable>:<replaceable>type</replaceable>:<replaceable>value</replaceable></literal>).
          The option number is an integer in the range 1…254. The type takes one of <literal>uint8</literal>,
          <literal>uint16</literal>, <literal>uint32</literal>, <literal>ipv4address</literal>, <literal>ipv6address</literal>, or
          <literal>string</literal>. Special characters in the data string may be escaped using
          <ulink url="https://en.wikipedia.org/wiki/Escape_sequences_in_C#Table_of_escape_sequences">C-style
          escapes</ulink>. This setting can be specified multiple times. If an empty string is specified,
          then all options specified earlier are cleared. Defaults to unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>SendVendorOption=</varname></term>
        <listitem>
          <para>Send a vendor option with value via DHCPv4 server. Takes a DHCP option number, data type
          and data (<literal><replaceable>option</replaceable>:<replaceable>type</replaceable>:<replaceable>value</replaceable></literal>).
          The option number is an integer in the range 1…254. The type takes one of <literal>uint8</literal>,
          <literal>uint16</literal>, <literal>uint32</literal>, <literal>ipv4address</literal>, or
          <literal>string</literal>. Special characters in the data string may be escaped using
          <ulink url="https://en.wikipedia.org/wiki/Escape_sequences_in_C#Table_of_escape_sequences">C-style
          escapes</ulink>. This setting can be specified multiple times. If an empty string is specified,
          then all options specified earlier are cleared. Defaults to unset.</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term><varname>BindToInterface=</varname></term>
        <listitem>
          <para>Takes a boolean value. When <literal>yes</literal>, DHCP server socket will be bound
          to its network interface and all socket communication will be restricted to this interface.
          Defaults to <literal>yes</literal>, except if <varname>RelayTarget=</varname> is used (see below),
          in which case it defaults to <literal>no</literal>.</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term><varname>RelayTarget=</varname></term>
        <listitem>
          <para>Takes an IPv4 address, which must be in the format described in
          <citerefentry project='man-pages'><refentrytitle>inet_pton</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
          Turns this DHCP server into a DHCP relay agent. See <ulink url="https://tools.ietf.org/html/rfc1542">RFC 1542</ulink>.
          The address is the address of DHCP server or another relay agent to forward DHCP messages to and from.</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term><varname>RelayAgentCircuitId=</varname></term>
        <listitem>
          <para>Specifies value for Agent Circuit ID suboption of Relay Agent Information option.
          Takes a string, which must be in the format <literal>string:<replaceable>value</replaceable></literal>,
          where <literal><replaceable>value</replaceable></literal> should be replaced with the value of the suboption.
          Defaults to unset (means no Agent Circuit ID suboption is generated).
          Ignored if <varname>RelayTarget=</varname> is not specified.</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term><varname>RelayAgentRemoteId=</varname></term>
        <listitem>
          <para>Specifies value for Agent Remote ID suboption of Relay Agent Information option.
          Takes a string, which must be in the format <literal>string:<replaceable>value</replaceable></literal>,
          where <literal><replaceable>value</replaceable></literal> should be replaced with the value of the suboption.
          Defaults to unset (means no Agent Remote ID suboption is generated).
          Ignored if <varname>RelayTarget=</varname> is not specified.</para>
        </listitem>
      </varlistentry>

    </variablelist>
  </refsect1>

  <refsect1>
    <title>[DHCPServerStaticLease] Section Options</title>
    <para>The <literal>[DHCPServerStaticLease]</literal> section configures a static DHCP lease to assign a
    fixed IPv4 address to a specific device based on its MAC address. This section can be specified multiple
    times.</para>

    <variablelist class='network-directives'>
      <varlistentry>
        <term><varname>MACAddress=</varname></term>

        <listitem><para>The hardware address of a device to match. This key is mandatory.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Address=</varname></term>

        <listitem><para>The IPv4 address that should be assigned to the device that was matched with
        <varname>MACAddress=</varname>. This key is mandatory.</para></listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[IPv6SendRA] Section Options</title>
    <para>The [IPv6SendRA] section contains settings for sending IPv6 Router Advertisements and whether
    to act as a router, if enabled via the <varname>IPv6SendRA=</varname> option described above. IPv6
    network prefixes or routes are defined with one or more [IPv6Prefix] or [IPv6RoutePrefix] sections.
    </para>

    <variablelist class='network-directives'>

      <varlistentry>
        <term><varname>Managed=</varname></term>
        <term><varname>OtherInformation=</varname></term>

        <listitem><para>Takes a boolean. Controls whether a DHCPv6 server is used to acquire IPv6
        addresses on the network link when <varname>Managed=</varname>
        is set to <literal>true</literal> or if only additional network
        information can be obtained via DHCPv6 for the network link when
        <varname>OtherInformation=</varname> is set to
        <literal>true</literal>. Both settings default to
        <literal>false</literal>, which means that a DHCPv6 server is not being
        used.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>RouterLifetimeSec=</varname></term>

        <listitem><para>Takes a timespan. Configures the IPv6 router lifetime in seconds. The value must be 0
        seconds, or between 4 seconds and 9000 seconds. When set to 0, the host is not acting as a router.
        Defaults to 1800 seconds (30 minutes).</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>RouterPreference=</varname></term>

        <listitem><para>Configures IPv6 router preference if
        <varname>RouterLifetimeSec=</varname> is non-zero. Valid values are
        <literal>high</literal>, <literal>medium</literal> and
        <literal>low</literal>, with <literal>normal</literal> and
        <literal>default</literal> added as synonyms for
        <literal>medium</literal> just to make configuration easier. See
        <ulink url="https://tools.ietf.org/html/rfc4191">RFC 4191</ulink>
        for details. Defaults to <literal>medium</literal>.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>UplinkInterface=</varname></term>
        <listitem><para>Specifies the name or the index of the uplink interface, or one of the special
        values <literal>:none</literal> and <literal>:auto</literal>. When emitting DNS servers or
        search domains is enabled but no servers are specified, the servers configured in the uplink
        interface will be emitted. When <literal>:auto</literal>, the value specified to the same
        setting in the [DHCPPrefixDelegation] section will be used if
        <varname>DHCPPrefixDelegation=</varname> is enabled, otherwise the link which has a default
        gateway with the highest priority will be automatically selected. When <literal>:none</literal>,
        no uplink interface will be selected. Defaults to <literal>:auto</literal>.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>EmitDNS=</varname></term>
        <term><varname>DNS=</varname></term>

        <listitem><para><varname>DNS=</varname> specifies a list of recursive DNS server IPv6 addresses
        that are distributed via Router Advertisement messages when <varname>EmitDNS=</varname> is true.
        <varname>DNS=</varname> also takes special value <literal>_link_local</literal>; in that case
        the IPv6 link-local address is distributed. If <varname>DNS=</varname> is empty, DNS servers are
        read from the [Network] section. If the [Network] section does not contain any DNS servers
        either, DNS servers from the uplink interface specified in <varname>UplinkInterface=</varname>
        will be used. When <varname>EmitDNS=</varname> is false, no DNS server information is sent in
        Router Advertisement messages. <varname>EmitDNS=</varname> defaults to true.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>EmitDomains=</varname></term>
        <term><varname>Domains=</varname></term>

        <listitem><para>A list of DNS search domains distributed via Router Advertisement messages when
        <varname>EmitDomains=</varname> is true. If <varname>Domains=</varname> is empty, DNS search
        domains are read from the [Network] section. If the [Network] section does not contain any DNS
        search domains either, DNS search domains from the uplink interface specified in
        <varname>UplinkInterface=</varname> will be used. When <varname>EmitDomains=</varname> is false,
        no DNS search domain information is sent in Router Advertisement messages.
        <varname>EmitDomains=</varname> defaults to true.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>DNSLifetimeSec=</varname></term>

        <listitem><para>Lifetime in seconds for the DNS server addresses listed in
        <varname>DNS=</varname> and search domains listed in <varname>Domains=</varname>. Defaults to
        3600 seconds (one hour).</para></listitem>
      </varlistentry>

    </variablelist>
    </refsect1>

    <refsect1>
    <title>[IPv6Prefix] Section Options</title>
    <para>One or more [IPv6Prefix] sections contain the IPv6 prefixes that are announced via Router
    Advertisements. See <ulink url="https://tools.ietf.org/html/rfc4861">RFC 4861</ulink> for further
    details.</para>

    <variablelist class='network-directives'>

      <varlistentry>
        <term><varname>AddressAutoconfiguration=</varname></term>
        <term><varname>OnLink=</varname></term>

        <listitem><para>Takes a boolean to specify whether IPv6 addresses can be
        autoconfigured with this prefix and whether the prefix can be used for
        onlink determination. Both settings default to <literal>true</literal>
        in order to ease configuration.
        </para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Prefix=</varname></term>

        <listitem><para>The IPv6 prefix that is to be distributed to hosts. Similarly to configuring static
        IPv6 addresses, the setting is configured as an IPv6 prefix and its prefix length, separated by a
        <literal>/</literal> character. Use multiple [IPv6Prefix] sections to configure multiple IPv6
        prefixes since prefix lifetimes, address autoconfiguration and onlink status may differ from one
        prefix to another.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>PreferredLifetimeSec=</varname></term>
        <term><varname>ValidLifetimeSec=</varname></term>

        <listitem><para>Preferred and valid lifetimes for the prefix measured in seconds.
        <varname>PreferredLifetimeSec=</varname> defaults to 1800 seconds (30 minutes) and
        <varname>ValidLifetimeSec=</varname> defaults to 3600 seconds (one hour).</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Assign=</varname></term>
        <listitem><para>Takes a boolean. When true, adds an address from the prefix. Default to false.
        </para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Token=</varname></term>
        <listitem>
          <para>Specifies an optional address generation mode for assigning an address in each
          prefix. This accepts the same syntax as <varname>Token=</varname> in the [IPv6AcceptRA]
          section. If <varname>Assign=</varname> is set to false, then this setting will be ignored.
          Defaults to unset, which means the EUI-64 algorithm will be used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>RouteMetric=</varname></term>
        <listitem>
          <para>The metric of the prefix route. Takes an unsigned integer in the range 0…4294967295.
          When unset or set to 0, the kernel's default value is used. This setting is ignored when
          <varname>Assign=</varname> is false.</para>
        </listitem>
      </varlistentry>
    </variablelist>
    </refsect1>

    <refsect1>
    <title>[IPv6RoutePrefix] Section Options</title>
    <para>One or more [IPv6RoutePrefix] sections contain the IPv6
    prefix routes that are announced via Router Advertisements. See
    <ulink url="https://tools.ietf.org/html/rfc4191">RFC 4191</ulink>
    for further details.</para>

    <variablelist class='network-directives'>

      <varlistentry>
        <term><varname>Route=</varname></term>

        <listitem><para>The IPv6 route that is to be distributed to hosts. Similarly to configuring static
        IPv6 routes, the setting is configured as an IPv6 prefix routes and its prefix route length,
        separated by a <literal>/</literal> character. Use multiple [IPv6RoutePrefix] sections to configure
        multiple IPv6 prefix routes.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>LifetimeSec=</varname></term>

        <listitem><para>Lifetime for the route prefix measured in seconds.
        <varname>LifetimeSec=</varname> defaults to 3600 seconds (one hour).</para></listitem>
      </varlistentry>

    </variablelist>
    </refsect1>

    <refsect1>
    <title>[Bridge] Section Options</title>
      <para>The [Bridge] section accepts the following keys:</para>
      <variablelist class='network-directives'>
        <varlistentry>
          <term><varname>UnicastFlood=</varname></term>
          <listitem>
            <para>Takes a boolean. Controls whether the bridge should flood
            traffic for which an FDB entry is missing and the destination
            is unknown through this port. When unset, the kernel's default will be used.
            </para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>MulticastFlood=</varname></term>
          <listitem>
            <para>Takes a boolean. Controls whether the bridge should flood
            traffic for which an MDB entry is missing and the destination
            is unknown through this port. When unset, the kernel's default will be used.
            </para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>MulticastToUnicast=</varname></term>
          <listitem>
            <para>Takes a boolean. Multicast to unicast works on top of the multicast snooping feature of
            the bridge. Which means unicast copies are only delivered to hosts which are interested in it.
            When unset, the kernel's default will be used.
            </para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>NeighborSuppression=</varname></term>
          <listitem>
            <para>Takes a boolean. Configures whether ARP and ND neighbor suppression is enabled for
            this port. When unset, the kernel's default will be used.
            </para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>Learning=</varname></term>
          <listitem>
            <para>Takes a boolean. Configures whether MAC address learning is enabled for
            this port. When unset, the kernel's default will be used.
            </para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>HairPin=</varname></term>
          <listitem>
            <para>Takes a boolean. Configures whether traffic may be sent back out of the port on which it
            was received. When this flag is false, then the bridge will not forward traffic back out of the
            receiving port. When unset, the kernel's default will be used.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>Isolated=</varname></term>
          <listitem>
            <para>Takes a boolean. Configures whether this port is isolated or not. Within a bridge,
            isolated ports can only communicate with non-isolated ports. When set to true, this port can only
            communicate with other ports whose Isolated setting is false.  When set to false, this port
            can communicate with any other ports. When unset, the kernel's default will be used.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>UseBPDU=</varname></term>
          <listitem>
            <para>Takes a boolean. Configures whether STP Bridge Protocol Data Units will be
            processed by the bridge port. When unset, the kernel's default will be used.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>FastLeave=</varname></term>
          <listitem>
            <para>Takes a boolean. This flag allows the bridge to immediately stop multicast
            traffic on a port that receives an IGMP Leave message. It is only used with
            IGMP snooping if enabled on the bridge. When unset, the kernel's default will be used.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>AllowPortToBeRoot=</varname></term>
          <listitem>
            <para>Takes a boolean. Configures whether a given port is allowed to
            become a root port. Only used when STP is enabled on the bridge.
            When unset, the kernel's default will be used.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>ProxyARP=</varname></term>
          <listitem>
            <para>Takes a boolean. Configures whether proxy ARP to be enabled on this port.
            When unset, the kernel's default will be used.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>ProxyARPWiFi=</varname></term>
          <listitem>
            <para>Takes a boolean. Configures whether proxy ARP to be enabled on this port
            which meets extended requirements by IEEE 802.11 and Hotspot 2.0 specifications.
            When unset, the kernel's default will be used.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>MulticastRouter=</varname></term>
          <listitem>
            <para>Configures this port for having multicast routers attached. A port with a multicast
            router will receive all multicast traffic. Takes one of <literal>no</literal>
            to disable multicast routers on this port, <literal>query</literal> to let the system detect
            the presence of routers, <literal>permanent</literal> to permanently enable multicast traffic
            forwarding on this port, or <literal>temporary</literal> to enable multicast routers temporarily
            on this port, not depending on incoming queries. When unset, the kernel's default will be used.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>Cost=</varname></term>
          <listitem>
            <para>Sets the "cost" of sending packets of this interface.
            Each port in a bridge may have a different speed and the cost
            is used to decide which link to use. Faster interfaces
            should have lower costs. It is an integer value between 1 and
            65535.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>Priority=</varname></term>
          <listitem>
            <para>Sets the "priority" of sending packets on this interface.
            Each port in a bridge may have a different priority which is used
            to decide which link to use. Lower value means higher priority.
            It is an integer value between 0 to 63. Networkd does not set any
            default, meaning the kernel default value of 32 is used.</para>
          </listitem>
        </varlistentry>
      </variablelist>
  </refsect1>
  <refsect1>
    <title>[BridgeFDB] Section Options</title>
      <para>The [BridgeFDB] section manages the forwarding database table of a port and accepts the following
      keys. Specify several [BridgeFDB] sections to configure several static MAC table entries.</para>

      <variablelist class='network-directives'>
        <varlistentry>
          <term><varname>MACAddress=</varname></term>
          <listitem>
            <para>As in the [Network] section. This key is mandatory.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>Destination=</varname></term>
          <listitem>
            <para>Takes an IP address of the destination VXLAN tunnel endpoint.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>VLANId=</varname></term>
          <listitem>
            <para>The VLAN ID for the new static MAC table entry. If
            omitted, no VLAN ID information is appended to the new static MAC
            table entry.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>VNI=</varname></term>
          <listitem>
            <para>The VXLAN Network Identifier (or VXLAN Segment ID) to use to connect to
            the remote VXLAN tunnel endpoint. Takes a number in the range 1…16777215.
            Defaults to unset.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>AssociatedWith=</varname></term>
          <listitem>
            <para>Specifies where the address is associated with. Takes one of <literal>use</literal>,
            <literal>self</literal>, <literal>master</literal> or <literal>router</literal>.
            <literal>use</literal> means the address is in use. User space can use this option to
            indicate to the kernel that the fdb entry is in use. <literal>self</literal> means
            the address is associated with the port drivers fdb. Usually hardware. <literal>master</literal>
            means the address is associated with master devices fdb. <literal>router</literal> means
            the destination address is associated with a router. Note that it's valid if the referenced
            device is a VXLAN type device and has route shortcircuit enabled. Defaults to <literal>self</literal>.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>OutgoingInterface=</varname></term>
          <listitem>
            <para>Specifies the name or index of the outgoing interface for the VXLAN device driver to
            reach the remote VXLAN tunnel endpoint. Defaults to unset.</para>
          </listitem>
        </varlistentry>
      </variablelist>
  </refsect1>
  <refsect1>
    <title>[BridgeMDB] Section Options</title>
      <para>The [BridgeMDB] section manages the multicast membership entries forwarding database table of a port and accepts the following
      keys. Specify several [BridgeMDB] sections to configure several permanent multicast membership entries.</para>

      <variablelist class='network-directives'>
        <varlistentry>
          <term><varname>MulticastGroupAddress=</varname></term>
          <listitem>
            <para>Specifies the IPv4 or IPv6 multicast group address to add. This setting is mandatory.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>VLANId=</varname></term>
          <listitem>
            <para>The VLAN ID for the new entry. Valid ranges are 0 (no VLAN) to 4094. Optional, defaults to 0.</para>
          </listitem>
        </varlistentry>
      </variablelist>
  </refsect1>

  <refsect1>
    <title>[LLDP] Section Options</title>
      <para>The [LLDP] section manages the Link Layer Discovery Protocol (LLDP) and accepts the following
      keys:</para>
      <variablelist class='network-directives'>
        <varlistentry>
          <term><varname>MUDURL=</varname></term>
          <listitem>
            <para>When configured, the specified Manufacturer Usage Descriptions (MUD) URL will be sent in
            LLDP packets. The syntax and semantics are the same as for <varname>MUDURL=</varname> in the
            [DHCPv4] section described above.</para>

            <para>The MUD URLs received via LLDP packets are saved and can be read using the
            <function>sd_lldp_neighbor_get_mud_url()</function> function.</para>
          </listitem>
        </varlistentry>
      </variablelist>
  </refsect1>

  <refsect1>
    <title>[CAN] Section Options</title>
      <para>The [CAN] section manages the Controller Area Network (CAN bus) and accepts the
      following keys:</para>
      <variablelist class='network-directives'>
        <varlistentry>
          <term><varname>BitRate=</varname></term>
          <listitem>
            <para>The bitrate of CAN device in bits per second. The usual SI prefixes (K, M) with the base of 1000 can
            be used here. Takes a number in the range 1…4294967295.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>SamplePoint=</varname></term>
          <listitem>
            <para>Optional sample point in percent with one decimal (e.g. <literal>75%</literal>,
            <literal>87.5%</literal>) or permille (e.g. <literal>875‰</literal>). This will be ignored when
            <varname>BitRate=</varname> is unspecified.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>TimeQuantaNSec=</varname></term>
          <term><varname>PropagationSegment=</varname></term>
          <term><varname>PhaseBufferSegment1=</varname></term>
          <term><varname>PhaseBufferSegment2=</varname></term>
          <term><varname>SyncJumpWidth=</varname></term>
          <listitem>
            <para>Specifies the time quanta, propagation segment, phase buffer segment 1 and 2, and the
            synchronization jump width, which allow one to define the CAN bit-timing in a hardware
            independent format as proposed by the Bosch CAN 2.0 Specification.
            <varname>TimeQuantaNSec=</varname> takes a timespan in nanoseconds.
            <varname>PropagationSegment=</varname>, <varname>PhaseBufferSegment1=</varname>,
            <varname>PhaseBufferSegment2=</varname>, and <varname>SyncJumpWidth=</varname> take number
            of time quantum specified in <varname>TimeQuantaNSec=</varname> and must be an unsigned
            integer in the range 0…4294967295. These settings except for
            <varname>SyncJumpWidth=</varname> will be ignored when <varname>BitRate=</varname> is
            specified.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>DataBitRate=</varname></term>
          <term><varname>DataSamplePoint=</varname></term>
          <listitem>
            <para>The bitrate and sample point for the data phase, if CAN-FD is used. These settings are
            analogous to the <varname>BitRate=</varname> and <varname>SamplePoint=</varname> keys.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>DataTimeQuantaNSec=</varname></term>
          <term><varname>DataPropagationSegment=</varname></term>
          <term><varname>DataPhaseBufferSegment1=</varname></term>
          <term><varname>DataPhaseBufferSegment2=</varname></term>
          <term><varname>DataSyncJumpWidth=</varname></term>
          <listitem>
            <para>Specifies the time quanta, propagation segment, phase buffer segment 1 and 2, and the
            synchronization jump width for the data phase, if CAN-FD is used. These settings are
            analogous to the <varname>TimeQuantaNSec=</varname> or related settings.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>FDMode=</varname></term>
          <listitem>
            <para>Takes a boolean. When <literal>yes</literal>, CAN-FD mode is enabled for the interface.
            Note, that a bitrate and optional sample point should also be set for the CAN-FD data phase using
            the <varname>DataBitRate=</varname> and <varname>DataSamplePoint=</varname> keys, or
            <varname>DataTimeQuanta=</varname> and related settings.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>FDNonISO=</varname></term>
          <listitem>
            <para>Takes a boolean. When <literal>yes</literal>, non-ISO CAN-FD mode is enabled for the
            interface. When unset, the kernel's default will be used.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>RestartSec=</varname></term>
          <listitem>
            <para>Automatic restart delay time. If set to a non-zero value, a restart of the CAN controller will be
            triggered automatically in case of a bus-off condition after the specified delay time. Subsecond delays can
            be specified using decimals (e.g. <literal>0.1s</literal>) or a <literal>ms</literal> or
            <literal>us</literal> postfix. Using <literal>infinity</literal> or <literal>0</literal> will turn the
            automatic restart off. By default automatic restart is disabled.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>Termination=</varname></term>
          <listitem>
            <para>Takes a boolean or a termination resistor value in ohm in the range 0…65535. When
            <literal>yes</literal>, the termination resistor is set to 120 ohm. When
            <literal>no</literal> or <literal>0</literal> is set, the termination resistor is disabled.
            When unset, the kernel's default will be used.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>TripleSampling=</varname></term>
          <listitem>
            <para>Takes a boolean. When <literal>yes</literal>, three samples (instead of one) are used to determine
            the value of a received bit by majority rule. When unset, the kernel's default will be used.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>BusErrorReporting=</varname></term>
          <listitem>
            <para>Takes a boolean. When <literal>yes</literal>, reporting of CAN bus errors is activated
            (those include single bit, frame format, and bit stuffing errors, unable to send dominant bit,
            unable to send recessive bit, bus overload, active error announcement, error occurred on
            transmission). When unset, the kernel's default will be used. Note: in case of a CAN bus with a
            single CAN device, sending a CAN frame may result in a huge number of CAN bus errors.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>ListenOnly=</varname></term>
          <listitem>
            <para>Takes a boolean. When <literal>yes</literal>, listen-only mode is enabled. When the
            interface is in listen-only mode, the interface neither transmit CAN frames nor send ACK
            bit. Listen-only mode is important to debug CAN networks without interfering with the
            communication or acknowledge the CAN frame. When unset, the kernel's default will be used.
            </para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>Loopback=</varname></term>
          <listitem>
            <para>Takes a boolean. When <literal>yes</literal>, loopback mode is enabled. When the
            loopback mode is enabled, the interface treats messages transmitted by itself as received
            messages. The loopback mode is important to debug CAN networks. When unset, the kernel's
            default will be used.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>OneShot=</varname></term>
          <listitem>
            <para>Takes a boolean. When <literal>yes</literal>, one-shot mode is enabled. When unset,
            the kernel's default will be used.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>PresumeAck=</varname></term>
          <listitem>
            <para>Takes a boolean. When <literal>yes</literal>, the interface will ignore missing CAN
            ACKs. When unset, the kernel's default will be used.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>ClassicDataLengthCode=</varname></term>
          <listitem>
            <para>Takes a boolean. When <literal>yes</literal>, the interface will handle the 4bit data
            length code (DLC). When unset, the kernel's default will be used.</para>
          </listitem>
        </varlistentry>
      </variablelist>
  </refsect1>

  <refsect1>
    <title>[IPoIB] Section Options</title>
      <para>The [IPoIB] section manages the IP over Infiniband and accepts the following keys:</para>
      <variablelist class='network-directives'>
        <xi:include href="systemd.netdev.xml" xpointer="ipoib_mode" />
        <xi:include href="systemd.netdev.xml" xpointer="ipoib_umcast" />
      </variablelist>
  </refsect1>

  <refsect1>
    <title>[QDisc] Section Options</title>
    <para>The [QDisc] section manages the traffic control queueing discipline (qdisc).</para>

    <variablelist class='network-directives'>
      <varlistentry>
        <term><varname>Parent=</varname></term>
        <listitem>
          <para>Specifies the parent Queueing Discipline (qdisc). Takes one of <literal>clsact</literal>
          or <literal>ingress</literal>. This is mandatory.</para>
        </listitem>
      </varlistentry>

      <xi:include href="tc.xml" xpointer="qdisc-handle" />
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[NetworkEmulator] Section Options</title>
    <para>The [NetworkEmulator] section manages the queueing discipline (qdisc) of the network emulator. It
    can be used to configure the kernel packet scheduler and simulate packet delay and loss for UDP or TCP
    applications, or limit the bandwidth usage of a particular service to simulate internet connections.
    </para>

    <variablelist class='network-directives'>
      <xi:include href="tc.xml" xpointer="qdisc-parent" />
      <xi:include href="tc.xml" xpointer="qdisc-handle" />

      <varlistentry>
        <term><varname>DelaySec=</varname></term>
        <listitem>
          <para>Specifies the fixed amount of delay to be added to all packets going out of the
          interface. Defaults to unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>DelayJitterSec=</varname></term>
        <listitem>
          <para>Specifies the chosen delay to be added to the packets outgoing to the network
          interface. Defaults to unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>PacketLimit=</varname></term>
        <listitem>
          <para>Specifies the maximum number of packets the qdisc may hold queued at a time.
          An unsigned integer in the range 0…4294967294. Defaults to 1000.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>LossRate=</varname></term>
        <listitem>
          <para>Specifies an independent loss probability to be added to the packets outgoing from the
          network interface. Takes a percentage value, suffixed with "%". Defaults to unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>DuplicateRate=</varname></term>
        <listitem>
          <para>Specifies that the chosen percent of packets is duplicated before queuing them.
          Takes a percentage value, suffixed with "%". Defaults to unset.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[TokenBucketFilter] Section Options</title>
    <para>The [TokenBucketFilter] section manages the queueing discipline (qdisc) of token bucket filter
    (tbf).</para>

    <variablelist class='network-directives'>
      <xi:include href="tc.xml" xpointer="qdisc-parent" />
      <xi:include href="tc.xml" xpointer="qdisc-handle" />

      <varlistentry>
        <term><varname>LatencySec=</varname></term>
        <listitem>
          <para>Specifies the latency parameter, which specifies the maximum amount of time a
          packet can sit in the Token Bucket Filter (TBF). Defaults to unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>LimitBytes=</varname></term>
        <listitem>
          <para>Takes the number of bytes that can be queued waiting for tokens to become available.
          When the size is suffixed with K, M, or G, it is parsed as Kilobytes, Megabytes, or Gigabytes,
          respectively, to the base of 1024. Defaults to unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>BurstBytes=</varname></term>
        <listitem>
          <para>Specifies the size of the bucket. This is the maximum amount of bytes that tokens
          can be available for instantaneous transfer. When the size is suffixed with K, M, or G, it is
          parsed as Kilobytes, Megabytes, or Gigabytes, respectively, to the base of 1024. Defaults to
          unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Rate=</varname></term>
        <listitem>
          <para>Specifies the device specific bandwidth. When suffixed with K, M, or G, the specified
          bandwidth is parsed as Kilobits, Megabits, or Gigabits, respectively, to the base of 1000.
          Defaults to unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>MPUBytes=</varname></term>
        <listitem>
          <para>The Minimum Packet Unit (MPU) determines the minimal token usage (specified in bytes)
          for a packet. When suffixed with K, M, or G, the specified size is parsed as Kilobytes,
          Megabytes, or Gigabytes, respectively, to the base of 1024. Defaults to zero.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>PeakRate=</varname></term>
        <listitem>
          <para>Takes the maximum depletion rate of the bucket. When suffixed with K, M, or G, the
          specified size is parsed as Kilobits, Megabits, or Gigabits, respectively, to the base of
          1000. Defaults to unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>MTUBytes=</varname></term>
        <listitem>
          <para>Specifies the size of the peakrate bucket. When suffixed with K, M, or G, the specified
          size is parsed as Kilobytes, Megabytes, or Gigabytes, respectively, to the base of 1024.
          Defaults to unset.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[PIE] Section Options</title>
    <para>The [PIE] section manages the queueing discipline (qdisc) of Proportional Integral
    controller-Enhanced (PIE).</para>

    <variablelist class='network-directives'>
      <xi:include href="tc.xml" xpointer="qdisc-parent" />
      <xi:include href="tc.xml" xpointer="qdisc-handle" />

      <varlistentry>
        <term><varname>PacketLimit=</varname></term>
        <listitem>
          <para>Specifies the hard limit on the queue size in number of packets. When this limit is reached,
          incoming packets are dropped. An unsigned integer in the range 1…4294967294. Defaults to unset and
          kernel's default is used.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[FlowQueuePIE] Section Options</title>
    <para>The <literal>[FlowQueuePIE]</literal> section manages the queueing discipline
    (qdisc) of Flow Queue Proportional Integral controller-Enhanced (fq_pie).</para>

    <variablelist class='network-directives'>
      <xi:include href="tc.xml" xpointer="qdisc-parent" />
      <xi:include href="tc.xml" xpointer="qdisc-handle" />

      <varlistentry>
        <term><varname>PacketLimit=</varname></term>
        <listitem>
          <para>Specifies the hard limit on the queue size in number of packets. When this limit is reached,
          incoming packets are dropped. An unsigned integer ranges 1 to 4294967294. Defaults to unset and
          kernel's default is used.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[StochasticFairBlue] Section Options</title>
    <para>The [StochasticFairBlue] section manages the queueing discipline (qdisc) of stochastic fair blue
    (sfb).</para>

    <variablelist class='network-directives'>
      <xi:include href="tc.xml" xpointer="qdisc-parent" />
      <xi:include href="tc.xml" xpointer="qdisc-handle" />

      <varlistentry>
        <term><varname>PacketLimit=</varname></term>
        <listitem>
          <para>Specifies the hard limit on the queue size in number of packets. When this limit is reached,
          incoming packets are dropped. An unsigned integer in the range 0…4294967294. Defaults to unset and
          kernel's default is used.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[StochasticFairnessQueueing] Section Options</title>
    <para>The [StochasticFairnessQueueing] section manages the queueing discipline (qdisc) of stochastic
    fairness queueing (sfq).</para>

    <variablelist class='network-directives'>
      <xi:include href="tc.xml" xpointer="qdisc-parent" />
      <xi:include href="tc.xml" xpointer="qdisc-handle" />

      <varlistentry>
        <term><varname>PerturbPeriodSec=</varname></term>
        <listitem>
          <para>Specifies the interval in seconds for queue algorithm perturbation. Defaults to unset.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[BFIFO] Section Options</title>
    <para>The [BFIFO] section manages the queueing discipline (qdisc) of Byte limited Packet First In First
    Out (bfifo).</para>

    <variablelist class='network-directives'>
      <xi:include href="tc.xml" xpointer="qdisc-parent" />
      <xi:include href="tc.xml" xpointer="qdisc-handle" />

      <varlistentry>
        <term><varname>LimitBytes=</varname></term>
        <listitem>
          <para>Specifies the hard limit in bytes on the FIFO buffer size. The size limit prevents overflow
          in case the kernel is unable to dequeue packets as quickly as it receives them. When this limit is
          reached, incoming packets are dropped. When suffixed with K, M, or G, the specified size is parsed
          as Kilobytes, Megabytes, or Gigabytes, respectively, to the base of 1024. Defaults to unset and
          kernel default is used.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[PFIFO] Section Options</title>
    <para>The [PFIFO] section manages the queueing discipline (qdisc) of Packet First In First Out
    (pfifo).</para>

    <variablelist class='network-directives'>
      <xi:include href="tc.xml" xpointer="qdisc-parent" />
      <xi:include href="tc.xml" xpointer="qdisc-handle" />

      <varlistentry>
        <term><varname>PacketLimit=</varname></term>
        <listitem>
          <para>Specifies the hard limit on the number of packets in the FIFO queue. The size limit prevents
          overflow in case the kernel is unable to dequeue packets as quickly as it receives them. When this
          limit is reached, incoming packets are dropped. An unsigned integer in the range
          0…4294967294. Defaults to unset and kernel's default is used.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[PFIFOHeadDrop] Section Options</title>
    <para>The [PFIFOHeadDrop] section manages the queueing discipline (qdisc) of Packet First In First Out
    Head Drop (pfifo_head_drop).</para>

    <variablelist class='network-directives'>
      <xi:include href="tc.xml" xpointer="qdisc-parent" />
      <xi:include href="tc.xml" xpointer="qdisc-handle" />

      <varlistentry>
        <term><varname>PacketLimit=</varname></term>
        <listitem>
          <para>As in [PFIFO] section.</para></listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
     <title>[PFIFOFast] Section Options</title>
     <para>The [PFIFOFast] section manages the queueing discipline (qdisc) of Packet First In First Out Fast
     (pfifo_fast).</para>

     <variablelist class='network-directives'>
       <xi:include href="tc.xml" xpointer="qdisc-parent" />
       <xi:include href="tc.xml" xpointer="qdisc-handle" />
     </variablelist>
  </refsect1>

  <refsect1>
    <title>[CAKE] Section Options</title>
    <para>The [CAKE] section manages the queueing discipline (qdisc) of Common Applications Kept Enhanced
    (CAKE).</para>

    <variablelist class='network-directives'>
      <xi:include href="tc.xml" xpointer="qdisc-parent" />
      <xi:include href="tc.xml" xpointer="qdisc-handle" />

      <varlistentry>
        <term><varname>Bandwidth=</varname></term>
        <listitem>
          <para>Specifies the shaper bandwidth. When suffixed with K, M, or G, the specified size is
          parsed as Kilobits, Megabits, or Gigabits, respectively, to the base of 1000. Defaults to
          unset and kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>AutoRateIngress=</varname></term>
        <listitem>
          <para>Takes a boolean value. Enables automatic capacity estimation based on traffic arriving
          at this qdisc. This is most likely to be useful with cellular links, which tend to change
          quality randomly. If this setting is enabled, the <varname>Bandwidth=</varname> setting is
          used as an initial estimate. Defaults to unset, and the kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>OverheadBytes=</varname></term>
        <listitem>
          <para>Specifies that bytes to be addeded to the size of each packet. Bytes may be negative.
          Takes an integer in the range -64…256. Defaults to unset and kernel's default is used.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>MPUBytes=</varname></term>
        <listitem>
          <para>Rounds each packet (including overhead) up to the specified bytes. Takes an integer in
          the range 1…256. Defaults to unset and kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>CompensationMode=</varname></term>
        <listitem>
          <para>Takes one of <literal>none</literal>, <literal>atm</literal>, or <literal>ptm</literal>.
          Specifies the compensation mode for overhead calculation. When <literal>none</literal>, no
          compensation is taken into account. When <literal>atm</literal>, enables the compensation for
          ATM cell framing, which is normally found on ADSL links. When <literal>ptm</literal>, enables
          the compensation for PTM encoding, which is normally found on VDSL2 links and uses a 64b/65b
          encoding scheme. Defaults to unset and the kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>UseRawPacketSize=</varname></term>
        <listitem>
          <para>Takes a boolean value. When true, the packet size reported by the Linux kernel will be
          used, instead of the underlying IP packet size. Defaults to unset, and the kernel's default
          is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>FlowIsolationMode=</varname></term>
        <listitem>
          <para>CAKE places packets from different flows into different queues, then packets from each
          queue are delivered fairly. This specifies whether the fairness is based on source address,
          destination address, individual flows, or any combination of those. The available values are:
          </para>

          <variablelist>
            <varlistentry>
              <term><option>none</option></term>
              <listitem><para>
                The flow isolation is disabled, and all traffic passes through a single queue.
              </para></listitem>
            </varlistentry>
            <varlistentry>
              <term><option>src-host</option></term>
              <listitem><para>
                Flows are defined only by source address. Equivalent to the <literal>srchost</literal>
                option for <command>tc qdisc</command> command. See also
                <citerefentry project='man-pages'><refentrytitle>tc-cake</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
              </para></listitem>
            </varlistentry>
            <varlistentry>
              <term><option>dst-host</option></term>
              <listitem><para>
                Flows are defined only by destination address. Equivalent to the
                <literal>dsthost</literal> option for <command>tc qdisc</command> command. See also
                <citerefentry project='man-pages'><refentrytitle>tc-cake</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
              </para></listitem>
            </varlistentry>
            <varlistentry>
              <term><option>hosts</option></term>
              <listitem><para>
                Flows are defined by source-destination host pairs. Equivalent to the same option for
                <command>tc qdisc</command> command. See also
                <citerefentry project='man-pages'><refentrytitle>tc-cake</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
              </para></listitem>
            </varlistentry>
            <varlistentry>
              <term><option>flows</option></term>
              <listitem><para>
                Flows are defined by the entire 5-tuple of source address, destination address,
                transport protocol, source port and destination port. Equivalent to the same option for
                <command>tc qdisc</command> command. See also
                <citerefentry project='man-pages'><refentrytitle>tc-cake</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
              </para></listitem>
            </varlistentry>
            <varlistentry>
              <term><option>dual-src-host</option></term>
              <listitem><para>
                Flows are defined by the 5-tuple (see <literal>flows</literal> in the above), and
                fairness is applied first over source addresses, then over individual flows. Equivalent
                to the <literal>dual-srchost</literal> option for <command>tc qdisc</command> command.
                See also
                <citerefentry project='man-pages'><refentrytitle>tc-cake</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
              </para></listitem>
            </varlistentry>
            <varlistentry>
              <term><option>dual-dst-host</option></term>
              <listitem><para>
                Flows are defined by the 5-tuple (see <literal>flows</literal> in the above), and
                fairness is applied first over destination addresses, then over individual flows.
                Equivalent to the <literal>dual-dsthost</literal> option for
                <command>tc qdisc</command> command. See also
                <citerefentry project='man-pages'><refentrytitle>tc-cake</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
              </para></listitem>
            </varlistentry>
            <varlistentry>
              <term><option>triple</option></term>
              <listitem><para>
                Flows are defined by the 5-tuple (see <literal>flows</literal>), and fairness is
                applied over source and destination addresses, and also over individual flows.
                Equivalent to the <literal>triple-isolate</literal> option for
                <command>tc qdisc</command> command. See also
                <citerefentry project='man-pages'><refentrytitle>tc-cake</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
              </para></listitem>
            </varlistentry>
          </variablelist>

          <para>Defaults to unset and the kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>NAT=</varname></term>
        <listitem>
          <para>Takes a boolean value. When true, CAKE performs a NAT lookup before applying
          flow-isolation rules, to determine the true addresses and port numbers of the packet, to
          improve fairness between hosts inside the NAT. This has no practical effect when
          <varname>FlowIsolationMode=</varname> is <literal>none</literal> or <literal>flows</literal>,
          or if NAT is performed on a different host. Defaults to unset, and the kernel's default is
          used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>PriorityQueueingPreset=</varname></term>
        <listitem>
          <para>CAKE divides traffic into <literal>tins</literal>, and each tin has its own independent
          set of flow-isolation queues, bandwidth threshold, and priority. This specifies the preset of
          tin profiles. The available values are:</para>

          <variablelist>
            <varlistentry>
              <term><option>besteffort</option></term>
              <listitem><para>
                Disables priority queueing by placing all traffic in one tin.
              </para></listitem>
            </varlistentry>
            <varlistentry>
              <term><option>precedence</option></term>
              <listitem><para>
                Enables priority queueing based on the legacy interpretation of TOS
                <literal>Precedence</literal> field. Use of this preset on the modern Internet is
                firmly discouraged.
              </para></listitem>
            </varlistentry>
            <varlistentry>
              <term><option>diffserv8</option></term>
              <listitem><para>
                Enables priority queueing based on the Differentiated Service
                (<literal>DiffServ</literal>) field with eight tins: Background Traffic, High
                Throughput, Best Effort, Video Streaming, Low Latency Transactions, Interactive Shell,
                Minimum Latency, and Network Control.
              </para></listitem>
            </varlistentry>
            <varlistentry>
              <term><option>diffserv4</option></term>
              <listitem><para>
                Enables priority queueing based on the Differentiated Service
                (<literal>DiffServ</literal>) field with four tins: Background Traffic, Best Effort,
                Streaming Media, and Latency Sensitive.
              </para></listitem>
            </varlistentry>
            <varlistentry>
              <term><option>diffserv3</option></term>
              <listitem><para>
                Enables priority queueing based on the Differentiated Service
                (<literal>DiffServ</literal>) field with three tins: Background Traffic, Best Effort,
                and Latency Sensitive.
              </para></listitem>
            </varlistentry>
          </variablelist>

          <para>Defaults to unset, and the kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>FirewallMark=</varname></term>
        <listitem>
          <para>Takes an integer in the range 1…4294967295. When specified, firewall-mark-based
          overriding of CAKE's tin selection is enabled. Defaults to unset, and the kernel's default is
          used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Wash=</varname></term>
        <listitem>
          <para>Takes a boolean value. When true, CAKE clears the DSCP fields, except for ECN bits, of
          any packet passing through CAKE. Defaults to unset, and the kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>SplitGSO=</varname></term>
        <listitem>
          <para>Takes a boolean value. When true, CAKE will split General Segmentation Offload (GSO)
          super-packets into their on-the-wire components and dequeue them individually. Defaults to
          unset, and the kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>RTTSec=</varname></term>
        <listitem>
          <para>Specifies the RTT for the filter. Takes a timespan. Typical values are e.g. 100us for
          extremely high-performance 10GigE+ networks like datacentre, 1ms for non-WiFi LAN connections,
          100ms for typical internet connections. Defaults to unset, and the kernel's default will be used.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>AckFilter=</varname></term>
        <listitem>
          <para>Takes a boolean value, or special value <literal>aggressive</literal>. If enabled, ACKs in
          each flow are queued and redundant ACKs to the upstream are dropped. If yes, the filter will always
          keep at least two redundant ACKs in the queue, while in <literal>aggressive</literal> mode, it will
          filter down to a single ACK. This may improve download throughput on links with very asymmetrical
          rate limits. Defaults to unset, and the kernel's default will be used.</para>
        </listitem>
      </varlistentry>

    </variablelist>
  </refsect1>

  <refsect1>
    <title>[ControlledDelay] Section Options</title>
    <para>The [ControlledDelay] section manages the queueing discipline (qdisc) of
    controlled delay (CoDel).</para>

    <variablelist class='network-directives'>
      <xi:include href="tc.xml" xpointer="qdisc-parent" />
      <xi:include href="tc.xml" xpointer="qdisc-handle" />

      <varlistentry>
        <term><varname>PacketLimit=</varname></term>
        <listitem>
          <para>Specifies the hard limit on the queue size in number of packets. When this limit is reached,
          incoming packets are dropped. An unsigned integer in the range 0…4294967294. Defaults to unset and
          kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>TargetSec=</varname></term>
        <listitem>
          <para>Takes a timespan. Specifies the acceptable minimum standing/persistent queue delay.
          Defaults to unset and kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>IntervalSec=</varname></term>
        <listitem>
          <para>Takes a timespan. This is used to ensure that the measured minimum delay does not
          become too stale. Defaults to unset and kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>ECN=</varname></term>
        <listitem>
          <para>Takes a boolean. This can be used to mark packets instead of dropping them. Defaults to
          unset and kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>CEThresholdSec=</varname></term>
        <listitem>
          <para>Takes a timespan. This sets a threshold above which all packets are marked with ECN
          Congestion Experienced (CE). Defaults to unset and kernel's default is used.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[DeficitRoundRobinScheduler] Section Options</title>
    <para>The [DeficitRoundRobinScheduler] section manages the queueing discipline (qdisc) of Deficit Round
    Robin Scheduler (DRR).</para>

    <variablelist class='network-directives'>
      <xi:include href="tc.xml" xpointer="qdisc-parent" />
      <xi:include href="tc.xml" xpointer="qdisc-handle" />
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[DeficitRoundRobinSchedulerClass] Section Options</title>
    <para>The [DeficitRoundRobinSchedulerClass] section manages the traffic control class of Deficit Round
    Robin Scheduler (DRR).</para>

    <variablelist class='network-directives'>
      <xi:include href="tc.xml" xpointer="tclass-parent" />
      <xi:include href="tc.xml" xpointer="tclass-classid" />

      <varlistentry>
        <term><varname>QuantumBytes=</varname></term>
        <listitem>
          <para>Specifies the amount of bytes a flow is allowed to dequeue before the scheduler moves
          to the next class. When suffixed with K, M, or G, the specified size is parsed as Kilobytes,
          Megabytes, or Gigabytes, respectively, to the base of 1024. Defaults to the MTU of the
          interface.</para>
        </listitem>
      </varlistentry>

    </variablelist>
  </refsect1>

  <refsect1>
    <title>[EnhancedTransmissionSelection] Section Options</title>
    <para>The [EnhancedTransmissionSelection] section manages the queueing discipline (qdisc) of Enhanced
    Transmission Selection (ETS).</para>

    <variablelist class='network-directives'>
      <xi:include href="tc.xml" xpointer="qdisc-parent" />
      <xi:include href="tc.xml" xpointer="qdisc-handle" />

      <varlistentry>
        <term><varname>Bands=</varname></term>
        <listitem>
          <para>Specifies the number of bands. An unsigned integer in the range 1…16. This value has to be at
          least large enough to cover the strict bands specified through the <varname>StrictBands=</varname>
          and bandwidth-sharing bands specified in <varname>QuantumBytes=</varname>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>StrictBands=</varname></term>
        <listitem>
          <para>Specifies the number of bands that should be created in strict mode. An unsigned integer in
          the range 1…16.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>QuantumBytes=</varname></term>
        <listitem>
          <para>Specifies the white-space separated list of quantum used in band-sharing bands. When
          suffixed with K, M, or G, the specified size is parsed as Kilobytes, Megabytes, or Gigabytes,
          respectively, to the base of 1024. This setting can be specified multiple times. If an empty
          string is assigned, then the all previous assignments are cleared.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>PriorityMap=</varname></term>
        <listitem>
          <para>The priority map maps the priority of a packet to a band. The argument is a whitespace
          separated list of numbers. The first number indicates which band the packets with priority 0 should
          be put to, the second is for priority 1, and so on. There can be up to 16 numbers in the list. If
          there are fewer, the default band that traffic with one of the unmentioned priorities goes to is
          the last one. Each band number must be in the range 0…255. This setting can be specified multiple
          times. If an empty string is assigned, then the all previous assignments are cleared.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[GenericRandomEarlyDetection] Section Options</title>
    <para>The [GenericRandomEarlyDetection] section manages the queueing discipline (qdisc) of Generic Random
    Early Detection (GRED).</para>

    <variablelist class='network-directives'>
      <xi:include href="tc.xml" xpointer="qdisc-parent" />
      <xi:include href="tc.xml" xpointer="qdisc-handle" />

      <varlistentry>
        <term><varname>VirtualQueues=</varname></term>
        <listitem>
          <para>Specifies the number of virtual queues. Takes an integer in the range 1…16. Defaults to unset
          and kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>DefaultVirtualQueue=</varname></term>
        <listitem>
          <para>Specifies the number of default virtual queue. This must be less than <varname>VirtualQueue=</varname>.
          Defaults to unset and kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>GenericRIO=</varname></term>
        <listitem>
          <para>Takes a boolean. It turns on the RIO-like buffering scheme. Defaults to
          unset and kernel's default is used.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[FairQueueingControlledDelay] Section Options</title>
    <para>The [FairQueueingControlledDelay] section manages the queueing discipline (qdisc) of fair queuing
    controlled delay (FQ-CoDel).</para>

    <variablelist class='network-directives'>
      <xi:include href="tc.xml" xpointer="qdisc-parent" />
      <xi:include href="tc.xml" xpointer="qdisc-handle" />

      <varlistentry>
        <term><varname>PacketLimit=</varname></term>
        <listitem>
          <para>Specifies the hard limit on the real queue size. When this limit is reached, incoming packets are
          dropped. Defaults to unset and kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>MemoryLimitBytes=</varname></term>
        <listitem>
          <para>Specifies the limit on the total number of bytes that can be queued in this FQ-CoDel instance.
          When suffixed with K, M, or G, the specified size is parsed as Kilobytes, Megabytes, or Gigabytes,
          respectively, to the base of 1024. Defaults to unset and kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Flows=</varname></term>
        <listitem>
          <para>Specifies the number of flows into which the incoming packets are classified.
          Defaults to unset and kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>TargetSec=</varname></term>
        <listitem>
          <para>Takes a timespan. Specifies the acceptable minimum standing/persistent queue delay.
          Defaults to unset and kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>IntervalSec=</varname></term>
        <listitem>
          <para>Takes a timespan. This is used to ensure that the measured minimum delay does not
          become too stale. Defaults to unset and kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>QuantumBytes=</varname></term>
        <listitem>
          <para>Specifies the number of bytes used as the "deficit" in the fair queuing algorithm timespan.
          When suffixed with K, M, or G, the specified size is parsed as Kilobytes, Megabytes, or Gigabytes,
          respectively, to the base of 1024. Defaults to unset and kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>ECN=</varname></term>
        <listitem>
          <para>Takes a boolean. This can be used to mark packets instead of dropping them. Defaults to
          unset and kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>CEThresholdSec=</varname></term>
        <listitem>
          <para>Takes a timespan. This sets a threshold above which all packets are marked with ECN
          Congestion Experienced (CE). Defaults to unset and kernel's default is used.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[FairQueueing] Section Options</title>
    <para>The [FairQueueing] section manages the queueing discipline (qdisc) of fair queue traffic policing
    (FQ).</para>

    <variablelist class='network-directives'>
      <xi:include href="tc.xml" xpointer="qdisc-parent" />
      <xi:include href="tc.xml" xpointer="qdisc-handle" />

      <varlistentry>
        <term><varname>PacketLimit=</varname></term>
        <listitem>
          <para>Specifies the hard limit on the real queue size. When this limit is reached, incoming packets are
          dropped. Defaults to unset and kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>FlowLimit=</varname></term>
        <listitem>
          <para>Specifies the hard limit on the maximum number of packets queued per flow. Defaults to
          unset and kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>QuantumBytes=</varname></term>
        <listitem>
          <para>Specifies the credit per dequeue RR round, i.e. the amount of bytes a flow is allowed
          to dequeue at once. When suffixed with K, M, or G, the specified size is parsed as Kilobytes,
          Megabytes, or Gigabytes, respectively, to the base of 1024. Defaults to unset and kernel's
          default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>InitialQuantumBytes=</varname></term>
        <listitem>
          <para>Specifies the initial sending rate credit, i.e. the amount of bytes a new flow is
          allowed to dequeue initially. When suffixed with K, M, or G, the specified size is parsed as
          Kilobytes, Megabytes, or Gigabytes, respectively, to the base of 1024. Defaults to unset and
          kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>MaximumRate=</varname></term>
        <listitem>
          <para>Specifies the maximum sending rate of a flow. When suffixed with K, M, or G, the
          specified size is parsed as Kilobits, Megabits, or Gigabits, respectively, to the base of
          1000. Defaults to unset and kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Buckets=</varname></term>
        <listitem>
          <para>Specifies the size of the hash table used for flow lookups. Defaults to unset and
          kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>OrphanMask=</varname></term>
        <listitem>
          <para>Takes an unsigned integer. For packets not owned by a socket, fq is able to mask a part
          of hash and reduce number of buckets associated with the traffic. Defaults to unset and
          kernel's default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Pacing=</varname></term>
        <listitem>
          <para>Takes a boolean, and enables or disables flow pacing. Defaults to unset and kernel's
          default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>CEThresholdSec=</varname></term>
        <listitem>
          <para>Takes a timespan. This sets a threshold above which all packets are marked with ECN
          Congestion Experienced (CE). Defaults to unset and kernel's default is used.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[TrivialLinkEqualizer] Section Options</title>
    <para>The [TrivialLinkEqualizer] section manages the queueing discipline (qdisc) of trivial link
    equalizer (teql).</para>

    <variablelist class='network-directives'>
      <xi:include href="tc.xml" xpointer="qdisc-parent" />
      <xi:include href="tc.xml" xpointer="qdisc-handle" />

      <varlistentry>
        <term><varname>Id=</varname></term>
        <listitem>
          <para>Specifies the interface ID <literal>N</literal> of teql. Defaults to <literal>0</literal>.
          Note that when teql is used, currently, the module <constant>sch_teql</constant> with
          <constant>max_equalizers=N+1</constant> option must be loaded before
          <command>systemd-networkd</command> is started.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[HierarchyTokenBucket] Section Options</title>
    <para>The [HierarchyTokenBucket] section manages the queueing discipline (qdisc) of hierarchy token
    bucket (htb).</para>

    <variablelist class='network-directives'>
      <xi:include href="tc.xml" xpointer="qdisc-parent" />
      <xi:include href="tc.xml" xpointer="qdisc-handle" />

      <varlistentry>
        <term><varname>DefaultClass=</varname></term>
        <listitem>
          <para>Takes the minor id in hexadecimal of the default class. Unclassified traffic gets sent
          to the class. Defaults to unset.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>RateToQuantum=</varname></term>
        <listitem>
          <para>Takes an unsigned integer. The DRR quantums are calculated by dividing the value
          configured in <varname>Rate=</varname> by <varname>RateToQuantum=</varname>.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[HierarchyTokenBucketClass] Section Options</title>
    <para>The [HierarchyTokenBucketClass] section manages the traffic control class of hierarchy token bucket
    (htb).</para>

    <variablelist class='network-directives'>
      <xi:include href="tc.xml" xpointer="tclass-parent" />
      <xi:include href="tc.xml" xpointer="tclass-classid" />

      <varlistentry>
        <term><varname>Priority=</varname></term>
        <listitem>
          <para>Specifies the priority of the class. In the round-robin process, classes with the lowest
          priority field are tried for packets first.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>QuantumBytes=</varname></term>
        <listitem>
          <para>Specifies how many bytes to serve from leaf at once. When suffixed with K, M, or G, the
          specified size is parsed as Kilobytes, Megabytes, or Gigabytes, respectively, to the base of
          1024.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>MTUBytes=</varname></term>
        <listitem>
          <para>Specifies the maximum packet size we create. When suffixed with K, M, or G, the specified
          size is parsed as Kilobytes, Megabytes, or Gigabytes, respectively, to the base of 1024.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>OverheadBytes=</varname></term>
        <listitem>
          <para>Takes an unsigned integer which specifies per-packet size overhead used in rate
          computations. When suffixed with K, M, or G, the specified size is parsed as Kilobytes,
          Megabytes, or Gigabytes, respectively, to the base of 1024.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Rate=</varname></term>
        <listitem>
          <para>Specifies the maximum rate this class and all its children are guaranteed. When suffixed
          with K, M, or G, the specified size is parsed as Kilobits, Megabits, or Gigabits, respectively,
          to the base of 1000. This setting is mandatory.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>CeilRate=</varname></term>
        <listitem>
          <para>Specifies the maximum rate at which a class can send, if its parent has bandwidth to spare.
          When suffixed with K, M, or G, the specified size is parsed as Kilobits, Megabits, or Gigabits,
          respectively, to the base of 1000. When unset, the value specified with <varname>Rate=</varname>
          is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>BufferBytes=</varname></term>
        <listitem>
          <para>Specifies the maximum bytes burst which can be accumulated during idle period. When suffixed
          with K, M, or G, the specified size is parsed as Kilobytes, Megabytes, or Gigabytes, respectively,
          to the base of 1024.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>CeilBufferBytes=</varname></term>
        <listitem>
          <para>Specifies the maximum bytes burst for ceil which can be accumulated during idle period.
          When suffixed with K, M, or G, the specified size is parsed as Kilobytes, Megabytes, or Gigabytes,
          respectively, to the base of 1024.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[HeavyHitterFilter] Section Options</title>
    <para>The [HeavyHitterFilter] section manages the queueing discipline (qdisc) of Heavy Hitter Filter
    (hhf).</para>

    <variablelist class='network-directives'>
      <xi:include href="tc.xml" xpointer="qdisc-parent" />
      <xi:include href="tc.xml" xpointer="qdisc-handle" />

      <varlistentry>
        <term><varname>PacketLimit=</varname></term>
        <listitem>
          <para>Specifies the hard limit on the queue size in number of packets. When this limit is reached,
          incoming packets are dropped. An unsigned integer in the range 0…4294967294. Defaults to unset and
          kernel's default is used.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[QuickFairQueueing] Section Options</title>
    <para>The [QuickFairQueueing] section manages the queueing discipline (qdisc) of Quick Fair Queueing
    (QFQ).</para>

    <variablelist class='network-directives'>
      <xi:include href="tc.xml" xpointer="qdisc-parent" />
      <xi:include href="tc.xml" xpointer="qdisc-handle" />
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[QuickFairQueueingClass] Section Options</title>
    <para>The [QuickFairQueueingClass] section manages the traffic control class of Quick Fair Queueing
    (qfq).</para>

    <variablelist class='network-directives'>
      <xi:include href="tc.xml" xpointer="tclass-parent" />
      <xi:include href="tc.xml" xpointer="tclass-classid" />

      <varlistentry>
        <term><varname>Weight=</varname></term>
        <listitem>
          <para>Specifies the weight of the class. Takes an integer in the range 1…1023. Defaults to
          unset in which case the kernel default is used.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>MaxPacketBytes=</varname></term>
        <listitem>
          <para>Specifies the maximum packet size in bytes for the class. When suffixed with K, M, or G, the
          specified size is parsed as Kilobytes, Megabytes, or Gigabytes, respectively, to the base of
          1024. When unset, the kernel default is used.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>[BridgeVLAN] Section Options</title>
      <para>The [BridgeVLAN] section manages the VLAN ID configuration of a bridge port and accepts the
      following keys. Specify several [BridgeVLAN] sections to configure several VLAN entries. The
      <varname>VLANFiltering=</varname> option has to be enabled, see the [Bridge] section in
      <citerefentry><refentrytitle>systemd.netdev</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>

      <variablelist class='network-directives'>
        <varlistentry>
          <term><varname>VLAN=</varname></term>
          <listitem>
            <para>The VLAN ID allowed on the port. This can be either a single ID or a range M-N. Takes
            an integer in the range 1…4094.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>EgressUntagged=</varname></term>
          <listitem>
            <para>The VLAN ID specified here will be used to untag frames on egress. Configuring
            <varname>EgressUntagged=</varname> implicates the use of <varname>VLAN=</varname> above and will enable the
            VLAN ID for ingress as well. This can be either a single ID or a range M-N.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><varname>PVID=</varname></term>
          <listitem>
            <para>The Port VLAN ID specified here is assigned to all untagged frames at ingress.
            <varname>PVID=</varname> can be used only once. Configuring <varname>PVID=</varname> implicates the use of
            <varname>VLAN=</varname> above and will enable the VLAN ID for ingress as well.</para>
          </listitem>
        </varlistentry>
      </variablelist>
  </refsect1>

  <refsect1>
    <title>Examples</title>
    <example>
      <title>Static network configuration</title>

      <programlisting># /etc/systemd/network/50-static.network
[Match]
Name=enp2s0

[Network]
Address=192.168.0.15/24
Gateway=192.168.0.1</programlisting>

      <para>This brings interface <literal>enp2s0</literal> up with a static address. The
      specified gateway will be used for a default route.</para>
    </example>

    <example>
      <title>DHCP on ethernet links</title>

      <programlisting># /etc/systemd/network/80-dhcp.network
[Match]
Name=en*

[Network]
DHCP=yes</programlisting>

      <para>This will enable DHCPv4 and DHCPv6 on all interfaces with names starting with
      <literal>en</literal> (i.e. ethernet interfaces).</para>
    </example>

    <example>
      <title>IPv6 Prefix Delegation (DHCPv6 PD)</title>

      <programlisting># /etc/systemd/network/55-dhcpv6-pd-upstream.network
[Match]
Name=enp1s0

[Network]
DHCP=ipv6

# The below setting is optional, to also assign an address in the delegated prefix
# to the upstream interface. If not necessary, then comment out the line below and
# the [DHCPPrefixDelegation] section.
DHCPPrefixDelegation=yes

# If the upstream network provides Router Advertisement with Managed bit set,
# then comment out the line below and WithoutRA= setting in the [DHCPv6] section.
IPv6AcceptRA=no

[DHCPv6]
WithoutRA=solicit

[DHCPPrefixDelegation]
UplinkInterface=:self
SubnetId=0
Announce=no</programlisting>

      <programlisting># /etc/systemd/network/55-dhcpv6-pd-downstream.network
[Match]
Name=enp2s0

[Network]
DHCPPrefixDelegation=yes
IPv6SendRA=yes

# It is expected that the host is acting as a router. So, usually it is not
# necessary to receive Router Advertisement from other hosts in the downstream network.
IPv6AcceptRA=no

[DHCPPrefixDelegation]
UplinkInterface=enp1s0
SubnetId=1
Announce=yes</programlisting>

      <para>This will enable DHCPv6-PD on the interface enp1s0 as an upstream interface where the
      DHCPv6 client is running and enp2s0 as a downstream interface where the prefix is delegated to.
      The delegated prefixes are distributed by IPv6 Router Advertisement on the downstream network.
      </para>
    </example>

    <example>
      <title>IPv6 Prefix Delegation (DHCPv4 6RD)</title>

      <programlisting># /etc/systemd/network/55-dhcpv4-6rd-upstream.network
[Match]
Name=enp1s0

[Network]
DHCP=ipv4

# When DHCPv4-6RD is used, the upstream network does not support IPv6.
# Hence, it is not necessary to wait for Router Advertisement, which is enabled by default.
IPv6AcceptRA=no

[DHCPv4]
Use6RD=yes</programlisting>

      <programlisting># /etc/systemd/network/55-dhcpv4-6rd-downstream.network
[Match]
Name=enp2s0

[Network]
DHCPPrefixDelegation=yes
IPv6SendRA=yes

# It is expected that the host is acting as a router. So, usually it is not
# necessary to receive Router Advertisement from other hosts in the downstream network.
IPv6AcceptRA=no

[DHCPPrefixDelegation]
UplinkInterface=enp1s0
SubnetId=1
Announce=yes</programlisting>

      <para>This will enable DHCPv4-6RD on the interface enp1s0 as an upstream interface where the
      DHCPv4 client is running and enp2s0 as a downstream interface where the prefix is delegated to.
      The delegated prefixes are distributed by IPv6 Router Advertisement on the downstream network.
      </para>
    </example>

    <example>
      <title>A bridge with two enslaved links</title>

      <programlisting># /etc/systemd/network/25-bridge-static.netdev
[NetDev]
Name=bridge0
Kind=bridge</programlisting>

      <programlisting># /etc/systemd/network/25-bridge-static.network
[Match]
Name=bridge0

[Network]
Address=192.168.0.15/24
Gateway=192.168.0.1
DNS=192.168.0.1</programlisting>

      <programlisting># /etc/systemd/network/25-bridge-slave-interface-1.network
[Match]
Name=enp2s0

[Network]
Bridge=bridge0</programlisting>

      <programlisting># /etc/systemd/network/25-bridge-slave-interface-2.network
[Match]
Name=wlp3s0

[Network]
Bridge=bridge0</programlisting>

      <para>This creates a bridge and attaches devices <literal>enp2s0</literal> and
      <literal>wlp3s0</literal> to it. The bridge will have the specified static address
      and network assigned, and a default route via the specified gateway will be
      added. The specified DNS server will be added to the global list of DNS resolvers.
      </para>
    </example>

    <example>
      <title>Bridge port with VLAN forwarding</title>

      <programlisting>
# /etc/systemd/network/25-bridge-slave-interface-1.network
[Match]
Name=enp2s0

[Network]
Bridge=bridge0

[BridgeVLAN]
VLAN=1-32
PVID=42
EgressUntagged=42

[BridgeVLAN]
VLAN=100-200

[BridgeVLAN]
EgressUntagged=300-400</programlisting>

    <para>This overrides the configuration specified in the previous example for the
    interface <literal>enp2s0</literal>, and enables VLAN on that bridge port. VLAN IDs
    1-32, 42, 100-400 will be allowed. Packets tagged with VLAN IDs 42, 300-400 will be
    untagged when they leave on this interface. Untagged packets which arrive on this
    interface will be assigned VLAN ID 42.</para>
    </example>

    <example>
      <title>Various tunnels</title>

      <programlisting>/etc/systemd/network/25-tunnels.network
[Match]
Name=ens1

[Network]
Tunnel=ipip-tun
Tunnel=sit-tun
Tunnel=gre-tun
Tunnel=vti-tun
      </programlisting>

      <programlisting>/etc/systemd/network/25-tunnel-ipip.netdev
[NetDev]
Name=ipip-tun
Kind=ipip
      </programlisting>

      <programlisting>/etc/systemd/network/25-tunnel-sit.netdev
[NetDev]
Name=sit-tun
Kind=sit
      </programlisting>

      <programlisting>/etc/systemd/network/25-tunnel-gre.netdev
[NetDev]
Name=gre-tun
Kind=gre
      </programlisting>

      <programlisting>/etc/systemd/network/25-tunnel-vti.netdev
[NetDev]
Name=vti-tun
Kind=vti
      </programlisting>

      <para>This will bring interface <literal>ens1</literal> up and create an IPIP tunnel,
      a SIT tunnel, a GRE tunnel, and a VTI tunnel using it.</para>
    </example>

    <example>
      <title>A bond device</title>

      <programlisting># /etc/systemd/network/30-bond1.network
[Match]
Name=bond1

[Network]
DHCP=ipv6
</programlisting>

      <programlisting># /etc/systemd/network/30-bond1.netdev
[NetDev]
Name=bond1
Kind=bond
</programlisting>

      <programlisting># /etc/systemd/network/30-bond1-dev1.network
[Match]
MACAddress=52:54:00:e9:64:41

[Network]
Bond=bond1
</programlisting>

      <programlisting># /etc/systemd/network/30-bond1-dev2.network
[Match]
MACAddress=52:54:00:e9:64:42

[Network]
Bond=bond1
</programlisting>

    <para>This will create a bond device <literal>bond1</literal> and enslave the two
    devices with MAC addresses 52:54:00:e9:64:41 and 52:54:00:e9:64:42 to it. IPv6 DHCP
    will be used to acquire an address.</para>
    </example>

    <example>
      <title>Virtual Routing and Forwarding (VRF)</title>
      <para>Add the <literal>bond1</literal> interface to the VRF master interface
      <literal>vrf1</literal>. This will redirect routes generated on this interface to be
      within the routing table defined during VRF creation. For kernels before 4.8 traffic
      won't be redirected towards the VRFs routing table unless specific ip-rules are added.
      </para>
      <programlisting># /etc/systemd/network/25-vrf.network
[Match]
Name=bond1

[Network]
VRF=vrf1
</programlisting>
    </example>

    <example>
      <title>MacVTap</title>
      <para>This brings up a network interface <literal>macvtap-test</literal>
      and attaches it to <literal>enp0s25</literal>.</para>
      <programlisting># /usr/lib/systemd/network/25-macvtap.network
[Match]
Name=enp0s25

[Network]
MACVTAP=macvtap-test
</programlisting>
    </example>

    <example>
      <title>A Xfrm interface with physical underlying device.</title>

      <programlisting># /etc/systemd/network/27-xfrm.netdev
[NetDev]
Name=xfrm0
Kind=xfrm

[Xfrm]
InterfaceId=7</programlisting>

      <programlisting># /etc/systemd/network/27-eth0.network
[Match]
Name=eth0

[Network]
Xfrm=xfrm0</programlisting>

      <para>This creates a <literal>xfrm0</literal> interface and binds it to the <literal>eth0</literal> device.
      This allows hardware based ipsec offloading to the <literal>eth0</literal> nic.
      If offloading is not needed, xfrm interfaces can be assigned to the <literal>lo</literal> device.
      </para>
    </example>
  </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>systemd.link</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>systemd.netdev</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>systemd-network-generator.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>systemd-resolved.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
    </para>
  </refsect1>

</refentry>
