Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 May 2023 15:24:44 GMT
From:      "Bjoern A. Zeeb" <bz@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 2e6756b752e0 - main - ifconfig: improve trimming off interface number at end
Message-ID:  <202305181524.34IFOiLv053761@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by bz:

URL: https://cgit.FreeBSD.org/src/commit/?id=2e6756b752e07878ae5f5e3e9b74934231f9fd17

commit 2e6756b752e07878ae5f5e3e9b74934231f9fd17
Author:     Bjoern A. Zeeb <bz@FreeBSD.org>
AuthorDate: 2023-05-17 20:40:47 +0000
Commit:     Bjoern A. Zeeb <bz@FreeBSD.org>
CommitDate: 2023-05-18 15:22:53 +0000

    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
---
 sbin/ifconfig/ifconfig.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/sbin/ifconfig/ifconfig.c b/sbin/ifconfig/ifconfig.c
index 7872c2b336a5..8c3a7b4c0007 100644
--- a/sbin/ifconfig/ifconfig.c
+++ b/sbin/ifconfig/ifconfig.c
@@ -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';



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202305181524.34IFOiLv053761>