<!-- Routing Information Protocol (RIP) configuration -->
<interfaceDefinition>
  <node name="protocols">
    <children>
      <node name="rip" owner="${vyos_conf_scripts_dir}/protocols_rip.py">
        <properties>
          <help>Routing Information Protocol (RIP) parameters</help>
        </properties>
        <children>
          <leafNode name="default-distance">
            <properties>
              <help>Administrative distance</help>
              <valueHelp>
                <format>&lt;1-255&gt;</format>
                <description>Administrative distance</description>
              </valueHelp>
              <constraint>
                <validator name="numeric" argument="--range 1-255"/>
              </constraint>
            </properties>
          </leafNode>
          <node name="default-information">
            <properties>
              <help>Control distribution of default route</help>
            </properties>
            <children>
              <leafNode name="originate">
                <properties>
                  <help>Distribute a default route</help>
                  <valueless/>
                </properties>
              </leafNode>
            </children>
          </node>
          <leafNode name="default-metric">
            <properties>
              <help>Metric of redistributed routes</help>
              <valueHelp>
                <format>&lt;1-16&gt;</format>
                <description>Redistributed routes metric</description>
              </valueHelp>
              <constraint>
                <validator name="numeric" argument="--range 1-16"/>
              </constraint>
            </properties>
          </leafNode>
          <node name="distribute-list">
            <properties>
              <help>Filter networks in routing updates</help>
            </properties>
            <children>
              <node name="access-list">
                <properties>
                  <help>Access-list</help>
                </properties>
                <children>
                  <leafNode name="in">
                    <properties>
                      <help>Access list to apply to input packets</help>
                      <valueHelp>
                        <format>&lt;0-4294967295&gt;</format>
                        <description>Access list to apply to input packets</description>
                      </valueHelp>
                      <completionHelp>
                        <path>policy access-list</path>
                      </completionHelp>
                      <constraint>
                        <validator name="numeric" argument="--range 0-4294967295"/>
                      </constraint>
                    </properties>
                  </leafNode>
                  <leafNode name="out">
                    <properties>
                      <help>Access list to apply to output packets</help>
                      <valueHelp>
                        <format>&lt;0-4294967295&gt;</format>
                        <description>Access list to apply to output packets</description>
                      </valueHelp>
                      <completionHelp>
                        <path>policy access-list</path>
                      </completionHelp>
                      <constraint>
                        <validator name="numeric" argument="--range 0-4294967295"/>
                      </constraint>
                    </properties>
                  </leafNode>
                </children>
              </node>
              <tagNode name="interface">
                <properties>
                  <help>Apply filtering to an interface</help>
                  <valueHelp>
                    <format>&lt;text&gt;</format>
                    <description>Apply filtering to an interface</description>
                  </valueHelp>
                  <completionHelp>
                    <script>${vyos_completion_dir}/list_interfaces.py</script>
                  </completionHelp>
                </properties>
                <children>
                  <node name="access-list">
                    <properties>
                      <help>Access list</help>
                    </properties>
                    <children>
                      <leafNode name="in">
                        <properties>
                          <help>Access list to apply to input packets</help>
                          <valueHelp>
                            <format>&lt;0-4294967295&gt;</format>
                            <description>Access list to apply to input packets</description>
                          </valueHelp>
                          <completionHelp>
                            <path>policy access-list</path>
                          </completionHelp>
                          <constraint>
                            <validator name="numeric" argument="--range 0-4294967295"/>
                          </constraint>
                        </properties>
                      </leafNode>
                      <leafNode name="out">
                        <properties>
                          <help>Access list to apply to output packets</help>
                          <valueHelp>
                            <format>&lt;0-4294967295&gt;</format>
                            <description>Access list to apply to output packets</description>
                          </valueHelp>
                          <completionHelp>
                            <path>policy access-list</path>
                          </completionHelp>
                          <constraint>
                            <validator name="numeric" argument="--range 0-4294967295"/>
                          </constraint>
                        </properties>
                      </leafNode>
                    </children>
                  </node>
                  <node name="prefix-list">
                    <properties>
                      <help>Prefix-list</help>
                    </properties>
                    <children>
                      <leafNode name="in">
                        <properties>
                          <help>Prefix-list to apply to input packets</help>
                          <valueHelp>
                            <format>&lt;text&gt;</format>
                            <description>Prefix-list to apply to input packets</description>
                          </valueHelp>
                          <completionHelp>
                            <path>policy prefix-list</path>
                          </completionHelp>
                        </properties>
                      </leafNode>
                      <leafNode name="out">
                        <properties>
                          <help>Prefix-list to apply to output packets</help>
                          <valueHelp>
                            <format>&lt;text&gt;</format>
                            <description>Prefix-list to apply to output packets</description>
                          </valueHelp>
                          <completionHelp>
                            <path>policy prefix-list</path>
                          </completionHelp>
                        </properties>
                      </leafNode>
                    </children>
                  </node>
                </children>
              </tagNode>
              <node name="prefix-list">
                <properties>
                  <help>Prefix-list</help>
                </properties>
                <children>
                  <leafNode name="in">
                    <properties>
                      <help>Prefix-list to apply to input packets</help>
                      <valueHelp>
                        <format>&lt;text&gt;</format>
                        <description>Prefix-list to apply to input packets</description>
                      </valueHelp>
                      <completionHelp>
                        <path>policy prefix-list</path>
                      </completionHelp>
                    </properties>
                  </leafNode>
                  <leafNode name="out">
                    <properties>
                      <help>Prefix-list to apply to output packets</help>
                      <valueHelp>
                        <format>&lt;text&gt;</format>
                        <description>Prefix-list to apply to output packets</description>
                      </valueHelp>
                      <completionHelp>
                        <path>policy prefix-list</path>
                      </completionHelp>
                    </properties>
                  </leafNode>
                </children>
              </node>
            </children>
          </node>
          <leafNode name="interface">
            <properties>
              <help>Interface name</help>
              <valueHelp>
                <format>&lt;text&gt;</format>
                <description>Apply filtering to an interface</description>
              </valueHelp>
              <completionHelp>
                <script>${vyos_completion_dir}/list_interfaces.py</script>
              </completionHelp>
              <multi/>
            </properties>
          </leafNode>
          <leafNode name="neighbor">
            <properties>
              <help>Neighbor router</help>
              <valueHelp>
                <format>ipv4</format> 
                <description>Neighbor router</description>
              </valueHelp>
              <constraint>
                <validator name="ipv4-address"/>
              </constraint>
              <multi/>
            </properties>
          </leafNode>
          <leafNode name="network">
            <properties>
              <help>RIP network</help>
              <valueHelp>
                <format>ipv4net</format> 
                <description>RIP network</description>
              </valueHelp>
              <constraint>
                <validator name="ipv4-prefix"/>
              </constraint>
              <multi/>
            </properties>
          </leafNode>
          <tagNode name="network-distance">
            <properties>
              <help>Source network</help>
              <valueHelp>
                <format>ipv4net</format> 
                <description>Source network</description>
              </valueHelp>
              <constraint>
                <validator name="ipv4-prefix"/>
              </constraint>
            </properties>
            <children>
              <leafNode name="access-list">
                <properties>
                  <help>Access list</help>
                  <valueHelp>
                    <format>&lt;text&gt;</format>
                    <description>Access list</description>
                  </valueHelp>
                  <completionHelp>
                    <path>policy access-list</path>
                  </completionHelp>
                </properties>
              </leafNode>
              <leafNode name="distance">
                <properties>
                  <help>Administrative distance for network</help>
                  <valueHelp>
                    <format>&lt;1-255&gt;</format>
                    <description>Administrative distance</description>
                  </valueHelp>
                  <constraint>
                    <validator name="numeric" argument="--range 1-255"/>
                  </constraint>
                </properties>
              </leafNode>
            </children>
          </tagNode>
          <leafNode name="passive-interface">
            <properties>
              <help>Passive interface</help>
              <valueHelp>
                <format>&lt;text&gt;</format>
                <description>Suppress routing updates on interface</description>
              </valueHelp>
              <valueHelp>
                <format>default</format>
                <description>Suppress routing updates on all interfaces by default</description>
              </valueHelp>
              <completionHelp>
                <list>default</list>
                <script>${vyos_completion_dir}/list_interfaces.py</script>
              </completionHelp>
              <multi/>
            </properties>
          </leafNode>
          <node name="redistribute">
            <properties>
              <help>Redistribute information from another routing protocol</help>
            </properties>
            <children>
              <node name="bgp">
                <properties>
                  <help>Redistribute BGP routes</help>
                </properties>
                <children>
                  #include <include/rip-redistribute.xml.i>
                </children>
              </node>
              <node name="connected">
                <properties>
                  <help>Redistribute connected routes</help>
                </properties>
                <children>
                  #include <include/rip-redistribute.xml.i>
                </children>
              </node>
              <node name="kernel">
                <properties>
                  <help>Redistribute kernel routes</help>
                </properties>
                <children>
                  #include <include/rip-redistribute.xml.i>
                </children>
              </node>
              <node name="ospf">
                <properties>
                  <help>Redistribute OSPF routes</help>
                </properties>
                <children>
                  #include <include/rip-redistribute.xml.i>
                </children>
              </node>
              <node name="static">
                <properties>
                  <help>Redistribute static routes</help>
                </properties>
                <children>
                  #include <include/rip-redistribute.xml.i>
                </children>
              </node>
            </children>
          </node>
          <leafNode name="route">
            <properties>
              <help>RIP static route</help>
              <valueHelp>
                <format>ipv4net</format> 
                <description>RIP static route</description>
              </valueHelp>
              <constraint>
                <validator name="ipv4-prefix"/>
              </constraint>
              <multi/>
            </properties>
          </leafNode>
          <node name="timers">
            <properties>
              <help>RIP timer values</help>
            </properties>
            <children>
              <leafNode name="garbage-collection">
                <properties>
                  <help>Garbage collection timer</help>
                  <valueHelp>
                    <format>&lt;5-2147483647&gt;</format>
                    <description>Garbage colletion time (default 120)</description>
                  </valueHelp>
                  <constraint>
                    <validator name="numeric" argument="--range 5-2147483647"/>
                  </constraint>
                </properties>
              </leafNode>
              <leafNode name="timeout">
                <properties>
                  <help>Routing information timeout timer</help>
                  <valueHelp>
                    <format>&lt;5-2147483647&gt;</format>
                    <description>Routing information timeout timer (default 180)</description>
                  </valueHelp>
                  <constraint>
                    <validator name="numeric" argument="--range 5-2147483647"/>
                  </constraint>
                </properties>
              </leafNode>
              <leafNode name="update">
                <properties>
                  <help>Routing table update timer</help>
                  <valueHelp>
                    <format>&lt;5-2147483647&gt;</format>
                    <description>Routing table update timer in seconds (default 30)</description>
                  </valueHelp>
                  <constraint>
                    <validator name="numeric" argument="--range 5-2147483647"/>
                  </constraint>
                </properties>
              </leafNode>
            </children>
          </node>
        </children>
      </node>
    </children>
  </node>
</interfaceDefinition>