]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
odhcp6c: use the global DHCP DUID for DHCPv6 20359/head
authorDavid Härdeman <david@hardeman.nu>
Fri, 10 Oct 2025 09:43:11 +0000 (11:43 +0200)
committerRobert Marko <robimarko@gmail.com>
Sun, 19 Oct 2025 17:46:22 +0000 (19:46 +0200)
odhcp6c already supports custom DUIDS on a per-interface basis.  When no client
identifier has been set, odhcp6c will generate one on the basis of the MAC
address of the given interface.

This is contrary to how DUIDs are meant to be used, as the client identifier
will vary from interface to interface, while it is meant to remain stable for a
given host, no matter how the network hardware changes (see RFC8415, §11).

Fix this by letting odhcp6c use the global DHCP DUID, if configured.

Signed-off-by: David Härdeman <david@hardeman.nu>
Link: https://github.com/openwrt/openwrt/pull/20359
Signed-off-by: Robert Marko <robimarko@gmail.com>
package/network/ipv6/odhcp6c/files/dhcpv6.sh

index e8d07ebaa79bf465cdb875d56a3c709cb9f6f7f2..00dd610dfac219a5b1363bf752ec63ba4a5e32ed 100755 (executable)
@@ -2,6 +2,7 @@
 
 . /lib/functions.sh
 . ../netifd-proto.sh
+. /lib/config/uci.sh
 init_proto "$@"
 
 proto_dhcpv6_init_config() {
@@ -66,6 +67,7 @@ proto_dhcpv6_setup() {
        [ -z "$reqprefix" -o "$reqprefix" = "auto" ] && reqprefix=0
        [ "$reqprefix" != "no" ] && append opts "-P$reqprefix"
 
+       [ -z "$clientid" ] && clientid="$(uci_get network @globals[0] dhcp_default_duid)"
        [ -n "$clientid" ] && append opts "-c$clientid"
 
        [ "$defaultreqopts" = "0" ] && append opts "-R"