diff --git a/interface-definitions/include/generic-description.xml.i b/interface-definitions/include/generic-description.xml.i
index b54897be4..b030c2495 100644
--- a/interface-definitions/include/generic-description.xml.i
+++ b/interface-definitions/include/generic-description.xml.i
@@ -1,14 +1,15 @@
 <!-- include start from generic-description.xml.i -->
 <leafNode name="description">
   <properties>
     <help>Description</help>
     <valueHelp>
       <format>txt</format>
       <description>Description</description>
     </valueHelp>
     <constraint>
-      <regex>[a-zA-Z0-9_\-\s]+</regex>
+      <regex>[[:ascii:]]{1,256}</regex>
     </constraint>
+    <constraintErrorMessage>Description too long (limit 256 characters)</constraintErrorMessage>
   </properties>
 </leafNode>
 <!-- include end -->
diff --git a/interface-definitions/include/interface/description.xml.i b/interface-definitions/include/interface/description.xml.i
deleted file mode 100644
index de01d22ca..000000000
--- a/interface-definitions/include/interface/description.xml.i
+++ /dev/null
@@ -1,11 +0,0 @@
-<!-- include start from interface/description.xml.i -->
-<leafNode name="description">
-  <properties>
-    <help>Interface specific description</help>
-    <constraint>
-      <regex>.{1,256}</regex>
-    </constraint>
-    <constraintErrorMessage>Description too long (limit 256 characters)</constraintErrorMessage>
-  </properties>
-</leafNode>
-<!-- include end -->
diff --git a/interface-definitions/include/interface/vif-s.xml.i b/interface-definitions/include/interface/vif-s.xml.i
index 6d50d7238..fdd62b63d 100644
--- a/interface-definitions/include/interface/vif-s.xml.i
+++ b/interface-definitions/include/interface/vif-s.xml.i
@@ -1,75 +1,75 @@
 <!-- include start from interface/vif-s.xml.i -->
 <tagNode name="vif-s">
   <properties>
     <help>QinQ TAG-S Virtual Local Area Network (VLAN) ID</help>
     <valueHelp>
       <format>u32:0-4094</format>
       <description>QinQ Virtual Local Area Network (VLAN) ID</description>
     </valueHelp>
     <constraint>
       <validator name="numeric" argument="--range 0-4094"/>
     </constraint>
     <constraintErrorMessage>VLAN ID must be between 0 and 4094</constraintErrorMessage>
   </properties>
   <children>
+    #include <include/generic-description.xml.i>
     #include <include/interface/address-ipv4-ipv6-dhcp.xml.i>
-    #include <include/interface/description.xml.i>
     #include <include/interface/dhcp-options.xml.i>
     #include <include/interface/dhcpv6-options.xml.i>
     #include <include/interface/disable-link-detect.xml.i>
     #include <include/interface/disable.xml.i>
     <leafNode name="protocol">
       <properties>
         <help>Protocol used for service VLAN (default: 802.1ad)</help>
         <completionHelp>
           <list>802.1ad 802.1q</list>
         </completionHelp>
         <valueHelp>
           <format>802.1ad</format>
           <description>Provider Bridging (IEEE 802.1ad, Q-inQ), ethertype 0x88a8</description>
         </valueHelp>
         <valueHelp>
           <format>802.1q</format>
           <description>VLAN-tagged frame (IEEE 802.1q), ethertype 0x8100</description>
         </valueHelp>
         <constraint>
           <regex>(802.1q|802.1ad)</regex>
         </constraint>
         <constraintErrorMessage>Ethertype must be 802.1ad or 802.1q</constraintErrorMessage>
       </properties>
       <defaultValue>802.1ad</defaultValue>
     </leafNode>
     #include <include/interface/ipv4-options.xml.i>
     #include <include/interface/ipv6-options.xml.i>
     #include <include/interface/mac.xml.i>
     #include <include/interface/mirror.xml.i>
     #include <include/interface/mtu-68-16000.xml.i>
     <tagNode name="vif-c">
       <properties>
         <help>QinQ TAG-C Virtual Local Area Network (VLAN) ID</help>
         <constraint>
           <validator name="numeric" argument="--range 0-4094"/>
         </constraint>
         <constraintErrorMessage>VLAN ID must be between 0 and 4094</constraintErrorMessage>
       </properties>
       <children>
+        #include <include/generic-description.xml.i>
         #include <include/interface/address-ipv4-ipv6-dhcp.xml.i>
-        #include <include/interface/description.xml.i>
         #include <include/interface/dhcp-options.xml.i>
         #include <include/interface/dhcpv6-options.xml.i>
         #include <include/interface/disable-link-detect.xml.i>
         #include <include/interface/disable.xml.i>
         #include <include/interface/ipv4-options.xml.i>
         #include <include/interface/ipv6-options.xml.i>
         #include <include/interface/mac.xml.i>
         #include <include/interface/mirror.xml.i>
         #include <include/interface/mtu-68-16000.xml.i>
         #include <include/interface/redirect.xml.i>
         #include <include/interface/vrf.xml.i>
       </children>
     </tagNode>
     #include <include/interface/redirect.xml.i>
     #include <include/interface/vrf.xml.i>
   </children>
 </tagNode>
 <!-- include end -->
diff --git a/interface-definitions/include/interface/vif.xml.i b/interface-definitions/include/interface/vif.xml.i
index 3f8f113ea..ec3921bf6 100644
--- a/interface-definitions/include/interface/vif.xml.i
+++ b/interface-definitions/include/interface/vif.xml.i
@@ -1,56 +1,56 @@
 <!-- include start from interface/vif.xml.i -->
 <tagNode name="vif">
   <properties>
     <help>Virtual Local Area Network (VLAN) ID</help>
     <valueHelp>
       <format>u32:0-4094</format>
       <description>Virtual Local Area Network (VLAN) ID</description>
     </valueHelp>
     <constraint>
       <validator name="numeric" argument="--range 0-4094"/>
     </constraint>
     <constraintErrorMessage>VLAN ID must be between 0 and 4094</constraintErrorMessage>
   </properties>
   <children>
+    #include <include/generic-description.xml.i>
     #include <include/interface/address-ipv4-ipv6-dhcp.xml.i>
-    #include <include/interface/description.xml.i>
     #include <include/interface/dhcp-options.xml.i>
     #include <include/interface/dhcpv6-options.xml.i>
     #include <include/interface/disable-link-detect.xml.i>
     #include <include/interface/disable.xml.i>
     <leafNode name="egress-qos">
       <properties>
         <help>VLAN egress QoS</help>
         <valueHelp>
           <format>txt</format>
           <description>Format for qos mapping, e.g.: '0:1 1:6 7:6'</description>
         </valueHelp>
         <constraint>
           <regex>[:0-7 ]+</regex>
         </constraint>
         <constraintErrorMessage>QoS mapping should be in the format of '0:7 2:3' with numbers 0-9</constraintErrorMessage>
       </properties>
     </leafNode>
     <leafNode name="ingress-qos">
       <properties>
         <help>VLAN ingress QoS</help>
         <valueHelp>
           <format>txt</format>
           <description>Format for qos mapping, e.g.: '0:1 1:6 7:6'</description>
         </valueHelp>
         <constraint>
           <regex>[:0-7 ]+</regex>
         </constraint>
         <constraintErrorMessage>QoS mapping should be in the format of '0:7 2:3' with numbers 0-9</constraintErrorMessage>
       </properties>
     </leafNode>
     #include <include/interface/ipv4-options.xml.i>
     #include <include/interface/ipv6-options.xml.i>
     #include <include/interface/mac.xml.i>
     #include <include/interface/mirror.xml.i>
     #include <include/interface/mtu-68-16000.xml.i>
     #include <include/interface/redirect.xml.i>
     #include <include/interface/vrf.xml.i>
   </children>
 </tagNode>
 <!-- include end -->
diff --git a/interface-definitions/interfaces-bonding.xml.in b/interface-definitions/interfaces-bonding.xml.in
index a8a558348..6e8c5283a 100644
--- a/interface-definitions/interfaces-bonding.xml.in
+++ b/interface-definitions/interfaces-bonding.xml.in
@@ -1,233 +1,233 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="interfaces">
     <children>
       <tagNode name="bonding" owner="${vyos_conf_scripts_dir}/interfaces-bonding.py">
         <properties>
           <help>Bonding Interface/Link Aggregation</help>
           <priority>320</priority>
           <constraint>
             <regex>bond[0-9]+</regex>
           </constraint>
           <constraintErrorMessage>Bonding interface must be named bondN</constraintErrorMessage>
           <valueHelp>
             <format>bondN</format>
             <description>Bonding interface name</description>
           </valueHelp>
         </properties>
         <children>
           #include <include/interface/address-ipv4-ipv6-dhcp.xml.i>
           <node name="arp-monitor">
             <properties>
               <help>ARP link monitoring parameters</help>
             </properties>
             <children>
               <leafNode name="interval">
                 <properties>
                   <help>ARP link monitoring interval</help>
                   <valueHelp>
                     <format>u32</format>
                     <description>Specifies the ARP link monitoring frequency in milliseconds</description>
                   </valueHelp>
                   <constraint>
                     <validator name="numeric" argument="--range 0-4294967295"/>
                   </constraint>
                 </properties>
               </leafNode>
               <leafNode name="target">
                 <properties>
                   <help>IP address used for ARP monitoring</help>
                   <valueHelp>
                     <format>ipv4</format>
                     <description>Specify IPv4 address of ARP requests when interval is enabled</description>
                   </valueHelp>
                   <constraint>
                     <validator name="ipv4-address"/>
                   </constraint>
                   <multi/>
                 </properties>
               </leafNode>
             </children>
           </node>
-          #include <include/interface/description.xml.i>
+          #include <include/generic-description.xml.i>
           #include <include/interface/dhcp-options.xml.i>
           #include <include/interface/dhcpv6-options.xml.i>
           #include <include/interface/disable-link-detect.xml.i>
           #include <include/interface/disable.xml.i>
           #include <include/interface/vrf.xml.i>
           #include <include/interface/mirror.xml.i>
           <leafNode name="hash-policy">
             <properties>
               <help>Bonding transmit hash policy</help>
               <completionHelp>
                 <list>layer2 layer2+3 layer3+4 encap2+3 encap3+4</list>
               </completionHelp>
               <valueHelp>
                 <format>layer2</format>
                 <description>use MAC addresses to generate the hash</description>
               </valueHelp>
               <valueHelp>
                 <format>layer2+3</format>
                 <description>combine MAC address and IP address to make hash</description>
               </valueHelp>
               <valueHelp>
                 <format>layer3+4</format>
                 <description>combine IP address and port to make hash</description>
               </valueHelp>
               <valueHelp>
                 <format>encap2+3</format>
                 <description>combine encapsulated MAC address and IP address to make hash</description>
               </valueHelp>
               <valueHelp>
                 <format>encap3+4</format>
                 <description>combine encapsulated IP address and port to make hash</description>
               </valueHelp>
               <constraint>
                 <regex>(layer2\+3|layer3\+4|layer2|encap2\+3|encap3\+4)</regex>
               </constraint>
               <constraintErrorMessage>hash-policy must be layer2 layer2+3 layer3+4 encap2+3 or encap3+4</constraintErrorMessage>
             </properties>
             <defaultValue>layer2</defaultValue>
           </leafNode>
           #include <include/interface/ipv4-options.xml.i>
           #include <include/interface/ipv6-options.xml.i>
           #include <include/interface/mac.xml.i>
           <leafNode name="mii-mon-interval">
             <properties>
               <help>Specifies the MII link monitoring frequency in milliseconds</help>
               <valueHelp>
                 <format>u32:0</format>
                 <description>Disable MII link monitoring</description>
               </valueHelp>
               <valueHelp>
                 <format>u32:50-1000</format>
                 <description>MII link monitoring frequency in milliseconds</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 0-0 --range 50-1000"/>
               </constraint>
             </properties>
             <defaultValue>100</defaultValue>
           </leafNode>
           <leafNode name="min-links">
             <properties>
               <help>Minimum number of member interfaces required up before enabling bond</help>
               <valueHelp>
                 <format>u32:0-16</format>
                 <description>Minimum number of member interfaces required up before enabling bond</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 0-16"/>
               </constraint>
             </properties>
             <defaultValue>0</defaultValue>
           </leafNode>
           <leafNode name="lacp-rate">
             <properties>
               <help>Rate in which we will ask our link partner to transmit LACPDU packets</help>
               <completionHelp>
                 <list>slow fast</list>
               </completionHelp>
               <valueHelp>
                 <format>slow</format>
                 <description>Request partner to transmit LACPDUs every 30 seconds</description>
               </valueHelp>
               <valueHelp>
                 <format>fast</format>
                 <description>Request partner to transmit LACPDUs every 1 second</description>
               </valueHelp>
               <constraint>
                 <regex>(slow|fast)</regex>
               </constraint>
             </properties>
             <defaultValue>slow</defaultValue>
           </leafNode>
           <leafNode name="mode">
             <properties>
               <help>Bonding mode</help>
               <completionHelp>
                 <list>802.3ad active-backup broadcast round-robin transmit-load-balance adaptive-load-balance xor-hash</list>
               </completionHelp>
               <valueHelp>
                 <format>802.3ad</format>
                 <description>IEEE 802.3ad Dynamic link aggregation</description>
               </valueHelp>
               <valueHelp>
                 <format>active-backup</format>
                 <description>Fault tolerant: only one slave in the bond is active</description>
               </valueHelp>
               <valueHelp>
                 <format>broadcast</format>
                 <description>Fault tolerant: transmits everything on all slave interfaces</description>
               </valueHelp>
               <valueHelp>
                 <format>round-robin</format>
                 <description>Load balance: transmit packets in sequential order</description>
               </valueHelp>
               <valueHelp>
                 <format>transmit-load-balance</format>
                 <description>Load balance: adapts based on transmit load and speed</description>
               </valueHelp>
               <valueHelp>
                 <format>adaptive-load-balance</format>
                 <description>Load balance: adapts based on transmit and receive plus ARP</description>
               </valueHelp>
               <valueHelp>
                 <format>xor-hash</format>
                 <description>Distribute based on MAC address</description>
               </valueHelp>
               <constraint>
                 <regex>(802.3ad|active-backup|broadcast|round-robin|transmit-load-balance|adaptive-load-balance|xor-hash)</regex>
               </constraint>
               <constraintErrorMessage>mode must be 802.3ad, active-backup, broadcast, round-robin, transmit-load-balance, adaptive-load-balance, or xor</constraintErrorMessage>
             </properties>
             <defaultValue>802.3ad</defaultValue>
           </leafNode>
           <node name="member">
             <properties>
               <help>Bridge member interfaces</help>
             </properties>
             <children>
               <leafNode name="interface">
                 <properties>
                   <help>Member interface name</help>
                   <completionHelp>
                     <script>${vyos_completion_dir}/list_interfaces.py --bondable</script>
                   </completionHelp>
                   <valueHelp>
                     <format>txt</format>
                     <description>Interface name</description>
                   </valueHelp>
                   <constraint>
                     #include <include/constraint/interface-name.xml.in>
                   </constraint>
                   <multi/>
                 </properties>
               </leafNode>
             </children>
           </node>
           #include <include/interface/mtu-68-16000.xml.i>
           <leafNode name="primary">
             <properties>
               <help>Primary device interface</help>
               <completionHelp>
                 <script>${vyos_completion_dir}/list_interfaces.py --bondable</script>
               </completionHelp>
               <valueHelp>
                 <format>txt</format>
                 <description>Interface name</description>
               </valueHelp>
               <constraint>
                 #include <include/constraint/interface-name.xml.in>
               </constraint>
             </properties>
           </leafNode>
           #include <include/interface/redirect.xml.i>
           #include <include/interface/vif-s.xml.i>
           #include <include/interface/vif.xml.i>
           #include <include/interface/xdp.xml.i>
         </children>
       </tagNode>
     </children>
   </node>
 </interfaceDefinition>
diff --git a/interface-definitions/interfaces-bridge.xml.in b/interface-definitions/interfaces-bridge.xml.in
index d52e213b6..1636411ec 100644
--- a/interface-definitions/interfaces-bridge.xml.in
+++ b/interface-definitions/interfaces-bridge.xml.in
@@ -1,223 +1,223 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="interfaces">
     <children>
       <tagNode name="bridge" owner="${vyos_conf_scripts_dir}/interfaces-bridge.py">
         <properties>
           <help>Bridge Interface</help>
           <priority>310</priority>
           <constraint>
             <regex>br[0-9]+</regex>
           </constraint>
           <constraintErrorMessage>Bridge interface must be named brN</constraintErrorMessage>
           <valueHelp>
             <format>brN</format>
             <description>Bridge interface name</description>
           </valueHelp>
         </properties>
         <children>
           #include <include/interface/address-ipv4-ipv6-dhcp.xml.i>
           <leafNode name="aging">
             <properties>
               <help>MAC address aging interval</help>
               <valueHelp>
                 <format>u32:0</format>
                 <description>Disable MAC address learning (always flood)</description>
               </valueHelp>
               <valueHelp>
                 <format>u32:10-1000000</format>
                 <description>MAC address aging time in seconds</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 0-0 --range 10-1000000"/>
               </constraint>
             </properties>
             <defaultValue>300</defaultValue>
           </leafNode>
-          #include <include/interface/description.xml.i>
+          #include <include/generic-description.xml.i>
           #include <include/interface/dhcp-options.xml.i>
           #include <include/interface/dhcpv6-options.xml.i>
           #include <include/interface/disable-link-detect.xml.i>
           #include <include/interface/disable.xml.i>
           #include <include/interface/vrf.xml.i>
           #include <include/interface/mtu-68-16000.xml.i>
           <leafNode name="forwarding-delay">
             <properties>
               <help>Forwarding delay</help>
               <valueHelp>
                 <format>u32:0-200</format>
                 <description>Spanning Tree Protocol forwarding delay in seconds</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 0-200"/>
               </constraint>
               <constraintErrorMessage>Forwarding delay must be between 0 and 200 seconds</constraintErrorMessage>
             </properties>
             <defaultValue>14</defaultValue>
           </leafNode>
           <leafNode name="hello-time">
             <properties>
               <help>Hello packet advertisement interval</help>
               <valueHelp>
                 <format>u32:1-10</format>
                 <description>Spanning Tree Protocol hello advertisement interval in seconds</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 1-10"/>
               </constraint>
               <constraintErrorMessage>Bridge Hello interval must be between 1 and 10 seconds</constraintErrorMessage>
             </properties>
             <defaultValue>2</defaultValue>
           </leafNode>
           <node name="igmp">
             <properties>
               <help>Internet Group Management Protocol (IGMP) and Multicast Listener Discovery (MLD) settings</help>
             </properties>
             <children>
               <leafNode name="querier">
                 <properties>
                   <help>Enable IGMP/MLD querier</help>
                   <valueless/>
                 </properties>
               </leafNode>
               <leafNode name="snooping">
                 <properties>
                   <help>Enable IGMP/MLD snooping</help>
                   <valueless/>
                 </properties>
               </leafNode>
             </children>
           </node>
           #include <include/interface/ipv4-options.xml.i>
           #include <include/interface/ipv6-options.xml.i>
           #include <include/interface/mac.xml.i>
           #include <include/interface/mirror.xml.i>
           <leafNode name="enable-vlan">
             <properties>
               <help>Enable VLAN aware bridge</help>
               <valueless/>
             </properties>
           </leafNode>
           <leafNode name="max-age">
             <properties>
               <help>Interval at which neighbor bridges are removed</help>
               <valueHelp>
                 <format>u32:1-40</format>
                 <description>Bridge maximum aging time in seconds</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 1-40"/>
               </constraint>
               <constraintErrorMessage>Bridge max aging value must be between 1 and 40 seconds</constraintErrorMessage>
             </properties>
             <defaultValue>20</defaultValue>
           </leafNode>
           <node name="member">
             <properties>
               <help>Bridge member interfaces</help>
             </properties>
             <children>
               <tagNode name="interface">
                 <properties>
                   <help>Member interface name</help>
                   <completionHelp>
                     <script>${vyos_completion_dir}/list_interfaces.py --bridgeable</script>
                   </completionHelp>
                 </properties>
                 <children>
                   <leafNode name="native-vlan">
                     <properties>
                       <help>Specify VLAN id which should natively be present on the link</help>
                       <valueHelp>
                         <format>u32:1-4094</format>
                         <description>Virtual Local Area Network (VLAN) ID</description>
                       </valueHelp>
                       <constraint>
                         <validator name="numeric" argument="--range 1-4094"/>
                       </constraint>
                       <constraintErrorMessage>VLAN ID must be between 1 and 4094</constraintErrorMessage>
                     </properties>
                   </leafNode>
                   <leafNode name="allowed-vlan">
                     <properties>
                       <help>Specify VLAN id which is allowed in this trunk interface</help>
                       <valueHelp>
                         <format>&lt;id&gt;</format>
                         <description>VLAN id allowed to pass this interface</description>
                       </valueHelp>
                       <valueHelp>
                         <format>&lt;idN&gt;-&lt;idM&gt;</format>
                         <description>VLAN id range allowed on this interface (use '-' as delimiter)</description>
                       </valueHelp>
                       <constraint>
                         <validator name="numeric" argument="--allow-range --range 1-4094"/>
                       </constraint>
                       <constraintErrorMessage>not a valid VLAN ID value or range</constraintErrorMessage>
                       <multi/>
                     </properties>
                   </leafNode>
                   <leafNode name="cost">
                     <properties>
                       <help>Bridge port cost</help>
                       <valueHelp>
                         <format>u32:1-65535</format>
                         <description>Path cost value for Spanning Tree Protocol</description>
                       </valueHelp>
                       <constraint>
                         <validator name="numeric" argument="--range 1-65535"/>
                       </constraint>
                       <constraintErrorMessage>Path cost value must be between 1 and 65535</constraintErrorMessage>
                     </properties>
                     <defaultValue>100</defaultValue>
                   </leafNode>
                   <leafNode name="priority">
                     <properties>
                       <help>Bridge port priority</help>
                       <valueHelp>
                         <format>u32:0-63</format>
                         <description>Bridge port priority</description>
                       </valueHelp>
                       <constraint>
                         <validator name="numeric" argument="--range 1-63"/>
                       </constraint>
                       <constraintErrorMessage>Port priority value must be between 0 and 63</constraintErrorMessage>
                     </properties>
                     <defaultValue>32</defaultValue>
                   </leafNode>
                   <leafNode name="isolated">
                     <properties>
                       <help>Port is isolated (also known as Private-VLAN)</help>
                       <valueless/>
                     </properties>
                   </leafNode>
                 </children>
               </tagNode>
             </children>
           </node>
           <leafNode name="priority">
             <properties>
               <help>Priority for this bridge</help>
               <valueHelp>
                 <format>u32:0-65535</format>
                 <description>Bridge priority</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 0-65535"/>
               </constraint>
               <constraintErrorMessage>Bridge priority must be between 0 and 65535 (multiples of 4096)</constraintErrorMessage>
             </properties>
             <defaultValue>32768</defaultValue>
           </leafNode>
           <leafNode name="stp">
             <properties>
               <help>Enable spanning tree protocol</help>
               <valueless/>
             </properties>
           </leafNode>
           #include <include/interface/redirect.xml.i>
           #include <include/interface/vif.xml.i>
         </children>
       </tagNode>
     </children>
   </node>
 </interfaceDefinition>
diff --git a/interface-definitions/interfaces-dummy.xml.in b/interface-definitions/interfaces-dummy.xml.in
index 201e9b179..00784fcdf 100644
--- a/interface-definitions/interfaces-dummy.xml.in
+++ b/interface-definitions/interfaces-dummy.xml.in
@@ -1,57 +1,57 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="interfaces">
     <children>
       <tagNode name="dummy" owner="${vyos_conf_scripts_dir}/interfaces-dummy.py">
         <properties>
           <help>Dummy Interface</help>
           <priority>300</priority>
           <constraint>
             <regex>dum[0-9]+</regex>
           </constraint>
           <constraintErrorMessage>Dummy interface must be named dumN</constraintErrorMessage>
           <valueHelp>
             <format>dumN</format>
             <description>Dummy interface name</description>
           </valueHelp>
         </properties>
         <children>
           #include <include/interface/address-ipv4-ipv6.xml.i>
-          #include <include/interface/description.xml.i>
+          #include <include/generic-description.xml.i>
           #include <include/interface/disable.xml.i>
           <node name="ip">
             <properties>
               <help>IPv4 routing parameters</help>
             </properties>
             <children>
               #include <include/interface/source-validation.xml.i>
               #include <include/interface/disable-forwarding.xml.i>
             </children>
           </node>
           <node name="ipv6">
             <properties>
               <help>IPv6 routing parameters</help>
             </properties>
             <children>
               #include <include/interface/disable-forwarding.xml.i>
               <node name="address">
                 <properties>
                   <help>IPv6 address configuration modes</help>
                 </properties>
                 <children>
                   #include <include/interface/ipv6-address-eui64.xml.i>
                   #include <include/interface/ipv6-address-no-default-link-local.xml.i>
                 </children>
               </node>
             </children>
           </node>
           #include <include/interface/mtu-68-16000.xml.i>
           #include <include/interface/mirror.xml.i>
           #include <include/interface/netns.xml.i>
           #include <include/interface/redirect.xml.i>
           #include <include/interface/vrf.xml.i>
         </children>
       </tagNode>
     </children>
   </node>
 </interfaceDefinition>
diff --git a/interface-definitions/interfaces-ethernet.xml.in b/interface-definitions/interfaces-ethernet.xml.in
index e9ae0acfe..e7c196c5c 100644
--- a/interface-definitions/interfaces-ethernet.xml.in
+++ b/interface-definitions/interfaces-ethernet.xml.in
@@ -1,212 +1,212 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="interfaces">
     <properties>
       <help>Network interfaces</help>
     </properties>
     <children>
       <tagNode name="ethernet" owner="${vyos_conf_scripts_dir}/interfaces-ethernet.py">
         <properties>
           <help>Ethernet Interface</help>
           <priority>318</priority>
           <valueHelp>
             <format>ethN</format>
             <description>Ethernet interface name</description>
           </valueHelp>
           <constraint>
             <regex>((eth|lan)[0-9]+|(eno|ens|enp|enx).+)</regex>
           </constraint>
           <constraintErrorMessage>Invalid Ethernet interface name</constraintErrorMessage>
         </properties>
         <children>
           #include <include/interface/address-ipv4-ipv6-dhcp.xml.i>
-          #include <include/interface/description.xml.i>
+          #include <include/generic-description.xml.i>
           #include <include/interface/dhcp-options.xml.i>
           #include <include/interface/dhcpv6-options.xml.i>
           <leafNode name="disable-flow-control">
             <properties>
               <help>Disable Ethernet flow control (pause frames)</help>
               <valueless/>
             </properties>
           </leafNode>
           #include <include/interface/disable-link-detect.xml.i>
           #include <include/interface/disable.xml.i>
           <leafNode name="duplex">
             <properties>
               <help>Duplex mode</help>
               <completionHelp>
                 <list>auto half full</list>
               </completionHelp>
               <valueHelp>
                 <format>auto</format>
                 <description>Auto negotiation</description>
               </valueHelp>
               <valueHelp>
                 <format>half</format>
                 <description>Half duplex</description>
               </valueHelp>
               <valueHelp>
                 <format>full</format>
                 <description>Full duplex</description>
               </valueHelp>
               <constraint>
                 <regex>(auto|half|full)</regex>
               </constraint>
               <constraintErrorMessage>duplex must be auto, half or full</constraintErrorMessage>
             </properties>
             <defaultValue>auto</defaultValue>
           </leafNode>
           #include <include/interface/eapol.xml.i>
           #include <include/interface/hw-id.xml.i>
           #include <include/interface/ipv4-options.xml.i>
           #include <include/interface/ipv6-options.xml.i>
           #include <include/interface/mac.xml.i>
           #include <include/interface/mtu-68-16000.xml.i>
           #include <include/interface/mirror.xml.i>
           <node name="offload">
             <properties>
               <help>Configurable offload options</help>
             </properties>
             <children>
               <leafNode name="gro">
                 <properties>
                   <help>Enable Generic Receive Offload</help>
                   <valueless/>
                 </properties>
               </leafNode>
               <leafNode name="gso">
                 <properties>
                   <help>Enable Generic Segmentation Offload</help>
                   <valueless/>
                 </properties>
               </leafNode>
               <leafNode name="lro">
                 <properties>
                   <help>Enable Large Receive Offload</help>
                   <valueless/>
                 </properties>
               </leafNode>
               <leafNode name="rps">
                 <properties>
                   <help>Enable Receive Packet Steering</help>
                   <valueless/>
                 </properties>
               </leafNode>
               <leafNode name="rfs">
                 <properties>
                   <help>Enable Receive Flow Steering</help>
                   <valueless/>
                 </properties>
               </leafNode>
               <leafNode name="sg">
                 <properties>
                   <help>Enable Scatter-Gather</help>
                   <valueless/>
                 </properties>
               </leafNode>
               <leafNode name="tso">
                 <properties>
                   <help>Enable TCP Segmentation Offloading</help>
                   <valueless/>
                 </properties>
               </leafNode>
             </children>
           </node>
           <leafNode name="speed">
             <properties>
               <help>Link speed</help>
               <completionHelp>
                 <list>auto 10 100 1000 2500 5000 10000 25000 40000 50000 100000</list>
               </completionHelp>
               <valueHelp>
                 <format>auto</format>
                 <description>Auto negotiation</description>
               </valueHelp>
               <valueHelp>
                 <format>10</format>
                 <description>10 Mbit/sec</description>
               </valueHelp>
               <valueHelp>
                 <format>100</format>
                 <description>100 Mbit/sec</description>
               </valueHelp>
               <valueHelp>
                 <format>1000</format>
                 <description>1 Gbit/sec</description>
               </valueHelp>
               <valueHelp>
                 <format>2500</format>
                 <description>2.5 Gbit/sec</description>
               </valueHelp>
               <valueHelp>
                 <format>5000</format>
                 <description>5 Gbit/sec</description>
               </valueHelp>
               <valueHelp>
                 <format>10000</format>
                 <description>10 Gbit/sec</description>
               </valueHelp>
               <valueHelp>
                 <format>25000</format>
                 <description>25 Gbit/sec</description>
               </valueHelp>
               <valueHelp>
                 <format>40000</format>
                 <description>40 Gbit/sec</description>
               </valueHelp>
               <valueHelp>
                 <format>50000</format>
                 <description>50 Gbit/sec</description>
               </valueHelp>
               <valueHelp>
                 <format>100000</format>
                 <description>100 Gbit/sec</description>
               </valueHelp>
               <constraint>
                 <regex>(auto|10|100|1000|2500|5000|10000|25000|40000|50000|100000)</regex>
               </constraint>
               <constraintErrorMessage>Speed must be auto, 10, 100, 1000, 2500, 5000, 10000, 25000, 40000, 50000 or 100000</constraintErrorMessage>
             </properties>
             <defaultValue>auto</defaultValue>
           </leafNode>
           <node name="ring-buffer">
             <properties>
               <help>Shared buffer between the device driver and NIC</help>
             </properties>
             <children>
               <leafNode name="rx">
                 <properties>
                   <help>RX ring buffer</help>
                   <valueHelp>
                     <format>u32:80-16384</format>
                     <description>ring buffer size</description>
                   </valueHelp>
                   <constraint>
                     <validator name="numeric" argument="--range 80-16384"/>
                   </constraint>
                 </properties>
               </leafNode>
               <leafNode name="tx">
                 <properties>
                   <help>TX ring buffer</help>
                   <valueHelp>
                     <format>u32:80-16384</format>
                     <description>ring buffer size</description>
                   </valueHelp>
                   <constraint>
                     <validator name="numeric" argument="--range 80-16384"/>
                   </constraint>
                 </properties>
               </leafNode>
             </children>
           </node>
           #include <include/interface/redirect.xml.i>
           #include <include/interface/vif-s.xml.i>
           #include <include/interface/vif.xml.i>
           #include <include/interface/vrf.xml.i>
           #include <include/interface/xdp.xml.i>
         </children>
       </tagNode>
     </children>
   </node>
 </interfaceDefinition>
diff --git a/interface-definitions/interfaces-geneve.xml.in b/interface-definitions/interfaces-geneve.xml.in
index f8e9909f8..ac9794870 100644
--- a/interface-definitions/interfaces-geneve.xml.in
+++ b/interface-definitions/interfaces-geneve.xml.in
@@ -1,59 +1,59 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="interfaces">
     <children>
       <tagNode name="geneve" owner="${vyos_conf_scripts_dir}/interfaces-geneve.py">
         <properties>
           <help>Generic Network Virtualization Encapsulation (GENEVE) Interface</help>
           <priority>460</priority>
           <constraint>
             <regex>gnv[0-9]+</regex>
           </constraint>
           <constraintErrorMessage>GENEVE interface must be named gnvN</constraintErrorMessage>
           <valueHelp>
             <format>gnvN</format>
             <description>GENEVE interface name</description>
           </valueHelp>
         </properties>
         <children>
           #include <include/interface/address-ipv4-ipv6.xml.i>
-          #include <include/interface/description.xml.i>
+          #include <include/generic-description.xml.i>
           #include <include/interface/disable.xml.i>
           #include <include/interface/ipv4-options.xml.i>
           #include <include/interface/ipv6-options.xml.i>
           #include <include/interface/mac.xml.i>
           #include <include/interface/mtu-1450-16000.xml.i>
           <node name="parameters">
             <properties>
               <help>GENEVE tunnel parameters</help>
             </properties>
             <children>
               <node name="ip">
                 <properties>
                   <help>IPv4 specific tunnel parameters</help>
                 </properties>
                 <children>
                   #include <include/interface/parameters-df.xml.i>
                   #include <include/interface/parameters-tos.xml.i>
                   #include <include/interface/parameters-ttl.xml.i>
                 </children>
               </node>
               <node name="ipv6">
                 <properties>
                   <help>IPv6 specific tunnel parameters</help>
                 </properties>
                 <children>
                   #include <include/interface/parameters-flowlabel.xml.i>
                 </children>
               </node>
             </children>
           </node>
           #include <include/interface/mirror.xml.i>
           #include <include/interface/redirect.xml.i>
           #include <include/interface/tunnel-remote.xml.i>
           #include <include/vni.xml.i>
         </children>
       </tagNode>
     </children>
   </node>
 </interfaceDefinition>
diff --git a/interface-definitions/interfaces-input.xml.in b/interface-definitions/interfaces-input.xml.in
index 97502d954..d90cf936f 100644
--- a/interface-definitions/interfaces-input.xml.in
+++ b/interface-definitions/interfaces-input.xml.in
@@ -1,27 +1,27 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="interfaces">
     <children>
       <tagNode name="input" owner="${vyos_conf_scripts_dir}/interfaces-input.py">
         <properties>
           <help>Input Functional Block (IFB) interface name</help>
           <!-- before real devices that redirect -->
           <priority>310</priority>
           <constraint>
             <regex>ifb[0-9]+</regex>
           </constraint>
           <constraintErrorMessage>Input interface must be named ifbN</constraintErrorMessage>
           <valueHelp>
             <format>ifbN</format>
             <description>Input interface name</description>
           </valueHelp>
         </properties>
         <children>
-          #include <include/interface/description.xml.i>
+          #include <include/generic-description.xml.i>
           #include <include/interface/disable.xml.i>
           #include <include/interface/redirect.xml.i>
         </children>
       </tagNode>
     </children>
   </node>
 </interfaceDefinition>
diff --git a/interface-definitions/interfaces-l2tpv3.xml.in b/interface-definitions/interfaces-l2tpv3.xml.in
index 0ebc3253d..1f0dd3d19 100644
--- a/interface-definitions/interfaces-l2tpv3.xml.in
+++ b/interface-definitions/interfaces-l2tpv3.xml.in
@@ -1,131 +1,131 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="interfaces">
     <children>
       <tagNode name="l2tpv3" owner="${vyos_conf_scripts_dir}/interfaces-l2tpv3.py">
         <properties>
           <help>Layer 2 Tunnel Protocol Version 3 (L2TPv3) Interface</help>
           <priority>485</priority>
           <constraint>
             <regex>l2tpeth[0-9]+</regex>
           </constraint>
           <constraintErrorMessage>L2TPv3 interface must be named l2tpethN</constraintErrorMessage>
           <valueHelp>
             <format>l2tpethN</format>
             <description>L2TPv3 interface name</description>
           </valueHelp>
         </properties>
         <children>
           #include <include/interface/address-ipv4-ipv6.xml.i>
-          #include <include/interface/description.xml.i>
+          #include <include/generic-description.xml.i>
           <leafNode name="destination-port">
             <properties>
               <help>UDP destination port for L2TPv3 tunnel</help>
               <valueHelp>
                 <format>u32:1-65535</format>
                 <description>Numeric IP port</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 1-65535"/>
               </constraint>
             </properties>
             <defaultValue>5000</defaultValue>
           </leafNode>
           #include <include/interface/disable.xml.i>
           <leafNode name="encapsulation">
             <properties>
               <help>Encapsulation type</help>
               <completionHelp>
                 <list>udp ip</list>
               </completionHelp>
               <valueHelp>
                 <format>udp</format>
                 <description>UDP encapsulation</description>
               </valueHelp>
               <valueHelp>
                 <format>ip</format>
                 <description>IP encapsulation</description>
               </valueHelp>
               <constraint>
                 <regex>(udp|ip)</regex>
               </constraint>
               <constraintErrorMessage>Encapsulation must be UDP or IP</constraintErrorMessage>
             </properties>
             <defaultValue>udp</defaultValue>
           </leafNode>
           #include <include/interface/ipv4-options.xml.i>
           #include <include/interface/ipv6-options.xml.i>
           #include <include/source-address-ipv4-ipv6.xml.i>
           #include <include/interface/mirror.xml.i>
           #include <include/interface/mtu-68-16000.xml.i>
           <leafNode name="mtu">
             <defaultValue>1488</defaultValue>
           </leafNode>
           <leafNode name="peer-session-id">
             <properties>
               <help>Peer session identifier</help>
               <valueHelp>
                 <format>u32:1-429496729</format>
                 <description>L2TPv3 peer session identifier</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 1-429496729"/>
               </constraint>
             </properties>
           </leafNode>
           <leafNode name="peer-tunnel-id">
             <properties>
               <help>Peer tunnel identifier</help>
               <valueHelp>
                 <format>u32:1-429496729</format>
                 <description>L2TPv3 peer tunnel identifier</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 1-429496729"/>
               </constraint>
             </properties>
           </leafNode>
           #include <include/interface/tunnel-remote.xml.i>
           <leafNode name="session-id">
             <properties>
               <help>Session identifier</help>
               <valueHelp>
                 <format>u32:1-429496729</format>
                 <description>L2TPv3 session identifier</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 1-429496729"/>
               </constraint>
             </properties>
           </leafNode>
           <leafNode name="source-port">
             <properties>
               <help>UDP source port for L2TPv3 tunnel</help>
               <valueHelp>
                 <format>u32:1-65535</format>
                 <description>Numeric IP port</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 1-65535"/>
               </constraint>
             </properties>
             <defaultValue>5000</defaultValue>
           </leafNode>
           <leafNode name="tunnel-id">
             <properties>
               <help>Local tunnel identifier</help>
               <valueHelp>
                 <format>u32:1-429496729</format>
                 <description>L2TPv3 local tunnel identifier</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 1-429496729"/>
               </constraint>
             </properties>
           </leafNode>
           #include <include/interface/vrf.xml.i>
         </children>
       </tagNode>
     </children>
   </node>
 </interfaceDefinition>
diff --git a/interface-definitions/interfaces-loopback.xml.in b/interface-definitions/interfaces-loopback.xml.in
index 7f59db543..fe0944467 100644
--- a/interface-definitions/interfaces-loopback.xml.in
+++ b/interface-definitions/interfaces-loopback.xml.in
@@ -1,35 +1,35 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="interfaces">
     <children>
       <tagNode name="loopback" owner="${vyos_conf_scripts_dir}/interfaces-loopback.py">
         <properties>
           <help>Loopback Interface</help>
           <priority>300</priority>
           <constraint>
             <regex>lo</regex>
           </constraint>
           <constraintErrorMessage>Loopback interface must be named lo</constraintErrorMessage>
           <valueHelp>
             <format>lo</format>
             <description>Loopback interface</description>
           </valueHelp>
         </properties>
         <children>
           #include <include/interface/address-ipv4-ipv6.xml.i>
-          #include <include/interface/description.xml.i>
+          #include <include/generic-description.xml.i>
           <node name="ip">
             <properties>
               <help>IPv4 routing parameters</help>
             </properties>
             <children>
               #include <include/interface/source-validation.xml.i>
             </children>
           </node>
           #include <include/interface/mirror.xml.i>
           #include <include/interface/redirect.xml.i>
         </children>
       </tagNode>
     </children>
   </node>
 </interfaceDefinition>
diff --git a/interface-definitions/interfaces-macsec.xml.in b/interface-definitions/interfaces-macsec.xml.in
index 441236ec2..4b4f9149d 100644
--- a/interface-definitions/interfaces-macsec.xml.in
+++ b/interface-definitions/interfaces-macsec.xml.in
@@ -1,131 +1,131 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="interfaces">
     <children>
       <tagNode name="macsec" owner="${vyos_conf_scripts_dir}/interfaces-macsec.py">
         <properties>
           <help>MACsec Interface (802.1ae)</help>
           <priority>461</priority>
           <constraint>
             <regex>macsec[0-9]+</regex>
           </constraint>
           <constraintErrorMessage>MACsec interface must be named macsecN</constraintErrorMessage>
           <valueHelp>
             <format>macsecN</format>
             <description>MACsec interface name</description>
           </valueHelp>
         </properties>
         <children>
           #include <include/interface/address-ipv4-ipv6-dhcp.xml.i>
           #include <include/interface/dhcp-options.xml.i>
           #include <include/interface/dhcpv6-options.xml.i>
           #include <include/interface/ipv4-options.xml.i>
           #include <include/interface/ipv6-options.xml.i>
           #include <include/interface/mirror.xml.i>
           <node name="security">
             <properties>
               <help>Security/Encryption Settings</help>
             </properties>
             <children>
               <leafNode name="cipher">
                 <properties>
                   <help>Cipher suite used</help>
                   <completionHelp>
                     <list>gcm-aes-128 gcm-aes-256</list>
                   </completionHelp>
                   <valueHelp>
                     <format>gcm-aes-128</format>
                     <description>Galois/Counter Mode of AES cipher with 128-bit key</description>
                   </valueHelp>
                   <valueHelp>
                     <format>gcm-aes-256</format>
                     <description>Galois/Counter Mode of AES cipher with 256-bit key</description>
                   </valueHelp>
                   <constraint>
                     <regex>(gcm-aes-128|gcm-aes-256)</regex>
                   </constraint>
                 </properties>
               </leafNode>
               <leafNode name="encrypt">
                 <properties>
                   <help>Enable optional MACsec encryption</help>
                   <valueless/>
                 </properties>
               </leafNode>
               <node name="mka">
                 <properties>
                   <help>MACsec Key Agreement protocol (MKA)</help>
                 </properties>
                 <children>
                   <leafNode name="cak">
                     <properties>
                       <help>Secure Connectivity Association Key</help>
                       <valueHelp>
                         <format>txt</format>
                         <description>16-byte (128-bit) hex-string (32 hex-digits) for gcm-aes-128 or 32-byte (256-bit) hex-string (64 hex-digits) for gcm-aes-256</description>
                       </valueHelp>
                       <constraint>
                         <regex>[A-Fa-f0-9]{32}</regex>
                         <regex>[A-Fa-f0-9]{64}</regex>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="ckn">
                     <properties>
                       <help>Secure Connectivity Association Key Name</help>
                       <valueHelp>
                         <format>txt</format>
                         <description>32-byte (256-bit) hex-string (64 hex-digits)</description>
                       </valueHelp>
                       <constraint>
                         <regex>[A-Fa-f0-9]{64}</regex>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="priority">
                     <properties>
                       <help>Priority of MACsec Key Agreement protocol (MKA) actor</help>
                       <valueHelp>
                         <format>u32:0-255</format>
                         <description>MACsec Key Agreement protocol (MKA) priority</description>
                       </valueHelp>
                       <constraint>
                         <validator name="numeric" argument="--range 0-255" />
                       </constraint>
                     </properties>
                     <defaultValue>255</defaultValue>
                   </leafNode>
                 </children>
               </node>
               <leafNode name="replay-window">
                 <properties>
                   <help>IEEE 802.1X/MACsec replay protection window</help>
                   <valueHelp>
                     <format>u32:0</format>
                     <description>No replay window, strict check</description>
                   </valueHelp>
                   <valueHelp>
                     <format>u32:1-4294967295</format>
                     <description>Number of packets that could be misordered</description>
                   </valueHelp>
                   <constraint>
                     <validator name="numeric" argument="--range 0-4294967295" />
                   </constraint>
                 </properties>
               </leafNode>
             </children>
           </node>
-          #include <include/interface/description.xml.i>
+          #include <include/generic-description.xml.i>
           #include <include/interface/disable.xml.i>
           #include <include/interface/mtu-68-16000.xml.i>
           <leafNode name="mtu">
             <defaultValue>1460</defaultValue>
           </leafNode>
           #include <include/source-interface-ethernet.xml.i>
           #include <include/interface/redirect.xml.i>
           #include <include/interface/vrf.xml.i>
         </children>
       </tagNode>
     </children>
   </node>
 </interfaceDefinition>
diff --git a/interface-definitions/interfaces-openvpn.xml.in b/interface-definitions/interfaces-openvpn.xml.in
index 7cfb9ee7a..63272a25f 100644
--- a/interface-definitions/interfaces-openvpn.xml.in
+++ b/interface-definitions/interfaces-openvpn.xml.in
@@ -1,819 +1,819 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="interfaces">
     <children>
       <tagNode name="openvpn" owner="${vyos_conf_scripts_dir}/interfaces-openvpn.py">
         <properties>
           <help>OpenVPN Tunnel Interface</help>
           <priority>460</priority>
           <constraint>
             <regex>vtun[0-9]+</regex>
           </constraint>
           <constraintErrorMessage>OpenVPN tunnel interface must be named vtunN</constraintErrorMessage>
           <valueHelp>
             <format>vtunN</format>
             <description>OpenVPN interface name</description>
           </valueHelp>
         </properties>
         <children>
           <node name="authentication">
             <properties>
               <help>Authentication options</help>
             </properties>
             <children>
               <leafNode name="password">
                 <properties>
                   <help>OpenVPN password used for authentication</help>
                 </properties>
               </leafNode>
               <leafNode name="username">
                 <properties>
                   <help>OpenVPN username used for authentication</help>
                 </properties>
               </leafNode>
             </children>
           </node>
-          #include <include/interface/description.xml.i>
+          #include <include/generic-description.xml.i>
           <leafNode name="device-type">
             <properties>
               <help>OpenVPN interface device-type</help>
               <completionHelp>
                 <list>tun tap</list>
               </completionHelp>
               <valueHelp>
                 <format>tun</format>
                 <description>TUN device, required for OSI layer 3</description>
               </valueHelp>
               <valueHelp>
                 <format>tap</format>
                 <description>TAP device, required for OSI layer 2</description>
               </valueHelp>
               <constraint>
                 <regex>(tun|tap)</regex>
               </constraint>
             </properties>
             <defaultValue>tun</defaultValue>
           </leafNode>
           #include <include/interface/disable.xml.i>
           <node name="encryption">
             <properties>
               <help>Data Encryption settings</help>
             </properties>
             <children>
               <leafNode name="cipher">
                 <properties>
                   <help>Standard Data Encryption Algorithm</help>
                   <completionHelp>
                     <list>none des 3des bf128 bf256 aes128 aes128gcm aes192 aes192gcm aes256 aes256gcm</list>
                   </completionHelp>
                   <valueHelp>
                     <format>none</format>
                     <description>Disable encryption</description>
                   </valueHelp>
                   <valueHelp>
                     <format>des</format>
                     <description>DES algorithm</description>
                   </valueHelp>
                   <valueHelp>
                     <format>3des</format>
                     <description>DES algorithm with triple encryption</description>
                   </valueHelp>
                   <valueHelp>
                     <format>bf128</format>
                     <description>Blowfish algorithm with 128-bit key</description>
                   </valueHelp>
                   <valueHelp>
                     <format>bf256</format>
                     <description>Blowfish algorithm with 256-bit key</description>
                   </valueHelp>
                   <valueHelp>
                     <format>aes128</format>
                     <description>AES algorithm with 128-bit key CBC</description>
                   </valueHelp>
                   <valueHelp>
                     <format>aes128gcm</format>
                     <description>AES algorithm with 128-bit key GCM</description>
                   </valueHelp>
                   <valueHelp>
                     <format>aes192</format>
                     <description>AES algorithm with 192-bit key CBC</description>
                   </valueHelp>
                   <valueHelp>
                     <format>aes192gcm</format>
                     <description>AES algorithm with 192-bit key GCM</description>
                   </valueHelp>
                   <valueHelp>
                     <format>aes256</format>
                     <description>AES algorithm with 256-bit key CBC</description>
                   </valueHelp>
                   <valueHelp>
                     <format>aes256gcm</format>
                     <description>AES algorithm with 256-bit key GCM</description>
                   </valueHelp>
                   <constraint>
                     <regex>(none|des|3des|bf128|bf256|aes128|aes128gcm|aes192|aes192gcm|aes256|aes256gcm)</regex>
                   </constraint>
                 </properties>
               </leafNode>
               <leafNode name="ncp-ciphers">
                 <properties>
                   <help>Cipher negotiation list for use in server or client mode</help>
                   <completionHelp>
                     <list>none des 3des aes128 aes128gcm aes192 aes192gcm aes256 aes256gcm</list>
                   </completionHelp>
                   <valueHelp>
                     <format>none</format>
                     <description>Disable encryption</description>
                   </valueHelp>
                   <valueHelp>
                     <format>des</format>
                     <description>DES algorithm</description>
                   </valueHelp>
                   <valueHelp>
                     <format>3des</format>
                     <description>DES algorithm with triple encryption</description>
                   </valueHelp>
                   <valueHelp>
                     <format>aes128</format>
                     <description>AES algorithm with 128-bit key CBC</description>
                   </valueHelp>
                   <valueHelp>
                     <format>aes128gcm</format>
                     <description>AES algorithm with 128-bit key GCM</description>
                   </valueHelp>
                   <valueHelp>
                     <format>aes192</format>
                     <description>AES algorithm with 192-bit key CBC</description>
                   </valueHelp>
                   <valueHelp>
                     <format>aes192gcm</format>
                     <description>AES algorithm with 192-bit key GCM</description>
                   </valueHelp>
                   <valueHelp>
                     <format>aes256</format>
                     <description>AES algorithm with 256-bit key CBC</description>
                   </valueHelp>
                   <valueHelp>
                     <format>aes256gcm</format>
                     <description>AES algorithm with 256-bit key GCM</description>
                   </valueHelp>
                   <constraint>
                     <regex>(none|des|3des|aes128|aes128gcm|aes192|aes192gcm|aes256|aes256gcm)</regex>
                   </constraint>
                   <multi/>
                 </properties>
               </leafNode>
             </children>
           </node>
           #include <include/interface/ipv4-options.xml.i>
           #include <include/interface/ipv6-options.xml.i>
           #include <include/interface/mirror.xml.i>
           <leafNode name="hash">
             <properties>
               <help>Hashing Algorithm</help>
               <completionHelp>
                 <list>md5 sha1 sha256 sha384 sha512</list>
               </completionHelp>
               <valueHelp>
                 <format>md5</format>
                 <description>MD5 algorithm</description>
               </valueHelp>
               <valueHelp>
                 <format>sha1</format>
                 <description>SHA-1 algorithm</description>
               </valueHelp>
               <valueHelp>
                 <format>sha256</format>
                 <description>SHA-256 algorithm</description>
               </valueHelp>
               <valueHelp>
                 <format>sha384</format>
                 <description>SHA-384 algorithm</description>
               </valueHelp>
               <valueHelp>
                 <format>sha512</format>
                 <description>SHA-512 algorithm</description>
               </valueHelp>
               <constraint>
                 <regex>(md5|sha1|sha256|sha384|sha512)</regex>
               </constraint>
             </properties>
           </leafNode>
           <node name="keep-alive">
             <properties>
               <help>Keepalive helper options</help>
             </properties>
             <children>
               <leafNode name="failure-count">
                 <properties>
                   <help>Maximum number of keepalive packet failures</help>
                   <valueHelp>
                     <format>u32:0-1000</format>
                     <description>Maximum number of keepalive packet failures</description>
                   </valueHelp>
                   <constraint>
                     <validator name="numeric" argument="--range 0-1000"/>
                   </constraint>
                 </properties>
                 <defaultValue>60</defaultValue>
               </leafNode>
               <leafNode name="interval">
                 <properties>
                   <help>Keepalive packet interval in seconds</help>
                   <valueHelp>
                     <format>u32:0-600</format>
                     <description>Keepalive packet interval (seconds)</description>
                   </valueHelp>
                   <constraint>
                     <validator name="numeric" argument="--range 0-600"/>
                   </constraint>
                 </properties>
                 <defaultValue>10</defaultValue>
               </leafNode>
             </children>
           </node>
           <tagNode name="local-address">
             <properties>
               <help>Local IP address of tunnel (IPv4 or IPv6)</help>
               <constraint>
                 <validator name="ip-address"/>
               </constraint>
             </properties>
             <children>
               <leafNode name="subnet-mask">
                 <properties>
                   <help>Subnet-mask for local IP address of tunnel (IPv4 only)</help>
                   <constraint>
                     <validator name="ipv4-address"/>
                   </constraint>
                 </properties>
               </leafNode>
             </children>
           </tagNode>
           <leafNode name="local-host">
             <properties>
               <help>Local IP address to accept connections (all if not set)</help>
               <valueHelp>
                 <format>ipv4</format>
                 <description>Local IPv4 address</description>
               </valueHelp>
               <valueHelp>
                 <format>ipv6</format>
                 <description>Local IPv6 address</description>
               </valueHelp>
               <constraint>
                 <validator name="ip-address"/>
               </constraint>
             </properties>
           </leafNode>
           <leafNode name="local-port">
             <properties>
               <help>Local port number to accept connections</help>
               <valueHelp>
                 <format>u32:1-65535</format>
                 <description>Numeric IP port</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 1-65535"/>
               </constraint>
             </properties>
           </leafNode>
           <leafNode name="mode">
             <properties>
               <help>OpenVPN mode of operation</help>
               <completionHelp>
                 <list>site-to-site client server</list>
               </completionHelp>
               <valueHelp>
                 <format>site-to-site</format>
                 <description>Site-to-site mode</description>
               </valueHelp>
               <valueHelp>
                 <format>client</format>
                 <description>Client in client-server mode</description>
               </valueHelp>
               <valueHelp>
                 <format>server</format>
                 <description>Server in client-server mode</description>
               </valueHelp>
               <constraint>
                 <regex>(site-to-site|client|server)</regex>
               </constraint>
             </properties>
           </leafNode>
           <leafNode name="openvpn-option">
             <properties>
               <help>Additional OpenVPN options. You must use the syntax of openvpn.conf in this text-field. Using this without proper knowledge may result in a crashed OpenVPN server. Check system log to look for errors.</help>
               <multi/>
             </properties>
           </leafNode>
           <leafNode name="persistent-tunnel">
             <properties>
               <help>Do not close and reopen interface (TUN/TAP device) on client restarts</help>
               <valueless/>
             </properties>
           </leafNode>
           <leafNode name="protocol">
             <properties>
               <help>OpenVPN communication protocol</help>
               <completionHelp>
                 <list>udp tcp-passive tcp-active</list>
               </completionHelp>
               <valueHelp>
                 <format>udp</format>
                 <description>UDP</description>
               </valueHelp>
               <valueHelp>
                 <format>tcp-passive</format>
                 <description>TCP and accepts connections passively</description>
               </valueHelp>
               <valueHelp>
                 <format>tcp-active</format>
                 <description>TCP and initiates connections actively</description>
               </valueHelp>
               <constraint>
                 <regex>(udp|tcp-passive|tcp-active)</regex>
               </constraint>
             </properties>
             <defaultValue>udp</defaultValue>
           </leafNode>
           <leafNode name="remote-address">
             <properties>
               <help>IP address of remote end of tunnel</help>
               <valueHelp>
                 <format>ipv4</format>
                 <description>Remote end IPv4 address</description>
               </valueHelp>
               <valueHelp>
                 <format>ipv6</format>
                 <description>Remote end IPv6 address</description>
               </valueHelp>
               <constraint>
                 <validator name="ipv4-address"/>
                 <validator name="ipv6-address"/>
               </constraint>
               <multi/>
             </properties>
           </leafNode>
           <leafNode name="remote-host">
             <properties>
               <help>Remote host to connect to (dynamic if not set)</help>
               <valueHelp>
                 <format>ipv4</format>
                 <description>IPv4 address of remote host</description>
               </valueHelp>
               <valueHelp>
                 <format>ipv6</format>
                 <description>IPv6 address of remote host</description>
               </valueHelp>
               <valueHelp>
                 <format>txt</format>
                 <description>Hostname of remote host</description>
               </valueHelp>
               <multi/>
             </properties>
           </leafNode>
           <leafNode name="remote-port">
             <properties>
               <help>Remote port number to connect to</help>
               <valueHelp>
                 <format>u32:1-65535</format>
                 <description>Numeric IP port</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 1-65535"/>
               </constraint>
             </properties>
           </leafNode>
           <node name="replace-default-route">
             <properties>
               <help>OpenVPN tunnel to be used as the default route</help>
             </properties>
             <children>
               <leafNode name="local">
                 <properties>
                   <help>Tunnel endpoints are on the same subnet</help>
                 </properties>
               </leafNode>
             </children>
           </node>
           <node name="server">
             <properties>
               <help>Server-mode options</help>
             </properties>
             <children>
               <tagNode name="client">
                 <properties>
                   <help>Client-specific settings</help>
                   <valueHelp>
                     <format>name</format>
                     <description>Client common-name in the certificate</description>
                   </valueHelp>
                 </properties>
                 <children>
                   #include <include/generic-disable-node.xml.i>
                   <leafNode name="ip">
                     <properties>
                       <help>IP address of the client</help>
                       <valueHelp>
                         <format>ipv4</format>
                         <description>Client IPv4 address</description>
                       </valueHelp>
                       <valueHelp>
                         <format>ipv6</format>
                         <description>Client IPv6 address</description>
                       </valueHelp>
                       <constraint>
                         <validator name="ip-address"/>
                       </constraint>
                       <multi/>
                     </properties>
                   </leafNode>
                   <leafNode name="push-route">
                     <properties>
                       <help>Route to be pushed to the client</help>
                       <valueHelp>
                         <format>ipv4net</format>
                         <description>IPv4 network and prefix length</description>
                       </valueHelp>
                       <valueHelp>
                         <format>ipv6net</format>
                         <description>IPv6 network and prefix length</description>
                       </valueHelp>
                       <constraint>
                         <validator name="ip-prefix"/>
                       </constraint>
                       <multi/>
                     </properties>
                   </leafNode>
                   <leafNode name="subnet">
                     <properties>
                       <help>Subnet belonging to the client (iroute)</help>
                       <valueHelp>
                         <format>ipv4net</format>
                         <description>IPv4 network and prefix length belonging to the client</description>
                       </valueHelp>
                       <valueHelp>
                         <format>ipv6net</format>
                         <description>IPv6 network and prefix length belonging to the client</description>
                       </valueHelp>
                       <constraint>
                         <validator name="ip-prefix"/>
                       </constraint>
                       <multi/>
                     </properties>
                   </leafNode>
                 </children>
               </tagNode>
               <node name="client-ip-pool">
                 <properties>
                   <help>Pool of client IPv4 addresses</help>
                 </properties>
                 <children>
                   #include <include/generic-disable-node.xml.i>
                   <leafNode name="start">
                     <properties>
                       <help>First IP address in the pool</help>
                       <constraint>
                         <validator name="ipv4-address"/>
                       </constraint>
                       <valueHelp>
                         <format>ipv4</format>
                         <description>IPv4 address</description>
                       </valueHelp>
                     </properties>
                   </leafNode>
                   <leafNode name="stop">
                     <properties>
                       <help>Last IP address in the pool</help>
                       <constraint>
                         <validator name="ipv4-address"/>
                       </constraint>
                       <valueHelp>
                         <format>ipv4</format>
                         <description>IPv4 address</description>
                       </valueHelp>
                     </properties>
                   </leafNode>
                   <leafNode name="subnet-mask">
                     <properties>
                       <help>Subnet mask pushed to dynamic clients. If not set the server subnet mask will be used. Only used with topology subnet or device type tap. Not used with bridged interfaces.</help>
                       <constraint>
                         <validator name="ipv4-address"/>
                       </constraint>
                       <valueHelp>
                         <format>ipv4</format>
                         <description>IPv4 subnet mask</description>
                       </valueHelp>
                     </properties>
                   </leafNode>
                 </children>
               </node>
               <node name="client-ipv6-pool">
                 <properties>
                   <help>Pool of client IPv6 addresses</help>
                 </properties>
                 <children>
                   <leafNode name="base">
                     <properties>
                       <help>Client IPv6 pool base address with optional prefix length</help>
                       <valueHelp>
                         <format>ipv6net</format>
                         <description>Client IPv6 pool base address with optional prefix length (defaults: base = server subnet + 0x1000, prefix length = server prefix length)</description>
                       </valueHelp>
                       <constraint>
                         <validator name="ipv6"/>
                       </constraint>
                     </properties>
                   </leafNode>
                   #include <include/generic-disable-node.xml.i>
                 </children>
               </node>
               <leafNode name="domain-name">
                 <properties>
                   <help>DNS suffix to be pushed to all clients</help>
                   <valueHelp>
                     <format>txt</format>
                     <description>Domain Name Server suffix</description>
                   </valueHelp>
                 </properties>
               </leafNode>
               <leafNode name="max-connections">
                 <properties>
                   <help>Number of maximum client connections</help>
                   <valueHelp>
                     <format>u32:1-4096</format>
                     <description>Number of concurrent clients</description>
                   </valueHelp>
                   <constraint>
                     <validator name="numeric" argument="--range 1-4096"/>
                   </constraint>
                 </properties>
               </leafNode>
               #include <include/name-server-ipv4-ipv6.xml.i>
               <tagNode name="push-route">
                 <properties>
                   <help>Route to be pushed to all clients</help>
                   <valueHelp>
                     <format>ipv4net</format>
                     <description>IPv4 network and prefix length</description>
                   </valueHelp>
                   <valueHelp>
                     <format>ipv6net</format>
                     <description>IPv6 network and prefix length</description>
                   </valueHelp>
                   <constraint>
                     <validator name="ip-prefix"/>
                   </constraint>
                 </properties>
                 <children>
                   <leafNode name="metric">
                     <properties>
                       <help>Set metric for this route</help>
                       <valueHelp>
                         <format>u32:0-4294967295</format>
                         <description>Metric for this route</description>
                       </valueHelp>
                       <constraint>
                         <validator name="numeric" argument="--range 0-4294967295"/>
                       </constraint>
                     </properties>
                     <defaultValue>0</defaultValue>
                   </leafNode>
                 </children>
               </tagNode>
               <leafNode name="reject-unconfigured-clients">
                 <properties>
                   <help>Reject connections from clients that are not explicitly configured</help>
                   <valueless/>
                 </properties>
               </leafNode>
               <leafNode name="subnet">
                 <properties>
                   <help>Server-mode subnet (from which client IPs are allocated)</help>
                   <valueHelp>
                     <format>ipv4net</format>
                     <description>IPv4 network and prefix length</description>
                   </valueHelp>
                   <valueHelp>
                     <format>ipv6net</format>
                     <description>IPv6 network and prefix length</description>
                   </valueHelp>
                   <constraint>
                     <validator name="ip-prefix"/>
                   </constraint>
                   <multi/>
                 </properties>
               </leafNode>
               <leafNode name="topology">
                 <properties>
                   <help>Topology for clients</help>
                   <completionHelp>
                     <list>net30 point-to-point subnet</list>
                   </completionHelp>
                   <valueHelp>
                     <format>net30</format>
                     <description>net30 topology</description>
                   </valueHelp>
                   <valueHelp>
                     <format>point-to-point</format>
                     <description>Point-to-point topology</description>
                   </valueHelp>
                   <valueHelp>
                     <format>subnet</format>
                     <description>Subnet topology</description>
                   </valueHelp>
                   <constraint>
                     <regex>(subnet|point-to-point|net30)</regex>
                   </constraint>
                 </properties>
                 <defaultValue>net30</defaultValue>
               </leafNode>
               <node name="mfa">
                 <properties>
                   <help>multi-factor authentication</help>
                 </properties>
                 <children>
                   <node name="totp">
                     <properties>
                       <help>Time-based one-time passwords</help>
                     </properties>
                     <children>
                       <leafNode name="slop">
                         <properties>
                           <help>Maximum allowed clock slop in seconds</help>
                           <valueHelp>
                             <format>1-65535</format>
                             <description>Seconds</description>
                           </valueHelp>
                           <constraint>
                             <validator name="numeric" argument="--range 1-65535"/>
                           </constraint>
                         </properties>
                         <defaultValue>180</defaultValue>
                       </leafNode>
                       <leafNode name="drift">
                         <properties>
                           <help>Time drift in seconds</help>
                           <valueHelp>
                             <format>1-65535</format>
                             <description>Seconds</description>
                           </valueHelp>
                           <constraint>
                             <validator name="numeric" argument="--range 1-65535"/>
                           </constraint>
                         </properties>
                         <defaultValue>0</defaultValue>
                       </leafNode>
                       <leafNode name="step">
                         <properties>
                           <help>Step value for totp in seconds</help>
                           <valueHelp>
                             <format>1-65535</format>
                             <description>Seconds</description>
                           </valueHelp>
                           <constraint>
                             <validator name="numeric" argument="--range 1-65535"/>
                           </constraint>
                         </properties>
                         <defaultValue>30</defaultValue>
                       </leafNode>
                       <leafNode name="digits">
                         <properties>
                           <help>Number of digits to use for totp hash</help>
                           <valueHelp>
                             <format>1-65535</format>
                             <description>Seconds</description>
                           </valueHelp>
                           <constraint>
                             <validator name="numeric" argument="--range 1-65535"/>
                           </constraint>
                         </properties>
                         <defaultValue>6</defaultValue>
                       </leafNode>
                       <leafNode name="challenge">
                         <properties>
                           <help>Expect password as result of a challenge response protocol</help>
                           <completionHelp>
                             <list>disable enable</list>
                           </completionHelp>
                           <valueHelp>
                             <format>disable</format>
                             <description>Disable challenge-response</description>
                           </valueHelp>
                           <valueHelp>
                             <format>enable</format>
                             <description>Enable chalenge-response</description>
                           </valueHelp>
                           <constraint>
                             <regex>(disable|enable)</regex>
                           </constraint>
                         </properties>
                         <defaultValue>enable</defaultValue>
                       </leafNode>
                    </children>
                   </node>
                </children>
               </node>
             </children>
           </node>
           <leafNode name="shared-secret-key">
             <properties>
               <help>Secret key shared with remote end of tunnel</help>
               <completionHelp>
                 <path>pki openvpn shared-secret</path>
               </completionHelp>
             </properties>
           </leafNode>
           <node name="tls">
             <properties>
               <help>Transport Layer Security (TLS) options</help>
             </properties>
             <children>
               <leafNode name="auth-key">
                 <properties>
                   <help>TLS shared secret key for tls-auth</help>
                   <completionHelp>
                     <path>pki openvpn shared-secret</path>
                   </completionHelp>
                 </properties>
               </leafNode>
               #include <include/pki/certificate.xml.i>
               #include <include/pki/ca-certificate-multi.xml.i>
               <leafNode name="dh-params">
                 <properties>
                   <help>Diffie Hellman parameters (server only)</help>
                   <completionHelp>
                     <path>pki dh</path>
                   </completionHelp>
                 </properties>
               </leafNode>
               <leafNode name="crypt-key">
                 <properties>
                   <help>Static key to use to authenticate control channel</help>
                   <completionHelp>
                     <path>pki openvpn shared-secret</path>
                   </completionHelp>
                 </properties>
               </leafNode>
               <leafNode name="tls-version-min">
                 <properties>
                   <help>Specify the minimum required TLS version</help>
                   <completionHelp>
                     <list>1.0 1.1 1.2 1.3</list>
                   </completionHelp>
                   <valueHelp>
                     <format>1.0</format>
                     <description>TLS v1.0</description>
                   </valueHelp>
                   <valueHelp>
                     <format>1.1</format>
                     <description>TLS v1.1</description>
                   </valueHelp>
                   <valueHelp>
                     <format>1.2</format>
                     <description>TLS v1.2</description>
                   </valueHelp>
                   <valueHelp>
                     <format>1.3</format>
                     <description>TLS v1.3</description>
                   </valueHelp>
                   <constraint>
                     <regex>(1.0|1.1|1.2|1.3)</regex>
                   </constraint>
                 </properties>
               </leafNode>
               <leafNode name="role">
                 <properties>
                   <help>TLS negotiation role</help>
                   <completionHelp>
                     <list>active passive</list>
                   </completionHelp>
                   <valueHelp>
                     <format>active</format>
                     <description>Initiate TLS negotiation actively</description>
                   </valueHelp>
                   <valueHelp>
                     <format>passive</format>
                     <description>Wait for incoming TLS connection</description>
                   </valueHelp>
                   <constraint>
                     <regex>(active|passive)</regex>
                   </constraint>
                 </properties>
               </leafNode>
             </children>
           </node>
           <leafNode name="use-lzo-compression">
             <properties>
               <help>Use fast LZO compression on this TUN/TAP interface</help>
               <valueless/>
             </properties>
           </leafNode>
           #include <include/interface/redirect.xml.i>
           #include <include/interface/vrf.xml.i>
         </children>
       </tagNode>
     </children>
   </node>
 </interfaceDefinition>
diff --git a/interface-definitions/interfaces-pppoe.xml.in b/interface-definitions/interfaces-pppoe.xml.in
index 35c4889ea..490f41471 100644
--- a/interface-definitions/interfaces-pppoe.xml.in
+++ b/interface-definitions/interfaces-pppoe.xml.in
@@ -1,113 +1,113 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="interfaces">
     <children>
       <tagNode name="pppoe" owner="${vyos_conf_scripts_dir}/interfaces-pppoe.py">
         <properties>
           <help>Point-to-Point Protocol over Ethernet (PPPoE) Interface</help>
           <priority>322</priority>
           <constraint>
             <regex>pppoe[0-9]+</regex>
           </constraint>
           <constraintErrorMessage>PPPoE interface must be named pppoeN</constraintErrorMessage>
           <valueHelp>
             <format>pppoeN</format>
             <description>PPPoE dialer interface name</description>
           </valueHelp>
         </properties>
         <children>
           #include <include/pppoe-access-concentrator.xml.i>
           #include <include/interface/authentication.xml.i>
           #include <include/interface/dial-on-demand.xml.i>
           #include <include/interface/no-default-route.xml.i>
           #include <include/interface/default-route-distance.xml.i>
           #include <include/interface/dhcpv6-options.xml.i>
-          #include <include/interface/description.xml.i>
+          #include <include/generic-description.xml.i>
           #include <include/interface/disable.xml.i>
           <leafNode name="idle-timeout">
             <properties>
               <help>Delay before disconnecting idle session (in seconds)</help>
               <valueHelp>
                 <format>u32:0-86400</format>
                 <description>Idle timeout in seconds</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 0-86400"/>
               </constraint>
               <constraintErrorMessage>Timeout must be in range 0 to 86400</constraintErrorMessage>
             </properties>
           </leafNode>
           <node name="ip">
             <properties>
               <help>IPv4 routing parameters</help>
             </properties>
             <children>
               #include <include/interface/adjust-mss.xml.i>
               #include <include/interface/disable-forwarding.xml.i>
               #include <include/interface/source-validation.xml.i>
             </children>
           </node>
           <node name="ipv6">
             <properties>
               <help>IPv6 routing parameters</help>
             </properties>
             <children>
               <node name="address">
                 <properties>
                   <help>IPv6 address configuration modes</help>
                 </properties>
                 <children>
                   #include <include/interface/ipv6-address-autoconf.xml.i>
                 </children>
               </node>
               #include <include/interface/adjust-mss.xml.i>
               #include <include/interface/disable-forwarding.xml.i>
             </children>
           </node>
           #include <include/source-interface.xml.i>
           <leafNode name="local-address">
             <properties>
               <help>IPv4 address of local end of the PPPoE link</help>
               <valueHelp>
                 <format>ipv4</format>
                 <description>Address of local end of the PPPoE link</description>
               </valueHelp>
               <constraint>
                 <validator name="ipv4-address"/>
               </constraint>
             </properties>
           </leafNode>
           #include <include/interface/mirror.xml.i>
           #include <include/interface/mtu-68-1500.xml.i>
           <leafNode name="mtu">
             <defaultValue>1492</defaultValue>
           </leafNode>
           #include <include/interface/no-peer-dns.xml.i>
           <leafNode name="remote-address">
             <properties>
               <help>IPv4 address of remote end of the PPPoE link</help>
               <valueHelp>
                 <format>ipv4</format>
                 <description>Address of remote end of the PPPoE link</description>
               </valueHelp>
               <constraint>
                 <validator name="ipv4-address"/>
               </constraint>
             </properties>
           </leafNode>
           <leafNode name="service-name">
             <properties>
               <help>Service name, only connect to access concentrators advertising this</help>
               <constraint>
                 <regex>[a-zA-Z0-9]+</regex>
               </constraint>
               <constraintErrorMessage>Service name must be alphanumeric only</constraintErrorMessage>
             </properties>
           </leafNode>
           #include <include/interface/redirect.xml.i>
           #include <include/interface/vrf.xml.i>
         </children>
       </tagNode>
     </children>
   </node>
 </interfaceDefinition>
diff --git a/interface-definitions/interfaces-pseudo-ethernet.xml.in b/interface-definitions/interfaces-pseudo-ethernet.xml.in
index 2fe07ffd5..5c73825c3 100644
--- a/interface-definitions/interfaces-pseudo-ethernet.xml.in
+++ b/interface-definitions/interfaces-pseudo-ethernet.xml.in
@@ -1,68 +1,68 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="interfaces">
     <children>
       <tagNode name="pseudo-ethernet" owner="${vyos_conf_scripts_dir}/interfaces-pseudo-ethernet.py">
         <properties>
           <help>Pseudo Ethernet Interface (Macvlan)</help>
           <priority>321</priority>
           <constraint>
             <regex>peth[0-9]+</regex>
           </constraint>
           <constraintErrorMessage>Pseudo Ethernet interface must be named pethN</constraintErrorMessage>
           <valueHelp>
             <format>pethN</format>
             <description>Pseudo Ethernet interface name</description>
           </valueHelp>
         </properties>
         <children>
           #include <include/interface/address-ipv4-ipv6-dhcp.xml.i>
-          #include <include/interface/description.xml.i>
+          #include <include/generic-description.xml.i>
           #include <include/interface/dhcp-options.xml.i>
           #include <include/interface/dhcpv6-options.xml.i>
           #include <include/interface/disable-link-detect.xml.i>
           #include <include/interface/disable.xml.i>
           #include <include/interface/vrf.xml.i>
           #include <include/interface/ipv4-options.xml.i>
           #include <include/interface/ipv6-options.xml.i>
           #include <include/source-interface-ethernet.xml.i>
           #include <include/interface/mac.xml.i>
           #include <include/interface/mirror.xml.i>
           <leafNode name="mode">
             <properties>
               <help>Receive mode (default: private)</help>
               <completionHelp>
                 <list>private vepa bridge passthru</list>
               </completionHelp>
               <valueHelp>
                 <format>private</format>
                 <description>No communication with other pseudo-devices</description>
               </valueHelp>
               <valueHelp>
                 <format>vepa</format>
                 <description>Virtual Ethernet Port Aggregator reflective relay</description>
               </valueHelp>
               <valueHelp>
                 <format>bridge</format>
                 <description>Simple bridge between pseudo-devices</description>
               </valueHelp>
               <valueHelp>
                 <format>passthru</format>
                 <description>Promicious mode passthrough of underlying device</description>
               </valueHelp>
               <constraint>
                 <regex>(private|vepa|bridge|passthru)</regex>
               </constraint>
               <constraintErrorMessage>mode must be private, vepa, bridge or passthru</constraintErrorMessage>
             </properties>
             <defaultValue>private</defaultValue>
           </leafNode>
           #include <include/interface/mtu-68-16000.xml.i>
           #include <include/interface/redirect.xml.i>
           #include <include/interface/vif-s.xml.i>
           #include <include/interface/vif.xml.i>
         </children>
       </tagNode>
     </children>
   </node>
 </interfaceDefinition>
diff --git a/interface-definitions/interfaces-sstpc.xml.in b/interface-definitions/interfaces-sstpc.xml.in
index 30b55a9fa..b569e9bde 100644
--- a/interface-definitions/interfaces-sstpc.xml.in
+++ b/interface-definitions/interfaces-sstpc.xml.in
@@ -1,47 +1,47 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="interfaces">
     <children>
       <tagNode name="sstpc" owner="${vyos_conf_scripts_dir}/interfaces-sstpc.py">
         <properties>
           <help>Secure Socket Tunneling Protocol (SSTP) client Interface</help>
           <priority>460</priority>
           <constraint>
             <regex>sstpc[0-9]+</regex>
           </constraint>
           <constraintErrorMessage>Secure Socket Tunneling Protocol interface must be named sstpcN</constraintErrorMessage>
           <valueHelp>
             <format>sstpcN</format>
             <description>Secure Socket Tunneling Protocol interface name</description>
           </valueHelp>
         </properties>
         <children>
-          #include <include/interface/description.xml.i>
+          #include <include/generic-description.xml.i>
           #include <include/interface/disable.xml.i>
           #include <include/interface/authentication.xml.i>
           #include <include/interface/no-default-route.xml.i>
           #include <include/interface/default-route-distance.xml.i>
           #include <include/interface/no-peer-dns.xml.i>
           #include <include/interface/mtu-68-1500.xml.i>
           <leafNode name="mtu">
             <defaultValue>1452</defaultValue>
           </leafNode>
           #include <include/server-ipv4-fqdn.xml.i>
           #include <include/port-number.xml.i>
           <leafNode name="port">
             <defaultValue>443</defaultValue>
           </leafNode>
           <node name="ssl">
             <properties>
               <help>Secure Sockets Layer (SSL) configuration</help>
             </properties>
             <children>
               #include <include/pki/ca-certificate.xml.i>
             </children>
           </node>
           #include <include/interface/vrf.xml.i>
         </children>
       </tagNode>
     </children>
   </node>
 </interfaceDefinition>
diff --git a/interface-definitions/interfaces-tunnel.xml.in b/interface-definitions/interfaces-tunnel.xml.in
index 333a5b178..17fe1e285 100644
--- a/interface-definitions/interfaces-tunnel.xml.in
+++ b/interface-definitions/interfaces-tunnel.xml.in
@@ -1,295 +1,295 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="interfaces">
     <children>
       <tagNode name="tunnel" owner="${vyos_conf_scripts_dir}/interfaces-tunnel.py">
         <properties>
           <help>Tunnel interface</help>
           <priority>380</priority>
           <constraint>
             <regex>tun[0-9]+</regex>
           </constraint>
           <constraintErrorMessage>tunnel interface must be named tunN</constraintErrorMessage>
           <valueHelp>
             <format>tunN</format>
             <description>Tunnel interface name</description>
           </valueHelp>
         </properties>
         <children>
-          #include <include/interface/description.xml.i>
+          #include <include/generic-description.xml.i>
           #include <include/interface/address-ipv4-ipv6.xml.i>
           #include <include/interface/disable.xml.i>
           #include <include/interface/disable-link-detect.xml.i>
           #include <include/interface/mtu-64-8024.xml.i>
           <leafNode name="mtu">
             <defaultValue>1476</defaultValue>
           </leafNode>
           #include <include/interface/ipv4-options.xml.i>
           #include <include/interface/ipv6-options.xml.i>
           #include <include/source-address-ipv4-ipv6.xml.i>
           #include <include/interface/tunnel-remote.xml.i>
           #include <include/source-interface.xml.i>
           <leafNode name="6rd-prefix">
             <properties>
               <help>6rd network prefix</help>
               <valueHelp>
                 <format>ipv6</format>
                 <description>IPv6 address and prefix length</description>
               </valueHelp>
               <constraint>
                 <validator name="ipv6-prefix"/>
               </constraint>
             </properties>
           </leafNode>
           <leafNode name="6rd-relay-prefix">
             <properties>
               <help>6rd relay prefix</help>
               <valueHelp>
                 <format>ipv4net</format>
                 <description>IPv4 prefix of interface for 6rd</description>
               </valueHelp>
               <constraint>
                 <validator name="ipv4-prefix"/>
               </constraint>
             </properties>
           </leafNode>
           <leafNode name="encapsulation">
             <properties>
               <help>Encapsulation of this tunnel interface</help>
               <completionHelp>
                 <list>erspan gre gretap ip6erspan ip6gre ip6gretap ip6ip6 ipip ipip6 sit</list>
               </completionHelp>
               <valueHelp>
                 <format>erspan</format>
                 <description>Encapsulated Remote Switched Port Analyzer</description>
               </valueHelp>
               <valueHelp>
                 <format>gre</format>
                 <description>Generic Routing Encapsulation (network layer)</description>
               </valueHelp>
               <valueHelp>
                 <format>gretap</format>
                 <description>Generic Routing Encapsulation (datalink layer)</description>
               </valueHelp>
               <valueHelp>
                 <format>ip6erspan</format>
                 <description>Encapsulated Remote Switched Port Analyzer over IPv6</description>
               </valueHelp>
               <valueHelp>
                 <format>ip6gre</format>
                 <description>GRE over IPv6 (network layer)</description>
               </valueHelp>
               <valueHelp>
                 <format>ip6gretap</format>
                 <description>GRE over IPv6 (datalink layer)</description>
               </valueHelp>
               <valueHelp>
                 <format>ip6ip6</format>
                 <description>IPv6 in IPv6 encapsulation</description>
               </valueHelp>
               <valueHelp>
                 <format>ipip</format>
                 <description>IPv4 in IPv4 encapsulation</description>
               </valueHelp>
               <valueHelp>
                 <format>ipip6</format>
                 <description>IPv4 in IP6 encapsulation</description>
               </valueHelp>
               <valueHelp>
                 <format>sit</format>
                 <description>Simple Internet Transition (IPv6 in IPv4)</description>
               </valueHelp>
               <constraint>
                 <regex>(erspan|gre|gretap|ip6erspan|ip6gre|ip6gretap|ip6ip6|ipip|ipip6|sit)</regex>
               </constraint>
               <constraintErrorMessage>Invalid encapsulation, must be one of: erspan, gre, gretap, ip6erspan, ip6gre, ip6gretap, ipip, sit, ipip6 or ip6ip6</constraintErrorMessage>
             </properties>
           </leafNode>
           #include <include/interface/mirror.xml.i>
           <leafNode name="multicast">
             <properties>
               <help>Multicast operation over tunnel</help>
               <completionHelp>
                 <list>enable disable</list>
               </completionHelp>
               <valueHelp>
                 <format>enable</format>
                 <description>Enable multicast</description>
               </valueHelp>
               <valueHelp>
                 <format>disable</format>
                 <description>Disable multicast (default)</description>
               </valueHelp>
               <constraint>
                 <regex>(enable|disable)</regex>
               </constraint>
               <constraintErrorMessage>Must be 'disable' or 'enable'</constraintErrorMessage>
             </properties>
           </leafNode>
           <node name="parameters">
             <properties>
               <help>Tunnel parameters</help>
             </properties>
             <children>
               <node name="erspan">
                 <properties>
                   <help>ERSPAN tunnel parameters</help>
                 </properties>
                 <children>
                   <leafNode name="direction">
                     <properties>
                       <help>Mirrored traffic direction</help>
                       <completionHelp>
                         <list>ingress egress</list>
                       </completionHelp>
                       <valueHelp>
                         <format>ingress</format>
                         <description>Mirror ingress traffic</description>
                       </valueHelp>
                       <valueHelp>
                         <format>egress</format>
                         <description>Mirror egress traffic</description>
                       </valueHelp>
                       <constraint>
                         <regex>(ingress|egress)</regex>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="hw-id">
                     <properties>
                       <help>Unique identifier of an ERSPAN engine within a system</help>
                       <valueHelp>
                         <format>u32:0-1048575</format>
                         <description>Unique identifier of an ERSPAN engine</description>
                       </valueHelp>
                       <constraint>
                         <validator name="numeric" argument="--range 0-1048575"/>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="index">
                     <properties>
                       <help>ERSPAN version 1 index field</help>
                       <valueHelp>
                         <format>u32:0-63</format>
                         <description>Platform-depedent field for specifying port number and direction</description>
                       </valueHelp>
                       <constraint>
                         <validator name="numeric" argument="--range 0-63"/>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="version">
                     <properties>
                       <help>Protocol version</help>
                       <completionHelp>
                         <list>1 2</list>
                       </completionHelp>
                       <valueHelp>
                         <format>1</format>
                         <description>ERSPAN Type II</description>
                       </valueHelp>
                       <valueHelp>
                         <format>2</format>
                         <description>ERSPAN Type III</description>
                       </valueHelp>
                       <constraint>
                         <validator name="numeric" argument="--range 1-2"/>
                       </constraint>
                     </properties>
                     <defaultValue>1</defaultValue>
                   </leafNode>
                 </children>
               </node>
               <node name="ip">
                 <properties>
                   <help>IPv4-specific tunnel parameters</help>
                 </properties>
                 <children>
                   <leafNode name="no-pmtu-discovery">
                     <properties>
                       <help>Disable path MTU discovery</help>
                       <valueless/>
                     </properties>
                   </leafNode>
                   <leafNode name="ignore-df">
                     <properties>
                       <help>Ignore the DF (don't fragment) bit</help>
                       <valueless/>
                     </properties>
                   </leafNode>
                   #include <include/interface/parameters-key.xml.i>
                   #include <include/interface/parameters-tos.xml.i>
                   #include <include/interface/parameters-ttl.xml.i>
                   <leafNode name="ttl">
                     <defaultValue>64</defaultValue>
                   </leafNode>
                 </children>
               </node>
               <node name="ipv6">
                 <properties>
                   <help>IPv6-specific tunnel parameters</help>
                 </properties>
                 <children>
                   <leafNode name="encaplimit">
                     <properties>
                       <help>Set fixed encapsulation limit</help>
                       <completionHelp>
                         <list>none</list>
                       </completionHelp>
                       <valueHelp>
                         <format>u32:0-255</format>
                         <description>Encapsulation limit</description>
                       </valueHelp>
                       <valueHelp>
                         <format>none</format>
                         <description>Disable encapsulation limit</description>
                       </valueHelp>
                       <constraint>
                         <regex>(none)</regex>
                         <validator name="numeric" argument="--range 0-255"/>
                       </constraint>
                       <constraintErrorMessage>Tunnel encaplimit must be 0-255 or none</constraintErrorMessage>
                     </properties>
                     <defaultValue>4</defaultValue>
                   </leafNode>
                   #include <include/interface/parameters-flowlabel.xml.i>
                   <leafNode name="hoplimit">
                     <properties>
                       <help>Hoplimit</help>
                       <valueHelp>
                         <format>u32:0-255</format>
                         <description>Hop limit</description>
                       </valueHelp>
                       <constraint>
                         <validator name="numeric" argument="--range 0-255"/>
                       </constraint>
                       <constraintErrorMessage>hop limit must be between 0-255</constraintErrorMessage>
                     </properties>
                     <defaultValue>64</defaultValue>
                   </leafNode>
                   <leafNode name="tclass">
                     <properties>
                       <help>Traffic class (Tclass)</help>
                       <valueHelp>
                         <format>0x0-0x0fffff</format>
                         <description>Traffic class, 'inherit' or hex value</description>
                       </valueHelp>
                       <constraint>
                         <regex>(0x){0,1}(0?[0-9A-Fa-f]{1,2})</regex>
                       </constraint>
                       <constraintErrorMessage>Must be 'inherit' or a number</constraintErrorMessage>
                     </properties>
                     <defaultValue>inherit</defaultValue>
                   </leafNode>
                 </children>
               </node>
             </children>
           </node>
           #include <include/interface/vrf.xml.i>
           #include <include/interface/redirect.xml.i>
         </children>
       </tagNode>
     </children>
   </node>
 </interfaceDefinition>
diff --git a/interface-definitions/interfaces-virtual-ethernet.xml.in b/interface-definitions/interfaces-virtual-ethernet.xml.in
index 8059ec33b..864f658da 100644
--- a/interface-definitions/interfaces-virtual-ethernet.xml.in
+++ b/interface-definitions/interfaces-virtual-ethernet.xml.in
@@ -1,45 +1,45 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="interfaces">
     <children>
       <tagNode name="virtual-ethernet" owner="${vyos_conf_scripts_dir}/interfaces-virtual-ethernet.py">
         <properties>
           <help>Virtual Ethernet (veth) Interface</help>
           <priority>300</priority>
           <constraint>
             <regex>veth[0-9]+</regex>
           </constraint>
           <constraintErrorMessage>Virutal Ethernet interface must be named vethN</constraintErrorMessage>
           <valueHelp>
             <format>vethN</format>
             <description>Virtual Ethernet interface name</description>
           </valueHelp>
         </properties>
         <children>
           #include <include/interface/address-ipv4-ipv6-dhcp.xml.i>
-          #include <include/interface/description.xml.i>
+          #include <include/generic-description.xml.i>
           #include <include/interface/dhcp-options.xml.i>
           #include <include/interface/dhcpv6-options.xml.i>
           #include <include/interface/disable.xml.i>
           #include <include/interface/vrf.xml.i>
           <leafNode name="peer-name">
             <properties>
               <help>Virtual ethernet peer interface name</help>
               <completionHelp>
                 <path>interfaces virtual-ethernet</path>
               </completionHelp>
               <valueHelp>
                 <format>txt</format>
                 <description>Name of peer interface</description>
               </valueHelp>
               <constraint>
                 <regex>veth[0-9]+</regex>
               </constraint>
               <constraintErrorMessage>Virutal Ethernet interface must be named vethN</constraintErrorMessage>
             </properties>
           </leafNode>
         </children>
       </tagNode>
     </children>
   </node>
 </interfaceDefinition>
diff --git a/interface-definitions/interfaces-vti.xml.in b/interface-definitions/interfaces-vti.xml.in
index 11f001dc0..b116f7386 100644
--- a/interface-definitions/interfaces-vti.xml.in
+++ b/interface-definitions/interfaces-vti.xml.in
@@ -1,32 +1,32 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="interfaces">
     <children>
       <tagNode name="vti" owner="${vyos_conf_scripts_dir}/interfaces-vti.py">
         <properties>
           <help>Virtual Tunnel Interface (XFRM)</help>
           <priority>381</priority>
           <constraint>
             <regex>vti[0-9]+</regex>
           </constraint>
           <constraintErrorMessage>VTI interface must be named vtiN</constraintErrorMessage>
           <valueHelp>
             <format>vtiN</format>
             <description>VTI interface name</description>
           </valueHelp>
         </properties>
         <children>
           #include <include/interface/address-ipv4-ipv6.xml.i>
-          #include <include/interface/description.xml.i>
+          #include <include/generic-description.xml.i>
           #include <include/interface/disable.xml.i>
           #include <include/interface/ipv4-options.xml.i>
           #include <include/interface/ipv6-options.xml.i>
           #include <include/interface/mtu-68-16000.xml.i>
           #include <include/interface/mirror.xml.i>
           #include <include/interface/redirect.xml.i>
           #include <include/interface/vrf.xml.i>
         </children>
       </tagNode>
     </children>
   </node>
 </interfaceDefinition>
diff --git a/interface-definitions/interfaces-vxlan.xml.in b/interface-definitions/interfaces-vxlan.xml.in
index 331f930d3..fb60c93d0 100644
--- a/interface-definitions/interfaces-vxlan.xml.in
+++ b/interface-definitions/interfaces-vxlan.xml.in
@@ -1,108 +1,108 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="interfaces">
     <children>
       <tagNode name="vxlan" owner="${vyos_conf_scripts_dir}/interfaces-vxlan.py">
         <properties>
           <help>Virtual Extensible LAN (VXLAN) Interface</help>
           <priority>460</priority>
           <constraint>
             <regex>vxlan[0-9]+</regex>
           </constraint>
           <constraintErrorMessage>VXLAN interface must be named vxlanN</constraintErrorMessage>
           <valueHelp>
             <format>vxlanN</format>
             <description>VXLAN interface name</description>
           </valueHelp>
         </properties>
         <children>
           #include <include/interface/address-ipv4-ipv6.xml.i>
-          #include <include/interface/description.xml.i>
+          #include <include/generic-description.xml.i>
           #include <include/interface/disable.xml.i>
           <leafNode name="external">
             <properties>
               <help>Use external control plane</help>
               <valueless/>
             </properties>
           </leafNode>
           <leafNode name="gpe">
             <properties>
               <help>Enable Generic Protocol extension (VXLAN-GPE)</help>
               <valueless/>
             </properties>
           </leafNode>
           <leafNode name="group">
             <properties>
               <help>Multicast group address for VXLAN interface</help>
               <valueHelp>
                 <format>ipv4</format>
                 <description>Multicast IPv4 group address</description>
               </valueHelp>
               <valueHelp>
                 <format>ipv6</format>
                 <description>Multicast IPv6 group address</description>
               </valueHelp>
               <constraint>
                 <validator name="ipv4-multicast"/>
                 <validator name="ipv6-multicast"/>
               </constraint>
               <constraintErrorMessage>Multicast IPv4/IPv6 address required</constraintErrorMessage>
             </properties>
           </leafNode>
           #include <include/interface/ipv4-options.xml.i>
           #include <include/interface/ipv6-options.xml.i>
           #include <include/interface/mac.xml.i>
           #include <include/interface/mtu-1200-16000.xml.i>
           #include <include/interface/mirror.xml.i>
           <leafNode name="mtu">
             <defaultValue>1450</defaultValue>
           </leafNode>
           <node name="parameters">
             <properties>
               <help>VXLAN tunnel parameters</help>
             </properties>
             <children>
               <node name="ip">
                 <properties>
                   <help>IPv4 specific tunnel parameters</help>
                 </properties>
                 <children>
                   #include <include/interface/parameters-df.xml.i>
                   #include <include/interface/parameters-tos.xml.i>
                   #include <include/interface/parameters-ttl.xml.i>
                   <leafNode name="ttl">
                     <defaultValue>16</defaultValue>
                   </leafNode>
                 </children>
               </node>
               <node name="ipv6">
                 <properties>
                   <help>IPv6 specific tunnel parameters</help>
                 </properties>
                 <children>
                   #include <include/interface/parameters-flowlabel.xml.i>
                 </children>
               </node>
               <leafNode name="nolearning">
                 <properties>
                   <help>Do not add unknown addresses into forwarding database</help>
                   <valueless/>
                 </properties>
               </leafNode>
             </children>
           </node>
           #include <include/port-number.xml.i>
           <leafNode name="port">
             <defaultValue>8472</defaultValue>
           </leafNode>
           #include <include/source-address-ipv4-ipv6.xml.i>
           #include <include/source-interface.xml.i>
           #include <include/interface/tunnel-remote-multi.xml.i>
           #include <include/interface/redirect.xml.i>
           #include <include/interface/vrf.xml.i>
           #include <include/vni.xml.i>
         </children>
       </tagNode>
     </children>
   </node>
 </interfaceDefinition>
diff --git a/interface-definitions/interfaces-wireguard.xml.in b/interface-definitions/interfaces-wireguard.xml.in
index 35e223588..6342b21cf 100644
--- a/interface-definitions/interfaces-wireguard.xml.in
+++ b/interface-definitions/interfaces-wireguard.xml.in
@@ -1,127 +1,127 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="interfaces">
     <children>
       <tagNode name="wireguard" owner="${vyos_conf_scripts_dir}/interfaces-wireguard.py">
         <properties>
           <help>WireGuard Interface</help>
           <priority>459</priority>
           <constraint>
             <regex>wg[0-9]+</regex>
           </constraint>
           <constraintErrorMessage>WireGuard interface must be named wgN</constraintErrorMessage>
           <valueHelp>
             <format>wgN</format>
             <description>WireGuard interface name</description>
           </valueHelp>
         </properties>
         <children>
           #include <include/interface/address-ipv4-ipv6.xml.i>
-          #include <include/interface/description.xml.i>
+          #include <include/generic-description.xml.i>
           #include <include/interface/disable.xml.i>
           #include <include/port-number.xml.i>
           #include <include/interface/mtu-68-16000.xml.i>
           #include <include/interface/mirror.xml.i>
           <leafNode name="mtu">
             <defaultValue>1420</defaultValue>
           </leafNode>
           #include <include/interface/ipv4-options.xml.i>
           #include <include/interface/ipv6-options.xml.i>
           <leafNode name="fwmark">
             <properties>
               <help>A 32-bit fwmark value set on all outgoing packets</help>
               <valueHelp>
                 <format>number</format>
                 <description>value which marks the packet for QoS/shaper</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 0-4294967295"/>
               </constraint>
             </properties>
             <defaultValue>0</defaultValue>
           </leafNode>
           <leafNode name="private-key">
             <properties>
               <help>Base64 encoded private key</help>
               <constraint>
                 <regex>[0-9a-zA-Z\+/]{43}=</regex>
               </constraint>
               <constraintErrorMessage>Key is not valid 44-character (32-bytes) base64</constraintErrorMessage>
             </properties>
           </leafNode>
           <tagNode name="peer">
             <properties>
               <help>peer alias</help>
               <constraint>
                 <regex>[^ ]{1,100}</regex>
               </constraint>
               <constraintErrorMessage>peer alias too long (limit 100 characters)</constraintErrorMessage>
             </properties>
             <children>
               #include <include/generic-disable-node.xml.i>
               <leafNode name="public-key">
                 <properties>
                   <help>base64 encoded public key</help>
                   <constraint>
                     <regex>[0-9a-zA-Z\+/]{43}=</regex>
                   </constraint>
                   <constraintErrorMessage>Key is not valid 44-character (32-bytes) base64</constraintErrorMessage>
                 </properties>
               </leafNode>
               <leafNode name="preshared-key">
                 <properties>
                   <help>base64 encoded preshared key</help>
                   <constraint>
                     <regex>[0-9a-zA-Z\+/]{43}=</regex>
                   </constraint>
                   <constraintErrorMessage>Key is not valid 44-character (32-bytes) base64</constraintErrorMessage>
                 </properties>
               </leafNode>
               <leafNode name="allowed-ips">
                 <properties>
                   <help>IP addresses allowed to traverse the peer</help>
                   <constraint>
                     <validator name="ip-prefix"/>
                   </constraint>
                   <multi/>
                 </properties>
               </leafNode>
               <leafNode name="address">
                 <properties>
                   <help>IP address of tunnel endpoint</help>
                   <valueHelp>
                     <format>ipv4</format>
                     <description>IPv4 address of remote tunnel endpoint</description>
                   </valueHelp>
                   <valueHelp>
                     <format>ipv6</format>
                     <description>IPv6 address of remote tunnel endpoint</description>
                   </valueHelp>
                   <constraint>
                     <validator name="ip-address"/>
                     <validator name="ipv6-link-local"/>
                   </constraint>
                 </properties>
               </leafNode>
               #include <include/port-number.xml.i>
               <leafNode name="persistent-keepalive">
                 <properties>
                   <help>Interval to send keepalive messages</help>
                   <valueHelp>
                     <format>u32:1-65535</format>
                     <description>Interval in seconds</description>
                   </valueHelp>
                   <constraint>
                     <validator name="numeric" argument="--range 1-65535"/>
                   </constraint>
                 </properties>
               </leafNode>
             </children>
           </tagNode>
           #include <include/interface/redirect.xml.i>
           #include <include/interface/vrf.xml.i>
         </children>
       </tagNode>
     </children>
   </node>
 </interfaceDefinition>
diff --git a/interface-definitions/interfaces-wireless.xml.in b/interface-definitions/interfaces-wireless.xml.in
index 5271df624..aff5071b2 100644
--- a/interface-definitions/interfaces-wireless.xml.in
+++ b/interface-definitions/interfaces-wireless.xml.in
@@ -1,788 +1,788 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="interfaces">
     <children>
       <tagNode name="wireless" owner="${vyos_conf_scripts_dir}/interfaces-wireless.py">
         <properties>
           <help>Wireless (WiFi/WLAN) Network Interface</help>
           <priority>318</priority>
           <completionHelp>
             <script>cd /sys/class/net; if compgen -G "wlan*" > /dev/null; then ls -d wlan*; fi</script>
           </completionHelp>
           <constraint>
             <regex>wlan[0-9]+</regex>
           </constraint>
           <constraintErrorMessage>Wireless interface must be named wlanN</constraintErrorMessage>
           <valueHelp>
             <format>wlanN</format>
             <description>Wireless (WiFi/WLAN) interface name</description>
           </valueHelp>
         </properties>
         <children>
           #include <include/interface/address-ipv4-ipv6-dhcp.xml.i>
           <node name="capabilities">
             <properties>
               <help>HT and VHT capabilities for your card</help>
             </properties>
             <children>
               <node name="ht">
                 <properties>
                   <help>HT (High Throughput) settings</help>
                 </properties>
                 <children>
                   <leafNode name="40mhz-incapable">
                     <properties>
                       <help>40MHz intolerance, use 20MHz only!</help>
                       <valueless/>
                     </properties>
                   </leafNode>
                   <leafNode name="auto-powersave">
                     <properties>
                       <help>Enable WMM-PS unscheduled automatic power aave delivery [U-APSD]</help>
                       <valueless/>
                     </properties>
                   </leafNode>
                   <leafNode name="channel-set-width">
                     <properties>
                       <help>Supported channel set width</help>
                       <completionHelp>
                         <list>ht20 ht40+ ht40-</list>
                       </completionHelp>
                       <valueHelp>
                         <format>ht20</format>
                         <description>Supported channel set width both 20 MHz only</description>
                       </valueHelp>
                       <valueHelp>
                         <format>ht40+</format>
                         <description>Supported channel set width both 20 MHz and 40 MHz with secondary channel above primary channel</description>
                       </valueHelp>
                       <valueHelp>
                         <format>ht40-</format>
                         <description>Supported channel set width both 20 MHz and 40 MHz with secondary channel below primary channel</description>
                       </valueHelp>
                       <constraint>
                         <regex>(ht20|ht40\+|ht40-)</regex>
                       </constraint>
                       <multi/>
                     </properties>
                   </leafNode>
                   <leafNode name="delayed-block-ack">
                     <properties>
                       <help>Enable HT-delayed block ack</help>
                       <valueless/>
                     </properties>
                   </leafNode>
                   <leafNode name="dsss-cck-40">
                     <properties>
                       <help>Enable DSSS_CCK-40</help>
                       <valueless/>
                     </properties>
                   </leafNode>
                   <leafNode name="greenfield">
                     <properties>
                       <help>Enable HT-greenfield</help>
                       <valueless/>
                     </properties>
                   </leafNode>
                   <leafNode name="ldpc">
                     <properties>
                       <help>Enable LDPC coding capability</help>
                       <valueless/>
                     </properties>
                   </leafNode>
                   <leafNode name="lsig-protection">
                     <properties>
                       <help>Enable L-SIG TXOP protection capability</help>
                       <valueless/>
                     </properties>
                   </leafNode>
                   <leafNode name="max-amsdu">
                     <properties>
                       <help>Set maximum A-MSDU length</help>
                       <completionHelp>
                         <list>3839 7935</list>
                       </completionHelp>
                       <valueHelp>
                         <format>3839</format>
                         <description>Set maximum A-MSDU length to 3839 octets</description>
                       </valueHelp>
                       <valueHelp>
                         <format>7935</format>
                         <description>Set maximum A-MSDU length to 7935 octets</description>
                       </valueHelp>
                       <constraint>
                         <regex>(3839|7935)</regex>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="short-gi">
                     <properties>
                       <help>Short GI capabilities</help>
                       <completionHelp>
                         <list>20 40</list>
                       </completionHelp>
                       <valueHelp>
                         <format>20</format>
                         <description>Short GI for 20 MHz</description>
                       </valueHelp>
                       <valueHelp>
                         <format>40</format>
                         <description>Short GI for 40 MHz</description>
                       </valueHelp>
                       <constraint>
                         <regex>(20|40)</regex>
                       </constraint>
                       <multi/>
                     </properties>
                   </leafNode>
                   <leafNode name="smps">
                     <properties>
                       <help>Spatial Multiplexing Power Save (SMPS) settings</help>
                       <completionHelp>
                         <list>static dynamic</list>
                       </completionHelp>
                       <valueHelp>
                         <format>static</format>
                         <description>STATIC Spatial Multiplexing (SM) Power Save</description>
                       </valueHelp>
                       <valueHelp>
                         <format>dynamic</format>
                         <description>DYNAMIC Spatial Multiplexing (SM) Power Save</description>
                       </valueHelp>
                       <constraint>
                         <regex>(static|dynamic)</regex>
                       </constraint>
                     </properties>
                   </leafNode>
                   <node name="stbc">
                     <properties>
                       <help>Support for sending and receiving PPDU using STBC (Space Time Block Coding)</help>
                     </properties>
                     <children>
                       <leafNode name="rx">
                         <properties>
                           <help>Enable receiving PPDU using STBC (Space Time Block Coding)</help>
                           <valueHelp>
                             <format>[1-3]+</format>
                             <description>Number of spacial streams that can use RX STBC</description>
                           </valueHelp>
                           <constraint>
                             <regex>[1-3]+</regex>
                           </constraint>
                           <constraintErrorMessage>Invalid capability item</constraintErrorMessage>
                         </properties>
                       </leafNode>
                       <leafNode name="tx">
                         <properties>
                           <help>Enable sending PPDU using STBC (Space Time Block Coding)</help>
                           <valueless/>
                         </properties>
                       </leafNode>
                     </children>
                   </node>
                 </children>
               </node>
               <leafNode name="require-ht">
                 <properties>
                   <help>Require stations to support HT PHY (reject association if they do not)</help>
                   <completionHelp>
                     <script>echo If you reject non-HT, you also disable 802.11g</script>
                   </completionHelp>
                   <valueless/>
                 </properties>
               </leafNode>
               <leafNode name="require-vht">
                 <properties>
                   <help>Require stations to support VHT PHY (reject association if they do not)</help>
                   <completionHelp>
                     <script>echo If you reject non-VHT, you also disable 802.11n</script>
                   </completionHelp>
                   <valueless/>
                 </properties>
               </leafNode>
               <node name="vht">
                 <properties>
                   <help>VHT (Very High Throughput) settings</help>
                 </properties>
                 <children>
                   <leafNode name="antenna-count">
                     <properties>
                       <help>Number of antennas on this card</help>
                       <valueHelp>
                         <format>u32:1-8</format>
                         <description>Number of antennas for this card</description>
                       </valueHelp>
                       <constraint>
                         <validator name="numeric" argument="--range 1-8"/>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="antenna-pattern-fixed">
                     <properties>
                       <help>Set if antenna pattern does not change during the lifetime of an association</help>
                       <valueless/>
                     </properties>
                   </leafNode>
                   <leafNode name="beamform">
                     <properties>
                       <help>Beamforming capabilities</help>
                       <completionHelp>
                         <list>single-user-beamformer single-user-beamformee multi-user-beamformer multi-user-beamformee</list>
                       </completionHelp>
                       <valueHelp>
                         <format>single-user-beamformer</format>
                         <description>Support for operation as single user beamformer</description>
                       </valueHelp>
                       <valueHelp>
                         <format>single-user-beamformee</format>
                         <description>Support for operation as single user beamformee</description>
                       </valueHelp>
                       <valueHelp>
                         <format>multi-user-beamformer</format>
                         <description>Support for operation as multi user beamformer</description>
                       </valueHelp>
                       <valueHelp>
                         <format>multi-user-beamformee</format>
                         <description>Support for operation as multi user beamformee</description>
                       </valueHelp>
                       <constraint>
                         <regex>(single-user-beamformer|single-user-beamformee|multi-user-beamformer|multi-user-beamformee)</regex>
                       </constraint>
                       <multi/>
                     </properties>
                   </leafNode>
                   <node name="center-channel-freq">
                     <properties>
                       <help>VHT operating channel center frequency</help>
                     </properties>
                     <children>
                       <leafNode name="freq-1">
                         <properties>
                           <help>VHT operating channel center frequency - center freq 1 (for use with 80, 80+80 and 160 modes)</help>
                           <valueHelp>
                             <format>u32:34-173</format>
                             <description>5Ghz (802.11 a/h/j/n/ac) center channel index (use 42 for primary 80MHz channel 36)</description>
                           </valueHelp>
                           <constraint>
                             <validator name="numeric" argument="--range 34-173"/>
                           </constraint>
                           <constraintErrorMessage>Channel center value must be between 34 and 173</constraintErrorMessage>
                         </properties>
                       </leafNode>
                       <leafNode name="freq-2">
                         <properties>
                           <help>VHT operating channel center frequency - center freq 2 (for use with the 80+80 mode)</help>
                           <valueHelp>
                             <format>u32:34-173</format>
                             <description>5Ghz (802.11 a/h/j/n/ac) center channel index (use 58 for primary 80MHz channel 52)</description>
                           </valueHelp>
                           <constraint>
                             <validator name="numeric" argument="--range 34-173"/>
                           </constraint>
                           <constraintErrorMessage>Channel center value must be between 34 and 173</constraintErrorMessage>
                         </properties>
                       </leafNode>
                     </children>
                   </node>
                   <leafNode name="channel-set-width">
                     <properties>
                       <help>VHT operating Channel width</help>
                       <completionHelp>
                         <list>0 1 2 3</list>
                       </completionHelp>
                       <valueHelp>
                         <format>0</format>
                         <description>20 or 40 MHz channel width</description>
                       </valueHelp>
                       <valueHelp>
                         <format>1</format>
                         <description>80 MHz channel width</description>
                       </valueHelp>
                       <valueHelp>
                         <format>2</format>
                         <description>160 MHz channel width</description>
                       </valueHelp>
                       <valueHelp>
                         <format>3</format>
                         <description>80+80 MHz channel width</description>
                       </valueHelp>
                       <constraint>
                         <validator name="numeric" argument="--range 0-3"/>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="ldpc">
                     <properties>
                       <help>Enable LDPC (Low Density Parity Check) coding capability</help>
                       <valueless/>
                     </properties>
                   </leafNode>
                   <leafNode name="link-adaptation">
                     <properties>
                       <help>VHT link adaptation capabilities</help>
                       <completionHelp>
                         <list>unsolicited both</list>
                       </completionHelp>
                       <valueHelp>
                         <format>unsolicited</format>
                         <description>Station provides only unsolicited VHT MFB</description>
                       </valueHelp>
                       <valueHelp>
                         <format>both</format>
                         <description>Station can provide VHT MFB in response to VHT MRQ and unsolicited VHT MFB</description>
                       </valueHelp>
                       <constraint>
                         <regex>(unsolicited|both)</regex>
                       </constraint>
                       <constraintErrorMessage>Invalid capability item</constraintErrorMessage>
                     </properties>
                   </leafNode>
                   <leafNode name="max-mpdu-exp">
                     <properties>
                       <help>Set the maximum length of A-MPDU pre-EOF padding that the station can receive</help>
                       <valueHelp>
                         <format>u32:0-7</format>
                         <description>Maximum length of A-MPDU pre-EOF padding = 2 pow(13 + x) -1 octets</description>
                       </valueHelp>
                       <constraint>
                         <validator name="numeric" argument="--range 0-7"/>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="max-mpdu">
                     <properties>
                       <help>Increase Maximum MPDU length to 7991 or 11454 octets (otherwise: 3895 octets)</help>
                       <completionHelp>
                         <list>7991 11454</list>
                       </completionHelp>
                       <valueHelp>
                         <format>7991</format>
                         <description>ncrease Maximum MPDU length to 7991 octets</description>
                       </valueHelp>
                       <valueHelp>
                         <format>11454</format>
                         <description>ncrease Maximum MPDU length to 11454 octets</description>
                       </valueHelp>
                       <constraint>
                         <regex>(7991|11454)</regex>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="short-gi">
                     <properties>
                       <help>Short GI capabilities</help>
                       <completionHelp>
                         <list>80 160</list>
                       </completionHelp>
                       <valueHelp>
                         <format>80</format>
                         <description>Short GI for 80 MHz</description>
                       </valueHelp>
                       <valueHelp>
                         <format>160</format>
                         <description>Short GI for 160 MHz</description>
                       </valueHelp>
                       <constraint>
                         <regex>(80|160)</regex>
                       </constraint>
                       <multi/>
                     </properties>
                   </leafNode>
                   <node name="stbc">
                     <properties>
                       <help>Support for sending and receiving PPDU using STBC (Space Time Block Coding)</help>
                     </properties>
                     <children>
                       <leafNode name="rx">
                         <properties>
                           <help>Enable receiving PPDU using STBC (Space Time Block Coding)</help>
                           <valueHelp>
                             <format>[1-4]+</format>
                             <description>Number of spacial streams that can use RX STBC</description>
                           </valueHelp>
                           <constraint>
                             <regex>[1-4]+</regex>
                           </constraint>
                           <constraintErrorMessage>Invalid capability item</constraintErrorMessage>
                         </properties>
                       </leafNode>
                       <leafNode name="tx">
                         <properties>
                           <help>Enable sending PPDU using STBC (Space Time Block Coding)</help>
                           <valueless/>
                         </properties>
                       </leafNode>
                     </children>
                   </node>
                   <leafNode name="tx-powersave">
                     <properties>
                       <help>Enable VHT TXOP Power Save Mode</help>
                       <valueless/>
                     </properties>
                   </leafNode>
                   <leafNode name="vht-cf">
                     <properties>
                       <help>Station supports receiving VHT variant HT Control field</help>
                       <valueless/>
                     </properties>
                   </leafNode>
                 </children>
               </node>
             </children>
           </node>
           <leafNode name="channel">
             <properties>
               <help>Wireless radio channel</help>
               <valueHelp>
                 <format>0</format>
                 <description>Automatic Channel Selection (ACS)</description>
               </valueHelp>
               <valueHelp>
                 <format>u32:1-14</format>
                 <description>2.4Ghz (802.11 b/g/n) Channel</description>
               </valueHelp>
               <valueHelp>
                 <format>u32:34-173</format>
                 <description>5Ghz (802.11 a/h/j/n/ac) Channel</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 0-0 --range 1-14 --range 34-173"/>
               </constraint>
             </properties>
             <defaultValue>0</defaultValue>
           </leafNode>
           <leafNode name="country-code">
             <properties>
               <help>Indicate country in which device is operating</help>
               <completionHelp>
                 <list>us eu jp de uk cn es fr ru</list>
               </completionHelp>
               <valueHelp>
                 <format>txt</format>
                 <description>ISO/IEC 3166-1 Country Code</description>
               </valueHelp>
               <constraint>
                 <regex>[a-z][a-z]</regex>
               </constraint>
               <constraintErrorMessage>Invalid ISO/IEC 3166-1 Country Code</constraintErrorMessage>
             </properties>
           </leafNode>
-          #include <include/interface/description.xml.i>
+          #include <include/generic-description.xml.i>
           #include <include/interface/dhcp-options.xml.i>
           #include <include/interface/dhcpv6-options.xml.i>
           <leafNode name="disable-broadcast-ssid">
             <properties>
               <help>Disable broadcast of SSID from access-point</help>
               <valueless/>
             </properties>
           </leafNode>
           #include <include/interface/disable-link-detect.xml.i>
           #include <include/interface/disable.xml.i>
           #include <include/interface/vrf.xml.i>
           <leafNode name="expunge-failing-stations">
             <properties>
               <help>Disassociate stations based on excessive transmission failures</help>
               <valueless/>
             </properties>
           </leafNode>
           #include <include/interface/ipv4-options.xml.i>
           #include <include/interface/ipv6-options.xml.i>
           #include <include/interface/hw-id.xml.i>
           <leafNode name="isolate-stations">
             <properties>
               <help>Isolate stations on the AP so they cannot see each other</help>
               <valueless/>
             </properties>
           </leafNode>
           #include <include/interface/mac.xml.i>
           <leafNode name="max-stations">
             <properties>
               <help>Maximum number of wireless radio stations. Excess stations will be rejected upon authentication request.</help>
               <valueHelp>
                 <format>u32:1-2007</format>
                 <description>Number of allowed stations</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 1-2007"/>
               </constraint>
               <constraintErrorMessage>Number of stations must be between 1 and 2007</constraintErrorMessage>
             </properties>
           </leafNode>
           <leafNode name="mgmt-frame-protection">
             <properties>
               <help>Management Frame Protection (MFP) according to IEEE 802.11w</help>
               <completionHelp>
                 <list>disabled optional required</list>
               </completionHelp>
               <valueHelp>
                 <format>disabled</format>
                 <description>no MFP</description>
               </valueHelp>
               <valueHelp>
                 <format>optional</format>
                 <description>MFP optional</description>
               </valueHelp>
               <valueHelp>
                 <format>required</format>
                 <description>MFP enforced</description>
               </valueHelp>
               <constraint>
                 <regex>(disabled|optional|required)</regex>
               </constraint>
             </properties>
             <defaultValue>disabled</defaultValue>
           </leafNode>
           <leafNode name="mode">
             <properties>
               <help>Wireless radio mode</help>
               <completionHelp>
                 <list>a b g n ac</list>
               </completionHelp>
               <valueHelp>
                 <format>a</format>
                 <description>802.11a - 54 Mbits/sec</description>
               </valueHelp>
               <valueHelp>
                 <format>b</format>
                 <description>802.11b - 11 Mbits/sec</description>
               </valueHelp>
               <valueHelp>
                 <format>g</format>
                 <description>802.11g - 54 Mbits/sec</description>
               </valueHelp>
               <valueHelp>
                 <format>n</format>
                 <description>802.11n - 600 Mbits/sec</description>
               </valueHelp>
               <valueHelp>
                 <format>ac</format>
                 <description>802.11ac - 1300 Mbits/sec</description>
               </valueHelp>
               <constraint>
                 <regex>(a|b|g|n|ac)</regex>
               </constraint>
             </properties>
             <defaultValue>g</defaultValue>
           </leafNode>
           #include <include/interface/mirror.xml.i>
           <leafNode name="physical-device">
             <properties>
               <help>Wireless physical device</help>
               <completionHelp>
                 <script>${vyos_completion_dir}/list_wireless_phys.sh</script>
               </completionHelp>
               <constraint>
                 <validator name="wireless-phy"/>
               </constraint>
             </properties>
             <defaultValue>phy0</defaultValue>
           </leafNode>
           <leafNode name="reduce-transmit-power">
             <properties>
               <help>Transmission power reduction in dBm</help>
               <valueHelp>
                 <format>u32:0-255</format>
                 <description>TX power reduction in dBm</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 0-255"/>
               </constraint>
               <constraintErrorMessage>dBm value must be between 0 and 255</constraintErrorMessage>
             </properties>
           </leafNode>
           <node name="security">
             <properties>
               <help>Wireless security settings</help>
             </properties>
             <children>
               <node name="wep">
                 <properties>
                   <help>Wired Equivalent Privacy (WEP) parameters</help>
                 </properties>
                 <children>
                   <leafNode name="key">
                     <properties>
                       <help>WEP encryption key</help>
                       <valueHelp>
                         <format>txt</format>
                         <description>Wired Equivalent Privacy key</description>
                       </valueHelp>
                       <constraint>
                         <regex>([a-fA-F0-9]{10}|[a-fA-F0-9]{26}|[a-fA-F0-9]{32})</regex>
                       </constraint>
                       <constraintErrorMessage>Invalid WEP key</constraintErrorMessage>
                       <multi/>
                     </properties>
                   </leafNode>
                 </children>
               </node>
               <node name="wpa">
                 <properties>
                   <help>Wifi Protected Access (WPA) parameters</help>
                 </properties>
                 <children>
                   <leafNode name="cipher">
                     <properties>
                       <help>Cipher suite for WPA unicast packets</help>
                       <completionHelp>
                         <list>GCMP-256 GCMP CCMP-256 CCMP TKIP</list>
                       </completionHelp>
                       <valueHelp>
                         <format>GCMP-256</format>
                         <description>AES in Galois/counter mode with 256-bit key</description>
                       </valueHelp>
                       <valueHelp>
                         <format>GCMP</format>
                         <description>AES in Galois/counter mode with 128-bit key</description>
                       </valueHelp>
                       <valueHelp>
                         <format>CCMP-256</format>
                         <description>AES in Counter mode with CBC-MAC with 256-bit key</description>
                       </valueHelp>
                       <valueHelp>
                         <format>CCMP</format>
                         <description>AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0] (supported on all WPA2 APs)</description>
                       </valueHelp>
                       <valueHelp>
                         <format>TKIP</format>
                         <description>Temporal Key Integrity Protocol [IEEE 802.11i/D7.0]</description>
                       </valueHelp>
                       <constraint>
                         <regex>(GCMP-256|GCMP|CCMP-256|CCMP|TKIP)</regex>
                       </constraint>
                       <constraintErrorMessage>Invalid cipher selection</constraintErrorMessage>
                       <multi/>
                     </properties>
                   </leafNode>
                   <leafNode name="group-cipher">
                     <properties>
                       <help>Cipher suite for WPA multicast and broadcast packets</help>
                       <completionHelp>
                         <list>GCMP-256 GCMP CCMP-256 CCMP TKIP</list>
                       </completionHelp>
                       <valueHelp>
                         <format>GCMP-256</format>
                         <description>AES in Galois/counter mode with 256-bit key</description>
                       </valueHelp>
                       <valueHelp>
                         <format>GCMP</format>
                         <description>AES in Galois/counter mode with 128-bit key</description>
                       </valueHelp>
                       <valueHelp>
                         <format>CCMP-256</format>
                         <description>AES in Counter mode with CBC-MAC with 256-bit key</description>
                       </valueHelp>
                       <valueHelp>
                         <format>CCMP</format>
                         <description>AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0] (supported on all WPA2 APs)</description>
                       </valueHelp>
                       <valueHelp>
                         <format>TKIP</format>
                         <description>Temporal Key Integrity Protocol [IEEE 802.11i/D7.0]</description>
                       </valueHelp>
                       <constraint>
                         <regex>(GCMP-256|GCMP|CCMP-256|CCMP|TKIP)</regex>
                       </constraint>
                       <constraintErrorMessage>Invalid group cipher selection</constraintErrorMessage>
                       <multi/>
                     </properties>
                   </leafNode>
                   <leafNode name="mode">
                     <properties>
                       <help>WPA mode</help>
                       <completionHelp>
                         <list>wpa wpa2 wpa+wpa2 wpa3</list>
                       </completionHelp>
                       <valueHelp>
                         <format>wpa</format>
                         <description>WPA (IEEE 802.11i/D3.0)</description>
                       </valueHelp>
                       <valueHelp>
                         <format>wpa2</format>
                         <description>WPA2 (full IEEE 802.11i/RSN)</description>
                       </valueHelp>
                       <valueHelp>
                         <format>wpa+wpa2</format>
                         <description>Allow both WPA and WPA2</description>
                       </valueHelp>
                       <constraint>
                         <regex>(wpa|wpa2|wpa\+wpa2|wpa3)</regex>
                       </constraint>
                       <constraintErrorMessage>Unknown WPA mode</constraintErrorMessage>
                     </properties>
                     <defaultValue>wpa+wpa2</defaultValue>
                   </leafNode>
                   <leafNode name="passphrase">
                     <properties>
                       <help>WPA personal shared pass phrase. If you are using special characters in the WPA passphrase then single quotes are required.</help>
                       <valueHelp>
                         <format>txt</format>
                         <description>Passphrase of at least 8 but not more than 63 printable characters</description>
                       </valueHelp>
                       <constraint>
                         <regex>.{8,63}</regex>
                       </constraint>
                       <constraintErrorMessage>Invalid WPA pass phrase, must be 8 to 63 printable characters!</constraintErrorMessage>
                     </properties>
                   </leafNode>
                   #include <include/radius-server-ipv4.xml.i>
                   <node name="radius">
                     <children>
                       <tagNode name="server">
                         <children>
                           <leafNode name="accounting">
                             <properties>
                               <help>Enable RADIUS server to receive accounting info</help>
                               <valueless/>
                             </properties>
                           </leafNode>
                         </children>
                       </tagNode>
                     </children>
                   </node>
                 </children>
               </node>
             </children>
           </node>
           <leafNode name="ssid">
             <properties>
               <help>Wireless access-point service set identifier (SSID)</help>
               <constraint>
                 <regex>.{1,32}</regex>
               </constraint>
               <constraintErrorMessage>Invalid SSID</constraintErrorMessage>
             </properties>
           </leafNode>
           <leafNode name="type">
             <properties>
               <help>Wireless device type for this interface</help>
               <completionHelp>
                 <list>access-point station monitor</list>
               </completionHelp>
               <valueHelp>
                 <format>access-point</format>
                 <description>Access-point forwards packets between other nodes</description>
               </valueHelp>
               <valueHelp>
                 <format>station</format>
                 <description>Connects to another access point</description>
               </valueHelp>
               <valueHelp>
                 <format>monitor</format>
                 <description>Passively monitor all packets on the frequency/channel</description>
               </valueHelp>
               <constraint>
                 <regex>(access-point|station|monitor)</regex>
               </constraint>
               <constraintErrorMessage>Type must be access-point, station or monitor</constraintErrorMessage>
             </properties>
             <defaultValue>monitor</defaultValue>
           </leafNode>
           #include <include/interface/redirect.xml.i>
           #include <include/interface/vif.xml.i>
           #include <include/interface/vif-s.xml.i>
         </children>
       </tagNode>
     </children>
   </node>
 </interfaceDefinition>
diff --git a/interface-definitions/interfaces-wwan.xml.in b/interface-definitions/interfaces-wwan.xml.in
index 758784540..5fa3be8db 100644
--- a/interface-definitions/interfaces-wwan.xml.in
+++ b/interface-definitions/interfaces-wwan.xml.in
@@ -1,48 +1,48 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="interfaces">
     <children>
       <tagNode name="wwan" owner="${vyos_conf_scripts_dir}/interfaces-wwan.py">
         <properties>
           <help>Wireless Modem (WWAN) Interface</help>
           <priority>350</priority>
           <completionHelp>
             <script>cd /sys/class/net; if compgen -G "wwan*" > /dev/null; then ls -d wwan*; fi</script>
           </completionHelp>
           <constraint>
             <regex>wwan[0-9]+</regex>
           </constraint>
           <constraintErrorMessage>Wireless Modem interface must be named wwanN</constraintErrorMessage>
           <valueHelp>
             <format>wwanN</format>
             <description>Wireless Wide Area Network interface name</description>
           </valueHelp>
         </properties>
         <children>
           #include <include/interface/address-ipv4-ipv6-dhcp.xml.i>
           <leafNode name="apn">
             <properties>
               <help>Access Point Name (APN)</help>
             </properties>
           </leafNode>
           #include <include/interface/dhcp-options.xml.i>
           #include <include/interface/dhcpv6-options.xml.i>
           #include <include/interface/authentication.xml.i>
-          #include <include/interface/description.xml.i>
+          #include <include/generic-description.xml.i>
           #include <include/interface/disable.xml.i>
           #include <include/interface/disable-link-detect.xml.i>
           #include <include/interface/mirror.xml.i>
           #include <include/interface/mtu-68-1500.xml.i>
           <leafNode name="mtu">
             <defaultValue>1430</defaultValue>
           </leafNode>
           #include <include/interface/ipv4-options.xml.i>
           #include <include/interface/ipv6-options.xml.i>
           #include <include/interface/dial-on-demand.xml.i>
           #include <include/interface/redirect.xml.i>
           #include <include/interface/vrf.xml.i>
         </children>
       </tagNode>
     </children>
   </node>
 </interfaceDefinition>
diff --git a/interface-definitions/netns.xml.in b/interface-definitions/netns.xml.in
index 088985cb6..87880e96a 100644
--- a/interface-definitions/netns.xml.in
+++ b/interface-definitions/netns.xml.in
@@ -1,23 +1,23 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="netns" owner="${vyos_conf_scripts_dir}/netns.py">
     <properties>
       <help>Network namespace</help>
       <priority>299</priority>
     </properties>
     <children>
       <tagNode name="name">
         <properties>
           <help>Network namespace name</help>
           <constraint>
             <regex>[a-zA-Z0-9-_]{1,100}</regex>
           </constraint>
           <constraintErrorMessage>Netns name must be alphanumeric and can contain hyphens and underscores.</constraintErrorMessage>
         </properties>
         <children>
-          #include <include/interface/description.xml.i>
+          #include <include/generic-description.xml.i>
         </children>
       </tagNode>
     </children>
   </node>
 </interfaceDefinition>
diff --git a/interface-definitions/service-console-server.xml.in b/interface-definitions/service-console-server.xml.in
index fb71538dd..fc6dbe954 100644
--- a/interface-definitions/service-console-server.xml.in
+++ b/interface-definitions/service-console-server.xml.in
@@ -1,100 +1,100 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="service">
     <children>
       <node name="console-server" owner="${vyos_conf_scripts_dir}/service_console-server.py">
         <properties>
           <help>Serial Console Server</help>
         </properties>
         <children>
           <tagNode name="device">
             <properties>
               <help>System serial interface name (ttyS or ttyUSB)</help>
               <completionHelp>
                 <script>ls -1 /dev | grep ttyS</script>
                 <script>if [ -d /dev/serial/by-bus ]; then ls -1 /dev/serial/by-bus; fi</script>
               </completionHelp>
               <valueHelp>
                 <format>ttySxxx</format>
                 <description>Regular serial interface</description>
               </valueHelp>
               <valueHelp>
                 <format>usbxbxpx</format>
                 <description>USB based serial interface</description>
               </valueHelp>
               <constraint>
                 <regex>(ttyS\d+|usb\d+b.*p.*)</regex>
               </constraint>
             </properties>
             <children>
-              #include <include/interface/description.xml.i>
+              #include <include/generic-description.xml.i>
               <leafNode name="alias">
                 <properties>
                   <help>Human-readable name for this console</help>
                   <constraint>
                     <regex>[-_a-zA-Z0-9.]{1,128}</regex>
                   </constraint>
                 </properties>
               </leafNode>
               <leafNode name="speed">
                 <properties>
                   <help>Serial port baud rate</help>
                   <completionHelp>
                     <list>300 1200 2400 4800 9600 19200 38400 57600 115200</list>
                   </completionHelp>
                   <constraint>
                     <regex>(300|1200|2400|4800|9600|19200|38400|57600|115200)</regex>
                   </constraint>
                 </properties>
               </leafNode>
               <leafNode name="data-bits">
                 <properties>
                   <help>Serial port data bits</help>
                   <completionHelp>
                     <list>7 8</list>
                   </completionHelp>
                   <constraint>
                     <validator name="numeric" argument="--range 7-8"/>
                   </constraint>
                 </properties>
                 <defaultValue>8</defaultValue>
               </leafNode>
               <leafNode name="stop-bits">
                 <properties>
                   <help>Serial port stop bits</help>
                   <completionHelp>
                     <list>1 2</list>
                   </completionHelp>
                   <constraint>
                     <validator name="numeric" argument="--range 1-2"/>
                   </constraint>
                 </properties>
                 <defaultValue>1</defaultValue>
               </leafNode>
               <leafNode name="parity">
                 <properties>
                   <help>Parity setting</help>
                   <completionHelp>
                     <list>even odd none</list>
                   </completionHelp>
                   <constraint>
                     <regex>(even|odd|none)</regex>
                   </constraint>
                 </properties>
                 <defaultValue>none</defaultValue>
               </leafNode>
               <node name="ssh">
                 <properties>
                   <help>SSH remote access to this console</help>
                 </properties>
                 <children>
                   #include <include/port-number.xml.i>
                 </children>
               </node>
             </children>
           </tagNode>
         </children>
       </node>
     </children>
   </node>
 </interfaceDefinition>
diff --git a/interface-definitions/vrf.xml.in b/interface-definitions/vrf.xml.in
index 3604b41c8..96c6d8be2 100644
--- a/interface-definitions/vrf.xml.in
+++ b/interface-definitions/vrf.xml.in
@@ -1,140 +1,140 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="vrf" owner="${vyos_conf_scripts_dir}/vrf.py">
     <properties>
       <help>Virtual Routing and Forwarding</help>
       <!-- must be before any interface, check /opt/vyatta/sbin/priority.pl -->
       <priority>299</priority>
     </properties>
     <children>
       <leafNode name="bind-to-all">
         <properties>
           <help>Enable binding services to all VRFs</help>
           <valueless/>
         </properties>
       </leafNode>
       <tagNode name="name">
         <properties>
           <help>Virtual Routing and Forwarding instance</help>
           <constraint>
             <validator name="vrf-name"/>
           </constraint>
           <constraintErrorMessage>VRF instance name must be 15 characters or less and can not\nbe named as regular network interfaces.\nA name must starts from a letter.\n</constraintErrorMessage>
           <valueHelp>
             <format>txt</format>
             <description>VRF instance name</description>
           </valueHelp>
         </properties>
         <children>
-          #include <include/interface/description.xml.i>
+          #include <include/generic-description.xml.i>
           #include <include/interface/disable.xml.i>
           <node name="ip">
             <properties>
               <help>IPv4 routing parameters</help>
             </properties>
             <children>
               #include <include/interface/disable-forwarding.xml.i>
             </children>
           </node>
           <node name="ipv6">
             <properties>
               <help>IPv6 routing parameters</help>
             </properties>
             <children>
               #include <include/interface/disable-forwarding.xml.i>
             </children>
           </node>
           <node name="protocols">
             <properties>
               <help>Routing protocol parameters</help>
             </properties>
             <children>
               <node name="bgp" owner="${vyos_conf_scripts_dir}/protocols_bgp.py $VAR(../../@)">
                 <properties>
                   <help>Border Gateway Protocol (BGP)</help>
                   <priority>821</priority>
                 </properties>
                 <children>
                   #include <include/bgp/protocol-common-config.xml.i>
                 </children>
               </node>
               <node name="eigrp" owner="${vyos_conf_scripts_dir}/protocols_eigrp.py $VAR(../../@)">
                 <properties>
                   <help>Enhanced Interior Gateway Routing Protocol (EIGRP)</help>
                   <priority>821</priority>
                 </properties>
                 <children>
                   #include <include/eigrp/protocol-common-config.xml.i>
                 </children>
               </node>
               <node name="isis" owner="${vyos_conf_scripts_dir}/protocols_isis.py $VAR(../../@)">
                 <properties>
                   <help>Intermediate System to Intermediate System (IS-IS)</help>
                   <priority>611</priority>
                 </properties>
                 <children>
                   #include <include/isis/protocol-common-config.xml.i>
                 </children>
               </node>
               <node name="ospf" owner="${vyos_conf_scripts_dir}/protocols_ospf.py $VAR(../../@)">
                 <properties>
                   <help>Open Shortest Path First (OSPF)</help>
                   <priority>621</priority>
                 </properties>
                 <children>
                   #include <include/ospf/protocol-common-config.xml.i>
                 </children>
               </node>
               <node name="ospfv3" owner="${vyos_conf_scripts_dir}/protocols_ospfv3.py $VAR(../../@)">
                 <properties>
                   <help>Open Shortest Path First (OSPF) for IPv6</help>
                   <priority>621</priority>
                 </properties>
                 <children>
                   #include <include/ospfv3/protocol-common-config.xml.i>
                 </children>
               </node>
               <node name="static" owner="${vyos_conf_scripts_dir}/protocols_static.py $VAR(../../@)">
                 <properties>
                   <help>Static Routing</help>
                   <priority>481</priority>
                 </properties>
                 <children>
                   #include <include/static/static-route.xml.i>
                   #include <include/static/static-route6.xml.i>
                 </children>
               </node>
             </children>
           </node>
           <leafNode name="table">
             <properties>
               <help>Routing table associated with this instance</help>
               <valueHelp>
                 <format>u32:100-65535</format>
                 <description>Routing table ID</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 100-65535"/>
               </constraint>
               <constraintErrorMessage>VRF routing table must be in range from 100 to 65535</constraintErrorMessage>
             </properties>
           </leafNode>
           <leafNode name="vni" owner="${vyos_conf_scripts_dir}/vrf_vni.py">
             <properties>
               <help>Virtual Network Identifier</help>
               <!-- priority must be after BGP -->
               <priority>822</priority>
               <valueHelp>
                 <format>u32:0-16777214</format>
                 <description>VXLAN virtual network identifier</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 0-16777214"/>
               </constraint>
             </properties>
           </leafNode>
         </children>
       </tagNode>
     </children>
   </node>
 </interfaceDefinition>