<?xml version="1.0" encoding="UTF-8"?>
<interfaceDefinition>
  <node name="clear">
    <children>
      <node name="dhcp-server">
        <properties>
          <help>Clear DHCP server lease</help>
        </properties>
        <children>
          <tagNode name="lease">
            <properties>
              <help>DHCP server lease</help>
            </properties>
            <command>${vyos_op_scripts_dir}/dhcp.py clear_dhcp_server_lease --family inet --address $4</command>
          </tagNode>
        </children>
      </node>
      <node name="dhcpv6-server">
        <properties>
          <help>Clear DHCPv6 server lease</help>
        </properties>
        <children>
          <tagNode name="lease">
            <properties>
              <help>DHCPv6 server lease</help>
            </properties>
            <command>${vyos_op_scripts_dir}/dhcp.py clear_dhcp_server_lease --family inet6 --address $4</command>
          </tagNode>
        </children>
      </node>
    </children>
  </node>
  <node name="show">
    <children>
      <node name="dhcp">
        <properties>
          <help>Show DHCP (Dynamic Host Configuration Protocol) information</help>
        </properties>
        <children>
          <node name="client">
            <properties>
              <help>Show DHCP client information</help>
            </properties>
            <children>
              <node name="leases">
                <properties>
                  <help>Show DHCP client leases</help>
                </properties>
                <children>
                  <tagNode name="interface">
                    <properties>
                      <help> Show DHCP client information for a given interface</help>
                      <completionHelp>
                        <script>${vyos_completion_dir}/list_interfaces --broadcast</script>
                      </completionHelp>
                    </properties>
                    <command>${vyos_op_scripts_dir}/dhcp.py show_client_leases --family inet --interface $6</command>
                  </tagNode>
                </children>
                <command>${vyos_op_scripts_dir}/dhcp.py show_client_leases --family inet</command>
              </node>
             </children>
          </node>
          <node name="server">
            <properties>
              <help>Show DHCP server information</help>
            </properties>
            <children>
              <node name="leases">
                <properties>
                  <help>Show DHCP server leases</help>
                </properties>
                <command>${vyos_op_scripts_dir}/dhcp.py show_server_leases --family inet</command>
                <children>
                  <tagNode name="origin">
                    <properties>
                      <help>Show DHCP server leases granted by local or remote DHCP server</help>
                      <completionHelp>
                        <list>local remote</list>
                      </completionHelp>
                    </properties>
                    <command>${vyos_op_scripts_dir}/dhcp.py show_server_leases --family inet --origin $6</command>
                  </tagNode>
                  <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>${vyos_op_scripts_dir}/dhcp.py show_server_leases --family inet --pool $6</command>
                  </tagNode>
                  <tagNode name="sort">
                    <properties>
                      <help>Show DHCP server leases sorted by the specified key</help>
                      <completionHelp>
                        <list>end hostname ip mac pool remaining start state</list>
                      </completionHelp>
                    </properties>
                    <command>${vyos_op_scripts_dir}/dhcp.py show_server_leases --family inet --sort $6</command>
                  </tagNode>
                  <tagNode name="state">
                    <properties>
                      <help>Show DHCP server leases with a specific state (can be multiple, comma-separated)</help>
                      <completionHelp>
                        <list>abandoned active all backup expired free released reset</list>
                      </completionHelp>
                    </properties>
                    <command>${vyos_op_scripts_dir}/dhcp.py show_server_leases --family inet --state $6</command>
                  </tagNode>
                </children>
              </node>
              <node name="static-mappings">
                <properties>
                  <help>Show DHCP server static mappings</help>
                </properties>
                <command>${vyos_op_scripts_dir}/dhcp.py show_server_static_mappings --family inet</command>
                <children>
                  <tagNode name="pool">
                    <properties>
                      <help>Show DHCP server static mappings for a specific pool</help>
                      <completionHelp>
                        <path>service dhcp-server shared-network-name</path>
                      </completionHelp>
                    </properties>
                    <command>${vyos_op_scripts_dir}/dhcp.py show_server_static_mappings --family inet --pool $6</command>
                  </tagNode>
                  <tagNode name="sort">
                    <properties>
                      <help>Show DHCP server static mappings sorted by the specified key</help>
                      <completionHelp>
                        <list>ip mac duid pool</list>
                      </completionHelp>
                    </properties>
                    <command>${vyos_op_scripts_dir}/dhcp.py show_server_static_mappings --family inet --sort $6</command>
                  </tagNode>
                </children>
              </node>
              <node name="statistics">
                <properties>
                  <help>Show DHCP server statistics</help>
                </properties>
                <command>${vyos_op_scripts_dir}/dhcp.py show_pool_statistics --family inet</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>${vyos_op_scripts_dir}/dhcp.py show_pool_statistics --family inet --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>
                        <path>service dhcpv6-server shared-network-name</path>
                      </completionHelp>
                    </properties>
                    <command>${vyos_op_scripts_dir}/dhcp.py show_server_leases --family inet6 --pool $6</command>
                  </tagNode>
                  <tagNode name="sort">
                    <properties>
                      <help>Show DHCPv6 server leases sorted by the specified key</help>
                      <completionHelp>
                        <list>end duid ip last_communication pool remaining state type</list>
                      </completionHelp>
                    </properties>
                    <command>${vyos_op_scripts_dir}/dhcp.py show_server_leases --family inet6 --sort $6</command>
                  </tagNode>
                  <tagNode name="state">
                    <properties>
                      <help>Show DHCPv6 server leases with a specific state (can be multiple, comma-separated)</help>
                      <completionHelp>
                        <list>abandoned active all backup expired free released reset</list>
                      </completionHelp>
                    </properties>
                    <command>${vyos_op_scripts_dir}/dhcp.py show_server_leases --family inet6 --state $6</command>
                  </tagNode>
                </children>
              </node>
              <node name="static-mappings">
                <properties>
                  <help>Show DHCPv6 server static mappings</help>
                </properties>
                <command>${vyos_op_scripts_dir}/dhcp.py show_server_static_mappings --family inet6</command>
                <children>
                  <tagNode name="pool">
                    <properties>
                      <help>Show DHCPv6 server static mappings for a specific pool</help>
                      <completionHelp>
                        <path>service dhcp-server shared-network-name</path>
                      </completionHelp>
                    </properties>
                    <command>${vyos_op_scripts_dir}/dhcp.py show_server_static_mappings --family inet6 --pool $6</command>
                  </tagNode>
                  <tagNode name="sort">
                    <properties>
                      <help>Show DHCPv6 server static mappings sorted by the specified key</help>
                      <completionHelp>
                        <list>ip mac duid pool</list>
                      </completionHelp>
                    </properties>
                    <command>${vyos_op_scripts_dir}/dhcp.py show_server_static_mappings --family inet6 --sort $6</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 kea-dhcp4-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 kea-dhcp6-server.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</script>
              </completionHelp>
            </properties>
            <command>sudo ${vyos_op_scripts_dir}/dhcp.py renew_client_lease --family inet --interface "$4"</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</script>
              </completionHelp>
            </properties>
            <command>sudo ${vyos_op_scripts_dir}/dhcp.py renew_client_lease --family inet6 --interface "$4"</command>
          </tagNode>
        </children>
      </node>
    </children>
  </node>
</interfaceDefinition>