<?xml version="1.0" encoding="utf-8"?>
<!-- Protocol VRF configuration -->
<interfaceDefinition>
  <node name="protocols">
    <children>
       <tagNode name="nvrf" owner="${vyos_conf_scripts_dir}/vrf.py">
        <properties>
          <help>Name of VRF to add route for</help>
          <valueHelp>
            <format>txt</format>
            <description>Name of VRF to add route for</description>
          </valueHelp>
          <completionHelp>
            <path>protocols vrf</path>
          </completionHelp>
        </properties>
        <children>
          <node name="static">
            <properties>
              <help>Static route parameters</help>
            </properties>
            <children>
              <tagNode name="interface-route">
                <properties>
                  <help>Interface based static route</help>
                  <valueHelp>
                    <format>ipv4net</format>
                    <description>Interface based static route</description>
                  </valueHelp>
                  <constraint>
                    <validator name="ipv4-prefix"/>
                  </constraint>
                </properties>
                <children>
                  <tagNode name="next-hop-interface">
                    <properties>
                      <help>Next-hop interface [REQUIRED]</help>
                      <completionHelp>
                        <script>${vyos_completion_dir}/list_interfaces.py</script>
                      </completionHelp>
                    </properties>
                    <children>
                      <leafNode name="disable">
                        <properties>
                          <help>Disable IPv4 interface static route</help>
                          <valueless/>
                        </properties>
                      </leafNode>
                      <leafNode name="distance">
                        <properties>
                          <help>Distance for this route</help>
                          <valueHelp>
                            <format>u32:1-255</format>
                            <description>Distance for this route</description>
                          </valueHelp>
                          <constraint>
                            <validator name="numeric" argument="--range 1-255"/>
                          </constraint>
                        </properties>
                      </leafNode>
                      <leafNode name="next-hop-vrf">
                        <properties>
                          <help>VRF to leak route</help>
                          <valueHelp>
                            <format>txt</format>
                            <description>Name of VRF to leak to</description>
                          </valueHelp>
                          <valueHelp>
                            <format>default</format>
                            <description>Name of VRF to leak to</description>
                          </valueHelp>
                          <completionHelp>
                            <list>default</list>
                            <path>protocols vrf</path>
                          </completionHelp>
                          <constraint>
                            <regex>^[a-zA-Z0-9\-_]{1,100}$</regex>
                          </constraint>
                        </properties>
                      </leafNode>
                    </children>
                  </tagNode> 
                </children>
              </tagNode>
              <tagNode name="interface-route6">
                <properties>
                  <help>Interface based IPv6 static route</help>
                  <valueHelp>
                    <format>ipv6net</format>
                    <description>Interface based IPv6 static route</description>
                  </valueHelp>
                  <constraint>
                    <validator name="ipv6-prefix"/>
                  </constraint>
                </properties>
                <children>
                  <tagNode name="next-hop-interface">
                    <properties>
                      <help>Next-hop interface [REQUIRED]</help>
                      <completionHelp>
                        <script>${vyos_completion_dir}/list_interfaces.py</script>
                      </completionHelp>
                    </properties>
                    <children>
                      <leafNode name="disable">
                        <properties>
                          <help>Disable IPv6 interface static route</help>
                          <valueless/>
                        </properties>
                      </leafNode>
                      <leafNode name="distance">
                        <properties>
                          <help>Distance for this route</help>
                          <valueHelp>
                            <format>u32:1-255</format>
                            <description>Distance for this route</description>
                          </valueHelp>
                          <constraint>
                            <validator name="numeric" argument="--range 1-255"/>
                          </constraint>
                        </properties>
                      </leafNode>
                      <leafNode name="next-hop-vrf">
                        <properties>
                          <help>VRF to leak route</help>
                          <valueHelp>
                            <format>txt</format>
                            <description>Name of VRF to leak to</description>
                          </valueHelp>
                          <valueHelp>
                            <format>default</format>
                            <description>Name of VRF to leak to</description>
                          </valueHelp>
                          <completionHelp>
                            <list>default</list>
                            <path>protocols vrf</path>
                          </completionHelp>
                          <constraint>
                            <regex>^[a-zA-Z0-9\-_]{1,100}$</regex>
                          </constraint>
                        </properties>
                      </leafNode>
                    </children>
                  </tagNode> 
                </children>
              </tagNode>
              <tagNode name="route">
                <properties>
                  <help>VRF static IPv4 route</help>
                  <valueHelp>
                    <format>ipv4net</format>
                    <description>VRF static IPv4 route</description>
                  </valueHelp>
                  <constraint>
                    <validator name="ipv4-prefix"/>
                  </constraint>
                </properties>
                <children>
                  <node name="blackhole">
                    <properties>
                      <help>Silently discard pkts when matched</help>
                    </properties>
                    <children>
                      <leafNode name="distance">
                        <properties>
                          <help>Distance value for this route</help>
                          <valueHelp>
                            <format>u32:1-255</format>
                            <description>Distance for this route</description>
                          </valueHelp>
                          <constraint>
                            <validator name="numeric" argument="--range 1-255"/>
                          </constraint>
                        </properties>
                      </leafNode>
                    </children>
                  </node>
                  <leafNode name="dhcp-interface">
                    <properties>
                      <help>DHCP interface that supplies the next-hop IP address for this static route</help>
                      <completionHelp>
                        <script>${vyos_completion_dir}/list_interfaces.py</script>
                      </completionHelp>
                      <valueHelp>
                        <format>txt</format>
                        <description>DHCP interface</description>
                      </valueHelp>
                    </properties>
                  </leafNode>
                  <tagNode name="next-hop">
                    <properties>
                      <help>Next-hop router</help>
                      <valueHelp>
                        <format>ipv4</format>
                        <description>Next-hop router</description>
                      </valueHelp>
                      <constraint>
                        <validator name="ipv4-address"/>
                      </constraint>
                    </properties>
                    <children>
                      <leafNode name="disable">
                        <properties>
                          <help>Disable IPv4 interface static route</help>
                          <valueless/>
                        </properties>
                      </leafNode>
                      <leafNode name="distance">
                        <properties>
                          <help>Distance for this route</help>
                          <valueHelp>
                            <format>u32:1-255</format>
                            <description>Distance for this route</description>
                          </valueHelp>
                          <constraint>
                            <validator name="numeric" argument="--range 1-255"/>
                          </constraint>
                        </properties>
                      </leafNode>
                      <leafNode name="next-hop-interface">
                        <properties>
                          <help>IPv4 gateway interface name</help>
                          <completionHelp>
                            <script>${vyos_completion_dir}/list_interfaces.py</script>
                          </completionHelp>
                          <valueHelp>
                            <format>txt</format>
                            <description>IPv4 gateway interface name</description>
                          </valueHelp>
                        </properties>
                      </leafNode>
                      <leafNode name="next-hop-vrf">
                        <properties>
                          <help>VRF to leak route</help>
                          <valueHelp>
                            <format>txt</format>
                            <description>Name of VRF to leak to</description>
                          </valueHelp>
                          <valueHelp>
                            <format>default</format>
                            <description>Name of VRF to leak to</description>
                          </valueHelp>
                          <completionHelp>
                            <list>default</list>
                            <path>protocols vrf</path>
                          </completionHelp>
                          <constraint>
                            <regex>^[a-zA-Z0-9\-_]{1,100}$</regex>
                          </constraint>
                        </properties>
                      </leafNode>
                    </children>
                  </tagNode>
                </children>
              </tagNode>
              <tagNode name="route6">
                <properties>
                  <help>VRF static IPv6 route</help>
                  <valueHelp>
                    <format>ipv6net</format>
                    <description>VRF static IPv6 route</description>
                  </valueHelp>
                  <constraint>
                    <validator name="ipv6-prefix"/>
                  </constraint>
                </properties>
                <children>
                  <node name="blackhole">
                    <properties>
                      <help>Silently discard pkts when matched</help>
                    </properties>
                    <children>
                      <leafNode name="distance">
                        <properties>
                          <help>Distance value for this route</help>
                          <valueHelp>
                            <format>u32:1-255</format>
                            <description>Distance for this route</description>
                          </valueHelp>
                          <constraint>
                            <validator name="numeric" argument="--range 1-255"/>
                          </constraint>
                        </properties>
                      </leafNode>
                    </children>
                  </node>
                  <tagNode name="next-hop">
                    <properties>
                      <help>Next-hop IPv6 router [REQUIRED]</help>
                      <valueHelp>
                        <format>ipv6</format>
                        <description>Next-hop IPv6 router [REQUIRED]</description>
                      </valueHelp>
                      <constraint>
                        <validator name="ipv6-address"/>
                      </constraint>
                    </properties>
                    <children>
                      <leafNode name="disable">
                        <properties>
                          <help>Disable IPv6 interface static route</help>
                          <valueless/>
                        </properties>
                      </leafNode>
                      <leafNode name="distance">
                        <properties>
                          <help>Distance for this route</help>
                          <valueHelp>
                            <format>u32:1-255</format>
                            <description>Distance for this route</description>
                          </valueHelp>
                          <constraint>
                            <validator name="numeric" argument="--range 1-255"/>
                          </constraint>
                        </properties>
                      </leafNode>
                      <leafNode name="interface">
                        <properties>
                          <help>IPv6 gateway interface name</help>
                          <completionHelp>
                            <script>${vyos_completion_dir}/list_interfaces.py</script>
                          </completionHelp>
                          <valueHelp>
                            <format>txt</format>
                            <description>IPv6 gateway interface name</description>
                          </valueHelp>
                        </properties>
                      </leafNode>
                      <leafNode name="next-hop-vrf">
                        <properties>
                          <help>VRF to leak route</help>
                          <valueHelp>
                            <format>txt</format>
                            <description>Name of VRF to leak to</description>
                          </valueHelp>
                          <valueHelp>
                            <format>default</format>
                            <description>Name of VRF to leak to</description>
                          </valueHelp>
                          <completionHelp>
                            <list>default</list>
                            <path>protocols vrf</path>
                          </completionHelp>
                          <constraint>
                            <regex>^[a-zA-Z0-9\-_]{1,100}$</regex>
                          </constraint>
                        </properties>
                      </leafNode>
                    </children>
                  </tagNode>
                </children>
              </tagNode>
            </children>
          </node>
        </children>
      </tagNode>
    </children>
  </node>
</interfaceDefinition>