From 51e7832fc5c88f9956b26157a80947bad4495a4e Mon Sep 17 00:00:00 2001
From: Indrajit Raychaudhuri <irc@indrajit.com>
Date: Wed, 20 Dec 2023 15:34:22 -0600
Subject: dhcp: T5846: Refactor and simplify DUID definition

Refactor DUID XML definition in conf-mode to be reusable. Additionally, remove
explicit call to a separate validator `ipv6-duid` and inline the regex into the
XML definition.
---
 .../include/interface/dhcpv6-options.xml.i                | 13 +------------
 interface-definitions/include/interface/duid.xml.i        | 15 +++++++++++++++
 2 files changed, 16 insertions(+), 12 deletions(-)
 create mode 100644 interface-definitions/include/interface/duid.xml.i

(limited to 'interface-definitions')

diff --git a/interface-definitions/include/interface/dhcpv6-options.xml.i b/interface-definitions/include/interface/dhcpv6-options.xml.i
index 5ca1d525f..cafa03be0 100644
--- a/interface-definitions/include/interface/dhcpv6-options.xml.i
+++ b/interface-definitions/include/interface/dhcpv6-options.xml.i
@@ -4,18 +4,7 @@
     <help>DHCPv6 client settings/options</help>
   </properties>
   <children>
-    <leafNode name="duid">
-      <properties>
-        <help>DHCP unique identifier (DUID) to be sent by dhcpv6 client</help>
-        <valueHelp>
-          <format>duid</format>
-          <description>DHCP unique identifier (DUID)</description>
-        </valueHelp>
-        <constraint>
-          <validator name="ipv6-duid"/>
-        </constraint>
-      </properties>
-    </leafNode>
+    #include <include/duid.xml.i>
     <leafNode name="parameters-only">
       <properties>
         <help>Acquire only config parameters, no address</help>
diff --git a/interface-definitions/include/interface/duid.xml.i b/interface-definitions/include/interface/duid.xml.i
new file mode 100644
index 000000000..4f8988dfa
--- /dev/null
+++ b/interface-definitions/include/interface/duid.xml.i
@@ -0,0 +1,15 @@
+<!-- include start from interface/duid.xml.i -->
+<leafNode name="duid">
+  <properties>
+    <help>DHCP unique identifier (DUID) to be sent by client</help>
+    <valueHelp>
+      <format>duid</format>
+      <description>DHCP unique identifier</description>
+    </valueHelp>
+    <constraint>
+      <regex>([0-9A-Fa-f]{2}:){,127}([0-9A-Fa-f]{2})</regex>
+    </constraint>
+    <constraintErrorMessage>Invalid DUID, must be in the format h[[:h]...]</constraintErrorMessage>
+  </properties>
+</leafNode>
+<!-- include end -->
-- 
cgit v1.2.3