<?xml version="1.0" encoding="UTF-8"?>
<!-- sflow configuration -->
<interfaceDefinition>
  <node name="system">
    <children>
      <node name="sflow" owner="${vyos_conf_scripts_dir}/system_sflow.py">
        <properties>
          <help>sFlow settings</help>
          <priority>990</priority>
        </properties>
        <children>
          <leafNode name="agent-address">
            <properties>
              <help>sFlow agent IPv4 or IPv6 address</help>
              <completionHelp>
                <list>auto</list>
                <script>${vyos_completion_dir}/list_local_ips.sh --both</script>
              </completionHelp>
              <valueHelp>
                <format>ipv4</format>
                <description>sFlow IPv4 agent address</description>
              </valueHelp>
              <valueHelp>
                <format>ipv6</format>
                <description>sFlow IPv6 agent address</description>
              </valueHelp>
              <constraint>
                <validator name="ip-address"/>
                <validator name="ipv6-link-local"/>
              </constraint>
            </properties>
          </leafNode>
          <leafNode name="agent-interface">
            <properties>
              <help>IP address associated with this interface</help>
              <completionHelp>
                <script>${vyos_completion_dir}/list_interfaces</script>
              </completionHelp>
              <valueHelp>
                <format>txt</format>
                <description>Interface name</description>
              </valueHelp>
              <constraint>
                #include <include/constraint/interface-name.xml.i>
              </constraint>
            </properties>
          </leafNode>
          <leafNode name="drop-monitor-limit">
            <properties>
              <help>Export headers of dropped by kernel packets</help>
              <valueHelp>
                <format>u32:1-65535</format>
                <description>Maximum rate limit of N drops per second send out in the sFlow datagrams</description>
              </valueHelp>
              <constraint>
                <validator name="numeric" argument="--range 1-65535"/>
              </constraint>
            </properties>
          </leafNode>
          #include <include/generic-interface-multi.xml.i>
          <leafNode name="polling">
            <properties>
              <help>Schedule counter-polling in seconds</help>
              <valueHelp>
                <format>u32:1-600</format>
                <description>Polling rate in seconds</description>
              </valueHelp>
              <constraint>
                <validator name="numeric" argument="--range 1-600"/>
              </constraint>
            </properties>
            <defaultValue>30</defaultValue>
          </leafNode>
          <leafNode name="sampling-rate">
            <properties>
              <help>sFlow sampling-rate</help>
              <valueHelp>
                <format>u32:1-65535</format>
                <description>Sampling rate (1 in N packets)</description>
              </valueHelp>
              <constraint>
                <validator name="numeric" argument="--range 1-65535"/>
              </constraint>
            </properties>
            <defaultValue>1000</defaultValue>
          </leafNode>
          <tagNode name="server">
            <properties>
              <help>sFlow destination server</help>
              <valueHelp>
                <format>ipv4</format>
                <description>IPv4 server to export sFlow</description>
              </valueHelp>
              <valueHelp>
                <format>ipv6</format>
                <description>IPv6 server to export sFlow</description>
              </valueHelp>
              <constraint>
                <validator name="ip-address"/>
              </constraint>
            </properties>
            <children>
              #include <include/port-number.xml.i>
              <leafNode name="port">
                <defaultValue>6343</defaultValue>
              </leafNode>
            </children>
          </tagNode>
        </children>
      </node>
    </children>
  </node>
</interfaceDefinition>