mirror of
https://git.openwrt.org/openwrt/openwrt.git
synced 2026-01-28 01:17:30 +01:00
netifd: dhcp: suppress udhcpc default vendor class if specified in sendopts
Some checks are pending
Build all core packages / Build all core packages for selected target (push) Waiting to run
Some checks are pending
Build all core packages / Build all core packages for selected target (push) Waiting to run
When DHCP Option 60 is specified via sendopts (hex, decimal, or named formats), udhcpc sends its default "udhcp <version>" string alongside the custom value, which causes authentication failures with some ISPs. This fix detects Option 60 in sendopts and automatically passes -V "" to udhcpc to suppress the default version string while allowing multiple user-defined vendor classes. Supported formats: - Hexadecimal: 0x3c - Decimal: 60 - Named: vendor Fixes: #21242 Signed-off-by: JINLIANG GU <ihipop@gmail.com> https://github.com/openwrt/openwrt/pull/21450 Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
This commit is contained in:
parent
93e98b4082
commit
89d982d723
2 changed files with 13 additions and 2 deletions
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=netifd
|
||||
PKG_RELEASE:=1
|
||||
PKG_RELEASE:=2
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/netifd.git
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@ proto_dhcp_setup() {
|
|||
[ "$norelease" = 1 ] && norelease="" || norelease="-R"
|
||||
[ -z "$clientid" ] && clientid="$(proto_dhcp_get_default_clientid "$iface")"
|
||||
[ -n "$clientid" ] && clientid="-x 0x3d:${clientid//:/}"
|
||||
[ -n "$vendorid" ] && append dhcpopts "-x 0x3c:$(echo -n "$vendorid" | hexdump -ve '1/1 "%02x"')"
|
||||
[ -n "$iface6rd" ] && proto_export "IFACE6RD=$iface6rd"
|
||||
[ "$iface6rd" != 0 -a -f /lib/netifd/proto/6rd.sh ] && append dhcpopts "-O 212"
|
||||
[ -n "$zone6rd" ] && proto_export "ZONE6RD=$zone6rd"
|
||||
|
|
@ -76,6 +77,16 @@ proto_dhcp_setup() {
|
|||
# Request classless route option (see RFC 3442) by default
|
||||
[ "$classlessroute" = "0" ] || append dhcpopts "-O 121"
|
||||
|
||||
# Avoid sending duplicate Option 60 values
|
||||
local emptyvendorid
|
||||
case "$dhcpopts" in
|
||||
*"-x 0"[xX]*"3"[cC]":"* |\
|
||||
*"-x 60:"* |\
|
||||
*"-x vendor:"*)
|
||||
emptyvendorid=1
|
||||
;;
|
||||
esac
|
||||
|
||||
proto_export "INTERFACE=$config"
|
||||
proto_run_command "$config" udhcpc \
|
||||
-p /var/run/udhcpc-$iface.pid \
|
||||
|
|
@ -83,7 +94,7 @@ proto_dhcp_setup() {
|
|||
-f -t 0 -i "$iface" \
|
||||
${ipaddr:+-r ${ipaddr/\/*/}} \
|
||||
${hostname:+-x "hostname:$hostname"} \
|
||||
${vendorid:+-V "$vendorid"} \
|
||||
${emptyvendorid:+-V ""} \
|
||||
$clientid $defaultreqopts $broadcast $norelease $dhcpopts
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue