diff options
| author | Álvaro Fernández Rojas | 2026-01-10 14:44:48 +0000 |
|---|---|---|
| committer | Álvaro Fernández Rojas | 2026-01-14 17:07:38 +0000 |
| commit | e1c125c167e5c4fef16fd5e2bf670f290808b2d1 (patch) | |
| tree | 6217d38049a245bbab5b3cd34447fbc21a81ccb0 | |
| parent | e1f2b666ff94f2b8a50ca000d69f5b5f0b89a27c (diff) | |
| download | openwrt-e1c125c167e5c4fef16fd5e2bf670f290808b2d1.tar.gz | |
netifd: use stable IAID for DHCPv4
Commit 9151c7015ed2 introduced support for the global DHCP DUID to
generate a RFC4361-style client identifier.
However, the IAID introduced in those changes is based on ifindex, which
is subject to changes and causes issues on environments requiring a stable
IAID.
This commit switches the IAID to a stable one based on MD5.
Fixes: 9151c7015ed2 ("netifd: use the global DHCP DUID for DHCPv4")
Link: https://github.com/openwrt/openwrt/pull/21489
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
| -rw-r--r-- | package/network/config/netifd/Makefile | 2 | ||||
| -rwxr-xr-x | package/network/config/netifd/files/lib/netifd/proto/dhcp.sh | 9 |
2 files changed, 6 insertions, 5 deletions
diff --git a/package/network/config/netifd/Makefile b/package/network/config/netifd/Makefile index 2c550ef554..a66f87d38d 100644 --- a/package/network/config/netifd/Makefile +++ b/package/network/config/netifd/Makefile @@ -1,7 +1,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=netifd -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/netifd.git diff --git a/package/network/config/netifd/files/lib/netifd/proto/dhcp.sh b/package/network/config/netifd/files/lib/netifd/proto/dhcp.sh index 1c0f720f4a..e5724ff11f 100755 --- a/package/network/config/netifd/files/lib/netifd/proto/dhcp.sh +++ b/package/network/config/netifd/files/lib/netifd/proto/dhcp.sh @@ -3,6 +3,7 @@ [ -x /sbin/udhcpc ] || exit 0 . /lib/functions.sh +. /lib/functions/network.sh . ../netifd-proto.sh . /lib/config/uci.sh init_proto "$@" @@ -37,11 +38,11 @@ proto_dhcp_get_default_clientid() { local iface="$1" local duid - local iaid="0" + local iaid - [ -e "/sys/class/net/$iface/ifindex" ] && iaid="$(cat "/sys/class/net/$iface/ifindex")" - duid="$(uci_get network @globals[0] dhcp_default_duid)" - [ -n "$duid" ] && printf "ff%08x%s" "$iaid" "$duid" + network_generate_iface_iaid iaid "$iface" + duid="$(uci_get network @globals[0] dhcp_default_duid)" + [ -n "$duid" ] && printf "ff%s%s" "$iaid" "$duid" } proto_dhcp_setup() { |