netifd: use stable IAID for DHCPv4
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Build all core packages / Build all core packages for selected target (push) Waiting to run

Commit 9151c7015e 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: 9151c7015e ("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>
This commit is contained in:
Álvaro Fernández Rojas 2026-01-10 15:44:48 +01:00
parent e1f2b666ff
commit e1c125c167
2 changed files with 6 additions and 5 deletions

View file

@ -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

View file

@ -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() {