diff --git a/interface-definitions/include/accel-ppp/client-ip-pool.xml.i b/interface-definitions/include/accel-ppp/client-ip-pool.xml.i
index dff574e6c..71fe69f8d 100644
--- a/interface-definitions/include/accel-ppp/client-ip-pool.xml.i
+++ b/interface-definitions/include/accel-ppp/client-ip-pool.xml.i
@@ -1,46 +1,46 @@
 <!-- include start from accel-ppp/client-ip-pool.xml.i -->
 <tagNode name="client-ip-pool">
   <properties>
     <help>Client IP pool</help>
     <valueHelp>
       <format>txt</format>
       <description>Name of IP pool</description>
     </valueHelp>
     <constraint>
-      <regex>[-_a-zA-Z0-9.]+</regex>
+      #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
     </constraint>
   </properties>
   <children>
     <leafNode name="range">
       <properties>
         <help>Range of IP addresses</help>
         <valueHelp>
           <format>ipv4net</format>
           <description>IPv4 prefix</description>
         </valueHelp>
         <valueHelp>
           <format>ipv4range</format>
           <description>IPv4 address range inside /24 network</description>
         </valueHelp>
         <constraint>
           <validator name="ipv4-prefix"/>
           <validator name="ipv4-host"/>
           <validator name="ipv4-range-mask"  argument="-m 24 -r"/>
         </constraint>
       </properties>
     </leafNode>
     <leafNode name="next-pool">
       <properties>
         <help>Next pool name</help>
         <valueHelp>
           <format>txt</format>
           <description>Name of IP pool</description>
         </valueHelp>
         <constraint>
-          <regex>[-_a-zA-Z0-9.]+</regex>
+          #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
         </constraint>
       </properties>
     </leafNode>
   </children>
 </tagNode>
 <!-- include end -->
diff --git a/interface-definitions/include/accel-ppp/default-pool.xml.i b/interface-definitions/include/accel-ppp/default-pool.xml.i
index 832594c12..a08b066b1 100644
--- a/interface-definitions/include/accel-ppp/default-pool.xml.i
+++ b/interface-definitions/include/accel-ppp/default-pool.xml.i
@@ -1,14 +1,14 @@
 <!-- include start from accel-ppp/default-pool.xml.i -->
 <leafNode name="default-pool">
   <properties>
     <help>Default client IP pool name</help>
     <valueHelp>
       <format>txt</format>
       <description>Default IP pool</description>
     </valueHelp>
     <constraint>
-      <regex>[-_a-zA-Z0-9.]+</regex>
+      #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
     </constraint>
   </properties>
 </leafNode>
 <!-- include end -->
diff --git a/interface-definitions/include/bgp/afi-route-map-export-import.xml.i b/interface-definitions/include/bgp/afi-route-map-export-import.xml.i
index c218937c8..388991241 100644
--- a/interface-definitions/include/bgp/afi-route-map-export-import.xml.i
+++ b/interface-definitions/include/bgp/afi-route-map-export-import.xml.i
@@ -1,34 +1,34 @@
 <!-- include start from bgp/afi-route-map.xml.i -->
 <leafNode name="export">
   <properties>
     <help>Route-map to filter outgoing route updates</help>
     <completionHelp>
       <path>policy route-map</path>
     </completionHelp>
     <valueHelp>
       <format>txt</format>
       <description>Route map name</description>
     </valueHelp>
     <constraint>
-      <regex>[-_a-zA-Z0-9.]+</regex>
+      #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
     </constraint>
     <constraintErrorMessage>Name of route-map can only contain alpha-numeric letters, hyphen and underscores</constraintErrorMessage>
   </properties>
 </leafNode>
 <leafNode name="import">
   <properties>
     <help>Route-map to filter incoming route updates</help>
     <completionHelp>
       <path>policy route-map</path>
     </completionHelp>
     <valueHelp>
       <format>txt</format>
       <description>Route map name</description>
     </valueHelp>
     <constraint>
-      <regex>[-_a-zA-Z0-9.]+</regex>
+      #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
     </constraint>
     <constraintErrorMessage>Name of route-map can only contain alpha-numeric letters, hyphen and underscores</constraintErrorMessage>
   </properties>
 </leafNode>
 <!-- include end -->
diff --git a/interface-definitions/include/bgp/neighbor-afi-ipv4-ipv6-common.xml.i b/interface-definitions/include/bgp/neighbor-afi-ipv4-ipv6-common.xml.i
index 9ec513da9..c8ad68700 100644
--- a/interface-definitions/include/bgp/neighbor-afi-ipv4-ipv6-common.xml.i
+++ b/interface-definitions/include/bgp/neighbor-afi-ipv4-ipv6-common.xml.i
@@ -1,205 +1,205 @@
 <!-- include start from bgp/neighbor-afi-ipv4-ipv6-common.xml.i -->
 
 <leafNode name="addpath-tx-all">
   <properties>
     <help>Use addpath to advertise all paths to a neighbor</help>
     <valueless/>
   </properties>
 </leafNode>
 <leafNode name="addpath-tx-per-as">
   <properties>
     <help>Use addpath to advertise the bestpath per each neighboring AS</help>
     <valueless/>
   </properties>
 </leafNode>
 <node name="conditionally-advertise">
   <properties>
     <help>Use route-map to conditionally advertise routes</help>
   </properties>
   <children>
     <leafNode name="advertise-map">
       <properties>
         <help>Route-map to conditionally advertise routes</help>
         <completionHelp>
           <path>policy route-map</path>
         </completionHelp>
         <valueHelp>
           <format>txt</format>
           <description>Route map name</description>
         </valueHelp>
         <constraint>
-          <regex>[-_a-zA-Z0-9.]+</regex>
+          #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
         </constraint>
         <constraintErrorMessage>Name of route-map can only contain alpha-numeric letters, hyphen and underscores</constraintErrorMessage>
       </properties>
     </leafNode>
     <leafNode name="exist-map">
       <properties>
         <help>Advertise routes only if prefixes in exist-map are installed in BGP table</help>
         <completionHelp>
           <path>policy route-map</path>
         </completionHelp>
         <valueHelp>
           <format>txt</format>
           <description>Route map name</description>
         </valueHelp>
         <constraint>
-          <regex>[-_a-zA-Z0-9.]+</regex>
+          #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
         </constraint>
         <constraintErrorMessage>Name of route-map can only contain alpha-numeric letters, hyphen and underscores</constraintErrorMessage>
       </properties>
     </leafNode>
     <leafNode name="non-exist-map">
       <properties>
         <help>Advertise routes only if prefixes in non-exist-map are not installed in BGP table</help>
         <completionHelp>
           <path>policy route-map</path>
         </completionHelp>
         <valueHelp>
           <format>txt</format>
           <description>Route map name</description>
         </valueHelp>
         <constraint>
-          <regex>[-_a-zA-Z0-9.]+</regex>
+          #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
         </constraint>
         <constraintErrorMessage>Name of route-map can only contain alpha-numeric letters, hyphen and underscores</constraintErrorMessage>
       </properties>
     </leafNode>
   </children>
 </node>
 #include <include/bgp/afi-allowas-in.xml.i>
 <leafNode name="as-override">
   <properties>
     <help>Override ASN in outbound updates to configured neighbor local-as</help>
     <valueless/>
   </properties>
 </leafNode>
 #include <include/bgp/afi-attribute-unchanged.xml.i>
 <node name="disable-send-community">
   <properties>
     <help>Disable sending community attributes to this peer</help>
   </properties>
   <children>
     <leafNode name="extended">
       <properties>
         <help>Disable sending extended community attributes to this peer</help>
         <valueless/>
       </properties>
     </leafNode>
     <leafNode name="standard">
       <properties>
         <help>Disable sending standard community attributes to this peer</help>
         <valueless/>
       </properties>
     </leafNode>
   </children>
 </node>
 <node name="distribute-list">
   <properties>
     <help>Access-list to filter route updates to/from this peer-group</help>
   </properties>
   <children>
     <leafNode name="export">
       <properties>
         <help>Access-list to filter outgoing route updates to this peer-group</help>
         <completionHelp>
           <path>policy access-list</path>
         </completionHelp>
         <valueHelp>
           <format>u32:1-65535</format>
           <description>Access-list to filter outgoing route updates to this peer-group</description>
         </valueHelp>
         <constraint>
           <validator name="numeric" argument="--range 1-65535"/>
         </constraint>
       </properties>
     </leafNode>
     <leafNode name="import">
       <properties>
         <help>Access-list to filter incoming route updates from this peer-group</help>
         <completionHelp>
           <path>policy access-list</path>
         </completionHelp>
         <valueHelp>
           <format>u32:1-65535</format>
           <description>Access-list to filter incoming route updates from this peer-group</description>
         </valueHelp>
         <constraint>
           <validator name="numeric" argument="--range 1-65535"/>
         </constraint>
       </properties>
     </leafNode>
   </children>
 </node>
 #include <include/bgp/afi-filter-list.xml.i>
 <leafNode name="maximum-prefix">
   <properties>
     <help>Maximum number of prefixes to accept from this peer</help>
     <valueHelp>
       <format>u32:1-4294967295</format>
       <description>Prefix limit</description>
     </valueHelp>
     <constraint>
       <validator name="numeric" argument="--range 1-4294967295"/>
     </constraint>
   </properties>
 </leafNode>
 <leafNode name="maximum-prefix-out">
   <properties>
     <help>Maximum number of prefixes to be sent to this peer</help>
     <valueHelp>
       <format>u32:1-4294967295</format>
       <description>Prefix limit</description>
     </valueHelp>
     <constraint>
       <validator name="numeric" argument="--range 1-4294967295"/>
     </constraint>
   </properties>
 </leafNode>
 #include <include/bgp/afi-nexthop-self.xml.i>
 <node name="remove-private-as">
   <properties>
     <help>Remove private AS numbers from AS path in outbound route updates</help>
   </properties>
   <children>
     <leafNode name="all">
       <properties>
         <help>Remove private AS numbers to all AS numbers in outbound route updates</help>
         <valueless/>
       </properties>
     </leafNode>
   </children>
 </node>
 #include <include/bgp/afi-route-map.xml.i>
 #include <include/bgp/afi-route-reflector-client.xml.i>
 #include <include/bgp/afi-route-server-client.xml.i>
 #include <include/bgp/afi-soft-reconfiguration.xml.i>
 <leafNode name="unsuppress-map">
   <properties>
     <help>Route-map to selectively unsuppress suppressed routes</help>
     <completionHelp>
       <path>policy route-map</path>
     </completionHelp>
     <valueHelp>
       <format>txt</format>
       <description>Route map name</description>
     </valueHelp>
     <constraint>
-      <regex>[-_a-zA-Z0-9.]+</regex>
+      #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
     </constraint>
     <constraintErrorMessage>Name of route-map can only contain alpha-numeric letters, hyphen and underscores</constraintErrorMessage>
   </properties>
 </leafNode>
 <leafNode name="weight">
   <properties>
     <help>Default weight for routes from this peer</help>
     <valueHelp>
       <format>u32:1-65535</format>
       <description>Default weight</description>
     </valueHelp>
     <constraint>
       <validator name="numeric" argument="--range 1-65535"/>
     </constraint>
   </properties>
 </leafNode>
 <!-- include end -->
diff --git a/interface-definitions/include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i b/interface-definitions/include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i
new file mode 100644
index 000000000..7aeb85260
--- /dev/null
+++ b/interface-definitions/include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i
@@ -0,0 +1,3 @@
+<!-- include start from constraint/alpha-numeric-hyphen-underscore-dot.xml.i -->
+<regex>[-_a-zA-Z0-9.]+</regex>
+<!-- include end -->
diff --git a/interface-definitions/include/route-map.xml.i b/interface-definitions/include/route-map.xml.i
index 019868373..e49c388d6 100644
--- a/interface-definitions/include/route-map.xml.i
+++ b/interface-definitions/include/route-map.xml.i
@@ -1,18 +1,18 @@
 <!-- include start from route-map.xml.i -->
 <leafNode name="route-map">
   <properties>
     <help>Specify route-map name to use</help>
     <completionHelp>
       <path>policy route-map</path>
     </completionHelp>
     <valueHelp>
       <format>txt</format>
       <description>Route map name</description>
     </valueHelp>
     <constraint>
-      <regex>[-_a-zA-Z0-9.]+</regex>
+      #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
     </constraint>
     <constraintErrorMessage>Name of route-map can only contain alpha-numeric letters, hyphen and underscores</constraintErrorMessage>
   </properties>
 </leafNode>
 <!-- include end -->
diff --git a/interface-definitions/pki.xml.in b/interface-definitions/pki.xml.in
index 3449819be..097c541ac 100644
--- a/interface-definitions/pki.xml.in
+++ b/interface-definitions/pki.xml.in
@@ -1,234 +1,243 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="pki" owner="${vyos_conf_scripts_dir}/pki.py">
     <properties>
       <help>VyOS PKI configuration</help>
       <priority>300</priority>
     </properties>
     <children>
       <tagNode name="ca">
         <properties>
           <help>Certificate Authority</help>
+          <constraint>
+            #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
+          </constraint>
         </properties>
         <children>
           <leafNode name="certificate">
             <properties>
               <help>CA certificate in PEM format</help>
               <constraint>
                 <validator name="base64"/>
               </constraint>
               <constraintErrorMessage>CA certificate is not base64-encoded</constraintErrorMessage>
             </properties>
           </leafNode>
           #include <include/generic-description.xml.i>
           <node name="private">
             <properties>
               <help>CA private key in PEM format</help>
             </properties>
             <children>
               <leafNode name="key">
                 <properties>
                   <help>CA private key in PEM format</help>
                   <constraint>
                     <validator name="base64"/>
                   </constraint>
                   <constraintErrorMessage>CA private key is not base64-encoded</constraintErrorMessage>
                 </properties>
               </leafNode>
               <leafNode name="password-protected">
                 <properties>
                   <help>CA private key is password protected</help>
                   <valueless/>
                 </properties>
               </leafNode>
             </children>
           </node>
           <leafNode name="crl">
             <properties>
               <help>Certificate revocation list in PEM format</help>
               <constraint>
                 <validator name="base64"/>
               </constraint>
               <constraintErrorMessage>CRL is not base64-encoded</constraintErrorMessage>
               <multi/>
             </properties>
           </leafNode>
           <leafNode name="revoke">
             <properties>
               <help>If parent CA is present, this CA certificate will be included in generated CRLs</help>
               <valueless/>
             </properties>
           </leafNode>
         </children>
       </tagNode>
       <tagNode name="certificate">
         <properties>
           <help>Certificate</help>
+          <constraint>
+            #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
+          </constraint>
         </properties>
         <children>
           <leafNode name="certificate">
             <properties>
               <help>Certificate in PEM format</help>
               <constraint>
                 <validator name="base64"/>
               </constraint>
               <constraintErrorMessage>Certificate is not base64-encoded</constraintErrorMessage>
             </properties>
           </leafNode>
           #include <include/generic-description.xml.i>
           <node name="private">
             <properties>
               <help>Certificate private key</help>
             </properties>
             <children>
               <leafNode name="key">
                 <properties>
                   <help>Certificate private key in PEM format</help>
                   <constraint>
                     <validator name="base64"/>
                   </constraint>
                   <constraintErrorMessage>Certificate private key is not base64-encoded</constraintErrorMessage>
                 </properties>
               </leafNode>
               <leafNode name="password-protected">
                 <properties>
                   <help>Certificate private key is password protected</help>
                   <valueless/>
                 </properties>
               </leafNode>
             </children>
           </node>
           <leafNode name="revoke">
             <properties>
               <help>If CA is present, this certificate will be included in generated CRLs</help>
               <valueless/>
             </properties>
           </leafNode>
         </children>
       </tagNode>
       <tagNode name="dh">
         <properties>
           <help>Diffie-Hellman parameters</help>
+          <constraint>
+            #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
+          </constraint>
         </properties>
         <children>
           <leafNode name="parameters">
             <properties>
               <help>DH parameters in PEM format</help>
               <constraint>
                 <validator name="base64"/>
               </constraint>
               <constraintErrorMessage>DH parameters are not base64-encoded</constraintErrorMessage>
             </properties>
           </leafNode>
         </children>
       </tagNode>
       <tagNode name="key-pair">
         <properties>
           <help>Public and private keys</help>
         </properties>
         <children>
           <node name="public">
             <properties>
               <help>Public key</help>
             </properties>
             <children>
               <leafNode name="key">
                 <properties>
                   <help>Public key in PEM format</help>
                   <constraint>
                     <validator name="base64"/>
                   </constraint>
                   <constraintErrorMessage>Public key is not base64-encoded</constraintErrorMessage>
                 </properties>
               </leafNode>
             </children>
           </node>
           <node name="private">
             <properties>
               <help>Private key</help>
             </properties>
             <children>
               <leafNode name="key">
                 <properties>
                   <help>Private key in PEM format</help>
                   <constraint>
                     <validator name="base64"/>
                   </constraint>
                   <constraintErrorMessage>Private key is not base64-encoded</constraintErrorMessage>
                 </properties>
               </leafNode>
               <leafNode name="password-protected">
                 <properties>
                   <help>Private key is password protected</help>
                   <valueless/>
                 </properties>
               </leafNode>
             </children>
           </node>
         </children>
       </tagNode>
       <node name="openvpn">
         <properties>
           <help>OpenVPN keys</help>
         </properties>
         <children>
           <tagNode name="shared-secret">
             <properties>
               <help>OpenVPN shared secret key</help>
             </properties>
             <children>
               <leafNode name="key">
                 <properties>
                   <help>OpenVPN shared secret key data</help>
                 </properties>
               </leafNode>
               <leafNode name="version">
                 <properties>
                   <help>OpenVPN shared secret key version</help>
                 </properties>
               </leafNode>
             </children>
           </tagNode>
         </children>
       </node>
       <node name="x509">
         <properties>
           <help>X509 Settings</help>
         </properties>
         <children>
           <node name="default">
             <properties>
               <help>X509 Default Values</help>
             </properties>
             <children>
               <leafNode name="country">
                 <properties>
                   <help>Default country</help>
                 </properties>
                 <defaultValue>GB</defaultValue>
               </leafNode>
               <leafNode name="state">
                 <properties>
                   <help>Default state</help>
                 </properties>
                 <defaultValue>Some-State</defaultValue>
               </leafNode>
               <leafNode name="locality">
                 <properties>
                   <help>Default locality</help>
                 </properties>
                 <defaultValue>Some-City</defaultValue>
               </leafNode>
               <leafNode name="organization">
                 <properties>
                   <help>Default organization</help>
                 </properties>
                 <defaultValue>VyOS</defaultValue>
               </leafNode>
             </children>
           </node>
         </children>
       </node>
     </children>
   </node>
 </interfaceDefinition>
diff --git a/interface-definitions/policy.xml.in b/interface-definitions/policy.xml.in
index 0d2ed9746..0d82cd3f8 100644
--- a/interface-definitions/policy.xml.in
+++ b/interface-definitions/policy.xml.in
@@ -1,1570 +1,1570 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="policy" owner="${vyos_conf_scripts_dir}/policy.py">
     <properties>
       <priority>200</priority>
       <help>Routing policy</help>
     </properties>
     <children>
       <tagNode name="access-list">
         <properties>
           <help>IP access-list filter</help>
           <valueHelp>
             <format>u32:1-99</format>
             <description>IP standard access list</description>
           </valueHelp>
           <valueHelp>
             <format>u32:100-199</format>
             <description>IP extended access list</description>
           </valueHelp>
           <valueHelp>
             <format>u32:1300-1999</format>
             <description>IP standard access list (expanded range)</description>
           </valueHelp>
           <valueHelp>
             <format>u32:2000-2699</format>
             <description>IP extended access list (expanded range)</description>
           </valueHelp>
         </properties>
         <children>
           #include <include/generic-description.xml.i>
           <tagNode name="rule">
             <properties>
               <help>Rule for this access-list</help>
               <valueHelp>
                 <format>u32:1-65535</format>
                 <description>Access-list rule number</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 1-65535"/>
               </constraint>
             </properties>
             <children>
               #include <include/policy/action.xml.i>
               #include <include/generic-description.xml.i>
               <node name="destination">
                 <properties>
                   <help>Destination network or address</help>
                 </properties>
                 <children>
                   <leafNode name="any">
                     <properties>
                       <help>Any IP address to match</help>
                       <valueless/>
                     </properties>
                   </leafNode>
                   #include <include/policy/host.xml.i>
                   #include <include/policy/inverse-mask.xml.i>
                   #include <include/policy/network.xml.i>
                 </children>
               </node>
               <node name="source">
                 <properties>
                   <help>Source network or address to match</help>
                 </properties>
                 <children>
                   <leafNode name="any">
                     <properties>
                       <help>Any IP address to match</help>
                       <valueless/>
                     </properties>
                   </leafNode>
                   #include <include/policy/host.xml.i>
                   #include <include/policy/inverse-mask.xml.i>
                   #include <include/policy/network.xml.i>
                 </children>
               </node>
             </children>
           </tagNode>
         </children>
       </tagNode>
       <tagNode name="access-list6">
         <properties>
           <help>IPv6 access-list filter</help>
           <valueHelp>
             <format>txt</format>
             <description>Name of IPv6 access-list</description>
           </valueHelp>
         </properties>
         <children>
           #include <include/generic-description.xml.i>
           <tagNode name="rule">
             <properties>
               <help>Rule for this access-list6</help>
               <valueHelp>
                 <format>u32:1-65535</format>
                 <description>Access-list6 rule number</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 1-65535"/>
               </constraint>
             </properties>
             <children>
               #include <include/policy/action.xml.i>
               #include <include/generic-description.xml.i>
               <node name="source">
                 <properties>
                   <help>Source IPv6 network to match</help>
                 </properties>
                 <children>
                   <leafNode name="any">
                     <properties>
                       <help>Any IP address to match</help>
                       <valueless/>
                     </properties>
                   </leafNode>
                   <leafNode name="exact-match">
                     <properties>
                       <help>Exact match of the network prefixes</help>
                       <valueless/>
                     </properties>
                   </leafNode>
                   <leafNode name="network">
                     <properties>
                       <help>Network/netmask to match</help>
                       <valueHelp>
                         <format>ipv6net</format>
                         <description>IPv6 address and prefix length</description>
                       </valueHelp>
                       <constraint>
                         <validator name="ipv6-prefix"/>
                       </constraint>
                     </properties>
                   </leafNode>
                 </children>
               </node>
             </children>
           </tagNode>
         </children>
       </tagNode>
       <tagNode name="as-path-list">
         <properties>
           <help>Add a BGP autonomous system path filter</help>
           <valueHelp>
             <format>txt</format>
             <description>AS path list name</description>
           </valueHelp>
         </properties>
         <children>
           #include <include/generic-description.xml.i>
           <tagNode name="rule">
             <properties>
               <help>Rule for this as-path-list</help>
               <valueHelp>
                 <format>u32:1-65535</format>
                 <description>AS path list rule number</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 1-65535"/>
               </constraint>
             </properties>
             <children>
               #include <include/policy/action.xml.i>
               #include <include/generic-description.xml.i>
               <leafNode name="regex">
                 <properties>
                   <help>Regular expression to match against an AS path</help>
                   <valueHelp>
                     <format>txt</format>
                     <description>AS path regular expression (ex: "64501 64502")</description>
                   </valueHelp>
                 </properties>
               </leafNode>
             </children>
           </tagNode>
         </children>
       </tagNode>
       <tagNode name="community-list">
         <properties>
           <help>Add a BGP community list entry</help>
           <valueHelp>
             <format>txt</format>
             <description>BGP community-list name</description>
           </valueHelp>
         </properties>
         <children>
           #include <include/generic-description.xml.i>
           <tagNode name="rule">
             <properties>
               <help>Rule for this BGP community list</help>
               <valueHelp>
                 <format>u32:1-65535</format>
                 <description>Community-list rule number</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 1-65535"/>
               </constraint>
             </properties>
             <children>
               #include <include/policy/action.xml.i>
               #include <include/generic-description.xml.i>
               <leafNode name="regex">
                 <properties>
                   <help>Regular expression to match against a community-list</help>
                   <completionHelp>
                     <list>local-AS no-advertise no-export internet additive</list>
                   </completionHelp>
                   <valueHelp>
                     <format>&lt;aa:nn&gt;</format>
                     <description>Community number in AA:NN format</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local-AS</format>
                     <description>Well-known communities value NO_EXPORT_SUBCONFED 0xFFFFFF03</description>
                   </valueHelp>
                   <valueHelp>
                     <format>no-advertise</format>
                     <description>Well-known communities value NO_ADVERTISE 0xFFFFFF02</description>
                   </valueHelp>
                   <valueHelp>
                     <format>no-export</format>
                     <description>Well-known communities value NO_EXPORT 0xFFFFFF01</description>
                   </valueHelp>
                   <valueHelp>
                     <format>internet</format>
                     <description>Well-known communities value 0</description>
                   </valueHelp>
                   <valueHelp>
                     <format>additive</format>
                     <description>New value is appended to the existing value</description>
                   </valueHelp>
                 </properties>
               </leafNode>
             </children>
           </tagNode>
         </children>
       </tagNode>
       <tagNode name="extcommunity-list">
         <properties>
           <help>Add a BGP extended community list entry</help>
           <valueHelp>
             <format>txt</format>
             <description>BGP extended community-list name</description>
           </valueHelp>
           <constraint>
             #include <include/constraint/alpha-numeric-hyphen-underscore.xml.i>
           </constraint>
           <constraintErrorMessage>Should be an alphanumeric name</constraintErrorMessage>
         </properties>
         <children>
           #include <include/generic-description.xml.i>
           <tagNode name="rule">
             <properties>
               <help>Rule for this BGP extended community list</help>
               <valueHelp>
                 <format>u32:1-65535</format>
                 <description>Extended community-list rule number</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 1-65535"/>
               </constraint>
             </properties>
             <children>
               #include <include/policy/action.xml.i>
               #include <include/generic-description.xml.i>
               <leafNode name="regex">
                 <properties>
                   <help>Regular expression to match against an extended community list</help>
                   <valueHelp>
                     <format>&lt;aa:nn:nn&gt;</format>
                     <description>Extended community list regular expression</description>
                   </valueHelp>
                   <valueHelp>
                     <format>&lt;rt aa:nn:nn&gt;</format>
                     <description>Route Target regular expression</description>
                   </valueHelp>
                   <valueHelp>
                     <format>&lt;soo aa:nn:nn&gt;</format>
                     <description>Site of Origin regular expression</description>
                   </valueHelp>
                 </properties>
               </leafNode>
             </children>
           </tagNode>
         </children>
       </tagNode>
       <tagNode name="large-community-list">
         <properties>
           <help>Add a BGP large community list entry</help>
           <valueHelp>
             <format>txt</format>
             <description>BGP large-community-list name</description>
           </valueHelp>
           <constraint>
             #include <include/constraint/alpha-numeric-hyphen-underscore.xml.i>
           </constraint>
           <constraintErrorMessage>Should be an alphanumeric name</constraintErrorMessage>
         </properties>
         <children>
           #include <include/generic-description.xml.i>
           <tagNode name="rule">
             <properties>
               <help>Rule for this BGP extended community list</help>
               <valueHelp>
                 <format>u32:1-65535</format>
                 <description>Large community-list rule number</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 1-65535"/>
               </constraint>
             </properties>
             <children>
               #include <include/policy/action.xml.i>
               #include <include/generic-description.xml.i>
               <leafNode name="regex">
                 <properties>
                   <help>Regular expression to match against a large community list</help>
                   <valueHelp>
                     <format>ASN:NN:NN</format>
                     <description>BGP large-community-list filter</description>
                   </valueHelp>
                   <valueHelp>
                     <format>IP:NN:NN</format>
                     <description>BGP large-community-list filter (IPv4 address format)</description>
                   </valueHelp>
                   <constraint>
                     <validator name="bgp-large-community-list"/>
                   </constraint>
                   <constraintErrorMessage>Malformed large-community-list</constraintErrorMessage>
                 </properties>
               </leafNode>
             </children>
           </tagNode>
         </children>
       </tagNode>
       <tagNode name="prefix-list">
         <properties>
           <help>IP prefix-list filter</help>
           <valueHelp>
             <format>txt</format>
             <description>Name of IPv4 prefix-list</description>
           </valueHelp>
           <constraint>
             #include <include/constraint/alpha-numeric-hyphen-underscore.xml.i>
           </constraint>
           <constraintErrorMessage>Name of prefix-list can only contain alpha-numeric letters, hyphen and underscores</constraintErrorMessage>
         </properties>
         <children>
           #include <include/generic-description.xml.i>
           <tagNode name="rule">
             <properties>
               <help>Rule for this prefix-list</help>
               <valueHelp>
                 <format>u32:1-65535</format>
                 <description>Prefix-list rule number</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 1-65535"/>
               </constraint>
             </properties>
             <children>
               #include <include/policy/action.xml.i>
               #include <include/generic-description.xml.i>
               <leafNode name="ge">
                 <properties>
                   <help>Prefix length to match a netmask greater than or equal to it</help>
                   <valueHelp>
                     <format>u32:0-32</format>
                     <description>Netmask greater than length</description>
                   </valueHelp>
                   <constraint>
                     <validator name="numeric" argument="--range 0-32"/>
                   </constraint>
                 </properties>
               </leafNode>
               <leafNode name="le">
                 <properties>
                   <help>Prefix length to match a netmask less than or equal to it</help>
                   <valueHelp>
                     <format>u32:0-32</format>
                     <description>Netmask less than length</description>
                   </valueHelp>
                   <constraint>
                     <validator name="numeric" argument="--range 0-32"/>
                   </constraint>
                 </properties>
               </leafNode>
               <leafNode name="prefix">
                 <properties>
                   <help>Prefix to match</help>
                   <valueHelp>
                     <format>ipv4net</format>
                     <description>Prefix to match against</description>
                   </valueHelp>
                   <constraint>
                     <validator name="ipv4-prefix"/>
                   </constraint>
                 </properties>
               </leafNode>
             </children>
           </tagNode>
         </children>
       </tagNode>
       <tagNode name="prefix-list6">
         <properties>
           <help>IPv6 prefix-list filter</help>
           <valueHelp>
             <format>txt</format>
             <description>Name of IPv6 prefix-list</description>
           </valueHelp>
           <constraint>
             #include <include/constraint/alpha-numeric-hyphen-underscore.xml.i>
           </constraint>
           <constraintErrorMessage>Name of prefix-list6 can only contain alpha-numeric letters, hyphen and underscores</constraintErrorMessage>
         </properties>
         <children>
           #include <include/generic-description.xml.i>
           <tagNode name="rule">
             <properties>
               <help>Rule for this prefix-list6</help>
               <valueHelp>
                 <format>u32:1-65535</format>
                 <description>Prefix-list rule number</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 1-65535"/>
               </constraint>
             </properties>
             <children>
               #include <include/policy/action.xml.i>
               #include <include/generic-description.xml.i>
               <leafNode name="ge">
                 <properties>
                   <help>Prefix length to match a netmask greater than or equal to it</help>
                   <valueHelp>
                     <format>u32:0-128</format>
                     <description>Netmask greater than length</description>
                   </valueHelp>
                   <constraint>
                     <validator name="numeric" argument="--range 0-128"/>
                   </constraint>
                 </properties>
               </leafNode>
               <leafNode name="le">
                 <properties>
                   <help>Prefix length to match a netmask less than or equal to it</help>
                   <valueHelp>
                     <format>u32:0-128</format>
                     <description>Netmask less than length</description>
                   </valueHelp>
                   <constraint>
                     <validator name="numeric" argument="--range 0-128"/>
                   </constraint>
                 </properties>
               </leafNode>
               <leafNode name="prefix">
                 <properties>
                   <help>Prefix to match</help>
                   <valueHelp>
                     <format>ipv6net</format>
                     <description>IPv6 prefix</description>
                   </valueHelp>
                   <constraint>
                     <validator name="ipv6-prefix"/>
                   </constraint>
                 </properties>
               </leafNode>
             </children>
           </tagNode>
         </children>
       </tagNode>
       <tagNode name="route-map">
         <properties>
           <help>IP route-map</help>
           <valueHelp>
             <format>txt</format>
             <description>Route map name</description>
           </valueHelp>
           <constraint>
-            <regex>[-_a-zA-Z0-9.]+</regex>
+            #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
           </constraint>
           <constraintErrorMessage>Name of route-map can only contain alpha-numeric letters, hyphen and underscores</constraintErrorMessage>
         </properties>
         <children>
           #include <include/generic-description.xml.i>
           <tagNode name="rule">
             <properties>
               <help>Rule for this route-map</help>
               <valueHelp>
                 <format>u32:1-65535</format>
                 <description>Route-map rule number</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 1-65535"/>
               </constraint>
             </properties>
             <children>
               #include <include/policy/action.xml.i>
               <leafNode name="call">
                 <properties>
                   <help>Call another route-map on match</help>
                   <valueHelp>
                     <format>txt</format>
                     <description>Route map name</description>
                   </valueHelp>
                   <completionHelp>
                     <path>policy route-map</path>
                   </completionHelp>
                 </properties>
               </leafNode>
               <leafNode name="continue">
                 <properties>
                   <help>Jump to a different rule in this route-map on a match</help>
                   <valueHelp>
                     <format>u32:1-65535</format>
                     <description>Rule number</description>
                   </valueHelp>
                 </properties>
               </leafNode>
               #include <include/generic-description.xml.i>
               <node name="match">
                 <properties>
                   <help>Route parameters to match</help>
                 </properties>
                 <children>
                   <leafNode name="as-path">
                     <properties>
                       <help>BGP as-path-list to match</help>
                       <completionHelp>
                         <path>policy as-path-list</path>
                       </completionHelp>
                     </properties>
                   </leafNode>
                   <node name="community">
                     <properties>
                       <help>BGP community-list to match</help>
                     </properties>
                     <children>
                       <leafNode name="community-list">
                         <properties>
                           <help>BGP community-list to match</help>
                           <completionHelp>
                             <path>policy community-list</path>
                           </completionHelp>
                         </properties>
                       </leafNode>
                       <leafNode name="exact-match">
                         <properties>
                           <help>Community-list to exactly match</help>
                           <valueless/>
                         </properties>
                       </leafNode>
                     </children>
                   </node>
                   <node name="evpn">
                     <properties>
                       <help>Ethernet Virtual Private Network</help>
                     </properties>
                     <children>
                       <leafNode name="default-route">
                         <properties>
                           <help>Default EVPN type-5 route</help>
                           <valueless/>
                         </properties>
                       </leafNode>
                       #include <include/bgp/route-distinguisher.xml.i>
                       <leafNode name="route-type">
                         <properties>
                           <help>Match route-type</help>
                           <completionHelp>
                             <list>macip multicast prefix</list>
                           </completionHelp>
                           <valueHelp>
                             <format>macip</format>
                             <description>mac-ip route</description>
                           </valueHelp>
                           <valueHelp>
                             <format>multicast</format>
                             <description>IMET route</description>
                           </valueHelp>
                           <valueHelp>
                             <format>prefix</format>
                             <description>Prefix route</description>
                           </valueHelp>
                           <constraint>
                             <regex>(macip|multicast|prefix)</regex>
                           </constraint>
                         </properties>
                       </leafNode>
                       #include <include/vni.xml.i>
                     </children>
                   </node>
                   <leafNode name="extcommunity">
                     <properties>
                       <help>BGP extended community to match</help>
                       <completionHelp>
                         <path>policy extcommunity-list</path>
                       </completionHelp>
                     </properties>
                   </leafNode>
                   #include <include/generic-interface.xml.i>
                   <node name="ip">
                     <properties>
                       <help>IP prefix parameters to match</help>
                     </properties>
                     <children>
                       <node name="address">
                         <properties>
                           <help>IP address of route to match</help>
                         </properties>
                         <children>
                           <leafNode name="access-list">
                             <properties>
                               <help>IP access-list to match</help>
                               <valueHelp>
                                 <format>u32:1-99</format>
                                 <description>IP standard access list</description>
                               </valueHelp>
                               <valueHelp>
                                 <format>u32:100-199</format>
                                 <description>IP extended access list</description>
                               </valueHelp>
                               <valueHelp>
                                 <format>u32:1300-1999</format>
                                 <description>IP standard access list (expanded range)</description>
                               </valueHelp>
                               <valueHelp>
                                 <format>u32:2000-2699</format>
                                 <description>IP extended access list (expanded range)</description>
                               </valueHelp>
                             </properties>
                           </leafNode>
                           <leafNode name="prefix-list">
                             <properties>
                               <help>IP prefix-list to match</help>
                               <completionHelp>
                                 <path>policy prefix-list</path>
                               </completionHelp>
                             </properties>
                           </leafNode>
                           <leafNode name="prefix-len">
                             <properties>
                               <help>IP prefix-length to match (can be used for kernel routes only)</help>
                               <valueHelp>
                                 <format>u32:0-32</format>
                                 <description>Prefix length</description>
                               </valueHelp>
                               <constraint>
                                 <validator name="numeric" argument="--range 0-32"/>
                               </constraint>
                             </properties>
                           </leafNode>
                         </children>
                       </node>
                 <!--  T3304 but it overwrite node nexthop
                       <leafNode name="nexthop">
                         <properties>
                           <help>IP next-hop of route to match</help>
                           <valueHelp>
                             <format>ipv4</format>
                             <description>Next-hop IPv4 router address</description>
                           </valueHelp>
                           <constraint>
                             <validator name="ipv4-address"/>
                           </constraint>
                         </properties>
                       </leafNode>   -->
                       <node name="nexthop">
                         <properties>
                           <help>IP next-hop of route to match</help>
                         </properties>
                         <children>
                           <leafNode name="address">
                             <properties>
                               <help>IP address to match</help>
                               <valueHelp>
                                 <format>ipv4</format>
                                 <description>Nexthop IP address</description>
                               </valueHelp>
                               <constraint>
                                 <validator name="ipv4-address"/>
                               </constraint>
                             </properties>
                           </leafNode>
                           <leafNode name="access-list">
                             <properties>
                               <help>IP access-list to match</help>
                               <valueHelp>
                                 <format>u32:1-99</format>
                                 <description>IP standard access list</description>
                               </valueHelp>
                               <valueHelp>
                                 <format>u32:100-199</format>
                                 <description>IP extended access list</description>
                               </valueHelp>
                               <valueHelp>
                                 <format>u32:1300-1999</format>
                                 <description>IP standard access list (expanded range)</description>
                               </valueHelp>
                               <valueHelp>
                                 <format>u32:2000-2699</format>
                                 <description>IP extended access list (expanded range)</description>
                               </valueHelp>
                             </properties>
                           </leafNode>
                           <leafNode name="prefix-len">
                             <properties>
                               <help>IP prefix-length to match</help>
                               <valueHelp>
                                 <format>u32:0-32</format>
                                 <description>Prefix length</description>
                               </valueHelp>
                               <constraint>
                                 <validator name="numeric" argument="--range 0-32"/>
                               </constraint>
                             </properties>
                           </leafNode>
                           <leafNode name="prefix-list">
                             <properties>
                               <help>IP prefix-list to match</help>
                               <completionHelp>
                                 <path>policy prefix-list</path>
                               </completionHelp>
                             </properties>
                           </leafNode>
                           <leafNode name="type">
                             <properties>
                               <help>Match type</help>
                               <completionHelp>
                                 <list>blackhole</list>
                               </completionHelp>
                               <valueHelp>
                                 <format>blackhole</format>
                                 <description>Blackhole</description>
                               </valueHelp>
                               <constraint>
                                 <regex>(blackhole)</regex>
                               </constraint>
                             </properties>
                           </leafNode>
                         </children>
                       </node>
                       <node name="route-source">
                         <properties>
                           <help>Match advertising source address of route</help>
                         </properties>
                         <children>
                           <leafNode name="access-list">
                             <properties>
                               <help>IP access-list to match</help>
                               <valueHelp>
                                 <format>u32:1-99</format>
                                 <description>IP standard access list</description>
                               </valueHelp>
                               <valueHelp>
                                 <format>u32:100-199</format>
                                 <description>IP extended access list</description>
                               </valueHelp>
                               <valueHelp>
                                 <format>u32:1300-1999</format>
                                 <description>IP standard access list (expanded range)</description>
                               </valueHelp>
                               <valueHelp>
                                 <format>u32:2000-2699</format>
                                 <description>IP extended access list (expanded range)</description>
                               </valueHelp>
                             </properties>
                           </leafNode>
                           <leafNode name="prefix-list">
                             <properties>
                               <help>IP prefix-list to match</help>
                               <completionHelp>
                                 <path>policy prefix-list</path>
                               </completionHelp>
                             </properties>
                           </leafNode>
                         </children>
                       </node>
                     </children>
                   </node>
                   <node name="ipv6">
                     <properties>
                       <help>IPv6 prefix parameters to match</help>
                     </properties>
                     <children>
                       <node name="address">
                         <properties>
                           <help>IPv6 address of route to match</help>
                         </properties>
                         <children>
                           <leafNode name="access-list">
                             <properties>
                               <help>IPv6 access-list to match</help>
                               <valueHelp>
                                 <format>txt</format>
                                 <description>IPV6 access list name</description>
                               </valueHelp>
                               <completionHelp>
                                 <path>policy access-list6</path>
                               </completionHelp>
                             </properties>
                           </leafNode>
                           <leafNode name="prefix-list">
                             <properties>
                               <help>IPv6 prefix-list to match</help>
                               <completionHelp>
                                 <path>policy prefix-list6</path>
                               </completionHelp>
                             </properties>
                           </leafNode>
                           <leafNode name="prefix-len">
                             <properties>
                               <help>IPv6 prefix-length to match (can be used for kernel routes only)</help>
                               <valueHelp>
                                 <format>u32:0-128</format>
                                 <description>Prefix length</description>
                               </valueHelp>
                               <constraint>
                                 <validator name="numeric" argument="--range 0-128"/>
                               </constraint>
                             </properties>
                           </leafNode>
                         </children>
                       </node>
                 <!--  T3976 but it overwrite node nexthop
                       <leafNode name="nexthop">
                         <properties>
                           <help>IPv6 next-hop of route to match</help>
                           <valueHelp>
                             <format>ipv6</format>
                             <description>Nexthop IPv6 address</description>
                           </valueHelp>
                           <constraint>
                             <validator name="ipv6-address"/>
                           </constraint>
                         </properties>
                       </leafNode>
                     </children>
                   </node> -->
                       <node name="nexthop">
                         <properties>
                           <help>IPv6 next-hop of route to match</help>
                         </properties>
                         <children>
                           <leafNode name="address">
                             <properties>
                               <help>IPv6 address of next-hop</help>
                               <valueHelp>
                                 <format>ipv6</format>
                                 <description>Nexthop IPv6 address</description>
                               </valueHelp>
                               <constraint>
                                 <validator name="ipv6-address"/>
                               </constraint>
                             </properties>
                           </leafNode>
                           <leafNode name="access-list">
                             <properties>
                               <help>IPv6 access-list to match</help>
                               <valueHelp>
                                 <format>txt</format>
                                 <description>IPV6 access list name</description>
                               </valueHelp>
                               <completionHelp>
                                 <path>policy access-list6</path>
                               </completionHelp>
                             </properties>
                           </leafNode>
                           <leafNode name="prefix-list">
                             <properties>
                               <help>IPv6 prefix-list to match</help>
                               <completionHelp>
                                 <path>policy prefix-list6</path>
                               </completionHelp>
                             </properties>
                           </leafNode>
                           <leafNode name="type">
                             <properties>
                               <help>Match type</help>
                               <completionHelp>
                                 <list>blackhole</list>
                               </completionHelp>
                               <valueHelp>
                                 <format>blackhole</format>
                                 <description>Blackhole</description>
                               </valueHelp>
                               <constraint>
                                 <regex>(blackhole)</regex>
                               </constraint>
                             </properties>
                           </leafNode>
                         </children>
                       </node>
                     </children>
                   </node>
                   <node name="large-community">
                     <properties>
                       <help>Match BGP large communities</help>
                     </properties>
                     <children>
                       <leafNode name="large-community-list">
                         <properties>
                           <help>BGP large-community-list to match</help>
                           <completionHelp>
                             <path>policy large-community-list</path>
                           </completionHelp>
                         </properties>
                       </leafNode>
                     </children>
                   </node>
                   <leafNode name="local-preference">
                     <properties>
                       <help>Local Preference</help>
                       <valueHelp>
                         <format>u32:0-4294967295</format>
                         <description>Local Preference</description>
                       </valueHelp>
                       <constraint>
                         <validator name="numeric" argument="--range 0-4294967295"/>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="metric">
                     <properties>
                       <help>Metric of route to match</help>
                       <valueHelp>
                         <format>u32:1-65535</format>
                         <description>Route metric</description>
                       </valueHelp>
                       <constraint>
                         <validator name="numeric" argument="--range 1-65535"/>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="origin">
                     <properties>
                       <help>BGP origin code to match</help>
                       <completionHelp>
                         <list>egp igp incomplete</list>
                       </completionHelp>
                       <valueHelp>
                         <format>egp</format>
                         <description>Exterior gateway protocol origin</description>
                       </valueHelp>
                       <valueHelp>
                         <format>igp</format>
                         <description>Interior gateway protocol origin</description>
                       </valueHelp>
                       <valueHelp>
                         <format>incomplete</format>
                         <description>Incomplete origin</description>
                       </valueHelp>
                       <constraint>
                         <regex>(egp|igp|incomplete)</regex>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="peer">
                     <properties>
                       <help>Peer address to match</help>
                       <valueHelp>
                         <format>ipv4</format>
                         <description>Peer IP address</description>
                       </valueHelp>
                       <valueHelp>
                         <format>ipv6</format>
                         <description>Peer IPv6 address</description>
                       </valueHelp>
                       <constraint>
                         <validator name="ip-address"/>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="protocol">
                     <properties>
                       <help>Match protocol via which the route was learnt</help>
                       <completionHelp>
                         <list>babel bgp connected isis kernel ospf ospfv3 rip ripng static table vnc</list>
                       </completionHelp>
                       <valueHelp>
                         <format>babel</format>
                         <description>Babel routing protocol (Babel)</description>
                       </valueHelp>
                       <valueHelp>
                         <format>bgp</format>
                         <description>Border Gateway Protocol (BGP)</description>
                       </valueHelp>
                       <valueHelp>
                         <format>connected</format>
                         <description>Connected routes (directly attached subnet or host)</description>
                       </valueHelp>
                       <valueHelp>
                         <format>isis</format>
                         <description>Intermediate System to Intermediate System (IS-IS)</description>
                       </valueHelp>
                       <valueHelp>
                         <format>kernel</format>
                         <description>Kernel routes</description>
                       </valueHelp>
                       <valueHelp>
                         <format>ospf</format>
                         <description>Open Shortest Path First (OSPFv2)</description>
                       </valueHelp>
                       <valueHelp>
                         <format>ospfv3</format>
                         <description>Open Shortest Path First (IPv6) (OSPFv3)</description>
                       </valueHelp>
                       <valueHelp>
                         <format>rip</format>
                         <description>Routing Information Protocol (RIP)</description>
                       </valueHelp>
                       <valueHelp>
                         <format>ripng</format>
                         <description>Routing Information Protocol next-generation (IPv6) (RIPng)</description>
                       </valueHelp>
                       <valueHelp>
                         <format>static</format>
                         <description>Statically configured routes</description>
                       </valueHelp>
                       <valueHelp>
                         <format>table</format>
                         <description>Non-main Kernel Routing Table</description>
                       </valueHelp>
                       <valueHelp>
                         <format>vnc</format>
                         <description>Virtual Network Control (VNC)</description>
                       </valueHelp>
                       <constraint>
                         <regex>(babel|bgp|connected|isis|kernel|ospf|ospfv3|rip|ripng|static|table|vnc)</regex>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="rpki">
                     <properties>
                       <help>Match RPKI validation result</help>
                       <completionHelp>
                         <list>invalid notfound valid</list>
                       </completionHelp>
                       <valueHelp>
                         <format>invalid</format>
                         <description>Match invalid entries</description>
                       </valueHelp>
                       <valueHelp>
                         <format>notfound</format>
                         <description>Match notfound entries</description>
                       </valueHelp>
                       <valueHelp>
                         <format>valid</format>
                         <description>Match valid entries</description>
                       </valueHelp>
                       <constraint>
                         <regex>(invalid|notfound|valid)</regex>
                       </constraint>
                     </properties>
                   </leafNode>
                   #include <include/policy/tag.xml.i>
                 </children>
               </node>
               <node name="on-match">
                 <properties>
                   <help>Exit policy on matches</help>
                 </properties>
                 <children>
                   <leafNode name="goto">
                     <properties>
                       <help>Rule number to goto on match</help>
                       <valueHelp>
                         <format>u32:1-65535</format>
                         <description>Rule number</description>
                       </valueHelp>
                       <constraint>
                         <validator name="numeric" argument="--range 1-65535"/>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="next">
                     <properties>
                       <help>Next sequence number to goto on match</help>
                       <valueless/>
                     </properties>
                   </leafNode>
                 </children>
               </node>
               <node name="set">
                 <properties>
                   <help>Route parameters</help>
                 </properties>
                 <children>
                   <node name="aggregator">
                     <properties>
                       <help>BGP aggregator attribute</help>
                     </properties>
                     <children>
                       <leafNode name="as">
                         <properties>
                           <help>AS number of an aggregation</help>
                           <valueHelp>
                             <format>u32:1-4294967295</format>
                             <description>Rule number</description>
                           </valueHelp>
                           <constraint>
                             <validator name="numeric" argument="--range 1-4294967295"/>
                           </constraint>
                         </properties>
                       </leafNode>
                       <leafNode name="ip">
                         <properties>
                           <help>IP address of an aggregation</help>
                           <valueHelp>
                             <format>ipv4</format>
                             <description>IP address</description>
                           </valueHelp>
                           <constraint>
                             <validator name="ipv4-address"/>
                           </constraint>
                         </properties>
                       </leafNode>
                     </children>
                   </node>
                   <node name="as-path">
                     <properties>
                       <help>Transform BGP AS_PATH attribute</help>
                     </properties>
                     <children>
                       <leafNode name="exclude">
                         <properties>
                           <help>Remove/exclude from the as-path attribute</help>
                           <valueHelp>
                             <format>u32</format>
                             <description>AS number</description>
                           </valueHelp>
                           <constraint>
                             <validator name="as-number-list"/>
                           </constraint>
                         </properties>
                       </leafNode>
                       <leafNode name="prepend">
                         <properties>
                           <help>Prepend to the as-path</help>
                           <valueHelp>
                             <format>u32</format>
                             <description>AS number</description>
                           </valueHelp>
                           <constraint>
                             <validator name="as-number-list"/>
                           </constraint>
                         </properties>
                       </leafNode>
                       <leafNode name="prepend-last-as">
                         <properties>
                           <help>Use the last AS-number in the as-path</help>
                           <valueHelp>
                             <format>u32:1-10</format>
                             <description>Number of times to insert</description>
                           </valueHelp>
                           <constraint>
                             <validator name="numeric" argument="--range 1-10"/>
                           </constraint>
                         </properties>
                       </leafNode>
                     </children>
                   </node>
                   <leafNode name="atomic-aggregate">
                     <properties>
                       <help>BGP atomic aggregate attribute</help>
                       <valueless/>
                     </properties>
                   </leafNode>
                   <node name="community">
                     <properties>
                       <help>BGP community attribute</help>
                     </properties>
                     <children>
                       <leafNode name="add">
                         <properties>
                           <help>Add communities to a prefix</help>
                           #include <include/policy/community-value-list.xml.i>
                         </properties>
                       </leafNode>
                       <leafNode name="replace">
                         <properties>
                           <help>Set communities for a prefix</help>
                           #include <include/policy/community-value-list.xml.i>
                         </properties>
                       </leafNode>
                       #include <include/policy/community-clear.xml.i>
                       <leafNode name="delete">
                         <properties>
                           <help>Remove communities defined in a list from a prefix</help>
                           <completionHelp>
                             <path>policy community-list</path>
                           </completionHelp>
                           <valueHelp>
                             <description>Community-list</description>
                             <format>txt</format>
                           </valueHelp>
                         </properties>
                       </leafNode>
                     </children>
                   </node>
                   <node name="large-community">
                     <properties>
                       <help>BGP large community attribute</help>
                     </properties>
                     <children>
                       <leafNode name="add">
                         <properties>
                           <help>Add large communities to a prefix ;</help>
                           #include <include/policy/large-community-value-list.xml.i>
                         </properties>
                       </leafNode>
                       <leafNode name="replace">
                         <properties>
                           <help>Set large communities for a prefix</help>
                           #include <include/policy/large-community-value-list.xml.i>
                         </properties>
                       </leafNode>
                       #include <include/policy/community-clear.xml.i>
                       <leafNode name="delete">
                         <properties>
                           <help>Remove communities defined in a list from a prefix</help>
                           <completionHelp>
                             <path>policy large-community-list</path>
                           </completionHelp>
                           <valueHelp>
                             <description>Community-list</description>
                             <format>txt</format>
                           </valueHelp>
                         </properties>
                       </leafNode>
                     </children>
                   </node>
                   <node name="extcommunity">
                     <properties>
                       <help>BGP extended community attribute</help>
                     </properties>
                     <children>
                       <leafNode name="bandwidth">
                         <properties>
                           <help>Bandwidth value in Mbps</help>
                           <completionHelp>
                             <list>cumulative num-multipaths</list>
                           </completionHelp>
                           <valueHelp>
                             <format>u32:1-25600</format>
                             <description>Bandwidth value in Mbps</description>
                           </valueHelp>
                           <valueHelp>
                             <format>cumulative</format>
                             <description>Cumulative bandwidth of all multipaths (outbound-only)</description>
                           </valueHelp>
                           <valueHelp>
                             <format>num-multipaths</format>
                             <description>Internally computed bandwidth based on number of multipaths (outbound-only)</description>
                           </valueHelp>
                           <constraint>
                             <validator name="numeric" argument="--range 1-25600"/>
                             <regex>(cumulative|num-multipaths)</regex>
                           </constraint>
                         </properties>
                       </leafNode>
                       <leafNode name="bandwidth-non-transitive">
                         <properties>
                           <help>The link bandwidth extended community is encoded as non-transitive</help>
                           <valueless/>
                         </properties>
                       </leafNode>
                       <leafNode name="rt">
                         <properties>
                           <help>Set route target value</help>
                           #include <include/policy/extended-community-value-list.xml.i>
                         </properties>
                       </leafNode>
                       <leafNode name="soo">
                         <properties>
                           <help>Set Site of Origin value</help>
                           #include <include/policy/extended-community-value-list.xml.i>
                         </properties>
                       </leafNode>
                       #include <include/policy/community-clear.xml.i>
                     </children>
                   </node>
                   <leafNode name="distance">
                     <properties>
                       <help>Locally significant administrative distance</help>
                       <valueHelp>
                         <format>u32:0-255</format>
                         <description>Distance value</description>
                       </valueHelp>
                       <constraint>
                         <validator name="numeric" argument="--range 0-255"/>
                       </constraint>
                     </properties>
                   </leafNode>
                   <node name="evpn">
                     <properties>
                       <help>Ethernet Virtual Private Network</help>
                     </properties>
                     <children>
                       <node name="gateway">
                         <properties>
                           <help>Set gateway IP for prefix advertisement route</help>
                         </properties>
                         <children>
                           <leafNode name="ipv4">
                             <properties>
                               <help>Set gateway IPv4 address</help>
                               <valueHelp>
                                 <format>ipv4</format>
                                 <description>Gateway IPv4 address</description>
                               </valueHelp>
                               <constraint>
                                 <validator name="ipv4-address"/>
                               </constraint>
                             </properties>
                           </leafNode>
                           <leafNode name="ipv6">
                             <properties>
                               <help>Set gateway IPv6 address</help>
                               <valueHelp>
                                 <format>ipv6</format>
                                 <description>Gateway IPv6 address</description>
                               </valueHelp>
                               <constraint>
                                 <validator name="ipv6-address"/>
                               </constraint>
                             </properties>
                           </leafNode>
                         </children>
                       </node>
                     </children>
                   </node>
                   <leafNode name="ip-next-hop">
                     <properties>
                       <help>Nexthop IP address</help>
                       <completionHelp>
                         <script>${vyos_completion_dir}/list_local_ips.sh --ipv4</script>
                         <list>unchanged peer-address</list>
                       </completionHelp>
                       <valueHelp>
                         <format>ipv4</format>
                         <description>IP address</description>
                       </valueHelp>
                       <valueHelp>
                         <format>unchanged</format>
                         <description>Set the BGP nexthop address as unchanged</description>
                       </valueHelp>
                       <valueHelp>
                         <format>peer-address</format>
                         <description>Set the BGP nexthop address to the address of the peer</description>
                       </valueHelp>
                       <constraint>
                         <validator name="ipv4-address"/>
                         <regex>(unchanged|peer-address)</regex>
                       </constraint>
                     </properties>
                   </leafNode>
                   <node name="ipv6-next-hop">
                     <properties>
                       <help>Nexthop IPv6 address</help>
                     </properties>
                     <children>
                       <leafNode name="global">
                         <properties>
                           <help>Nexthop IPv6 global address</help>
                           <completionHelp>
                             <script>${vyos_completion_dir}/list_local_ips.sh --ipv6</script>
                           </completionHelp>
                           <valueHelp>
                             <format>ipv6</format>
                             <description>IPv6 address and prefix length</description>
                           </valueHelp>
                           <constraint>
                             <validator name="ipv6-address"/>
                           </constraint>
                         </properties>
                       </leafNode>
                       <leafNode name="local">
                         <properties>
                           <help>Nexthop IPv6 local address</help>
                           <completionHelp>
                             <script>${vyos_completion_dir}/list_local_ips.sh --ipv6</script>
                           </completionHelp>
                           <valueHelp>
                             <format>ipv6</format>
                             <description>IPv6 address and prefix length</description>
                           </valueHelp>
                           <constraint>
                             <validator name="ipv6-address"/>
                           </constraint>
                         </properties>
                       </leafNode>
                       <leafNode name="peer-address">
                         <properties>
                           <help>Use peer address (for BGP only)</help>
                           <valueless/>
                         </properties>
                       </leafNode>
                       <leafNode name="prefer-global">
                         <properties>
                           <help>Prefer global address as the nexthop</help>
                           <valueless/>
                         </properties>
                       </leafNode>
                     </children>
                   </node>
                   <node name="l3vpn-nexthop">
                     <properties>
                       <help>Next hop Information</help>
                     </properties>
                     <children>
                       <node name="encapsulation">
                         <properties>
                           <help>Encapsulation options (for BGP only)</help>
                         </properties>
                         <children>
                           <leafNode name="gre">
                             <properties>
                               <help>Accept L3VPN traffic over GRE encapsulation</help>
                               <valueless/>
                             </properties>
                           </leafNode>
                         </children>
                        </node>
                     </children>
                   </node>
                   <leafNode name="local-preference">
                     <properties>
                       <help>BGP local preference attribute</help>
                       <valueHelp>
                         <format>u32:0-4294967295</format>
                         <description>Local preference value</description>
                       </valueHelp>
                       <constraint>
                         <validator name="numeric" argument="--range 0-4294967295"/>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="metric">
                     <properties>
                       <help>Destination routing protocol metric</help>
                       <valueHelp>
                         <format>&lt;+/-metric&gt;</format>
                         <description>Add or subtract metric</description>
                       </valueHelp>
                       <valueHelp>
                         <format>u32:0-4294967295</format>
                         <description>Metric value</description>
                       </valueHelp>
                       <valueHelp>
                         <format>&lt;+/-rtt&gt;</format>
                         <description>Add or subtract round trip time</description>
                       </valueHelp>
                       <valueHelp>
                         <format>&lt;rtt&gt;</format>
                         <description>Round trip time</description>
                       </valueHelp>
                       <constraint>
                         <validator name="numeric" argument="--relative --"/>
                         <validator name="numeric" argument="--range 0-4294967295"/>
                         <regex>^[+|-]?rtt$</regex>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="metric-type">
                     <properties>
                       <help>Open Shortest Path First (OSPF) external metric-type</help>
                       <completionHelp>
                         <list>type-1 type-2</list>
                       </completionHelp>
                       <valueHelp>
                         <format>type-1</format>
                         <description>OSPF external type 1 metric</description>
                       </valueHelp>
                       <valueHelp>
                         <format>type-2</format>
                         <description>OSPF external type 2 metric</description>
                       </valueHelp>
                       <constraint>
                         <regex>(type-1|type-2)</regex>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="origin">
                     <properties>
                       <help>Border Gateway Protocl (BGP) origin code</help>
                       <completionHelp>
                         <list>igp egp incomplete</list>
                       </completionHelp>
                       <valueHelp>
                         <format>igp</format>
                         <description>Interior gateway protocol origin</description>
                       </valueHelp>
                       <valueHelp>
                         <format>egp</format>
                         <description>Exterior gateway protocol origin</description>
                       </valueHelp>
                       <valueHelp>
                         <format>incomplete</format>
                         <description>Incomplete origin</description>
                       </valueHelp>
                       <constraint>
                         <regex>(igp|egp|incomplete)</regex>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="originator-id">
                     <properties>
                       <help>BGP originator ID attribute</help>
                       <valueHelp>
                         <format>ipv4</format>
                         <description>Orignator IP address</description>
                       </valueHelp>
                       <constraint>
                         <validator name="ipv4-address"/>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="src">
                     <properties>
                       <help>Source address for route</help>
                       <completionHelp>
                         <script>${vyos_completion_dir}/list_local_ips.sh --both</script>
                       </completionHelp>
                       <valueHelp>
                         <format>ipv4</format>
                         <description>IPv4 address</description>
                       </valueHelp>
                       <valueHelp>
                         <format>ipv6</format>
                         <description>IPv6 address</description>
                       </valueHelp>
                       <constraint>
                         <validator name="ip-address"/>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="table">
                     <properties>
                       <help>Set prefixes to table</help>
                       <valueHelp>
                         <format>u32:1-200</format>
                         <description>Table value</description>
                       </valueHelp>
                       <constraint>
                         <validator name="numeric" argument="--range 1-200"/>
                       </constraint>
                     </properties>
                   </leafNode>
                   #include <include/policy/tag.xml.i>
                   <leafNode name="weight">
                     <properties>
                       <help>BGP weight attribute</help>
                       <valueHelp>
                         <format>u32:0-4294967295</format>
                         <description>BGP weight</description>
                       </valueHelp>
                       <constraint>
                         <validator name="numeric" argument="--range 0-4294967295"/>
                       </constraint>
                     </properties>
                   </leafNode>
                 </children>
               </node>
             </children>
           </tagNode>
         </children>
       </tagNode>
     </children>
   </node>
 </interfaceDefinition>
diff --git a/interface-definitions/service_dhcp-server.xml.in b/interface-definitions/service_dhcp-server.xml.in
index a9400a804..a3c48afca 100644
--- a/interface-definitions/service_dhcp-server.xml.in
+++ b/interface-definitions/service_dhcp-server.xml.in
@@ -1,490 +1,490 @@
 <?xml version="1.0"?>
 <!-- DHCP server configuration -->
 <interfaceDefinition>
   <node name="service">
     <children>
       <node name="dhcp-server" owner="${vyos_conf_scripts_dir}/service_dhcp-server.py">
         <properties>
           <help>Dynamic Host Configuration Protocol (DHCP) for DHCP server</help>
           <priority>911</priority>
         </properties>
         <children>
           #include <include/generic-disable-node.xml.i>
           <leafNode name="dynamic-dns-update">
             <properties>
               <help>Dynamically update Domain Name System (RFC4702)</help>
               <valueless/>
             </properties>
           </leafNode>
           <node name="failover">
             <properties>
               <help>DHCP failover configuration</help>
             </properties>
             <children>
               #include <include/source-address-ipv4.xml.i>
               <leafNode name="remote">
                 <properties>
                   <help>IPv4 remote address used for connectio</help>
                   <valueHelp>
                     <format>ipv4</format>
                     <description>IPv4 address of failover peer</description>
                   </valueHelp>
                   <constraint>
                     <validator name="ipv4-address"/>
                   </constraint>
                 </properties>
               </leafNode>
               <leafNode name="name">
                 <properties>
                   <help>Peer name used to identify connection</help>
                   <constraint>
-                    <regex>[-_a-zA-Z0-9.]+</regex>
+                    #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
                   </constraint>
                   <constraintErrorMessage>Invalid failover peer name. May only contain letters, numbers and .-_</constraintErrorMessage>
                 </properties>
               </leafNode>
               <leafNode name="status">
                 <properties>
                   <help>Failover hierarchy</help>
                   <completionHelp>
                     <list>primary secondary</list>
                   </completionHelp>
                   <valueHelp>
                     <format>primary</format>
                     <description>Configure this server to be the primary node</description>
                   </valueHelp>
                   <valueHelp>
                     <format>secondary</format>
                     <description>Configure this server to be the secondary node</description>
                   </valueHelp>
                   <constraint>
                     <regex>(primary|secondary)</regex>
                   </constraint>
                   <constraintErrorMessage>Invalid DHCP failover peer status</constraintErrorMessage>
                 </properties>
               </leafNode>
             </children>
           </node>
           <leafNode name="global-parameters">
             <properties>
               <help>Additional global parameters for DHCP server. You must use the syntax of dhcpd.conf in this text-field. Using this without proper knowledge may result in a crashed DHCP server. Check system log to look for errors.</help>
               <multi/>
             </properties>
           </leafNode>
           <leafNode name="hostfile-update">
             <properties>
               <help>Updating /etc/hosts file (per client lease)</help>
               <valueless/>
             </properties>
           </leafNode>
           <leafNode name="host-decl-name">
             <properties>
               <help>Use host declaration name for forward DNS name</help>
               <valueless/>
             </properties>
           </leafNode>
           #include <include/listen-address-ipv4.xml.i>
           <tagNode name="shared-network-name">
             <properties>
               <help>Name of DHCP shared network</help>
               <constraint>
-                <regex>[-_a-zA-Z0-9.]+</regex>
+                #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
               </constraint>
               <constraintErrorMessage>Invalid shared network name. May only contain letters, numbers and .-_</constraintErrorMessage>
             </properties>
             <children>
               <leafNode name="authoritative">
                 <properties>
                   <help>Option to make DHCP server authoritative for this physical network</help>
                   <valueless/>
                 </properties>
               </leafNode>
               #include <include/dhcp/domain-name.xml.i>
               #include <include/dhcp/domain-search.xml.i>
               #include <include/dhcp/ntp-server.xml.i>
               #include <include/dhcp/ping-check.xml.i>
               #include <include/generic-description.xml.i>
               #include <include/generic-disable-node.xml.i>
               #include <include/name-server-ipv4.xml.i>
               <leafNode name="shared-network-parameters">
                 <properties>
                   <help>Additional shared-network parameters for DHCP server. You must use the syntax of dhcpd.conf in this text-field. Using this without proper knowledge may result in a crashed DHCP server. Check system log to look for errors.</help>
                   <multi/>
                 </properties>
               </leafNode>
               <tagNode name="subnet">
                 <properties>
                   <help>DHCP subnet for shared network</help>
                   <valueHelp>
                     <format>ipv4net</format>
                     <description>IPv4 address and prefix length</description>
                   </valueHelp>
                   <constraint>
                     <validator name="ipv4-prefix"/>
                   </constraint>
                   <constraintErrorMessage>Invalid IPv4 subnet definition</constraintErrorMessage>
                 </properties>
                 <children>
                   <leafNode name="bootfile-name">
                     <properties>
                       <help>Bootstrap file name</help>
                       <constraint>
                         <regex>[[:ascii:]]{1,253}</regex>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="bootfile-server">
                     <properties>
                       <help>Server from which the initial boot file is to be loaded</help>
                       <valueHelp>
                         <format>ipv4</format>
                         <description>Bootfile server IPv4 address</description>
                       </valueHelp>
                       <valueHelp>
                         <format>hostname</format>
                         <description>Bootfile server FQDN</description>
                       </valueHelp>
                       <constraint>
                         <validator name="ipv4-address"/>
                         <validator name="fqdn"/>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="bootfile-size">
                     <properties>
                       <help>Bootstrap file size</help>
                       <valueHelp>
                         <format>u32:1-16</format>
                         <description>Bootstrap file size in 512 byte blocks</description>
                       </valueHelp>
                       <constraint>
                         <validator name="numeric" argument="--range 1-16"/>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="client-prefix-length">
                     <properties>
                       <help>Specifies the clients subnet mask as per RFC 950. If unset, subnet declaration is used.</help>
                       <valueHelp>
                         <format>u32:0-32</format>
                         <description>DHCP client prefix length must be 0 to 32</description>
                       </valueHelp>
                       <constraint>
                         <validator name="numeric" argument="--range 0-32"/>
                       </constraint>
                       <constraintErrorMessage>DHCP client prefix length must be 0 to 32</constraintErrorMessage>
                     </properties>
                   </leafNode>
                   <leafNode name="default-router">
                     <properties>
                       <help>IP address of default router</help>
                       <valueHelp>
                         <format>ipv4</format>
                         <description>Default router IPv4 address</description>
                       </valueHelp>
                       <constraint>
                         <validator name="ipv4-address"/>
                       </constraint>
                     </properties>
                   </leafNode>
                   #include <include/dhcp/domain-name.xml.i>
                   #include <include/dhcp/domain-search.xml.i>
                   #include <include/generic-description.xml.i>
                   #include <include/name-server-ipv4.xml.i>
                   <leafNode name="enable-failover">
                     <properties>
                       <help>Enable DHCP failover support for this subnet</help>
                       <valueless/>
                     </properties>
                   </leafNode>
                   <leafNode name="exclude">
                     <properties>
                       <help>IP address to exclude from DHCP lease range</help>
                       <valueHelp>
                         <format>ipv4</format>
                         <description>IPv4 address to exclude from lease range</description>
                       </valueHelp>
                       <constraint>
                         <validator name="ipv4-address"/>
                       </constraint>
                       <multi/>
                     </properties>
                   </leafNode>
                   <leafNode name="ip-forwarding">
                     <properties>
                       <help>Enable IP forwarding on client</help>
                       <valueless/>
                     </properties>
                   </leafNode>
                   <leafNode name="lease">
                     <properties>
                       <help>Lease timeout in seconds</help>
                       <valueHelp>
                         <format>u32</format>
                         <description>DHCP lease time in seconds</description>
                       </valueHelp>
                       <constraint>
                         <validator name="numeric" argument="--range 0-4294967295"/>
                       </constraint>
                       <constraintErrorMessage>DHCP lease time must be between 0 and 4294967295 (49 days)</constraintErrorMessage>
                     </properties>
                     <defaultValue>86400</defaultValue>
                   </leafNode>
                   #include <include/dhcp/ntp-server.xml.i>
                   #include <include/dhcp/ping-check.xml.i>
                   <leafNode name="pop-server">
                     <properties>
                       <help>IP address of POP3 server</help>
                       <valueHelp>
                         <format>ipv4</format>
                         <description>POP3 server IPv4 address</description>
                       </valueHelp>
                       <constraint>
                         <validator name="ipv4-address"/>
                       </constraint>
                       <multi/>
                     </properties>
                   </leafNode>
                   <leafNode name="server-identifier">
                     <properties>
                       <help>Address for DHCP server identifier</help>
                       <valueHelp>
                         <format>ipv4</format>
                         <description>DHCP server identifier IPv4 address</description>
                       </valueHelp>
                       <constraint>
                         <validator name="ipv4-address"/>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="smtp-server">
                     <properties>
                       <help>IP address of SMTP server</help>
                       <valueHelp>
                         <format>ipv4</format>
                         <description>SMTP server IPv4 address</description>
                       </valueHelp>
                       <constraint>
                         <validator name="ipv4-address"/>
                       </constraint>
                       <multi/>
                     </properties>
                   </leafNode>
                   <tagNode name="range">
                     <properties>
                       <help>DHCP lease range</help>
                       <constraint>
-                        <regex>[-_a-zA-Z0-9.]+</regex>
+                        #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
                       </constraint>
                       <constraintErrorMessage>Invalid range name, may only be alphanumeric, dot and hyphen</constraintErrorMessage>
                     </properties>
                     <children>
                       <leafNode name="start">
                         <properties>
                           <help>First IP address for DHCP lease range</help>
                           <valueHelp>
                             <format>ipv4</format>
                             <description>IPv4 start address of pool</description>
                           </valueHelp>
                           <constraint>
                             <validator name="ipv4-address"/>
                           </constraint>
                         </properties>
                       </leafNode>
                       <leafNode name="stop">
                         <properties>
                           <help>Last IP address for DHCP lease range</help>
                           <valueHelp>
                             <format>ipv4</format>
                             <description>IPv4 end address of pool</description>
                           </valueHelp>
                           <constraint>
                             <validator name="ipv4-address"/>
                           </constraint>
                         </properties>
                       </leafNode>
                     </children>
                   </tagNode>
                   <tagNode name="static-mapping">
                     <properties>
                       <help>Name of static mapping</help>
                       <constraint>
                         <regex>[-_a-zA-Z0-9.]+</regex>
                       </constraint>
                       <constraintErrorMessage>Invalid static mapping name, may only be alphanumeric, dot and hyphen</constraintErrorMessage>
                     </properties>
                     <children>
                       #include <include/generic-disable-node.xml.i>
                       <leafNode name="ip-address">
                         <properties>
                           <help>Fixed IP address of static mapping</help>
                           <valueHelp>
                             <format>ipv4</format>
                             <description>IPv4 address used in static mapping</description>
                           </valueHelp>
                           <constraint>
                             <validator name="ipv4-address"/>
                           </constraint>
                         </properties>
                       </leafNode>
                       <leafNode name="mac-address">
                         <properties>
                           <help>Media Access Control (MAC) address</help>
                           <valueHelp>
                             <format>macaddr</format>
                             <description>Hardware (MAC) address</description>
                           </valueHelp>
                           <constraint>
                             <validator name="mac-address"/>
                           </constraint>
                         </properties>
                       </leafNode>
                       <leafNode name="static-mapping-parameters">
                         <properties>
                           <help>Additional static-mapping parameters for DHCP server. Will be placed inside the "host" block of the mapping. You must use the syntax of dhcpd.conf in this text-field. Using this without proper knowledge may result in a crashed DHCP server. Check system log to look for errors.</help>
                           <multi/>
                         </properties>
                       </leafNode>
                     </children>
                   </tagNode>
                   <tagNode name="static-route">
                     <properties>
                       <help>Classless static route destination subnet</help>
                       <valueHelp>
                         <format>ipv4net</format>
                         <description>IPv4 address and prefix length</description>
                       </valueHelp>
                       <constraint>
                         <validator name="ipv4-prefix"/>
                       </constraint>
                     </properties>
                     <children>
                       <leafNode name="next-hop">
                         <properties>
                           <help>IP address of router to be used to reach the destination subnet</help>
                           <valueHelp>
                             <format>ipv4</format>
                             <description>IPv4 address of router</description>
                           </valueHelp>
                           <constraint>
                             <validator name="ip-address"/>
                           </constraint>
                         </properties>
                       </leafNode>
                     </children>
                   </tagNode >
                   <leafNode name="ipv6-only-preferred">
                     <properties>
                       <help>Disable IPv4 on IPv6 only hosts (RFC 8925)</help>
                       <valueHelp>
                         <format>u32</format>
                         <description>Seconds</description>
                       </valueHelp>
                       <constraint>
                         <validator name="numeric" argument="--range 0-4294967295"/>
                       </constraint>
                       <constraintErrorMessage>Seconds must be between 0 and 4294967295 (49 days)</constraintErrorMessage>
                     </properties>
                   </leafNode>
                   <leafNode name="subnet-parameters">
                     <properties>
                       <help>Additional subnet parameters for DHCP server. You must use the syntax of dhcpd.conf in this text-field. Using this without proper knowledge may result in a crashed DHCP server. Check system log to look for errors.</help>
                       <multi/>
                     </properties>
                   </leafNode>
                   <leafNode name="tftp-server-name">
                     <properties>
                       <help>TFTP server name</help>
                       <valueHelp>
                         <format>ipv4</format>
                         <description>TFTP server IPv4 address</description>
                       </valueHelp>
                       <valueHelp>
                         <format>hostname</format>
                         <description>TFTP server FQDN</description>
                       </valueHelp>
                       <constraint>
                         <validator name="ipv4-address"/>
                         <validator name="fqdn"/>
                       </constraint>
                     </properties>
                   </leafNode>
                   <leafNode name="time-offset">
                     <properties>
                       <help>Client subnet offset in seconds from Coordinated Universal Time (UTC)</help>
                       <valueHelp>
                         <format>[-]N</format>
                         <description>Time offset (number, may be negative)</description>
                       </valueHelp>
                       <constraint>
                         <regex>-?[0-9]+</regex>
                       </constraint>
                       <constraintErrorMessage>Invalid time offset value</constraintErrorMessage>
                     </properties>
                   </leafNode>
                   <leafNode name="time-server">
                     <properties>
                       <help>IP address of time server</help>
                       <valueHelp>
                         <format>ipv4</format>
                         <description>Time server IPv4 address</description>
                       </valueHelp>
                       <constraint>
                         <validator name="ipv4-address"/>
                       </constraint>
                       <multi/>
                     </properties>
                   </leafNode>
                   <node name="vendor-option">
                     <properties>
                       <help>Vendor Specific Options</help>
                     </properties>
                     <children>
                       <node name="ubiquiti">
                         <properties>
                           <help>Ubiquiti specific parameters</help>
                         </properties>
                         <children>
                           <leafNode name="unifi-controller">
                             <properties>
                               <help>Address of UniFi controller</help>
                               <valueHelp>
                                 <format>ipv4</format>
                                 <description>IP address of UniFi controller</description>
                               </valueHelp>
                               <constraint>
                                 <validator name="ipv4-address"/>
                               </constraint>
                             </properties>
                           </leafNode>
                         </children>
                       </node>
                     </children>
                   </node>
                   <leafNode name="wins-server">
                     <properties>
                       <help>IP address for Windows Internet Name Service (WINS) server</help>
                       <valueHelp>
                         <format>ipv4</format>
                         <description>WINS server IPv4 address</description>
                       </valueHelp>
                       <constraint>
                         <validator name="ipv4-address"/>
                       </constraint>
                       <multi/>
                     </properties>
                   </leafNode>
                   <leafNode name="wpad-url">
                     <properties>
                       <help>Web Proxy Autodiscovery (WPAD) URL</help>
                     </properties>
                   </leafNode>
                 </children>
               </tagNode>
             </children>
           </tagNode>
         </children>
       </node>
     </children>
   </node>
 </interfaceDefinition>
diff --git a/interface-definitions/service_dhcpv6-server.xml.in b/interface-definitions/service_dhcpv6-server.xml.in
index a11699615..b838f42e0 100644
--- a/interface-definitions/service_dhcpv6-server.xml.in
+++ b/interface-definitions/service_dhcpv6-server.xml.in
@@ -1,376 +1,376 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="service">
     <children>
       <node name="dhcpv6-server" owner="${vyos_conf_scripts_dir}/service_dhcpv6-server.py">
         <properties>
           <help>DHCP for IPv6 (DHCPv6) server</help>
           <priority>900</priority>
         </properties>
         <children>
           #include <include/generic-disable-node.xml.i>
           <node name="global-parameters">
             <properties>
               <help>Additional global parameters for DHCPv6 server</help>
             </properties>
             <children>
               #include <include/name-server-ipv6.xml.i>
             </children>
           </node>
           <leafNode name="preference">
             <properties>
               <help>Preference of this DHCPv6 server compared with others</help>
               <valueHelp>
                 <format>u32:0-255</format>
                 <description>DHCPv6 server preference (0-255)</description>
               </valueHelp>
               <constraint>
                 <validator name="numeric" argument="--range 0-255"/>
               </constraint>
               <constraintErrorMessage>Preference must be between 0 and 255</constraintErrorMessage>
             </properties>
           </leafNode>
           <tagNode name="shared-network-name">
             <properties>
               <help>DHCPv6 shared network name</help>
               <constraint>
-                <regex>[-_a-zA-Z0-9.]+</regex>
+                #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
               </constraint>
               <constraintErrorMessage>Invalid DHCPv6 shared network name. May only contain letters, numbers and .-_</constraintErrorMessage>
             </properties>
             <children>
               #include <include/generic-disable-node.xml.i>
               #include <include/generic-description.xml.i>
               <node name="common-options">
                 <properties>
                   <help>Common options to distribute to all clients, including stateless clients</help>
                 </properties>
                 <children>
                   <leafNode name="info-refresh-time">
                     <properties>
                       <help>Time (in seconds) that stateless clients should wait between refreshing the information they were given</help>
                       <valueHelp>
                         <format>u32:1-4294967295</format>
                         <description>DHCPv6 information refresh time</description>
                       </valueHelp>
                       <constraint>
                         <validator name="numeric" argument="--range 1-4294967295"/>
                       </constraint>
                     </properties>
                   </leafNode>
                   #include <include/dhcp/domain-search.xml.i>
                   #include <include/name-server-ipv6.xml.i>
                 </children>
               </node>
               <tagNode name="subnet">
                 <properties>
                   <help>IPv6 DHCP subnet for this shared network</help>
                   <valueHelp>
                     <format>ipv6net</format>
                     <description>IPv6 address and prefix length</description>
                   </valueHelp>
                   <constraint>
                     <validator name="ipv6-prefix"/>
                   </constraint>
                 </properties>
                 <children>
                   <node name="address-range">
                     <properties>
                       <help>Parameters setting ranges for assigning IPv6 addresses</help>
                     </properties>
                     <children>
                       <tagNode name="prefix">
                         <properties>
                           <help>IPv6 prefix defining range of addresses to assign</help>
                           <valueHelp>
                             <format>ipv6net</format>
                             <description>IPv6 address and prefix length</description>
                           </valueHelp>
                           <constraint>
                             <validator name="ipv6-prefix"/>
                           </constraint>
                         </properties>
                         <children>
                           <leafNode name="temporary">
                             <properties>
                               <help>Address range will be used for temporary addresses</help>
                               <valueless/>
                             </properties>
                           </leafNode>
                         </children>
                       </tagNode>
                       <tagNode name="start">
                         <properties>
                           <help>First in range of consecutive IPv6 addresses to assign</help>
                           <valueHelp>
                             <format>ipv6</format>
                             <description>IPv6 address</description>
                           </valueHelp>
                           <constraint>
                             <validator name="ipv6-address"/>
                           </constraint>
                         </properties>
                         <children>
                           <leafNode name="stop">
                             <properties>
                               <help>Last in range of consecutive IPv6 addresses</help>
                               <valueHelp>
                                 <format>ipv6</format>
                                 <description>IPv6 address</description>
                               </valueHelp>
                               <constraint>
                                 <validator name="ipv6-address"/>
                               </constraint>
                             </properties>
                           </leafNode>
                         </children>
                       </tagNode>
                     </children>
                   </node>
                   #include <include/dhcp/domain-search.xml.i>
                   <node name="lease-time">
                     <properties>
                       <help>Parameters relating to the lease time</help>
                     </properties>
                     <children>
                       <leafNode name="default">
                         <properties>
                           <help>Default time (in seconds) that will be assigned to a lease</help>
                           <valueHelp>
                             <format>u32:1-4294967295</format>
                             <description>DHCPv6 valid lifetime</description>
                           </valueHelp>
                           <constraint>
                             <validator name="numeric" argument="--range 1-4294967295"/>
                           </constraint>
                         </properties>
                       </leafNode>
                       <leafNode name="maximum">
                         <properties>
                           <help>Maximum time (in seconds) that will be assigned to a lease</help>
                           <valueHelp>
                             <format>u32:1-4294967295</format>
                             <description>Maximum lease time in seconds</description>
                           </valueHelp>
                           <constraint>
                             <validator name="numeric" argument="--range 1-4294967295"/>
                           </constraint>
                         </properties>
                       </leafNode>
                       <leafNode name="minimum">
                         <properties>
                           <help>Minimum time (in seconds) that will be assigned to a lease</help>
                           <valueHelp>
                             <format>u32:1-4294967295</format>
                             <description>Minimum lease time in seconds</description>
                           </valueHelp>
                           <constraint>
                             <validator name="numeric" argument="--range 1-4294967295"/>
                           </constraint>
                         </properties>
                       </leafNode>
                     </children>
                   </node>
                   #include <include/name-server-ipv6.xml.i>
                   <leafNode name="nis-domain">
                     <properties>
                       <help>NIS domain name for client to use</help>
                       <constraint>
-                        <regex>[-_a-zA-Z0-9.]+</regex>
+                        #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
                       </constraint>
                       <constraintErrorMessage>Invalid NIS domain name</constraintErrorMessage>
                     </properties>
                   </leafNode>
                   <leafNode name="nis-server">
                     <properties>
                       <help>IPv6 address of a NIS Server</help>
                       <valueHelp>
                         <format>ipv6</format>
                         <description>IPv6 address of NIS server</description>
                       </valueHelp>
                       <constraint>
                         <validator name="ipv6-address"/>
                       </constraint>
                       <multi/>
                     </properties>
                   </leafNode>
                   <leafNode name="nisplus-domain">
                     <properties>
                       <help>NIS+ domain name for client to use</help>
                       <constraint>
-                        <regex>[-_a-zA-Z0-9.]+</regex>
+                        #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
                       </constraint>
                       <constraintErrorMessage>Invalid NIS+ domain name. May only contain letters, numbers and .-_</constraintErrorMessage>
                     </properties>
                   </leafNode>
                   <leafNode name="nisplus-server">
                     <properties>
                       <help>IPv6 address of a NIS+ Server</help>
                       <valueHelp>
                         <format>ipv6</format>
                         <description>IPv6 address of NIS+ server</description>
                       </valueHelp>
                       <constraint>
                         <validator name="ipv6-address"/>
                       </constraint>
                       <multi/>
                     </properties>
                   </leafNode>
                   <node name="prefix-delegation">
                     <properties>
                       <help>Parameters relating to IPv6 prefix delegation</help>
                     </properties>
                     <children>
                       <tagNode name="start">
                         <properties>
                           <help>First in range of IPv6 addresses to be used in prefix delegation</help>
                           <valueHelp>
                             <format>ipv6</format>
                             <description>IPv6 address used in prefix delegation</description>
                           </valueHelp>
                           <constraint>
                             <validator name="ipv6-address"/>
                           </constraint>
                         </properties>
                         <children>
                           <leafNode name="prefix-length">
                             <properties>
                               <help>Length in bits of prefixes to be delegated</help>
                               <valueHelp>
                                 <format>u32:32-64</format>
                                 <description>Delagated prefix length (32-64)</description>
                               </valueHelp>
                               <constraint>
                                 <validator name="numeric" argument="--range 32-64"/>
                               </constraint>
                               <constraintErrorMessage>Delegated prefix length must be between 32 and 64</constraintErrorMessage>
                             </properties>
                           </leafNode>
                           <leafNode name="stop">
                             <properties>
                               <help>Last in range of IPv6 addresses to be used in prefix delegation</help>
                               <valueHelp>
                                 <format>ipv6</format>
                                 <description>IPv6 address used in prefix delegation</description>
                               </valueHelp>
                               <constraint>
                                 <validator name="ipv6-address"/>
                               </constraint>
                             </properties>
                           </leafNode>
                         </children>
                       </tagNode>
                     </children>
                   </node>
                   <leafNode name="sip-server">
                     <properties>
                       <help>IPv6 address of SIP server</help>
                       <valueHelp>
                         <format>ipv6</format>
                         <description>IPv6 address of SIP server</description>
                       </valueHelp>
                       <valueHelp>
                         <format>hostname</format>
                         <description>FQDN of SIP server</description>
                       </valueHelp>
                       <constraint>
                         <validator name="ipv6-address"/>
                         <validator name="fqdn"/>
                       </constraint>
                       <multi/>
                     </properties>
                   </leafNode>
                   <leafNode name="sntp-server">
                     <properties>
                       <help>IPv6 address of an SNTP server for client to use</help>
                       <constraint>
                         <validator name="ipv6-address"/>
                       </constraint>
                       <multi/>
                     </properties>
                   </leafNode>
                   <tagNode name="static-mapping">
                     <properties>
                       <help>Name of static mapping</help>
                       <constraint>
                         <regex>[-_a-zA-Z0-9.]+</regex>
                       </constraint>
                       <constraintErrorMessage>Invalid static mapping name. May only contain letters, numbers and .-_</constraintErrorMessage>
                     </properties>
                     <children>
                       #include <include/generic-disable-node.xml.i>
                       <leafNode name="identifier">
                         <properties>
                           <help>Client identifier (DUID) for this static mapping</help>
                           <valueHelp>
                             <format>h[[:h]...]</format>
                             <description>DUID: colon-separated hex list (as used by isc-dhcp option dhcpv6.client-id)</description>
                           </valueHelp>
                           <constraint>
                             <regex>([0-9A-Fa-f]{1,2}[:])*([0-9A-Fa-f]{1,2})</regex>
                           </constraint>
                           <constraintErrorMessage>Invalid DUID, must be in the format h[[:h]...]</constraintErrorMessage>
                         </properties>
                       </leafNode>
                       <leafNode name="ipv6-address">
                         <properties>
                           <help>Client IPv6 address for this static mapping</help>
                           <valueHelp>
                             <format>ipv6</format>
                             <description>IPv6 address for this static mapping</description>
                           </valueHelp>
                           <constraint>
                             <validator name="ipv6-address"/>
                           </constraint>
                         </properties>
                       </leafNode>
                       <leafNode name="ipv6-prefix">
                         <properties>
                           <help>Client IPv6 prefix for this static mapping</help>
                           <valueHelp>
                             <format>ipv6net</format>
                             <description>IPv6 prefix for this static mapping</description>
                           </valueHelp>
                           <constraint>
                             <validator name="ipv6-prefix"/>
                           </constraint>
                         </properties>
                       </leafNode>
                     </children>
                   </tagNode>
                   <node name="vendor-option">
                     <properties>
                       <help>Vendor Specific Options</help>
                     </properties>
                     <children>
                       <node name="cisco">
                         <properties>
                           <help>Cisco specific parameters</help>
                         </properties>
                         <children>
                           <leafNode name="tftp-server">
                             <properties>
                               <help>TFTP server name</help>
                               <valueHelp>
                                 <format>ipv6</format>
                                 <description>TFTP server IPv6 address</description>
                               </valueHelp>
                               <constraint>
                                 <validator name="ipv6-address"/>
                               </constraint>
                               <multi/>
                             </properties>
                           </leafNode>
                         </children>
                       </node>
                     </children>
                   </node>
                 </children>
               </tagNode>
             </children>
           </tagNode>
         </children>
       </node>
     </children>
   </node>
 </interfaceDefinition>