pfctl: distinguish broadcast and PPP peer addresses

pfctl_parser.c, ifa_load() should distinguish between broadcast
and PPP peer address when it populates interface table for rule
parser.

OK @claudio, OK @dlg

Obtained from:	OpenBSD, sashan <sashan@openbsd.org>, 2e871bec67
Sponsored by:	Rubicon Communications, LLC ("Netgate")
This commit is contained in:
Kristof Provost
2026-01-12 17:14:31 +01:00
parent 393243a38d
commit 7af7d6d61d
+4 -3
View File
@@ -1598,14 +1598,15 @@ ifa_load(void)
copy_satopfaddr(&n->addr.v.a.addr, ifa->ifa_addr);
ifa->ifa_netmask->sa_family = ifa->ifa_addr->sa_family;
copy_satopfaddr(&n->addr.v.a.mask, ifa->ifa_netmask);
if (ifa->ifa_broadaddr != NULL &&
if (ifa->ifa_flags & IFF_BROADCAST &&
ifa->ifa_broadaddr != NULL &&
ifa->ifa_broadaddr->sa_len != 0) {
ifa->ifa_broadaddr->sa_family =
ifa->ifa_addr->sa_family;
ifa->ifa_broadaddr->sa_family = ifa->ifa_addr->sa_family;
copy_satopfaddr(&n->bcast, ifa->ifa_broadaddr);
}
if (ifa->ifa_dstaddr != NULL &&
} else if (ifa->ifa_flags & IFF_POINTOPOINT &&
ifa->ifa_dstaddr != NULL &&
ifa->ifa_dstaddr->sa_len != 0) {
ifa->ifa_dstaddr->sa_family =
ifa->ifa_addr->sa_family;