1
0
mirror of https://git.FreeBSD.org/src.git synced 2026-06-02 11:24:32 +00:00

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")
This commit is contained in:
Kristof Provost
2026-05-07 11:58:17 +02:00
parent 726ff260ec
commit 4e7c1ff95a
2 changed files with 41 additions and 1 deletions
+1 -1
View File
@@ -4242,7 +4242,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;
+40
View File
@@ -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"
}