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

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

  <refentryinfo>
    <title>networkctl</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>networkctl</refentrytitle>
    <manvolnum>1</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>networkctl</refname>
    <refpurpose>Query the status of network links</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <cmdsynopsis>
      <command>networkctl</command>
      <arg choice="opt" rep="repeat">OPTIONS</arg>
      <arg choice="plain">COMMAND</arg>
      <arg choice="opt" rep="repeat">LINK</arg>
    </cmdsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para><command>networkctl</command> may be used to introspect the
    state of the network links as seen by
    <command>systemd-networkd</command>.  Please refer to
    <citerefentry><refentrytitle>systemd-networkd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
    for an introduction to the basic concepts, functionality, and
    configuration syntax.</para>
  </refsect1>

  <refsect1>
    <title>Commands</title>

    <para>The following commands are understood:</para>

    <variablelist>
      <varlistentry>
        <term>
          <command>list</command>
          <optional><replaceable>PATTERN…</replaceable></optional>
        </term>

        <listitem>
          <para>Show a list of existing links and their status. If one ore more
          <replaceable>PATTERN</replaceable>s are specified, only links matching one of them are shown.
          If no further arguments are specified shows all links,
          otherwise just the specified links. Produces output similar to:

          <programlisting>IDX LINK         TYPE     OPERATIONAL SETUP
  1 lo           loopback carrier     unmanaged
  2 eth0         ether    routable    configured
  3 virbr0       ether    no-carrier  unmanaged
  4 virbr0-nic   ether    off         unmanaged

4 links listed.</programlisting></para>

        <para>The operational status is one of the following:
            <variablelist>
              <varlistentry>
                <term>off</term>
                <listitem>
                  <para>the device is powered down</para>
                </listitem>
              </varlistentry>
              <varlistentry>
                <term>no-carrier</term>
                <listitem>
                  <para>the device is powered up, but it does not yet have a carrier</para>
                </listitem>
              </varlistentry>
              <varlistentry>
                <term>dormant</term>
                <listitem>
                  <para>the device has a carrier, but is not yet ready for normal traffic</para>
                </listitem>
              </varlistentry>
              <varlistentry>
                <term>degraded-carrier</term>
                <listitem>
                  <para>for bond or bridge master, one of the bonding or bridge slave network interfaces is
                  in off, no-carrier, or dormant state</para>
                </listitem>
              </varlistentry>
              <varlistentry>
                <term>carrier</term>
                <listitem>
                  <para>the link has a carrier, or for bond or bridge master, all bonding or bridge slave
                  network interfaces are enslaved to the master.</para>
                </listitem>
              </varlistentry>
              <varlistentry>
                <term>degraded</term>
                <listitem>
                  <para>the link has carrier and addresses valid on the local link configured</para>
                </listitem>
              </varlistentry>
              <varlistentry>
                <term>enslaved</term>
                <listitem>
                  <para>the link has carrier and is enslaved to bond or bridge master network interface</para>
                </listitem>
              </varlistentry>
              <varlistentry>
                <term>routable</term>
                <listitem>
                  <para>the link has carrier and routable address configured</para>
                </listitem>
              </varlistentry>
            </variablelist>
        </para>

        <para>The setup status is one of the following:
            <variablelist>
              <varlistentry>
                <term>pending</term>
                <listitem>
                  <para>udev is still processing the link, we don't yet know if we will manage it</para>
                </listitem>
              </varlistentry>
              <varlistentry>
                <term>failed</term>
                <listitem>
                  <para>networkd failed to manage the link</para>
                </listitem>
              </varlistentry>
              <varlistentry>
                <term>configuring</term>
                <listitem>
                  <para>in the process of retrieving configuration or configuring the link</para>
                </listitem>
              </varlistentry>
              <varlistentry>
                <term>configured</term>
                <listitem>
                  <para>link configured successfully</para>
                </listitem>
              </varlistentry>
              <varlistentry>
                <term>unmanaged</term>
                <listitem>
                  <para>networkd is not handling the link</para>
                </listitem>
              </varlistentry>
              <varlistentry>
                <term>linger</term>
                <listitem>
                  <para>the link is gone, but has not yet been dropped by networkd</para>
                </listitem>
              </varlistentry>
            </variablelist>
        </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>
          <command>status</command>
          <optional><replaceable>PATTERN…</replaceable></optional>
        </term>

        <listitem>
          <para>Show information about the specified links: type, state, kernel module driver, hardware and
          IP address, configured DNS servers, etc. If one ore more <replaceable>PATTERN</replaceable>s are
          specified, only links matching one of them are shown.</para>

          <para>When no links are specified, an overall network status is shown. Also see the option
          <option>--all</option>.</para>

          <para>Produces output similar to:
          <programlisting>
●      State: routable
     Address: 10.193.76.5 on eth0
              192.168.122.1 on virbr0
              169.254.190.105 on eth0
              fe80::5054:aa:bbbb:cccc on eth0
     Gateway: 10.193.11.1 (CISCO SYSTEMS, INC.) on eth0
         DNS: 8.8.8.8
              8.8.4.4</programlisting></para>
        </listitem>

      </varlistentry>

      <varlistentry>
        <term>
          <command>lldp</command>
          <optional><replaceable>PATTERN…</replaceable></optional>
        </term>

        <listitem>
          <para>Show discovered LLDP (Link Layer Discovery Protocol) neighbors. If one or more
          <replaceable>PATTERN</replaceable>s are specified only neighbors on those interfaces are shown.
          Otherwise shows discovered neighbors on all interfaces. Note that for this feature to work,
          <varname>LLDP=</varname> must be turned on for the specific interface, see
          <citerefentry><refentrytitle>systemd.network</refentrytitle><manvolnum>5</manvolnum></citerefentry> for
          details.</para>

          <para>Produces output similar to:
          <programlisting>LINK             CHASSIS ID        SYSTEM NAME      CAPS        PORT ID           PORT DESCRIPTION
enp0s25          00:e0:4c:00:00:00 GS1900           ..b........ 2                 Port #2

Capability Flags:
o - Other; p - Repeater;  b - Bridge; w - WLAN Access Point; r - Router;
t - Telephone; d - DOCSIS cable device; a - Station; c - Customer VLAN;
s - Service VLAN, m - Two-port MAC Relay (TPMR)

1 neighbors listed.</programlisting></para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>
          <command>label</command>
        </term>

        <listitem><para>Show numerical address labels that can be used for address selection.
        This is the same information that
        <citerefentry><refentrytitle>ip-addrlabel</refentrytitle><manvolnum>8</manvolnum></citerefentry>
        shows. See <ulink url="https://tools.ietf.org/html/rfc3484">RFC 3484</ulink>
        for a discussion of address labels.</para>

        <para>Produces output similar to:
        <programlisting>Prefix/Prefixlen                          Label
        ::/0                                  1
    fc00::/7                                  5
    fec0::/10                                11
    2002::/16                                 2
    3ffe::/16                                12
 2001:10::/28                                 7
    2001::/32                                 6
::ffff:0.0.0.0/96                             4
        ::/96                                 3
       ::1/128                                0</programlisting></para>
        </listitem>
      </varlistentry>

       <varlistentry>
        <term>
          <command>delete</command>
        </term>
        <listitem><para>Deletes virtual netdevs. Takes interface name or index number.</para></listitem>
      </varlistentry>

       <varlistentry>
        <term>
          <command>renew</command>
        </term>
        <listitem><para>Renew dynamic configurations e.g. addresses received from DHCP server.
        Takes interface name or index number.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term>
          <command>reconfigure</command>
        </term>
        <listitem><para>Reconfigure network interfaces. Takes interface name or index number.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term>
          <command>reload</command>
        </term>
        <listitem><para>Reload <filename>.netdev</filename> and <filename>.network</filename> files.
        If a new <filename>.netdev</filename> file is found, then the corresponding netdev is created.
        Note that even if an existing <filename>.netdev</filename> is modified or removed,
        <command>systemd-networkd</command> does not update or remove the netdev.
        If a new, modified or removed <filename>.network</filename> file is found, then all interfaces
        which match the file are reconfigured.</para></listitem>
      </varlistentry>

    </variablelist>
  </refsect1>

  <refsect1>
    <title>Options</title>

    <para>The following options are understood:</para>

    <variablelist>
      <varlistentry>
        <term>
          <option>-a</option>
          <option>--all</option>
        </term>

        <listitem>
          <para>Show all links with <command>status</command>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>
          <option>-s</option>
          <option>--stats</option>
        </term>

        <listitem>
          <para>Show link statistics with <command>status</command>.</para>
        </listitem>
      </varlistentry>

      <xi:include href="standard-options.xml" xpointer="help" />
      <xi:include href="standard-options.xml" xpointer="version" />
      <xi:include href="standard-options.xml" xpointer="no-legend" />
      <xi:include href="standard-options.xml" xpointer="no-pager" />

    </variablelist>
  </refsect1>

  <refsect1>
    <title>Exit status</title>

    <para>On success, 0 is returned, a non-zero failure code otherwise.</para>
  </refsect1>

  <refsect1>
    <title>See Also</title>
    <para>
      <citerefentry><refentrytitle>systemd-networkd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>systemd.network</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>systemd.netdev</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
      <citerefentry project='die-net'><refentrytitle>ip</refentrytitle><manvolnum>8</manvolnum></citerefentry>
    </para>
  </refsect1>
</refentry>
