ifconfig: improve trimming off interface number at end

When trying to auto-load a module, we trim the interface number off
the end.  Currently we stop at the first digit.  For interfaces which
have numbers in the driver name this does not work well.
In the current example ifconfig ath10k0 would load ath(4) instead of
ath10k(4).  For module/interface names like rtw88[0] we never guess
correctly.
To improve for the case we can, start trimming off digits from the
end rather than the front.

Sponsored by:	The FreeBSD Foundation
Reported by:	thierry
MFC after:	20 days
Reviewed by:	melifaro, thierry
Differential Revision: https://reviews.freebsd.org/D40137
This commit is contained in:
Bjoern A. Zeeb 2023-05-17 20:40:47 +00:00
parent dc5361ea16
commit 2e6756b752

View File

@ -1752,11 +1752,13 @@ ifmaybeload(struct ifconfig_args *args, const char *name)
/* trim the interface number off the end */
strlcpy(ifname, name, sizeof(ifname));
for (dp = ifname; *dp != 0; dp++)
if (isdigit(*dp)) {
*dp = 0;
dp = ifname + strlen(ifname) - 1;
for (; dp > ifname; dp--) {
if (isdigit(*dp))
*dp = '\0';
else
break;
}
}
/* Either derive it from the map or guess otherwise */
*ifkind = '\0';