From nobody Wed Dec 17 07:59:58 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id EC1DBE748FB for ; Mon, 2 Oct 2023 23:40:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236874AbjJBXkZ (ORCPT ); Mon, 2 Oct 2023 19:40:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37980 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237475AbjJBXkW (ORCPT ); Mon, 2 Oct 2023 19:40:22 -0400 Received: from mail-4316.protonmail.ch (mail-4316.protonmail.ch [185.70.43.16]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CC933EC for ; Mon, 2 Oct 2023 16:40:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1696290018; x=1696549218; bh=DpHnaHAijT4d4KiioJpkmarggtLbGhDHnkNuc1o3f/E=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=epe6D07shF2IKgkogFyig7ZBdeACCWSnRHv+vnRQuFl5aNbLvCdxuk4XrcoVi8yog qFwZTCsMw+tpu57fXb1g7zRHTM3VXTWsF+1Re9OjOqt59vYEcq26RInlM1K3+rNtOt +CI2ZYPCXH1V1YaYSt0JrZn+0ua1axr2CqAMoQQq7p9YveHe1DkRdg/XqWlOweuczB g6tqLJ5vA0RTZriRyMRS97SRL6nJBtVGL1phVs0v9NZXgZKNML/3TiG+BLGguSaa8L oZSCd0cUwGu1AuPLTUEWxtLw6mtpwuZ1/Ff2/c/cVf6bFri9/u5ZtS03sfXMuCYvpd S9NwqeX1uiesQ== Date: Mon, 02 Oct 2023 23:40:02 +0000 To: netdev@vger.kernel.org, linux-kernel@vger.kernel.org From: Michael Pratt Cc: "David S. Miller" , Eric Dumazet , Paolo Abeni , Rafal Milecki , Christian Marangi , Michael Pratt Subject: [PATCH 1/2] mac_pton: support MAC addresses with other delimiters Message-ID: <20231002233946.16703-2-mcpratt@protonmail.com> In-Reply-To: <20231002233946.16703-1-mcpratt@protonmail.com> References: <20231002233946.16703-1-mcpratt@protonmail.com> Feedback-ID: 27397386:user:proton MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Michael Pratt Some network hardware vendors may do something unique when storing the MAC address into hardware in ASCII, like using hyphens as the delimiter. Allow parsing of MAC addresses with a non-standard delimiter (punctuation other than a colon). e.g. aa-bb-cc-dd-ee-ff Signed-off-by: Michael Pratt --- lib/net_utils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/net_utils.c b/lib/net_utils.c index 42bb0473fb22..ecb7625e1dec 100644 --- a/lib/net_utils.c +++ b/lib/net_utils.c @@ -18,7 +18,7 @@ bool mac_pton(const char *s, u8 *mac) for (i =3D 0; i < ETH_ALEN; i++) { if (!isxdigit(s[i * 3]) || !isxdigit(s[i * 3 + 1])) return false; - if (i !=3D ETH_ALEN - 1 && s[i * 3 + 2] !=3D ':') + if (i !=3D ETH_ALEN - 1 && !ispunct(s[i * 3 + 2])) return false; } for (i =3D 0; i < ETH_ALEN; i++) { --=20 2.30.2 From nobody Wed Dec 17 07:59:58 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C3F3CE776CB for ; Mon, 2 Oct 2023 23:40:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237326AbjJBXkT (ORCPT ); Mon, 2 Oct 2023 19:40:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37896 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229589AbjJBXkS (ORCPT ); Mon, 2 Oct 2023 19:40:18 -0400 Received: from mail-40134.protonmail.ch (mail-40134.protonmail.ch [185.70.40.134]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 32F90C6 for ; Mon, 2 Oct 2023 16:40:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1696290013; x=1696549213; bh=f73SVN23XeUhlvXE2ntl83ku7FkRb7mPON/Y+MCs9PI=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=MJPu1oW18Wcgbk5mEVrXMkE/3dzhiE5IL6Qf1NXtwSiG9Nlii+WnuJchpAt4pFhxf o3S4Y+IqI3KWXTZdRr4cWniZj3kb3SqJpLOUjW4DpYVCIbgVBUsatF81uSvcmXVdA6 GOpHwIcR159vKPY2pv2qm2iat6K+u874pv6IazWHILFHxdf1hanDkBDkYQyyExk5Ne 03AR/Y9N6nUjoIYQD5w6hQnMIIL0mfJJhNnaT1Ht3O/aiyuTXEkuYSSAMHqW7VmhS4 aYXDgNT1Rdx95k/wXMotL8zG7PLWevkGDEZJsV2BB8g9H4/KXUOwO3p82SfXz7GkcI Fg41zcy9k3geQ== Date: Mon, 02 Oct 2023 23:40:07 +0000 To: netdev@vger.kernel.org, linux-kernel@vger.kernel.org From: Michael Pratt Cc: "David S. Miller" , Eric Dumazet , Paolo Abeni , Rafal Milecki , Christian Marangi , Michael Pratt Subject: [PATCH 2/2] mac_pton: support MAC addresses without delimiters Message-ID: <20231002233946.16703-3-mcpratt@protonmail.com> In-Reply-To: <20231002233946.16703-1-mcpratt@protonmail.com> References: <20231002233946.16703-1-mcpratt@protonmail.com> Feedback-ID: 27397386:user:proton MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Michael Pratt Some network hardware vendors may do something unique when storing the MAC address into hardware in ASCII, like leaving out delimiters in order to avoid using more than a single 16-byte logical addressing line. Allow parsing of MAC addresses without a delimiter. Signed-off-by: Michael Pratt --- lib/net_utils.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/net_utils.c b/lib/net_utils.c index ecb7625e1dec..f5fd1926af59 100644 --- a/lib/net_utils.c +++ b/lib/net_utils.c @@ -7,9 +7,14 @@ =20 bool mac_pton(const char *s, u8 *mac) { + size_t minlen =3D 2 * ETH_ALEN; size_t maxlen =3D 3 * ETH_ALEN - 1; int i; =20 + /* AABBCCDDEEFF */ + if (strnlen(s, maxlen) =3D=3D minlen) + goto no_delim; + /* XX:XX:XX:XX:XX:XX */ if (strnlen(s, maxlen) < maxlen) return false; @@ -25,5 +30,15 @@ bool mac_pton(const char *s, u8 *mac) mac[i] =3D (hex_to_bin(s[i * 3]) << 4) | hex_to_bin(s[i * 3 + 1]); } return true; + +no_delim: + for (i =3D 0; i < minlen; i++) { + if (!isxdigit(s[i])) + return false; + } + for (i =3D 0; i < ETH_ALEN; i++) { + mac[i] =3D (hex_to_bin(s[i * 2]) << 4) | hex_to_bin(s[i * 2 + 1]); + } + return true; } EXPORT_SYMBOL(mac_pton); --=20 2.30.2