<?xml version="1.0" encoding="UTF-8"?>
<interfaceDefinition>
  <node name="show">
    <children>
      <node name="dhcp">
        <properties>
          <help>Show DHCP (Dynamic Host Configuration Protocol) information</help>
        </properties>
        <children>
          <node name="server">
            <properties>
              <help>Show DHCP server information</help>
            </properties>
            <children>
              <node name="leases">
                <properties>
                  <help>Show DHCP server leases</help>
                </properties>
                <command>sudo ${vyos_op_scripts_dir}/dhcp.py show_server_leases --family inet</command>
                <children>
                  <tagNode name="pool">
                    <properties>
                      <help>Show DHCP server leases for a specific pool</help>
                      <completionHelp>
                        <path>service dhcp-server shared-network-name</path>
                      </completionHelp>
                    </properties>
                    <command>sudo ${vyos_op_scripts_dir}/show_dhcp.py --leases --pool $6</command>
                  </tagNode>
                  <tagNode name="sort">
                    <properties>
                      <help>Show DHCP server leases sorted by the specified key</help>
                      <completionHelp>
                        <script>sudo ${vyos_op_scripts_dir}/show_dhcp.py --allowed sort</script>
                      </completionHelp>
                    </properties>
                    <command>sudo ${vyos_op_scripts_dir}/show_dhcp.py --leases --sort $6</command>
                  </tagNode>
                  <tagNode name="state">
                    <properties>
                      <help>Show DHCP server leases with a specific state (can be multiple, comma-separated)</help>
                      <completionHelp>
                        <script>sudo ${vyos_op_scripts_dir}/show_dhcp.py --allowed state</script>
                      </completionHelp>
                    </properties>
                    <command>sudo ${vyos_op_scripts_dir}/show_dhcp.py --leases --state $(echo $6 | tr , " ")</command>
                  </tagNode>
                </children>
              </node>
              <node name="statistics">
                <properties>
                  <help>Show DHCP server statistics</help>
                </properties>
                <command>sudo ${vyos_op_scripts_dir}/show_dhcp.py --statistics</command>
                <children>
                  <tagNode name="pool">
                    <properties>
                      <help>Show DHCP server statistics for a specific pool</help>
                      <completionHelp>
                        <path>service dhcp-server shared-network-name</path>
                      </completionHelp>
                    </properties>
                    <command>sudo ${vyos_op_scripts_dir}/show_dhcp.py --statistics --pool $6</command>
                  </tagNode>
                </children>
              </node>
            </children>
          </node>
        </children>
      </node>
      <node name="dhcpv6">
        <properties>
          <help>Show DHCPv6 (IPv6 Dynamic Host Configuration Protocol) information</help>
        </properties>
        <children>
          <node name="server">
            <properties>
              <help>Show DHCPv6 server information</help>
            </properties>
            <children>
              <node name="leases">
                <properties>
                  <help>Show DHCPv6 server leases</help>
                </properties>
                <command>sudo ${vyos_op_scripts_dir}/dhcp.py show_server_leases --family inet6</command>
                <children>
                  <tagNode name="pool">
                    <properties>
                      <help>Show DHCPv6 server leases for a specific pool</help>
                      <completionHelp>
                        <script>sudo ${vyos_op_scripts_dir}/show_dhcpv6.py --allowed pool</script>
                      </completionHelp>
                    </properties>
                    <command>sudo ${vyos_op_scripts_dir}/show_dhcpv6.py --leases --pool $6</command>
                  </tagNode>
                  <tagNode name="sort">
                    <properties>
                      <help>Show DHCPv6 server leases sorted by the specified key</help>
                      <completionHelp>
                        <script>sudo ${vyos_op_scripts_dir}/show_dhcpv6.py --allowed sort</script>
                      </completionHelp>
                    </properties>
                    <command>sudo ${vyos_op_scripts_dir}/show_dhcpv6.py --leases --sort $6</command>
                  </tagNode>
                  <tagNode name="state">
                    <properties>
                      <help>Show DHCPv6 server leases with a specific state (can be multiple, comma-separated)</help>
                      <completionHelp>
                        <script>sudo ${vyos_op_scripts_dir}/show_dhcpv6.py --allowed state</script>
                      </completionHelp>
                    </properties>
                    <command>sudo ${vyos_op_scripts_dir}/show_dhcpv6.py --leases --state $(echo $6 | tr , " ")</command>
                  </tagNode>
                </children>
              </node>
            </children>
          </node>
        </children>
      </node>
    </children>
  </node>
  <node name="restart">
    <children>
      <node name="dhcp">
        <properties>
          <help>Restart DHCP processes</help>
        </properties>
        <children>
          <node name="server">
            <properties>
              <help>Restart DHCP server</help>
            </properties>
            <command>if cli-shell-api existsActive service dhcp-server; then sudo systemctl restart isc-dhcp-server.service; else echo "DHCP server not configured"; fi</command>
          </node>
          <node name="relay-agent">
            <properties>
              <help>Restart DHCP relay-agent</help>
            </properties>
            <command>sudo ${vyos_op_scripts_dir}/restart_dhcp_relay.py --ipv4</command>
          </node>
        </children>
      </node>
      <node name="dhcpv6">
        <properties>
          <help>Restart DHCPv6 processes</help>
        </properties>
        <children>
          <node name="server">
            <properties>
              <help>Restart DHCPv6 server</help>
            </properties>
            <command>if cli-shell-api existsActive service dhcpv6-server; then sudo systemctl restart isc-dhcp-server6.service; else echo "DHCPv6 server not configured"; fi</command>
          </node>
          <node name="relay-agent">
            <properties>
              <help>Restart DHCPv6 relay-agent</help>
            </properties>
            <command>sudo ${vyos_op_scripts_dir}/restart_dhcp_relay.py --ipv6</command>
          </node>
        </children>
      </node>
    </children>
  </node>
  <node name="renew">
    <properties>
      <help>Renew specified variable</help>
    </properties>
    <children>
      <node name="dhcp">
        <properties>
          <help>Renew DHCP client lease</help>
        </properties>
        <children>
          <tagNode name="interface">
            <properties>
              <help>Renew DHCP client lease for specified interface</help>
              <completionHelp>
                <script>${vyos_completion_dir}/list_interfaces.py</script>
              </completionHelp>
            </properties>
            <command>sudo systemctl restart "dhclient@$4.service"</command>
          </tagNode>
        </children>
      </node>
      <node name="dhcpv6">
        <properties>
          <help>Renew DHCPv6 client lease</help>
        </properties>
        <children>
          <tagNode name="interface">
            <properties>
              <help>Renew DHCPv6 client lease for specified interface</help>
              <completionHelp>
                <script>${vyos_completion_dir}/list_interfaces.py</script>
              </completionHelp>
            </properties>
            <command>sudo systemctl restart "dhcp6c@$4.service"</command>
          </tagNode>
        </children>
      </node>
    </children>
  </node>
</interfaceDefinition>