From d5bd9bec6c213ff12190b03acf248f348c165c13 Mon Sep 17 00:00:00 2001
From: Christian Poessinger <christian@poessinger.com>
Date: Thu, 6 May 2021 19:41:19 +0200
Subject: ospf: xml: T3236: restructure include files and make them easier to
 recognize

---
 .../include/ospf/authentication.xml.i              |  56 ++
 .../include/ospf/distance-global.xml.i             |  14 +
 .../include/ospf/distance-per-protocol.xml.i       |  38 ++
 .../include/ospf/interface-common.xml.i            |  34 +
 interface-definitions/include/ospf/intervals.xml.i |  54 ++
 .../include/ospf/metric-type.xml.i                 |  15 +
 interface-definitions/include/ospf/metric.xml.i    |  14 +
 .../include/ospf/ospf-authentication.xml.i         |  56 --
 .../include/ospf/ospf-common-config.xml.i          | 760 ---------------------
 .../include/ospf/ospf-distance-global.xml.i        |  14 -
 .../include/ospf/ospf-distance-per-protocol.xml.i  |  38 --
 .../include/ospf/ospf-interface-common.xml.i       |  34 -
 .../include/ospf/ospf-intervals.xml.i              |  54 --
 .../include/ospf/ospf-metric-type.xml.i            |  15 -
 .../include/ospf/ospf-metric.xml.i                 |  14 -
 .../include/ospf/ospf-router-id.xml.i              |  14 -
 .../include/ospf/protocol-common-config.xml.i      | 760 +++++++++++++++++++++
 interface-definitions/include/ospf/router-id.xml.i |  14 +
 interface-definitions/protocols-ospf.xml.in        |   2 +-
 interface-definitions/protocols-ospfv3.xml.in      |  10 +-
 interface-definitions/vrf.xml.in                   |   2 +-
 21 files changed, 1006 insertions(+), 1006 deletions(-)
 create mode 100644 interface-definitions/include/ospf/authentication.xml.i
 create mode 100644 interface-definitions/include/ospf/distance-global.xml.i
 create mode 100644 interface-definitions/include/ospf/distance-per-protocol.xml.i
 create mode 100644 interface-definitions/include/ospf/interface-common.xml.i
 create mode 100644 interface-definitions/include/ospf/intervals.xml.i
 create mode 100644 interface-definitions/include/ospf/metric-type.xml.i
 create mode 100644 interface-definitions/include/ospf/metric.xml.i
 delete mode 100644 interface-definitions/include/ospf/ospf-authentication.xml.i
 delete mode 100644 interface-definitions/include/ospf/ospf-common-config.xml.i
 delete mode 100644 interface-definitions/include/ospf/ospf-distance-global.xml.i
 delete mode 100644 interface-definitions/include/ospf/ospf-distance-per-protocol.xml.i
 delete mode 100644 interface-definitions/include/ospf/ospf-interface-common.xml.i
 delete mode 100644 interface-definitions/include/ospf/ospf-intervals.xml.i
 delete mode 100644 interface-definitions/include/ospf/ospf-metric-type.xml.i
 delete mode 100644 interface-definitions/include/ospf/ospf-metric.xml.i
 delete mode 100644 interface-definitions/include/ospf/ospf-router-id.xml.i
 create mode 100644 interface-definitions/include/ospf/protocol-common-config.xml.i
 create mode 100644 interface-definitions/include/ospf/router-id.xml.i

diff --git a/interface-definitions/include/ospf/authentication.xml.i b/interface-definitions/include/ospf/authentication.xml.i
new file mode 100644
index 000000000..1e6050b97
--- /dev/null
+++ b/interface-definitions/include/ospf/authentication.xml.i
@@ -0,0 +1,56 @@
+<!-- include start from ospf/authentication.xml.i -->
+<node name="authentication">
+  <properties>
+    <help>Authentication</help>
+  </properties>
+  <children>
+    <node name="md5">
+      <properties>
+        <help>MD5 key id</help>
+      </properties>
+      <children>
+        <tagNode name="key-id">
+          <properties>
+            <help>MD5 key id</help>
+            <valueHelp>
+              <format>u32:1-255</format>
+              <description>MD5 key id</description>
+            </valueHelp>
+            <constraint>
+              <validator name="numeric" argument="--range 1-255"/>
+            </constraint>
+          </properties>
+          <children>
+            <leafNode name="md5-key">
+              <properties>
+                <help>MD5 authentication type</help>
+                <valueHelp>
+                  <format>txt</format>
+                  <description>MD5 Key (16 characters or less)</description>
+                </valueHelp>
+                <constraint>
+                  <regex>^[^[:space:]]{1,16}$</regex>
+                </constraint>
+                <constraintErrorMessage>Password must be 16 characters or less</constraintErrorMessage>
+              </properties>
+            </leafNode>
+          </children>
+        </tagNode>
+      </children>
+    </node>
+    <leafNode name="plaintext-password">
+      <properties>
+        <help>Plain text password</help>
+        <valueHelp>
+          <format>txt</format>
+          <description>Plain text password (8 characters or less)</description>
+        </valueHelp>
+        <constraint>
+          <regex>^[^[:space:]]{1,8}$</regex>
+        </constraint>
+        <constraintErrorMessage>Password must be 8 characters or less</constraintErrorMessage>
+      </properties>
+    </leafNode>
+  </children>
+</node>
+<!-- include end -->
diff --git a/interface-definitions/include/ospf/distance-global.xml.i b/interface-definitions/include/ospf/distance-global.xml.i
new file mode 100644
index 000000000..31809cb70
--- /dev/null
+++ b/interface-definitions/include/ospf/distance-global.xml.i
@@ -0,0 +1,14 @@
+<!-- include start from ospf/distance-global.xml.i -->
+<leafNode name="global">
+  <properties>
+    <help>Administrative distance</help>
+    <valueHelp>
+      <format>u32:1-255</format>
+      <description>Administrative distance</description>
+    </valueHelp>
+    <constraint>
+      <validator name="numeric" argument="--range 1-255"/>
+    </constraint>
+  </properties>
+</leafNode>
+<!-- include end -->
diff --git a/interface-definitions/include/ospf/distance-per-protocol.xml.i b/interface-definitions/include/ospf/distance-per-protocol.xml.i
new file mode 100644
index 000000000..da3f16c06
--- /dev/null
+++ b/interface-definitions/include/ospf/distance-per-protocol.xml.i
@@ -0,0 +1,38 @@
+<!-- include start from ospf/distance-per-protocol.xml.i -->
+<leafNode name="external">
+  <properties>
+    <help>Distance for external routes</help>
+    <valueHelp>
+      <format>u32:1-255</format>
+      <description>Distance for external routes</description>
+    </valueHelp>
+    <constraint>
+      <validator name="numeric" argument="--range 1-255"/>
+    </constraint>
+  </properties>
+</leafNode>
+<leafNode name="inter-area">
+  <properties>
+    <help>Distance for inter-area routes</help>
+    <valueHelp>
+      <format>u32:1-255</format>
+      <description>Distance for inter-area routes</description>
+    </valueHelp>
+    <constraint>
+      <validator name="numeric" argument="--range 1-255"/>
+    </constraint>
+  </properties>
+</leafNode>
+<leafNode name="intra-area">
+  <properties>
+    <help>Distance for intra-area routes</help>
+    <valueHelp>
+      <format>u32:1-255</format>
+      <description>Distance for intra-area routes</description>
+    </valueHelp>
+    <constraint>
+      <validator name="numeric" argument="--range 1-255"/>
+    </constraint>
+  </properties>
+</leafNode>
+<!-- include end -->
diff --git a/interface-definitions/include/ospf/interface-common.xml.i b/interface-definitions/include/ospf/interface-common.xml.i
new file mode 100644
index 000000000..4b0aef380
--- /dev/null
+++ b/interface-definitions/include/ospf/interface-common.xml.i
@@ -0,0 +1,34 @@
+<!-- include start from ospf/interface-common.xml.i -->
+#include <include/bfd.xml.i>
+<leafNode name="cost">
+  <properties>
+    <help>Interface cost</help>
+    <valueHelp>
+      <format>u32:1-65535</format>
+      <description>OSPF interface cost</description>
+    </valueHelp>
+    <constraint>
+      <validator name="numeric" argument="--range 1-65535"/>
+    </constraint>
+  </properties>
+</leafNode>
+<leafNode name="mtu-ignore">
+  <properties>
+    <help>Disable Maximum Transmission Unit (MTU) mismatch detection</help>
+    <valueless/>
+  </properties>
+</leafNode>
+<leafNode name="priority">
+  <properties>
+    <help>Router priority (default: 1)</help>
+    <valueHelp>
+      <format>u32:0-255</format>
+      <description>OSPF router priority cost</description>
+    </valueHelp>
+    <constraint>
+      <validator name="numeric" argument="--range 0-255"/>
+    </constraint>
+  </properties>
+  <defaultValue>1</defaultValue>
+</leafNode>
+<!-- include end -->
diff --git a/interface-definitions/include/ospf/intervals.xml.i b/interface-definitions/include/ospf/intervals.xml.i
new file mode 100644
index 000000000..fad1a6305
--- /dev/null
+++ b/interface-definitions/include/ospf/intervals.xml.i
@@ -0,0 +1,54 @@
+<!-- include start from ospf/intervals.xml.i -->
+<leafNode name="dead-interval">
+  <properties>
+    <help>Interval after which a neighbor is declared dead (default: 40)</help>
+    <valueHelp>
+      <format>u32:1-65535</format>
+      <description>Neighbor dead interval (seconds)</description>
+    </valueHelp>
+    <constraint>
+      <validator name="numeric" argument="--range 1-65535"/>
+    </constraint>
+  </properties>
+  <defaultValue>40</defaultValue>
+</leafNode>
+<leafNode name="hello-interval">
+  <properties>
+    <help>Interval between hello packets (default: 10)</help>
+    <valueHelp>
+      <format>u32:1-65535</format>
+      <description>Hello interval (seconds)</description>
+    </valueHelp>
+    <constraint>
+      <validator name="numeric" argument="--range 1-65535"/>
+    </constraint>
+  </properties>
+  <defaultValue>10</defaultValue>
+</leafNode>
+<leafNode name="retransmit-interval">
+  <properties>
+    <help>Interval between retransmitting lost link state advertisements (default: 5)</help>
+    <valueHelp>
+      <format>u32:1-65535</format>
+      <description>Retransmit interval (seconds)</description>
+    </valueHelp>
+    <constraint>
+      <validator name="numeric" argument="--range 1-65535"/>
+    </constraint>
+  </properties>
+  <defaultValue>5</defaultValue>
+</leafNode>
+<leafNode name="transmit-delay">
+  <properties>
+    <help>Link state transmit delay (default: 1)</help>
+    <valueHelp>
+      <format>u32:1-65535</format>
+      <description>Link state transmit delay (seconds)</description>
+    </valueHelp>
+    <constraint>
+      <validator name="numeric" argument="--range 1-65535"/>
+    </constraint>
+  </properties>
+  <defaultValue>1</defaultValue>
+</leafNode>
+<!-- include end -->
diff --git a/interface-definitions/include/ospf/metric-type.xml.i b/interface-definitions/include/ospf/metric-type.xml.i
new file mode 100644
index 000000000..83dc24909
--- /dev/null
+++ b/interface-definitions/include/ospf/metric-type.xml.i
@@ -0,0 +1,15 @@
+<!-- include start from ospf/metric-type.xml.i -->
+<leafNode name="metric-type">
+  <properties>
+    <help>OSPF metric type for default routes (default: 2)</help>
+    <valueHelp>
+      <format>u32:1-2</format>
+      <description>Metric type for default routes</description>
+    </valueHelp>
+    <constraint>
+      <validator name="numeric" argument="--range 1-2"/>
+    </constraint>
+  </properties>
+  <defaultValue>2</defaultValue>
+</leafNode>
+<!-- include end -->
diff --git a/interface-definitions/include/ospf/metric.xml.i b/interface-definitions/include/ospf/metric.xml.i
new file mode 100644
index 000000000..64b455b00
--- /dev/null
+++ b/interface-definitions/include/ospf/metric.xml.i
@@ -0,0 +1,14 @@
+<!-- include start from ospf/metric.xml.i -->
+<leafNode name="metric">
+  <properties>
+    <help>OSPF default metric</help>
+    <valueHelp>
+      <format>u32:0-16777214</format>
+      <description>Default metric</description>
+    </valueHelp>
+    <constraint>
+      <validator name="numeric" argument="--range 0-16777214"/>
+    </constraint>
+  </properties>
+</leafNode>
+<!-- include end -->
diff --git a/interface-definitions/include/ospf/ospf-authentication.xml.i b/interface-definitions/include/ospf/ospf-authentication.xml.i
deleted file mode 100644
index 322c002e4..000000000
--- a/interface-definitions/include/ospf/ospf-authentication.xml.i
+++ /dev/null
@@ -1,56 +0,0 @@
-<!-- include start from ospf/ospf-authentication.xml.i -->
-<node name="authentication">
-  <properties>
-    <help>Authentication</help>
-  </properties>
-  <children>
-    <node name="md5">
-      <properties>
-        <help>MD5 key id</help>
-      </properties>
-      <children>
-        <tagNode name="key-id">
-          <properties>
-            <help>MD5 key id</help>
-            <valueHelp>
-              <format>u32:1-255</format>
-              <description>MD5 key id</description>
-            </valueHelp>
-            <constraint>
-              <validator name="numeric" argument="--range 1-255"/>
-            </constraint>
-          </properties>
-          <children>
-            <leafNode name="md5-key">
-              <properties>
-                <help>MD5 authentication type</help>
-                <valueHelp>
-                  <format>txt</format>
-                  <description>MD5 Key (16 characters or less)</description>
-                </valueHelp>
-                <constraint>
-                  <regex>^[^[:space:]]{1,16}$</regex>
-                </constraint>
-                <constraintErrorMessage>Password must be 16 characters or less</constraintErrorMessage>
-              </properties>
-            </leafNode>
-          </children>
-        </tagNode>
-      </children>
-    </node>
-    <leafNode name="plaintext-password">
-      <properties>
-        <help>Plain text password</help>
-        <valueHelp>
-          <format>txt</format>
-          <description>Plain text password (8 characters or less)</description>
-        </valueHelp>
-        <constraint>
-          <regex>^[^[:space:]]{1,8}$</regex>
-        </constraint>
-        <constraintErrorMessage>Password must be 8 characters or less</constraintErrorMessage>
-      </properties>
-    </leafNode>
-  </children>
-</node>
-<!-- include end -->
diff --git a/interface-definitions/include/ospf/ospf-common-config.xml.i b/interface-definitions/include/ospf/ospf-common-config.xml.i
deleted file mode 100644
index ef2b66f8b..000000000
--- a/interface-definitions/include/ospf/ospf-common-config.xml.i
+++ /dev/null
@@ -1,760 +0,0 @@
-<!-- include start from ospf/ospf-common-config.xml.i -->
-<tagNode name="access-list">
-  <properties>
-    <help>Access list to filter networks in routing updates</help>
-    <completionHelp>
-      <path>policy access-list</path>
-    </completionHelp>
-    <valueHelp>
-      <format>u32</format>
-      <description>Access-list number</description>
-    </valueHelp>
-    <constraint>
-      <validator name="numeric" argument="--range 0-4294967295"/>
-    </constraint>
-  </properties>
-  <children>
-    <leafNode name="export">
-      <properties>
-        <help>Filter for outgoing routing update [REQUIRED]</help>
-        <completionHelp>
-          <list>bgp connected kernel rip static</list>
-        </completionHelp>
-        <valueHelp>
-          <format>bgp</format>
-          <description>Filter BGP routes</description>
-        </valueHelp>
-        <valueHelp>
-          <format>connected</format>
-          <description>Filter connected routes</description>
-        </valueHelp>
-        <valueHelp>
-          <format>isis</format>
-          <description>Filter IS-IS routes</description>
-        </valueHelp>
-        <valueHelp>
-          <format>kernel</format>
-          <description>Filter Kernel routes</description>
-        </valueHelp>
-        <valueHelp>
-          <format>rip</format>
-          <description>Filter RIP routes</description>
-        </valueHelp>
-        <valueHelp>
-          <format>static</format>
-          <description>Filter static routes</description>
-        </valueHelp>
-        <constraint>
-          <regex>^(bgp|connected|isis|kernel|rip|static)$</regex>
-        </constraint>
-        <constraintErrorMessage>Must be bgp, connected, kernel, rip, or static</constraintErrorMessage>
-        <multi/>
-      </properties>
-    </leafNode>
-  </children>
-</tagNode>
-<tagNode name="area">
-  <properties>
-    <help>OSPF area settings</help>
-    <valueHelp>
-      <format>u32</format>
-      <description>OSPF area number in decimal notation</description>
-    </valueHelp>
-    <valueHelp>
-      <format>ipv4</format>
-      <description>OSPF area number in dotted decimal notation</description>
-    </valueHelp>
-    <constraint>
-      <validator name="numeric" argument="--range 0-4294967295"/>
-      <validator name="ip-address"/>
-    </constraint>
-  </properties>
-  <children>
-    <node name="area-type">
-      <properties>
-        <help>Area type</help>
-      </properties>
-      <children>
-        <leafNode name="normal">
-          <properties>
-            <help>Normal OSPF area</help>
-            <valueless/>
-          </properties>
-        </leafNode>
-        <node name="nssa">
-          <properties>
-            <help>Not-So-Stubby OSPF area</help>
-          </properties>
-          <children>
-            <leafNode name="default-cost">
-              <properties>
-                <help>Summary-default cost of an NSSA area</help>
-                <valueHelp>
-                  <format>u32:0-16777215</format>
-                  <description>Summary default cost</description>
-                </valueHelp>
-                <constraint>
-                  <validator name="numeric" argument="--range 0-16777215"/>
-                </constraint>
-              </properties>
-            </leafNode>
-            <leafNode name="no-summary">
-              <properties>
-                <help>Do not inject inter-area routes into stub</help>
-                <valueless/>
-              </properties>
-            </leafNode>
-            <leafNode name="translate">
-              <properties>
-                <help>Configure NSSA-ABR (default: candidate)</help>
-                <completionHelp>
-                  <list>always candidate never</list>
-                </completionHelp>
-                <valueHelp>
-                  <format>always</format>
-                  <description>Always translate LSA types</description>
-                </valueHelp>
-                <valueHelp>
-                  <format>candidate</format>
-                  <description>Translate for election (default)</description>
-                </valueHelp>
-                <valueHelp>
-                  <format>never</format>
-                  <description>Never translate LSA types</description>
-                </valueHelp>
-                <constraint>
-                  <regex>^(always|candidate|never)$</regex>
-                </constraint>
-              </properties>
-              <defaultValue>candidate</defaultValue>
-            </leafNode>
-          </children>
-        </node>
-        <node name="stub">
-          <properties>
-            <help>Stub OSPF area</help>
-          </properties>
-          <children>
-            <leafNode name="default-cost">
-              <properties>
-                <help>Summary-default cost</help>
-                <valueHelp>
-                  <format>u32:0-16777215</format>
-                  <description>Summary default cost</description>
-                </valueHelp>
-                <constraint>
-                  <validator name="numeric" argument="--range 0-16777215"/>
-                </constraint>
-              </properties>
-            </leafNode>
-            <leafNode name="no-summary">
-              <properties>
-                <help>Do not inject inter-area routes into the stub</help>
-                <valueless/>
-              </properties>
-            </leafNode>
-          </children>
-        </node>
-      </children>
-    </node>
-    <leafNode name="authentication">
-      <properties>
-        <help>OSPF area authentication type</help>
-        <completionHelp>
-          <list>plaintext-password md5</list>
-        </completionHelp>
-        <valueHelp>
-          <format>plaintext-password</format>
-          <description>Use plain-text authentication</description>
-        </valueHelp>
-        <valueHelp>
-          <format>md5</format>
-          <description>Use MD5 authentication</description>
-        </valueHelp>
-        <constraint>
-          <regex>^(plaintext-password|md5)$</regex>
-        </constraint>
-      </properties>
-    </leafNode>
-    <leafNode name="network">
-      <properties>
-        <help>OSPF network [REQUIRED]</help>
-        <valueHelp>
-          <format>ipv4net</format>
-          <description>OSPF network [REQUIRED]</description>
-        </valueHelp>
-        <constraint>
-          <validator name="ipv4-prefix"/>
-        </constraint>
-        <multi/>
-      </properties>
-    </leafNode>
-    <tagNode name="range">
-      <properties>
-        <help>Summarize routes matching a prefix (border routers only)</help>
-        <valueHelp>
-          <format>ipv4net</format>
-          <description>Area range prefix</description>
-        </valueHelp>
-        <constraint>
-          <validator name="ipv4-prefix"/>
-        </constraint>
-      </properties>
-      <children>
-        <leafNode name="cost">
-          <properties>
-            <help>Metric for this range</help>
-            <valueHelp>
-              <format>u32:0-16777215</format>
-              <description>Metric for this range</description>
-            </valueHelp>
-            <constraint>
-              <validator name="numeric" argument="--range 0-16777215"/>
-            </constraint>
-          </properties>
-        </leafNode>
-        <leafNode name="not-advertise">
-          <properties>
-            <help>Do not advertise this range</help>
-            <valueless/>
-          </properties>
-        </leafNode>
-        <leafNode name="substitute">
-          <properties>
-            <help>Advertise area range as another prefix</help>
-            <valueHelp>
-              <format>ipv4net</format>
-              <description>Advertise area range as another prefix</description>
-            </valueHelp>
-            <constraint>
-              <validator name="ipv4-prefix"/>
-            </constraint>
-          </properties>
-        </leafNode>
-      </children>
-    </tagNode>
-    <leafNode name="shortcut">
-      <properties>
-        <help>Area shortcut mode</help>
-        <completionHelp>
-          <list>default disable enable</list>
-        </completionHelp>
-        <valueHelp>
-          <format>default</format>
-          <description>Set default</description>
-        </valueHelp>
-        <valueHelp>
-          <format>disable</format>
-          <description>Disable shortcutting mode</description>
-        </valueHelp>
-        <valueHelp>
-          <format>enable</format>
-          <description>Enable shortcutting mode</description>
-        </valueHelp>
-        <constraint>
-          <regex>^(default|disable|enable)$</regex>
-        </constraint>
-      </properties>
-    </leafNode>
-    <tagNode name="virtual-link">
-      <properties>
-        <help>Virtual link</help>
-        <valueHelp>
-          <format>ipv4</format>
-          <description>OSPF area in dotted decimal notation</description>
-        </valueHelp>
-        <constraint>
-          <validator name="numeric" argument="--range 0-4294967295"/>
-          <validator name="ip-address"/>
-        </constraint>
-      </properties>
-      <children>
-        #include <include/ospf/ospf-authentication.xml.i>
-        #include <include/ospf/ospf-intervals.xml.i>
-      </children>
-    </tagNode>
-  </children>
-</tagNode>
-<node name="auto-cost">
-  <properties>
-    <help>Calculate OSPF interface cost according to bandwidth (default: 100)</help>
-  </properties>
-  <children>
-    <leafNode name="reference-bandwidth">
-      <properties>
-        <help>Reference bandwidth method to assign OSPF cost</help>
-        <valueHelp>
-          <format>u32:1-4294967</format>
-          <description>Reference bandwidth cost in Mbits/sec</description>
-        </valueHelp>
-        <constraint>
-          <validator name="numeric" argument="--range 1-4294967"/>
-        </constraint>
-      </properties>
-      <defaultValue>100</defaultValue>
-    </leafNode>
-  </children>
-</node>
-<node name="default-information">
-  <properties>
-    <help>Default route advertisment settings</help>
-  </properties>
-  <children>
-    <node name="originate">
-      <properties>
-        <help>Distribute a default route</help>
-      </properties>
-      <children>
-        <leafNode name="always">
-          <properties>
-            <help>Always advertise a default route</help>
-            <valueless/>
-          </properties>
-        </leafNode>
-        #include <include/ospf/ospf-metric.xml.i>
-        #include <include/ospf/ospf-metric-type.xml.i>
-        #include <include/route-map.xml.i>
-      </children>
-    </node>
-  </children>
-</node>
-<leafNode name="default-metric">
-  <properties>
-    <help>Metric of redistributed routes</help>
-    <valueHelp>
-      <format>u32:0-16777214</format>
-      <description>Metric of redistributed routes</description>
-    </valueHelp>
-    <constraint>
-      <validator name="numeric" argument="--range 0-16777214"/>
-    </constraint>
-  </properties>
-</leafNode>
-<node name="distance">
-  <properties>
-    <help>Administrative distance</help>
-  </properties>
-  <children>
-    #include <include/ospf/ospf-distance-global.xml.i>
-    <node name="ospf">
-      <properties>
-        <help>OSPF administrative distance</help>
-      </properties>
-      <children>
-        #include <include/ospf/ospf-distance-per-protocol.xml.i>
-      </children>
-    </node>
-  </children>
-</node>
-<tagNode name="interface">
-  <properties>
-    <help>Interface configuration</help>
-    <completionHelp>
-      <script>${vyos_completion_dir}/list_interfaces.py</script>
-    </completionHelp>
-    <valueHelp>
-      <format>txt</format>
-      <description>Interface name</description>
-    </valueHelp>
-    <constraint>
-      <validator name="interface-name"/>
-    </constraint>
-  </properties>
-  <children>
-    #include <include/ospf/ospf-authentication.xml.i>
-    #include <include/ospf/ospf-intervals.xml.i>
-    #include <include/ospf/ospf-interface-common.xml.i>
-    <leafNode name="bandwidth">
-      <properties>
-        <help>Interface bandwidth (Mbit/s)</help>
-        <valueHelp>
-          <format>u32:1-100000</format>
-          <description>Bandwidth in Megabit/sec (for calculating OSPF cost)</description>
-        </valueHelp>
-        <constraint>
-          <validator name="numeric" argument="--range 1-100000"/>
-        </constraint>
-      </properties>
-    </leafNode>
-    <leafNode name="hello-multiplier">
-      <properties>
-        <help>Hello multiplier factor</help>
-        <valueHelp>
-          <format>u32:1-10</format>
-          <description>Number of Hellos to send each second</description>
-        </valueHelp>
-        <constraint>
-          <validator name="numeric" argument="--range 1-10"/>
-        </constraint>
-      </properties>
-    </leafNode>
-    <leafNode name="network">
-      <properties>
-        <help>Network type</help>
-        <completionHelp>
-          <list>broadcast non-broadcast point-to-multipoint point-to-point</list>
-        </completionHelp>
-        <valueHelp>
-          <format>broadcast</format>
-          <description>Broadcast network type</description>
-        </valueHelp>
-        <valueHelp>
-          <format>non-broadcast</format>
-          <description>Non-broadcast network type</description>
-        </valueHelp>
-        <valueHelp>
-          <format>point-to-multipoint</format>
-          <description>Point-to-multipoint network type</description>
-        </valueHelp>
-        <valueHelp>
-          <format>point-to-point</format>
-          <description>Point-to-point network type</description>
-        </valueHelp>
-        <constraint>
-          <regex>^(broadcast|non-broadcast|point-to-multipoint|point-to-point)$</regex>
-        </constraint>
-        <constraintErrorMessage>Must be broadcast, non-broadcast, point-to-multipoint or point-to-point</constraintErrorMessage>
-      </properties>
-    </leafNode>
-  </children>
-</tagNode>
-<node name="log-adjacency-changes">
-  <properties>
-    <help>Log adjacency state changes</help>
-  </properties>
-  <children>
-    <leafNode name="detail">
-      <properties>
-        <help>Log all state changes</help>
-        <valueless/>
-      </properties>
-    </leafNode>
-  </children>
-</node>
-<node name="max-metric">
-  <properties>
-    <help>OSPF maximum and infinite-distance metric</help>
-  </properties>
-  <children>
-    <node name="router-lsa">
-      <properties>
-        <help>Advertise own Router-LSA with infinite distance (stub router)</help>
-      </properties>
-      <children>
-        <leafNode name="administrative">
-          <properties>
-            <help>Administratively apply, for an indefinite period</help>
-            <valueless/>
-          </properties>
-        </leafNode>
-        <leafNode name="on-shutdown">
-          <properties>
-            <help>Advertise stub-router prior to full shutdown of OSPF</help>
-            <valueHelp>
-              <format>u32:5-100</format>
-              <description>Time (seconds) to advertise self as stub-router</description>
-            </valueHelp>
-            <constraint>
-              <validator name="numeric" argument="--range 5-100"/>
-            </constraint>
-          </properties>
-        </leafNode>
-        <leafNode name="on-startup">
-          <properties>
-            <help>Automatically advertise stub Router-LSA on startup of OSPF</help>
-            <valueHelp>
-              <format>u32:5-86400</format>
-              <description>Time (seconds) to advertise self as stub-router</description>
-            </valueHelp>
-            <constraint>
-              <validator name="numeric" argument="--range 5-86400"/>
-            </constraint>
-          </properties>
-        </leafNode>
-      </children>
-    </node>
-  </children>
-</node>
-<node name="mpls-te">
-  <properties>
-    <help>MultiProtocol Label Switching-Traffic Engineering (MPLS-TE) parameters</help>
-  </properties>
-  <children>
-    <leafNode name="enable">
-      <properties>
-        <help>Enable MPLS-TE functionality</help>
-        <valueless/>
-      </properties>
-    </leafNode>
-    <leafNode name="router-address">
-      <properties>
-        <help>Stable IP address of the advertising router</help>
-        <valueHelp>
-          <format>ipv4</format>
-          <description>Stable IP address of the advertising router</description>
-        </valueHelp>
-        <constraint>
-          <validator name="ipv4-address"/>
-        </constraint>
-      </properties>
-      <defaultValue>0.0.0.0</defaultValue>
-    </leafNode>
-  </children>
-</node>
-<tagNode name="neighbor">
-  <properties>
-    <help>Specify neighbor router</help>
-    <valueHelp>
-      <format>ipv4</format>
-      <description>Neighbor IP address</description>
-    </valueHelp>
-    <constraint>
-      <validator name="ipv4-address"/>
-    </constraint>
-  </properties>
-  <children>
-    <leafNode name="poll-interval">
-      <properties>
-        <help>Dead neighbor polling interval (default: 60)</help>
-        <valueHelp>
-          <format>u32:1-65535</format>
-          <description>Seconds between dead neighbor polling interval</description>
-        </valueHelp>
-        <constraint>
-          <validator name="numeric" argument="--range 1-65535"/>
-        </constraint>
-      </properties>
-      <defaultValue>60</defaultValue>
-    </leafNode>
-    <leafNode name="priority">
-      <properties>
-        <help>Neighbor priority in seconds (default: 0)</help>
-        <valueHelp>
-          <format>u32:0-255</format>
-          <description>Neighbor priority</description>
-        </valueHelp>
-        <constraint>
-          <validator name="numeric" argument="--range 0-255"/>
-        </constraint>
-      </properties>
-      <defaultValue>0</defaultValue>
-    </leafNode>
-  </children>
-</tagNode>
-<node name="parameters">
-  <properties>
-    <help>OSPF specific parameters</help>
-  </properties>
-  <children>
-    <leafNode name="abr-type">
-      <properties>
-        <help>OSPF ABR type (default: cisco)</help>
-        <completionHelp>
-          <list>cisco ibm shortcut standard</list>
-        </completionHelp>
-        <valueHelp>
-          <format>cisco</format>
-          <description>Cisco ABR type (default)</description>
-        </valueHelp>
-        <valueHelp>
-          <format>ibm</format>
-          <description>IBM ABR type</description>
-        </valueHelp>
-        <valueHelp>
-          <format>shortcut</format>
-          <description>Shortcut ABR type</description>
-        </valueHelp>
-        <valueHelp>
-          <format>standard</format>
-          <description>Standard ABR type</description>
-        </valueHelp>
-        <constraint>
-          <regex>^(cisco|ibm|shortcut|standard)$</regex>
-        </constraint>
-      </properties>
-      <defaultValue>cisco</defaultValue>
-    </leafNode>
-    <leafNode name="opaque-lsa">
-      <properties>
-        <help>Enable the Opaque-LSA capability (rfc2370)</help>
-        <valueless/>
-      </properties>
-    </leafNode>
-    <leafNode name="rfc1583-compatibility">
-      <properties>
-        <help>Enable RFC1583 criteria for handling AS external routes</help>
-        <valueless/>
-      </properties>
-    </leafNode>
-    #include <include/ospf/ospf-router-id.xml.i>
-  </children>
-</node>
-#include <include/routing-passive-interface-xml.i>
-<leafNode name="passive-interface-exclude">
-  <properties>
-    <help>Interface to exclude when using 'passive-interface default'</help>
-    <completionHelp>
-      <script>${vyos_completion_dir}/list_interfaces.py</script>
-    </completionHelp>
-    <valueHelp>
-      <format>txt</format>
-      <description>Interface to exclude when suppressing routing updates</description>
-    </valueHelp>
-    <valueHelp>
-      <format>vlinkN</format>
-      <description>Virtual-link interface to exclude when suppressing routing updates</description>
-    </valueHelp>
-    <constraint>
-      <validator name="interface-name"/>
-      <regex>^(vlink[0-9]+)$</regex>
-    </constraint>
-    <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/ospf/ospf-metric.xml.i>
-        #include <include/ospf/ospf-metric-type.xml.i>
-        #include <include/route-map.xml.i>
-      </children>
-    </node>
-    <node name="connected">
-      <properties>
-        <help>Redistribute connected routes</help>
-      </properties>
-      <children>
-        #include <include/ospf/ospf-metric.xml.i>
-        #include <include/ospf/ospf-metric-type.xml.i>
-        #include <include/route-map.xml.i>
-      </children>
-    </node>
-    <node name="isis">
-      <properties>
-        <help>Redistribute IS-IS routes</help>
-      </properties>
-      <children>
-        #include <include/ospf/ospf-metric.xml.i>
-        #include <include/ospf/ospf-metric-type.xml.i>
-        #include <include/route-map.xml.i>
-      </children>
-    </node>
-    <node name="kernel">
-      <properties>
-        <help>Redistribute kernel routes</help>
-      </properties>
-      <children>
-        #include <include/ospf/ospf-metric.xml.i>
-        #include <include/ospf/ospf-metric-type.xml.i>
-        #include <include/route-map.xml.i>
-      </children>
-    </node>
-    <node name="rip">
-      <properties>
-        <help>Redistribute RIP routes</help>
-      </properties>
-      <children>
-        #include <include/ospf/ospf-metric.xml.i>
-        #include <include/ospf/ospf-metric-type.xml.i>
-        #include <include/route-map.xml.i>
-      </children>
-    </node>
-    <node name="static">
-      <properties>
-        <help>Redistribute static routes</help>
-      </properties>
-      <children>
-        #include <include/ospf/ospf-metric.xml.i>
-        #include <include/ospf/ospf-metric-type.xml.i>
-        #include <include/route-map.xml.i>
-      </children>
-    </node>
-  </children>
-</node>
-<node name="refresh">
-  <properties>
-    <help>Adjust refresh parameters</help>
-  </properties>
-  <children>
-    <leafNode name="timers">
-      <properties>
-        <help>Refresh timer</help>
-        <valueHelp>
-          <format>u32:10-1800</format>
-          <description>Timer value in seconds</description>
-        </valueHelp>
-        <constraint>
-          <validator name="numeric" argument="--range 10-1800"/>
-        </constraint>
-      </properties>
-    </leafNode>
-  </children>
-</node>
-<node name="timers">
-  <properties>
-    <help>Adjust routing timers</help>
-  </properties>
-  <children>
-    <node name="throttle">
-      <properties>
-        <help>Throttling adaptive timers</help>
-      </properties>
-      <children>
-        <node name="spf">
-          <properties>
-            <help>OSPF SPF timers</help>
-          </properties>
-          <children>
-            <leafNode name="delay">
-              <properties>
-                <help>Delay from the first change received to SPF calculation (default: 200)</help>
-                <valueHelp>
-                  <format>u32:0-600000</format>
-                  <description>Delay in milliseconds</description>
-                </valueHelp>
-                <constraint>
-                  <validator name="numeric" argument="--range 0-600000"/>
-                </constraint>
-              </properties>
-              <defaultValue>200</defaultValue>
-            </leafNode>
-            <leafNode name="initial-holdtime">
-              <properties>
-                <help>Initial hold time between consecutive SPF calculations (default: 1000)</help>
-                <valueHelp>
-                  <format>u32:0-600000</format>
-                  <description>Initial hold time in milliseconds</description>
-                </valueHelp>
-                <constraint>
-                  <validator name="numeric" argument="--range 0-600000"/>
-                </constraint>
-              </properties>
-              <defaultValue>1000</defaultValue>
-            </leafNode>
-            <leafNode name="max-holdtime">
-              <properties>
-                <help>Maximum hold time (default: 10000)</help>
-                <valueHelp>
-                  <format>u32:0-600000</format>
-                  <description>Max hold time in milliseconds</description>
-                </valueHelp>
-                <constraint>
-                  <validator name="numeric" argument="--range 0-600000"/>
-                </constraint>
-              </properties>
-              <defaultValue>10000</defaultValue>
-            </leafNode>
-          </children>
-        </node>
-      </children>
-    </node>
-  </children>
-</node>
-<!-- include end -->
diff --git a/interface-definitions/include/ospf/ospf-distance-global.xml.i b/interface-definitions/include/ospf/ospf-distance-global.xml.i
deleted file mode 100644
index 08cd76cba..000000000
--- a/interface-definitions/include/ospf/ospf-distance-global.xml.i
+++ /dev/null
@@ -1,14 +0,0 @@
-<!-- include start from ospf/ospf-distance-global.xml.i -->
-<leafNode name="global">
-  <properties>
-    <help>Administrative distance</help>
-    <valueHelp>
-      <format>u32:1-255</format>
-      <description>Administrative distance</description>
-    </valueHelp>
-    <constraint>
-      <validator name="numeric" argument="--range 1-255"/>
-    </constraint>
-  </properties>
-</leafNode>
-<!-- include end -->
diff --git a/interface-definitions/include/ospf/ospf-distance-per-protocol.xml.i b/interface-definitions/include/ospf/ospf-distance-per-protocol.xml.i
deleted file mode 100644
index d2c4b8b52..000000000
--- a/interface-definitions/include/ospf/ospf-distance-per-protocol.xml.i
+++ /dev/null
@@ -1,38 +0,0 @@
-<!-- include start from ospf/ospf-distance-per-protocol.xml.i -->
-<leafNode name="external">
-  <properties>
-    <help>Distance for external routes</help>
-    <valueHelp>
-      <format>u32:1-255</format>
-      <description>Distance for external routes</description>
-    </valueHelp>
-    <constraint>
-      <validator name="numeric" argument="--range 1-255"/>
-    </constraint>
-  </properties>
-</leafNode>
-<leafNode name="inter-area">
-  <properties>
-    <help>Distance for inter-area routes</help>
-    <valueHelp>
-      <format>u32:1-255</format>
-      <description>Distance for inter-area routes</description>
-    </valueHelp>
-    <constraint>
-      <validator name="numeric" argument="--range 1-255"/>
-    </constraint>
-  </properties>
-</leafNode>
-<leafNode name="intra-area">
-  <properties>
-    <help>Distance for intra-area routes</help>
-    <valueHelp>
-      <format>u32:1-255</format>
-      <description>Distance for intra-area routes</description>
-    </valueHelp>
-    <constraint>
-      <validator name="numeric" argument="--range 1-255"/>
-    </constraint>
-  </properties>
-</leafNode>
-<!-- include end -->
diff --git a/interface-definitions/include/ospf/ospf-interface-common.xml.i b/interface-definitions/include/ospf/ospf-interface-common.xml.i
deleted file mode 100644
index 39e90482c..000000000
--- a/interface-definitions/include/ospf/ospf-interface-common.xml.i
+++ /dev/null
@@ -1,34 +0,0 @@
-<!-- include start from ospf/ospf-interface-common.xml.i -->
-#include <include/bfd.xml.i>
-<leafNode name="cost">
-  <properties>
-    <help>Interface cost</help>
-    <valueHelp>
-      <format>u32:1-65535</format>
-      <description>OSPF interface cost</description>
-    </valueHelp>
-    <constraint>
-      <validator name="numeric" argument="--range 1-65535"/>
-    </constraint>
-  </properties>
-</leafNode>
-<leafNode name="mtu-ignore">
-  <properties>
-    <help>Disable Maximum Transmission Unit (MTU) mismatch detection</help>
-    <valueless/>
-  </properties>
-</leafNode>
-<leafNode name="priority">
-  <properties>
-    <help>Router priority (default: 1)</help>
-    <valueHelp>
-      <format>u32:0-255</format>
-      <description>OSPF router priority cost</description>
-    </valueHelp>
-    <constraint>
-      <validator name="numeric" argument="--range 0-255"/>
-    </constraint>
-  </properties>
-  <defaultValue>1</defaultValue>
-</leafNode>
-<!-- include end -->
diff --git a/interface-definitions/include/ospf/ospf-intervals.xml.i b/interface-definitions/include/ospf/ospf-intervals.xml.i
deleted file mode 100644
index fe220eceb..000000000
--- a/interface-definitions/include/ospf/ospf-intervals.xml.i
+++ /dev/null
@@ -1,54 +0,0 @@
-<!-- include start from ospf/ospf-intervals.xml.i -->
-<leafNode name="dead-interval">
-  <properties>
-    <help>Interval after which a neighbor is declared dead (default: 40)</help>
-    <valueHelp>
-      <format>u32:1-65535</format>
-      <description>Neighbor dead interval (seconds)</description>
-    </valueHelp>
-    <constraint>
-      <validator name="numeric" argument="--range 1-65535"/>
-    </constraint>
-  </properties>
-  <defaultValue>40</defaultValue>
-</leafNode>
-<leafNode name="hello-interval">
-  <properties>
-    <help>Interval between hello packets (default: 10)</help>
-    <valueHelp>
-      <format>u32:1-65535</format>
-      <description>Hello interval (seconds)</description>
-    </valueHelp>
-    <constraint>
-      <validator name="numeric" argument="--range 1-65535"/>
-    </constraint>
-  </properties>
-  <defaultValue>10</defaultValue>
-</leafNode>
-<leafNode name="retransmit-interval">
-  <properties>
-    <help>Interval between retransmitting lost link state advertisements (default: 5)</help>
-    <valueHelp>
-      <format>u32:1-65535</format>
-      <description>Retransmit interval (seconds)</description>
-    </valueHelp>
-    <constraint>
-      <validator name="numeric" argument="--range 1-65535"/>
-    </constraint>
-  </properties>
-  <defaultValue>5</defaultValue>
-</leafNode>
-<leafNode name="transmit-delay">
-  <properties>
-    <help>Link state transmit delay (default: 1)</help>
-    <valueHelp>
-      <format>u32:1-65535</format>
-      <description>Link state transmit delay (seconds)</description>
-    </valueHelp>
-    <constraint>
-      <validator name="numeric" argument="--range 1-65535"/>
-    </constraint>
-  </properties>
-  <defaultValue>1</defaultValue>
-</leafNode>
-<!-- include end -->
diff --git a/interface-definitions/include/ospf/ospf-metric-type.xml.i b/interface-definitions/include/ospf/ospf-metric-type.xml.i
deleted file mode 100644
index 1e982c4bc..000000000
--- a/interface-definitions/include/ospf/ospf-metric-type.xml.i
+++ /dev/null
@@ -1,15 +0,0 @@
-<!-- include start from ospf/ospf-metric-type.xml.i -->
-<leafNode name="metric-type">
-  <properties>
-    <help>OSPF metric type for default routes (default: 2)</help>
-    <valueHelp>
-      <format>u32:1-2</format>
-      <description>Metric type for default routes</description>
-    </valueHelp>
-    <constraint>
-      <validator name="numeric" argument="--range 1-2"/>
-    </constraint>
-  </properties>
-  <defaultValue>2</defaultValue>
-</leafNode>
-<!-- include end -->
diff --git a/interface-definitions/include/ospf/ospf-metric.xml.i b/interface-definitions/include/ospf/ospf-metric.xml.i
deleted file mode 100644
index 125aedea7..000000000
--- a/interface-definitions/include/ospf/ospf-metric.xml.i
+++ /dev/null
@@ -1,14 +0,0 @@
-<!-- include start from ospf/ospf-metric.xml.i -->
-<leafNode name="metric">
-  <properties>
-    <help>OSPF default metric</help>
-    <valueHelp>
-      <format>u32:0-16777214</format>
-      <description>Default metric</description>
-    </valueHelp>
-    <constraint>
-      <validator name="numeric" argument="--range 0-16777214"/>
-    </constraint>
-  </properties>
-</leafNode>
-<!-- include end -->
diff --git a/interface-definitions/include/ospf/ospf-router-id.xml.i b/interface-definitions/include/ospf/ospf-router-id.xml.i
deleted file mode 100644
index 5dbb52a36..000000000
--- a/interface-definitions/include/ospf/ospf-router-id.xml.i
+++ /dev/null
@@ -1,14 +0,0 @@
-<!-- include start from ospf/ospf-router-id.xml.i -->
-<leafNode name="router-id">
-  <properties>
-    <help>Override the default router identifier</help>
-    <valueHelp>
-      <format>ipv4</format>
-      <description>Override the default router identifier</description>
-    </valueHelp>
-    <constraint>
-      <validator name="ipv4-address"/>
-    </constraint>
-  </properties>
-</leafNode>
-<!-- include end -->
diff --git a/interface-definitions/include/ospf/protocol-common-config.xml.i b/interface-definitions/include/ospf/protocol-common-config.xml.i
new file mode 100644
index 000000000..6d7fe9d70
--- /dev/null
+++ b/interface-definitions/include/ospf/protocol-common-config.xml.i
@@ -0,0 +1,760 @@
+<!-- include start from ospf/protocol-common-config.xml.i -->
+<tagNode name="access-list">
+  <properties>
+    <help>Access list to filter networks in routing updates</help>
+    <completionHelp>
+      <path>policy access-list</path>
+    </completionHelp>
+    <valueHelp>
+      <format>u32</format>
+      <description>Access-list number</description>
+    </valueHelp>
+    <constraint>
+      <validator name="numeric" argument="--range 0-4294967295"/>
+    </constraint>
+  </properties>
+  <children>
+    <leafNode name="export">
+      <properties>
+        <help>Filter for outgoing routing update [REQUIRED]</help>
+        <completionHelp>
+          <list>bgp connected kernel rip static</list>
+        </completionHelp>
+        <valueHelp>
+          <format>bgp</format>
+          <description>Filter BGP routes</description>
+        </valueHelp>
+        <valueHelp>
+          <format>connected</format>
+          <description>Filter connected routes</description>
+        </valueHelp>
+        <valueHelp>
+          <format>isis</format>
+          <description>Filter IS-IS routes</description>
+        </valueHelp>
+        <valueHelp>
+          <format>kernel</format>
+          <description>Filter Kernel routes</description>
+        </valueHelp>
+        <valueHelp>
+          <format>rip</format>
+          <description>Filter RIP routes</description>
+        </valueHelp>
+        <valueHelp>
+          <format>static</format>
+          <description>Filter static routes</description>
+        </valueHelp>
+        <constraint>
+          <regex>^(bgp|connected|isis|kernel|rip|static)$</regex>
+        </constraint>
+        <constraintErrorMessage>Must be bgp, connected, kernel, rip, or static</constraintErrorMessage>
+        <multi/>
+      </properties>
+    </leafNode>
+  </children>
+</tagNode>
+<tagNode name="area">
+  <properties>
+    <help>OSPF area settings</help>
+    <valueHelp>
+      <format>u32</format>
+      <description>OSPF area number in decimal notation</description>
+    </valueHelp>
+    <valueHelp>
+      <format>ipv4</format>
+      <description>OSPF area number in dotted decimal notation</description>
+    </valueHelp>
+    <constraint>
+      <validator name="numeric" argument="--range 0-4294967295"/>
+      <validator name="ip-address"/>
+    </constraint>
+  </properties>
+  <children>
+    <node name="area-type">
+      <properties>
+        <help>Area type</help>
+      </properties>
+      <children>
+        <leafNode name="normal">
+          <properties>
+            <help>Normal OSPF area</help>
+            <valueless/>
+          </properties>
+        </leafNode>
+        <node name="nssa">
+          <properties>
+            <help>Not-So-Stubby OSPF area</help>
+          </properties>
+          <children>
+            <leafNode name="default-cost">
+              <properties>
+                <help>Summary-default cost of an NSSA area</help>
+                <valueHelp>
+                  <format>u32:0-16777215</format>
+                  <description>Summary default cost</description>
+                </valueHelp>
+                <constraint>
+                  <validator name="numeric" argument="--range 0-16777215"/>
+                </constraint>
+              </properties>
+            </leafNode>
+            <leafNode name="no-summary">
+              <properties>
+                <help>Do not inject inter-area routes into stub</help>
+                <valueless/>
+              </properties>
+            </leafNode>
+            <leafNode name="translate">
+              <properties>
+                <help>Configure NSSA-ABR (default: candidate)</help>
+                <completionHelp>
+                  <list>always candidate never</list>
+                </completionHelp>
+                <valueHelp>
+                  <format>always</format>
+                  <description>Always translate LSA types</description>
+                </valueHelp>
+                <valueHelp>
+                  <format>candidate</format>
+                  <description>Translate for election (default)</description>
+                </valueHelp>
+                <valueHelp>
+                  <format>never</format>
+                  <description>Never translate LSA types</description>
+                </valueHelp>
+                <constraint>
+                  <regex>^(always|candidate|never)$</regex>
+                </constraint>
+              </properties>
+              <defaultValue>candidate</defaultValue>
+            </leafNode>
+          </children>
+        </node>
+        <node name="stub">
+          <properties>
+            <help>Stub OSPF area</help>
+          </properties>
+          <children>
+            <leafNode name="default-cost">
+              <properties>
+                <help>Summary-default cost</help>
+                <valueHelp>
+                  <format>u32:0-16777215</format>
+                  <description>Summary default cost</description>
+                </valueHelp>
+                <constraint>
+                  <validator name="numeric" argument="--range 0-16777215"/>
+                </constraint>
+              </properties>
+            </leafNode>
+            <leafNode name="no-summary">
+              <properties>
+                <help>Do not inject inter-area routes into the stub</help>
+                <valueless/>
+              </properties>
+            </leafNode>
+          </children>
+        </node>
+      </children>
+    </node>
+    <leafNode name="authentication">
+      <properties>
+        <help>OSPF area authentication type</help>
+        <completionHelp>
+          <list>plaintext-password md5</list>
+        </completionHelp>
+        <valueHelp>
+          <format>plaintext-password</format>
+          <description>Use plain-text authentication</description>
+        </valueHelp>
+        <valueHelp>
+          <format>md5</format>
+          <description>Use MD5 authentication</description>
+        </valueHelp>
+        <constraint>
+          <regex>^(plaintext-password|md5)$</regex>
+        </constraint>
+      </properties>
+    </leafNode>
+    <leafNode name="network">
+      <properties>
+        <help>OSPF network [REQUIRED]</help>
+        <valueHelp>
+          <format>ipv4net</format>
+          <description>OSPF network [REQUIRED]</description>
+        </valueHelp>
+        <constraint>
+          <validator name="ipv4-prefix"/>
+        </constraint>
+        <multi/>
+      </properties>
+    </leafNode>
+    <tagNode name="range">
+      <properties>
+        <help>Summarize routes matching a prefix (border routers only)</help>
+        <valueHelp>
+          <format>ipv4net</format>
+          <description>Area range prefix</description>
+        </valueHelp>
+        <constraint>
+          <validator name="ipv4-prefix"/>
+        </constraint>
+      </properties>
+      <children>
+        <leafNode name="cost">
+          <properties>
+            <help>Metric for this range</help>
+            <valueHelp>
+              <format>u32:0-16777215</format>
+              <description>Metric for this range</description>
+            </valueHelp>
+            <constraint>
+              <validator name="numeric" argument="--range 0-16777215"/>
+            </constraint>
+          </properties>
+        </leafNode>
+        <leafNode name="not-advertise">
+          <properties>
+            <help>Do not advertise this range</help>
+            <valueless/>
+          </properties>
+        </leafNode>
+        <leafNode name="substitute">
+          <properties>
+            <help>Advertise area range as another prefix</help>
+            <valueHelp>
+              <format>ipv4net</format>
+              <description>Advertise area range as another prefix</description>
+            </valueHelp>
+            <constraint>
+              <validator name="ipv4-prefix"/>
+            </constraint>
+          </properties>
+        </leafNode>
+      </children>
+    </tagNode>
+    <leafNode name="shortcut">
+      <properties>
+        <help>Area shortcut mode</help>
+        <completionHelp>
+          <list>default disable enable</list>
+        </completionHelp>
+        <valueHelp>
+          <format>default</format>
+          <description>Set default</description>
+        </valueHelp>
+        <valueHelp>
+          <format>disable</format>
+          <description>Disable shortcutting mode</description>
+        </valueHelp>
+        <valueHelp>
+          <format>enable</format>
+          <description>Enable shortcutting mode</description>
+        </valueHelp>
+        <constraint>
+          <regex>^(default|disable|enable)$</regex>
+        </constraint>
+      </properties>
+    </leafNode>
+    <tagNode name="virtual-link">
+      <properties>
+        <help>Virtual link</help>
+        <valueHelp>
+          <format>ipv4</format>
+          <description>OSPF area in dotted decimal notation</description>
+        </valueHelp>
+        <constraint>
+          <validator name="numeric" argument="--range 0-4294967295"/>
+          <validator name="ip-address"/>
+        </constraint>
+      </properties>
+      <children>
+        #include <include/ospf/authentication.xml.i>
+        #include <include/ospf/intervals.xml.i>
+      </children>
+    </tagNode>
+  </children>
+</tagNode>
+<node name="auto-cost">
+  <properties>
+    <help>Calculate OSPF interface cost according to bandwidth (default: 100)</help>
+  </properties>
+  <children>
+    <leafNode name="reference-bandwidth">
+      <properties>
+        <help>Reference bandwidth method to assign OSPF cost</help>
+        <valueHelp>
+          <format>u32:1-4294967</format>
+          <description>Reference bandwidth cost in Mbits/sec</description>
+        </valueHelp>
+        <constraint>
+          <validator name="numeric" argument="--range 1-4294967"/>
+        </constraint>
+      </properties>
+      <defaultValue>100</defaultValue>
+    </leafNode>
+  </children>
+</node>
+<node name="default-information">
+  <properties>
+    <help>Default route advertisment settings</help>
+  </properties>
+  <children>
+    <node name="originate">
+      <properties>
+        <help>Distribute a default route</help>
+      </properties>
+      <children>
+        <leafNode name="always">
+          <properties>
+            <help>Always advertise a default route</help>
+            <valueless/>
+          </properties>
+        </leafNode>
+        #include <include/ospf/metric.xml.i>
+        #include <include/ospf/metric-type.xml.i>
+        #include <include/route-map.xml.i>
+      </children>
+    </node>
+  </children>
+</node>
+<leafNode name="default-metric">
+  <properties>
+    <help>Metric of redistributed routes</help>
+    <valueHelp>
+      <format>u32:0-16777214</format>
+      <description>Metric of redistributed routes</description>
+    </valueHelp>
+    <constraint>
+      <validator name="numeric" argument="--range 0-16777214"/>
+    </constraint>
+  </properties>
+</leafNode>
+<node name="distance">
+  <properties>
+    <help>Administrative distance</help>
+  </properties>
+  <children>
+    #include <include/ospf/distance-global.xml.i>
+    <node name="ospf">
+      <properties>
+        <help>OSPF administrative distance</help>
+      </properties>
+      <children>
+        #include <include/ospf/distance-per-protocol.xml.i>
+      </children>
+    </node>
+  </children>
+</node>
+<tagNode name="interface">
+  <properties>
+    <help>Interface configuration</help>
+    <completionHelp>
+      <script>${vyos_completion_dir}/list_interfaces.py</script>
+    </completionHelp>
+    <valueHelp>
+      <format>txt</format>
+      <description>Interface name</description>
+    </valueHelp>
+    <constraint>
+      <validator name="interface-name"/>
+    </constraint>
+  </properties>
+  <children>
+    #include <include/ospf/authentication.xml.i>
+    #include <include/ospf/intervals.xml.i>
+    #include <include/ospf/interface-common.xml.i>
+    <leafNode name="bandwidth">
+      <properties>
+        <help>Interface bandwidth (Mbit/s)</help>
+        <valueHelp>
+          <format>u32:1-100000</format>
+          <description>Bandwidth in Megabit/sec (for calculating OSPF cost)</description>
+        </valueHelp>
+        <constraint>
+          <validator name="numeric" argument="--range 1-100000"/>
+        </constraint>
+      </properties>
+    </leafNode>
+    <leafNode name="hello-multiplier">
+      <properties>
+        <help>Hello multiplier factor</help>
+        <valueHelp>
+          <format>u32:1-10</format>
+          <description>Number of Hellos to send each second</description>
+        </valueHelp>
+        <constraint>
+          <validator name="numeric" argument="--range 1-10"/>
+        </constraint>
+      </properties>
+    </leafNode>
+    <leafNode name="network">
+      <properties>
+        <help>Network type</help>
+        <completionHelp>
+          <list>broadcast non-broadcast point-to-multipoint point-to-point</list>
+        </completionHelp>
+        <valueHelp>
+          <format>broadcast</format>
+          <description>Broadcast network type</description>
+        </valueHelp>
+        <valueHelp>
+          <format>non-broadcast</format>
+          <description>Non-broadcast network type</description>
+        </valueHelp>
+        <valueHelp>
+          <format>point-to-multipoint</format>
+          <description>Point-to-multipoint network type</description>
+        </valueHelp>
+        <valueHelp>
+          <format>point-to-point</format>
+          <description>Point-to-point network type</description>
+        </valueHelp>
+        <constraint>
+          <regex>^(broadcast|non-broadcast|point-to-multipoint|point-to-point)$</regex>
+        </constraint>
+        <constraintErrorMessage>Must be broadcast, non-broadcast, point-to-multipoint or point-to-point</constraintErrorMessage>
+      </properties>
+    </leafNode>
+  </children>
+</tagNode>
+<node name="log-adjacency-changes">
+  <properties>
+    <help>Log adjacency state changes</help>
+  </properties>
+  <children>
+    <leafNode name="detail">
+      <properties>
+        <help>Log all state changes</help>
+        <valueless/>
+      </properties>
+    </leafNode>
+  </children>
+</node>
+<node name="max-metric">
+  <properties>
+    <help>OSPF maximum and infinite-distance metric</help>
+  </properties>
+  <children>
+    <node name="router-lsa">
+      <properties>
+        <help>Advertise own Router-LSA with infinite distance (stub router)</help>
+      </properties>
+      <children>
+        <leafNode name="administrative">
+          <properties>
+            <help>Administratively apply, for an indefinite period</help>
+            <valueless/>
+          </properties>
+        </leafNode>
+        <leafNode name="on-shutdown">
+          <properties>
+            <help>Advertise stub-router prior to full shutdown of OSPF</help>
+            <valueHelp>
+              <format>u32:5-100</format>
+              <description>Time (seconds) to advertise self as stub-router</description>
+            </valueHelp>
+            <constraint>
+              <validator name="numeric" argument="--range 5-100"/>
+            </constraint>
+          </properties>
+        </leafNode>
+        <leafNode name="on-startup">
+          <properties>
+            <help>Automatically advertise stub Router-LSA on startup of OSPF</help>
+            <valueHelp>
+              <format>u32:5-86400</format>
+              <description>Time (seconds) to advertise self as stub-router</description>
+            </valueHelp>
+            <constraint>
+              <validator name="numeric" argument="--range 5-86400"/>
+            </constraint>
+          </properties>
+        </leafNode>
+      </children>
+    </node>
+  </children>
+</node>
+<node name="mpls-te">
+  <properties>
+    <help>MultiProtocol Label Switching-Traffic Engineering (MPLS-TE) parameters</help>
+  </properties>
+  <children>
+    <leafNode name="enable">
+      <properties>
+        <help>Enable MPLS-TE functionality</help>
+        <valueless/>
+      </properties>
+    </leafNode>
+    <leafNode name="router-address">
+      <properties>
+        <help>Stable IP address of the advertising router</help>
+        <valueHelp>
+          <format>ipv4</format>
+          <description>Stable IP address of the advertising router</description>
+        </valueHelp>
+        <constraint>
+          <validator name="ipv4-address"/>
+        </constraint>
+      </properties>
+      <defaultValue>0.0.0.0</defaultValue>
+    </leafNode>
+  </children>
+</node>
+<tagNode name="neighbor">
+  <properties>
+    <help>Specify neighbor router</help>
+    <valueHelp>
+      <format>ipv4</format>
+      <description>Neighbor IP address</description>
+    </valueHelp>
+    <constraint>
+      <validator name="ipv4-address"/>
+    </constraint>
+  </properties>
+  <children>
+    <leafNode name="poll-interval">
+      <properties>
+        <help>Dead neighbor polling interval (default: 60)</help>
+        <valueHelp>
+          <format>u32:1-65535</format>
+          <description>Seconds between dead neighbor polling interval</description>
+        </valueHelp>
+        <constraint>
+          <validator name="numeric" argument="--range 1-65535"/>
+        </constraint>
+      </properties>
+      <defaultValue>60</defaultValue>
+    </leafNode>
+    <leafNode name="priority">
+      <properties>
+        <help>Neighbor priority in seconds (default: 0)</help>
+        <valueHelp>
+          <format>u32:0-255</format>
+          <description>Neighbor priority</description>
+        </valueHelp>
+        <constraint>
+          <validator name="numeric" argument="--range 0-255"/>
+        </constraint>
+      </properties>
+      <defaultValue>0</defaultValue>
+    </leafNode>
+  </children>
+</tagNode>
+<node name="parameters">
+  <properties>
+    <help>OSPF specific parameters</help>
+  </properties>
+  <children>
+    <leafNode name="abr-type">
+      <properties>
+        <help>OSPF ABR type (default: cisco)</help>
+        <completionHelp>
+          <list>cisco ibm shortcut standard</list>
+        </completionHelp>
+        <valueHelp>
+          <format>cisco</format>
+          <description>Cisco ABR type (default)</description>
+        </valueHelp>
+        <valueHelp>
+          <format>ibm</format>
+          <description>IBM ABR type</description>
+        </valueHelp>
+        <valueHelp>
+          <format>shortcut</format>
+          <description>Shortcut ABR type</description>
+        </valueHelp>
+        <valueHelp>
+          <format>standard</format>
+          <description>Standard ABR type</description>
+        </valueHelp>
+        <constraint>
+          <regex>^(cisco|ibm|shortcut|standard)$</regex>
+        </constraint>
+      </properties>
+      <defaultValue>cisco</defaultValue>
+    </leafNode>
+    <leafNode name="opaque-lsa">
+      <properties>
+        <help>Enable the Opaque-LSA capability (rfc2370)</help>
+        <valueless/>
+      </properties>
+    </leafNode>
+    <leafNode name="rfc1583-compatibility">
+      <properties>
+        <help>Enable RFC1583 criteria for handling AS external routes</help>
+        <valueless/>
+      </properties>
+    </leafNode>
+    #include <include/ospf/router-id.xml.i>
+  </children>
+</node>
+#include <include/routing-passive-interface-xml.i>
+<leafNode name="passive-interface-exclude">
+  <properties>
+    <help>Interface to exclude when using 'passive-interface default'</help>
+    <completionHelp>
+      <script>${vyos_completion_dir}/list_interfaces.py</script>
+    </completionHelp>
+    <valueHelp>
+      <format>txt</format>
+      <description>Interface to exclude when suppressing routing updates</description>
+    </valueHelp>
+    <valueHelp>
+      <format>vlinkN</format>
+      <description>Virtual-link interface to exclude when suppressing routing updates</description>
+    </valueHelp>
+    <constraint>
+      <validator name="interface-name"/>
+      <regex>^(vlink[0-9]+)$</regex>
+    </constraint>
+    <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/ospf/metric.xml.i>
+        #include <include/ospf/metric-type.xml.i>
+        #include <include/route-map.xml.i>
+      </children>
+    </node>
+    <node name="connected">
+      <properties>
+        <help>Redistribute connected routes</help>
+      </properties>
+      <children>
+        #include <include/ospf/metric.xml.i>
+        #include <include/ospf/metric-type.xml.i>
+        #include <include/route-map.xml.i>
+      </children>
+    </node>
+    <node name="isis">
+      <properties>
+        <help>Redistribute IS-IS routes</help>
+      </properties>
+      <children>
+        #include <include/ospf/metric.xml.i>
+        #include <include/ospf/metric-type.xml.i>
+        #include <include/route-map.xml.i>
+      </children>
+    </node>
+    <node name="kernel">
+      <properties>
+        <help>Redistribute kernel routes</help>
+      </properties>
+      <children>
+        #include <include/ospf/metric.xml.i>
+        #include <include/ospf/metric-type.xml.i>
+        #include <include/route-map.xml.i>
+      </children>
+    </node>
+    <node name="rip">
+      <properties>
+        <help>Redistribute RIP routes</help>
+      </properties>
+      <children>
+        #include <include/ospf/metric.xml.i>
+        #include <include/ospf/metric-type.xml.i>
+        #include <include/route-map.xml.i>
+      </children>
+    </node>
+    <node name="static">
+      <properties>
+        <help>Redistribute static routes</help>
+      </properties>
+      <children>
+        #include <include/ospf/metric.xml.i>
+        #include <include/ospf/metric-type.xml.i>
+        #include <include/route-map.xml.i>
+      </children>
+    </node>
+  </children>
+</node>
+<node name="refresh">
+  <properties>
+    <help>Adjust refresh parameters</help>
+  </properties>
+  <children>
+    <leafNode name="timers">
+      <properties>
+        <help>Refresh timer</help>
+        <valueHelp>
+          <format>u32:10-1800</format>
+          <description>Timer value in seconds</description>
+        </valueHelp>
+        <constraint>
+          <validator name="numeric" argument="--range 10-1800"/>
+        </constraint>
+      </properties>
+    </leafNode>
+  </children>
+</node>
+<node name="timers">
+  <properties>
+    <help>Adjust routing timers</help>
+  </properties>
+  <children>
+    <node name="throttle">
+      <properties>
+        <help>Throttling adaptive timers</help>
+      </properties>
+      <children>
+        <node name="spf">
+          <properties>
+            <help>OSPF SPF timers</help>
+          </properties>
+          <children>
+            <leafNode name="delay">
+              <properties>
+                <help>Delay from the first change received to SPF calculation (default: 200)</help>
+                <valueHelp>
+                  <format>u32:0-600000</format>
+                  <description>Delay in milliseconds</description>
+                </valueHelp>
+                <constraint>
+                  <validator name="numeric" argument="--range 0-600000"/>
+                </constraint>
+              </properties>
+              <defaultValue>200</defaultValue>
+            </leafNode>
+            <leafNode name="initial-holdtime">
+              <properties>
+                <help>Initial hold time between consecutive SPF calculations (default: 1000)</help>
+                <valueHelp>
+                  <format>u32:0-600000</format>
+                  <description>Initial hold time in milliseconds</description>
+                </valueHelp>
+                <constraint>
+                  <validator name="numeric" argument="--range 0-600000"/>
+                </constraint>
+              </properties>
+              <defaultValue>1000</defaultValue>
+            </leafNode>
+            <leafNode name="max-holdtime">
+              <properties>
+                <help>Maximum hold time (default: 10000)</help>
+                <valueHelp>
+                  <format>u32:0-600000</format>
+                  <description>Max hold time in milliseconds</description>
+                </valueHelp>
+                <constraint>
+                  <validator name="numeric" argument="--range 0-600000"/>
+                </constraint>
+              </properties>
+              <defaultValue>10000</defaultValue>
+            </leafNode>
+          </children>
+        </node>
+      </children>
+    </node>
+  </children>
+</node>
+<!-- include end -->
diff --git a/interface-definitions/include/ospf/router-id.xml.i b/interface-definitions/include/ospf/router-id.xml.i
new file mode 100644
index 000000000..2512f78d7
--- /dev/null
+++ b/interface-definitions/include/ospf/router-id.xml.i
@@ -0,0 +1,14 @@
+<!-- include start from ospf/router-id.xml.i -->
+<leafNode name="router-id">
+  <properties>
+    <help>Override the default router identifier</help>
+    <valueHelp>
+      <format>ipv4</format>
+      <description>Override the default router identifier</description>
+    </valueHelp>
+    <constraint>
+      <validator name="ipv4-address"/>
+    </constraint>
+  </properties>
+</leafNode>
+<!-- include end -->
diff --git a/interface-definitions/protocols-ospf.xml.in b/interface-definitions/protocols-ospf.xml.in
index 4431a1772..eae522893 100644
--- a/interface-definitions/protocols-ospf.xml.in
+++ b/interface-definitions/protocols-ospf.xml.in
@@ -8,7 +8,7 @@
           <priority>620</priority>
         </properties>
         <children>
-          #include <include/ospf/ospf-common-config.xml.i>
+          #include <include/ospf/protocol-common-config.xml.i>
           #include <include/route-map.xml.i>
         </children>
       </node>
diff --git a/interface-definitions/protocols-ospfv3.xml.in b/interface-definitions/protocols-ospfv3.xml.in
index f4f403e93..df775233b 100644
--- a/interface-definitions/protocols-ospfv3.xml.in
+++ b/interface-definitions/protocols-ospfv3.xml.in
@@ -90,13 +90,13 @@
               <help>Administrative distance</help>
             </properties>
             <children>
-              #include <include/ospf/ospf-distance-global.xml.i>
+              #include <include/ospf/distance-global.xml.i>
               <node name="ospfv3">
                 <properties>
                   <help>OSPFv3 administrative distance</help>
                 </properties>
                 <children>
-                  #include <include/ospf/ospf-distance-per-protocol.xml.i>
+                  #include <include/ospf/distance-per-protocol.xml.i>
                 </children>
               </node>
             </children>
@@ -116,8 +116,8 @@
               </constraint>
             </properties>
             <children>
-              #include <include/ospf/ospf-intervals.xml.i>
-              #include <include/ospf/ospf-interface-common.xml.i>
+              #include <include/ospf/intervals.xml.i>
+              #include <include/ospf/interface-common.xml.i>
               <leafNode name="ifmtu">
                 <properties>
                   <help>Interface MTU</help>
@@ -171,7 +171,7 @@
               <help>OSPFv3 specific parameters</help>
             </properties>
             <children>
-              #include <include/ospf/ospf-router-id.xml.i>
+              #include <include/ospf/router-id.xml.i>
             </children>
           </node>
           <node name="redistribute">
diff --git a/interface-definitions/vrf.xml.in b/interface-definitions/vrf.xml.in
index 5b6cda29a..d66056db9 100644
--- a/interface-definitions/vrf.xml.in
+++ b/interface-definitions/vrf.xml.in
@@ -57,7 +57,7 @@
                   <priority>621</priority>
                 </properties>
                 <children>
-                  #include <include/ospf/ospf-common-config.xml.i>
+                  #include <include/ospf/protocol-common-config.xml.i>
                 </children>
               </node>
               <node name="static" owner="${vyos_conf_scripts_dir}/protocols_static.py $VAR(../../@)">
-- 
cgit v1.2.3