diff --git a/sbin/pfctl/pfctl_parser.c b/sbin/pfctl/pfctl_parser.c index 233f5d641d2..f85c5065294 100644 --- a/sbin/pfctl/pfctl_parser.c +++ b/sbin/pfctl/pfctl_parser.c @@ -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;