From b23323922939a9ac3b43e0761b0af84dc9e3b47e Mon Sep 17 00:00:00 2001 From: Brandon Stepler Date: Fri, 22 Jan 2021 16:00:00 -0500 Subject: dhcpv6: T3240: support per-interface client DUIDs --- data/templates/dhcp-client/ipv6.tmpl | 3 +++ interface-definitions/include/dhcpv6-options.xml.i | 12 ++++++++++ interface-definitions/include/interface-mac.xml.i | 2 +- src/validators/ipv6-duid | 27 ++++++++++++++++++++++ src/validators/mac-address | 4 +--- 5 files changed, 44 insertions(+), 4 deletions(-) create mode 100755 src/validators/ipv6-duid diff --git a/data/templates/dhcp-client/ipv6.tmpl b/data/templates/dhcp-client/ipv6.tmpl index 68f668117..49d0d8c88 100644 --- a/data/templates/dhcp-client/ipv6.tmpl +++ b/data/templates/dhcp-client/ipv6.tmpl @@ -3,6 +3,9 @@ # man https://www.unix.com/man-page/debian/5/dhcp6c.conf/ interface {{ ifname }} { {% if address is defined and 'dhcpv6' in address %} +{% if dhcpv6_options is defined and dhcpv6_options.duid is defined and dhcpv6_options.duid is not none %} + send client-id {{ dhcpv6_options.duid }}; +{% endif %} request domain-name-servers; request domain-name; {% if dhcpv6_options is defined and dhcpv6_options.parameters_only is defined %} diff --git a/interface-definitions/include/dhcpv6-options.xml.i b/interface-definitions/include/dhcpv6-options.xml.i index 9a1016956..33ba39592 100644 --- a/interface-definitions/include/dhcpv6-options.xml.i +++ b/interface-definitions/include/dhcpv6-options.xml.i @@ -4,6 +4,18 @@ DHCPv6 client settings/options + + + DHCP unique identifier (DUID) to be sent by dhcpv6 client + + duid + DHCP unique identifier (DUID) + + + + + + Acquire only config parameters, no address diff --git a/interface-definitions/include/interface-mac.xml.i b/interface-definitions/include/interface-mac.xml.i index e277de85c..87dc5fb60 100644 --- a/interface-definitions/include/interface-mac.xml.i +++ b/interface-definitions/include/interface-mac.xml.i @@ -3,7 +3,7 @@ Media Access Control (MAC) address - h:h:h:h:h:h + macaddr Hardware (MAC) address diff --git a/src/validators/ipv6-duid b/src/validators/ipv6-duid new file mode 100755 index 000000000..fd4728e50 --- /dev/null +++ b/src/validators/ipv6-duid @@ -0,0 +1,27 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2021 VyOS maintainers and contributors +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 or later as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import re +import sys + +pattern = "^([0-9A-Fa-f]{2}:){,127}([0-9A-Fa-f]{2})$" + +if __name__ == '__main__': + if len(sys.argv) != 2: + sys.exit(1) + if not re.match(pattern, sys.argv[1]): + sys.exit(1) + sys.exit(0) diff --git a/src/validators/mac-address b/src/validators/mac-address index b2d3496f4..7d020f387 100755 --- a/src/validators/mac-address +++ b/src/validators/mac-address @@ -17,9 +17,7 @@ import re import sys - -pattern = "^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$" - +pattern = "^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$" if __name__ == '__main__': if len(sys.argv) != 2: -- cgit v1.2.3