After v25.12 I can’t obtain a IP via DHCP from my ISP.
I found where is the problem.
The flag -C on udhcpc request is missing.
I remove in /lib/netifd/proto/dhcp.sh lines 68 and 69 and restore from v24.10 line 54 instead. Removed lines: [ -z "$clientid" ] && clientid="$(proto_dhcp_get_default_clientid "$iface")"
[ -n "$clientid" ] && clientid="-x 0x3d:${clientid//:/}" Replaced with this line from v24.10: [ -n "$clientid" ] && clientid="-x 0x3d:${clientid//:/}" || clientid="-C"
Now udhcpc work perfectly for me.
Can you add a option to remove clientid when DHCP is used?
Also see here: #21671 with proposed solution here. But due to the lack of reactions, I reckon this is not wanted by the relevant devs, so I didn't PR it.
I'd suggest someone who's actually affected send a PR (feel free to copy my proposal, no credit needed). I'm not affected and therefore can't argue that the changed behavior broke anything for me.
To make it clear, it's not incorrect, so there's nothing to "correct".
Technically, it's fully correct and in accordance with RFC4361.
But it's a breaking change which, in addition, doesn't work with certain ISPs. Such a change shouldn't be enforced with no way of going back to the previous, working behavior. It makes the product, without any need, unusable for a certain group of users.
But again, this is only my personal opinion. I'm puzzled from a product management and/or support point of view. As a user, I'm not affected, so I won't fight for or against the actual change.
Instead, I'm arguing towards proper phase-in/phase-out of features. Ie., the first step should've been to add RFC4361 compliance only as an optional feature. Later perhaps make it default with possibility to turn it off, and only as a very last step, far in the future (and only in case sufficient adoption has taken place), maybe enforce it.
Edit: Looks like the point has been taken in issue #22332 by the dev who originally implemented the option 61 enforcement. So it could be that we'll see an update to this more or less soon.
I’ve fought this issue today and I saw that’s indeed the issue here. As I wanted to stay as close as possible to default openwrt implementation even though this breaking change for those of us tied by their ISPs, I deceded to implement a bit different approach.
If you apply that patch and set that clientid to 00 (no offense to devs, its just hex ) your udhcp will puth that -C flag which will suppress client id in dhcp requests.
Hope in the next minor release someone add an option to suppress the client Id.
Just a hint, POSIX shell uses a single = for string comparisons - some shells are more lenient than others, but == is invalid for if/ test according for POSIX/ SUSv4.
I don't know Xiaomi ax3000t , but look at my first post here. That's only solution for now. Probably your router have similar DHCP script in another directory, check it.
I had tested with SSH and "vi" editor, using "root" user.
The changes are saved by ":wq" command in the editor and the router had rebooted via "reboot".
All is fine and changes are permanent.
I don't have same problem on my router and I can't help you.