<?xml version="1.0"?>
<!-- Protocol IS-IS configuration -->
<interfaceDefinition>
  <node name="protocols">
    <children>
      <tagNode name="isis" owner="${vyos_conf_scripts_dir}/protocols_isis.py">
        <properties>
          <help>Intermediate System to Intermediate System (IS-IS)</help>
          <valueHelp>
            <format>text(TAG)</format>
            <description>ISO Routing area tag</description>
          </valueHelp>
        </properties>
        <children>
          <node name="area-password">
            <properties>
              <help>Configure the authentication password for an area</help>
            </properties>
            <children>
              <leafNode name="plaintext-password">
                <properties>
                  <help>Plain-text authentication type</help>
                  <valueHelp>
                    <format>&lt;text&gt;</format>
                    <description>Level-wide password</description>
                  </valueHelp>
                </properties>
              </leafNode>
              <leafNode name="md5">
                <properties>
                  <help>MD5 authentication type</help>
                  <valueHelp>
                    <format>&lt;md5&gt;</format>
                    <description>Level-wide password</description>
                  </valueHelp>
                </properties>
              </leafNode>
            </children>
          </node>
          <node name="default-information">
            <properties>
              <help>Control distribution of default information</help>
            </properties>
            <children>
              <node name="originate">
                <properties>
                  <help>Distribute a default route</help>
                </properties>
                <children>
                  <node name="ipv4">
                    <properties>
                      <help>Distribute default route for IPv4</help>
                    </properties>
                    <children>
                      <leafNode name="level-1">
                        <properties>
                          <help>Distribute default route into level-1</help>
                          <valueless/>
                        </properties>
                      </leafNode>
                      <leafNode name="level-2">
                        <properties>
                          <help>Distribute default route into level-2</help>
                          <valueless/>
                        </properties>
                      </leafNode>
                    </children>
                  </node>
                  <node name="ipv6">
                    <properties>
                      <help>Distribute default route for IPv6</help>
                    </properties>
                    <children>
                      <leafNode name="level-1">
                        <properties>
                          <help>Distribute default route into level-1</help>
                          <completionHelp>
                            <list>always</list>
                          </completionHelp>
                          <valueHelp>
                            <format>always</format>
                            <description>Always advertise default route</description>
                          </valueHelp>
                        </properties>
                      </leafNode>
                      <leafNode name="level-2">
                        <properties>
                          <help>Distribute default route into level-2</help>
                          <completionHelp>
                            <list>always</list>
                          </completionHelp>
                          <valueHelp>
                            <format>always</format>
                            <description>Always advertise default route</description>
                          </valueHelp>
                        </properties>
                      </leafNode>
                    </children>
                  </node>
                </children>
              </node>
            </children>
          </node>
          <node name="domain-password">
            <properties>
              <help>Set the authentication password for a routing domain</help>
            </properties>
            <children>
              <leafNode name="plaintext-password">
                <properties>
                  <help>Plain-text authentication type</help>
                  <valueHelp>
                    <format>&lt;text&gt;</format>
                    <description>Level-wide password</description>
                  </valueHelp>
                </properties>
              </leafNode>
   <!--           <leafNode name="md5">
                <properties>
                  <help>MD5 authentication type</help>
                  <valueHelp>
                    <format>&lt;md5&gt;</format>
                    <description>Level-wide password</description>
                  </valueHelp>
                </properties>
              </leafNode>  -->
            </children>
          </node>
          <leafNode name="dynamic-hostname">
            <properties>
              <help>Dynamic hostname for IS-IS</help>
              <valueless/>
            </properties>
          </leafNode>
          <leafNode name="level">
            <properties>
              <help>IS-IS level number</help>
              <completionHelp>
                <list>level-1 level-1-2 level-2</list>
              </completionHelp>
              <valueHelp>
                <format>level-1</format>
                <description>Act as a station router</description>
              </valueHelp>
              <valueHelp>
                <format>level-1-2</format>
                <description>Act as both a station and an area router</description>
              </valueHelp>
              <valueHelp>
                <format>level-2</format>
                <description>Act as an area router</description>
              </valueHelp>
              <constraint>
                <regex>(level-1|level-1-2|level-2)</regex>
              </constraint>
            </properties>
          </leafNode>
          <leafNode name="lsp-gen-interval">
            <properties>
              <help>Minimum interval between regenerating same LSP</help>
              <valueHelp>
                <format>&lt;1-120&gt;</format>
                <description>Minimum interval in seconds</description>
              </valueHelp>
              <constraint>
                <validator name="numeric" argument="--range 1-120"/>
              </constraint>
            </properties>
          </leafNode>
          <leafNode name="lsp-mtu">
            <properties>
              <help>Configure the maximum size of generated LSPs</help>
              <valueHelp>
                <format>&lt;128-4352&gt;</format>
                <description>Maximum size of generated LSPs</description>
              </valueHelp>
              <constraint>
                <validator name="numeric" argument="--range 128-4352"/>
              </constraint>
            </properties>
          </leafNode>
          <leafNode name="lsp-refresh-interval">
            <properties>
              <help>LSP refresh interval</help>
              <valueHelp>
                <format>&lt;1-65235&gt;</format>
                <description>LSP refresh interval in seconds</description>
              </valueHelp>
              <constraint>
                <validator name="numeric" argument="--range 1-65235"/>
              </constraint>
            </properties>
          </leafNode>
          <leafNode name="max-lsp-lifetime">
            <properties>
              <help>Maximum LSP lifetime</help>
              <valueHelp>
                <format>&lt;350-65535&gt;</format>
                <description>LSP lifetime in seconds</description>
              </valueHelp>
              <constraint>
                <validator name="numeric" argument="--range 1-65535"/>
              </constraint>
            </properties>
          </leafNode>
          <leafNode name="metric-style">
            <properties>
              <help>Use old-style (ISO 10589) or new-style packet formats</help>
              <completionHelp>
                <list>narrow transition wide</list>
              </completionHelp>
              <valueHelp>
                <format>narrow</format>
                <description>Use old style of TLVs with narrow metric</description>
              </valueHelp>
              <valueHelp>
                <format>transition</format>
                <description>Send and accept both styles of TLVs during transition</description>
              </valueHelp>
              <valueHelp>
                <format>wide</format>
                <description>Use new style of TLVs to carry wider metric</description>
              </valueHelp>
              <constraint>
                <regex>(narrow|transition|wide)</regex>
              </constraint>
            </properties>
          </leafNode>
          <leafNode name="net">
            <properties>
              <help>A Network Entity Title for this process (ISO only)</help>
              <valueHelp>
                <format>XX.XXXX. ... .XXX.XX</format>
                <description>Network entity title (NET)</description>
              </valueHelp>
              <constraint>
                <regex>[a-fA-F0-9]{2}(\.[a-fA-F0-9]{4}){3,9}\.[a-fA-F0-9]{2}</regex>
              </constraint>
            </properties>
          </leafNode>
          <leafNode name="purge-originator">
            <properties>
              <help>Use the RFC 6232 purge-originator</help>
              <valueless/>
            </properties>
          </leafNode>
          <node name="redistribute">
            <properties>
              <help>Redistribute information from another routing protocol</help>
            </properties>
            <children>
              <node name="ipv4">
                <properties>
                  <help>Redistribute IPv4 routes</help>
                </properties>
                <children>
                  <node name="bgp">
                    <properties>
                      <help>Border Gateway Protocol (BGP)</help>
                    </properties>
                    <children>
                      #include <include/isis-redistribute-ipv4.xml.i>
                    </children>
                  </node>
                  <node name="connected">
                    <properties>
                      <help>Redistribute connected routes into IS-IS</help>
                    </properties>
                    <children>
                      #include <include/isis-redistribute-ipv4.xml.i>
                    </children>
                  </node>
                  <node name="kernel">
                    <properties>
                      <help>Redistribute kernel routes into IS-IS</help>
                    </properties>
                    <children>
                      #include <include/isis-redistribute-ipv4.xml.i>
                    </children>
                  </node>
                  <node name="ospf">
                    <properties>
                      <help>Redistribute OSPF routes into IS-IS</help>
                    </properties>
                    <children>
                      #include <include/isis-redistribute-ipv4.xml.i>
                    </children>
                  </node>
                  <node name="rip">
                    <properties>
                      <help>Redistribute RIP routes into IS-IS</help>
                    </properties>
                    <children>
                      #include <include/isis-redistribute-ipv4.xml.i>
                    </children>
                  </node>
                  <node name="static">
                    <properties>
                      <help>Redistribute static routes into IS-IS</help>
                    </properties>
                    <children>
                      #include <include/isis-redistribute-ipv4.xml.i>
                    </children>
                  </node>
                </children>
              </node>
            </children>
          </node>
          <leafNode name="set-attached-bit">
            <properties>
              <help>Set attached bit to identify as L1/L2 router for inter-area traffic</help>
              <valueless/>
            </properties>
          </leafNode>
          <leafNode name="set-overload-bit">
            <properties>
              <help>Set overload bit to avoid any transit traffic</help>
              <valueless/>
            </properties>
          </leafNode>
          <node name="spf-delay-ietf">
            <properties>
              <help>IETF SPF delay algorithm</help>
            </properties>
            <children>
              <leafNode name="init-delay">
                <properties>
                  <help>Delay used while in QUIET state</help>
                  <valueHelp>
                    <format>&lt;0-60000&gt;</format>
                    <description>Delay used while in QUIET state (in ms)</description>
                  </valueHelp>
                  <constraint>
                    <validator name="numeric" argument="--range 0-60000"/>
                  </constraint>
                </properties>
              </leafNode>
              <leafNode name="short-delay">
                <properties>
                  <help>Delay used while in SHORT_WAIT state</help>
                  <valueHelp>
                    <format>&lt;0-60000&gt;</format>
                    <description>Delay used while in SHORT_WAIT state (in ms)</description>
                  </valueHelp>
                  <constraint>
                    <validator name="numeric" argument="--range 0-60000"/>
                  </constraint>
                </properties>
              </leafNode>
              <leafNode name="long-delay">
                <properties>
                  <help>Delay used while in LONG_WAIT</help>
                  <valueHelp>
                    <format>&lt;0-60000&gt;</format>
                    <description>Delay used while in LONG_WAIT state (in ms)</description>
                  </valueHelp>
                  <constraint>
                    <validator name="numeric" argument="--range 0-60000"/>
                  </constraint>
                </properties>
              </leafNode>
              <leafNode name="holddown">
                <properties>
                  <help>Time with no received IGP events before considering IGP stable</help>
                  <valueHelp>
                    <format>&lt;0-60000&gt;</format>
                    <description>Time with no received IGP events before considering IGP stable (in ms)</description>
                  </valueHelp>
                  <constraint>
                    <validator name="numeric" argument="--range 0-60000"/>
                  </constraint>
                </properties>
              </leafNode>
              <leafNode name="time-to-learn">
                <properties>
                  <help>Maximum duration needed to learn all the events related to a single failure</help>
                  <valueHelp>
                    <format>&lt;0-60000&gt;</format>
                    <description>Maximum duration needed to learn all the events related to a single failure (in ms)</description>
                  </valueHelp>
                  <constraint>
                    <validator name="numeric" argument="--range 0-60000"/>
                  </constraint>
                </properties>
              </leafNode>
            </children>
          </node>
          <leafNode name="spf-interval">
            <properties>
              <help>Minimum interval between SPF calculations</help>
              <valueHelp>
                <format>&lt;1-120&gt;</format>
                <description>Minimum interval between consecutive SPFs in seconds</description>
              </valueHelp>
              <constraint>
                <validator name="numeric" argument="--range 1-120"/>
              </constraint>
            </properties>
          </leafNode>
          <tagNode name="interface">
            <!-- (config-if)# ip router isis WORD (same as name of IS-IS process)
                  if any section of "interface" pesent  -->
            <properties>
              <help>Interface params</help>
              <completionHelp>
                <script>${vyos_completion_dir}/list_interfaces.py</script>
              </completionHelp>
            </properties>
            <children>
              <leafNode name="bfd">
                <properties>
                  <help>Enable BFD support</help>
                  <valueless/>
                </properties>
              </leafNode>
              <leafNode name="circuit-type">
                <properties>
                  <help>Configure circuit type for interface</help>
                  <completionHelp>
                    <list>level-1 level-1-2 level-2-only</list>
                  </completionHelp>
                  <valueHelp>
                    <format>level-1</format>
                    <description>Level-1 only adjacencies are formed</description>
                  </valueHelp>
                  <valueHelp>
                    <format>level-1-2</format>
                    <description>Level-1-2 adjacencies are formed</description>
                  </valueHelp>
                  <valueHelp>
                    <format>level-2-only</format>
                    <description>Level-2 only adjacencies are formed</description>
                  </valueHelp>
                  <constraint>
                    <regex>(level-1|level-1-2|level-2-only)</regex>
                  </constraint>
                </properties>
              </leafNode>
              <leafNode name="hello-padding">
                <properties>
                  <help>Add padding to IS-IS hello packets</help>
                  <valueless/>
                </properties>
              </leafNode>
              <leafNode name="hello-interval">
                <properties>
                  <help>Set Hello interval</help>
                  <valueHelp>
                    <format>&lt;1-600&gt;</format>
                    <description>Set Hello interval</description>
                  </valueHelp>
                  <constraint>
                    <validator name="numeric" argument="--range 1-600"/>
                  </constraint>
                </properties>
              </leafNode>
              <leafNode name="hello-multiplier">
                <properties>
                  <help>Set Hello interval</help>
                  <valueHelp>
                    <format>&lt;2-100&gt;</format>
                    <description>Set multiplier for Hello holding time</description>
                  </valueHelp>
                  <constraint>
                    <validator name="numeric" argument="--range 2-100"/>
                  </constraint>
                </properties>
              </leafNode>
              <leafNode name="metric">
                <properties>
                  <help>Set default metric for circuit</help>
                  <valueHelp>
                    <format>&lt;0-16777215&gt;</format>
                    <description>Default metric value</description>
                  </valueHelp>
                  <constraint>
                    <validator name="numeric" argument="--range 0-16777215"/>
                  </constraint>
                </properties>
              </leafNode>
              <node name="network">
                <properties>
                  <help>Set network type</help>
                </properties>
                <children>
                  <leafNode name="point-to-point">
                    <properties>
                      <help>point-to-point network type</help>
                      <valueless/>
                    </properties>
                  </leafNode>
                </children>
              </node>
              <leafNode name="passive">
                <properties>
                  <help>Configure the passive mode for interface</help>
                  <valueless/>
                </properties>
              </leafNode>
              <node name="password">
                <properties>
                  <help>Configure the authentication password for a circuit</help>
                </properties>
                <children>
                  <leafNode name="plaintext-password">
                    <properties>
                      <help>Plain-text authentication type</help>
                      <valueHelp>
                        <format>&lt;text&gt;</format>
                        <description>Circuit password</description>
                      </valueHelp>
                    </properties>
                  </leafNode>
                </children>
              </node>
              <leafNode name="priority">
                <properties>
                  <help>Set priority for Designated Router election</help>
                  <valueHelp>
                    <format>&lt;0-127&gt;</format>
                    <description>Priority value</description>
                  </valueHelp>
                  <constraint>
                    <validator name="numeric" argument="--range 0-127"/>
                  </constraint>
                </properties>
              </leafNode>
              <leafNode name="psnp-interval">
                <properties>
                  <help>Set PSNP interval in seconds</help>
                  <valueHelp>
                    <format>&lt;0-127&gt;</format>
                    <description>Priority value</description>
                  </valueHelp>
                  <constraint>
                    <validator name="numeric" argument="--range 0-127"/>
                  </constraint>
                </properties>
              </leafNode>
              <leafNode name="three-way-handshake">
                <properties>
                  <help>Enable/Disable three-way handshake</help>
                  <valueless/>
                </properties>
              </leafNode>
            </children>
          </tagNode>
        </children>
      </tagNode>
    </children>
  </node>
</interfaceDefinition>