diff --git a/interface-definitions/include/isis-redistribute-ipv4.xml.i b/interface-definitions/include/isis-redistribute-ipv4.xml.i
new file mode 100644
index 000000000..f90900da1
--- /dev/null
+++ b/interface-definitions/include/isis-redistribute-ipv4.xml.i
@@ -0,0 +1,82 @@
+<node name="level-1">
+  <properties>
+    <help>Redistribute into level-1</help>
+  </properties>
+  <children>
+    <leafNode name="metric">
+      <properties>
+        <help>Metric for redistributed routes</help>
+        <valueHelp>
+          <format>&lt;0-16777215&gt;</format>
+          <description>ISIS default metric</description>
+        </valueHelp>
+        <constraint>
+          <validator name="numeric" argument="--range 0-16777215"/>
+        </constraint>
+      </properties>
+    </leafNode>
+    <tagNode name="route-map">
+      <properties>
+        <help>Route map reference</help>
+        <completionHelp>
+          <path>policy route-map</path>
+        </completionHelp>
+      </properties>
+      <children>
+        <leafNode name="metric">
+          <properties>
+            <help>Metric for redistributed routes</help>
+            <valueHelp>
+              <format>&lt;0-16777215&gt;</format>
+              <description>ISIS default metric</description>
+            </valueHelp>
+            <constraint>
+              <validator name="numeric" argument="--range 0-16777215"/>
+            </constraint>
+          </properties>
+        </leafNode>
+      </children>
+    </tagNode>
+  </children>
+</node>
+<node name="level-2">
+  <properties>
+    <help>Redistribute into level-2</help>
+  </properties>
+  <children>
+    <leafNode name="metric">
+      <properties>
+        <help>Metric for redistributed routes</help>
+        <valueHelp>
+          <format>&lt;0-16777215&gt;</format>
+          <description>ISIS default metric</description>
+        </valueHelp>
+        <constraint>
+          <validator name="numeric" argument="--range 0-16777215"/>
+        </constraint>
+      </properties>
+    </leafNode>
+    <tagNode name="route-map">
+      <properties>
+        <help>Route map reference</help>
+        <completionHelp>
+          <path>policy route-map</path>
+        </completionHelp>
+      </properties>
+      <children>
+        <leafNode name="metric">
+          <properties>
+            <help>Metric for redistributed routes</help>
+            <valueHelp>
+              <format>&lt;0-16777215&gt;</format>
+              <description>ISIS default metric</description>
+            </valueHelp>
+            <constraint>
+              <validator name="numeric" argument="--range 0-16777215"/>
+            </constraint>
+          </properties>
+        </leafNode>
+      </children>
+    </tagNode>
+  </children>
+</node>
diff --git a/interface-definitions/protocols-isis.xml.in b/interface-definitions/protocols-isis.xml.in
new file mode 100644
index 000000000..988231108
--- /dev/null
+++ b/interface-definitions/protocols-isis.xml.in
@@ -0,0 +1,552 @@
+<?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 (ISIS)</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 ISIS</help>
+                    </properties>
+                    <children>
+                      #include <include/isis-redistribute-ipv4.xml.i>
+                    </children>
+                  </node>
+                  <node name="kernel">
+                    <properties>
+                      <help>Redistribute kernel routes into ISIS</help>
+                    </properties>
+                    <children>
+                      #include <include/isis-redistribute-ipv4.xml.i>
+                    </children>
+                  </node>
+                  <node name="ospf">
+                    <properties>
+                      <help>Redistribute OSPF routes into ISIS</help>
+                    </properties>
+                    <children>
+                      #include <include/isis-redistribute-ipv4.xml.i>
+                    </children>
+                  </node>
+                  <node name="rip">
+                    <properties>
+                      <help>Redistribute RIP routes into ISIS</help>
+                    </properties>
+                    <children>
+                      #include <include/isis-redistribute-ipv4.xml.i>
+                    </children>
+                  </node>
+                  <node name="static">
+                    <properties>
+                      <help>Redistribute static routes into ISIS</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>