From nobody Sat May 16 16:44:41 2026 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4gHqfd3Y1bz6cgl4 for ; Sat, 16 May 2026 16:44:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R13" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4gHqfd2v2Fz3wch for ; Sat, 16 May 2026 16:44:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1778949881; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8y1LwbebhMA85JfRh2QuH1XnA09Z80eNKEjQQdhRqf8=; b=ALDsJd1S7kSJe3X4FqUCMaaCZcfJ8UbJWajA/RWaTskxyI8k/1mRef64S4FlNcpT9mVszz SCKg9EVxu6VXxbD4quEMkHC+I7KJHAmoQUyXYFjlWmNOLfCNk5OCnIzHyU3RdAXKMLfMdy 7jgu8InHo5Nbbl2XHpk6rgNCt3Kal3BtMoPY2GlfbUlF+AdqkmeCJ6cU5FmTLo+9QStxf9 4OtaDXS9VE2PpGQEANS+GJwC5KaVkjM3C4hORB1ctTIx9/5zEUlMgrN4JcYz322sZXNxTE xc8xY6WAHI7WrbCWcRpeKV5+LaWifD14ksnZyb6Es0T2Frj1uHYCk+FKybjQCA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1778949881; a=rsa-sha256; cv=none; b=Y7uQaHb13Cr/RK/DS58o79ukL1tGaBhCYz1xzNSactS6JoRkOWjwe3Q0qjKv/JcCnYx5Hl wDDAoHqGZVmm0/QMiRTT60RcY/n4jVFo/tPZILEIepNHpS+GoyVeD2++4VADCAiMPSCwa/ 8xRawPegHseNkNah91iuSLyoVpc3Inm4Icq2mTlNgRE3EHGXPQGH8hW+Ceag1zK776Y4zy bMUyEwiveBSgHzNKU6HMEPJIrgIdAfTz7gkBHwza8beeewyAkrSxteySFaatpCDow5bUbc zx1nNgQcxFZdNxhuMvo0jmgW27G+E04IeS2LY2WpCXXlPWft9tgERzu1edVVyw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1778949881; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8y1LwbebhMA85JfRh2QuH1XnA09Z80eNKEjQQdhRqf8=; b=NCQV75+E6fOnYlh9Rzu3209zwJP06+8xkwGOuphGY3gqe40j5uzKq7LuFY9y/hnnX0wDyk 53ksNs5yzq1TcrEbVNv19KsxNqhHAFZk0WGWBhWPq04MdzLhNL3Gt3hXc0y35MgzaicaNE PdBtN5u9S2DvDABUgPKkm/r1F0uHr+3ousM4mGZLQVZUHVjXkRQUknFNuMRk52A1Na/5Tn QkLHUErCdsLyppBMv6Hc2R6Vxa/9rC1jc+2fE3edqjlsahxh+71V3pCVO0AqeXMipd5c6f xhnszwXd6Nr/Am1pf0lzXyFgtGFVdcMkpW13HCcnonyrmTZZ+dhWGTyVNQG3cw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4gHqfd1yb3z12k4 for ; Sat, 16 May 2026 16:44:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 18969 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 16 May 2026 16:44:41 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kristof Provost Subject: git: 9d0b771caa49 - stable/15 - pfctl: relax interface name requirement List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 9d0b771caa49eb77176d8f8cece8d1232dffe7f2 Auto-Submitted: auto-generated Date: Sat, 16 May 2026 16:44:41 +0000 Message-Id: <6a089ef9.18969.685b873a@gitrepo.freebsd.org> The branch stable/15 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=9d0b771caa49eb77176d8f8cece8d1232dffe7f2 commit 9d0b771caa49eb77176d8f8cece8d1232dffe7f2 Author: Kristof Provost AuthorDate: 2026-05-07 09:58:17 +0000 Commit: Kristof Provost CommitDate: 2026-05-16 16:44:00 +0000 pfctl: relax interface name requirement The FreeBSD network stack, for better or worse, does not impose any requirements on interface names. As such it's valid for an interface name to start with a number (or indeed, be something like '⭐'). Allow this in pfctl, and add a test case for the specific case of interface names starting with a number. Note that we don't support UTF-8 names fully, so those may still fail. PR: 295064 MFC after: 1 week Sponsored by: Rubicon Communications, LLC ("Netgate") (cherry picked from commit 4e7c1ff95a5187faee524055f22c4cf4134d1147) --- sbin/pfctl/parse.y | 2 +- tests/sys/netpfil/pf/names.sh | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/sbin/pfctl/parse.y b/sbin/pfctl/parse.y index c733a9496a59..aea30cb33481 100644 --- a/sbin/pfctl/parse.y +++ b/sbin/pfctl/parse.y @@ -3764,7 +3764,7 @@ dynaddr : '(' STRING ')' { char *p, *op; op = $2; - if (!isalpha(op[0])) { + if (op[0] == '\0') { yyerror("invalid interface name '%s'", op); free(op); YYERROR; diff --git a/tests/sys/netpfil/pf/names.sh b/tests/sys/netpfil/pf/names.sh index e47b0917cfec..c6f2a06c15f9 100644 --- a/tests/sys/netpfil/pf/names.sh +++ b/tests/sys/netpfil/pf/names.sh @@ -95,8 +95,48 @@ group_cleanup() pft_cleanup } +atf_test_case "start_number" "cleanup" +start_number_head() +{ + atf_set descr 'Test interface names starting with a number' + atf_set require.user root +} + +start_number_body() +{ + pft_init + + epair=$(vnet_mkepair) + ifconfig ${epair}a 192.0.2.1/24 up + + vnet_mkjail alcatraz ${epair}b + jexec alcatraz ifconfig ${epair}b 192.0.2.2/24 up + jexec alcatraz ifconfig ${epair}b name 4ever + jexec alcatraz pfctl -e + + jexec alcatraz ifconfig + + pft_set_rules alcatraz \ + "block" \ + "pass in from any to (4ever)" + + atf_check -o ignore ping -c 3 192.0.2.2 + + # Negative test, if the interface doesn't exist we don't pass packets + pft_set_rules alcatraz \ + "block" \ + "pass in from any to (5ever)" + atf_check -s exit:2 -o ignore ping -c 1 -t 1 192.0.2.2 +} + +start_number_cleanup() +{ + pft_cleanup +} + atf_init_test_cases() { atf_add_test_case "names" atf_add_test_case "group" + atf_add_test_case "start_number" }