summaryrefslogtreecommitdiffstats
path: root/freebsd/sbin/pfctl/pfctl_parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'freebsd/sbin/pfctl/pfctl_parser.c')
-rw-r--r--freebsd/sbin/pfctl/pfctl_parser.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/freebsd/sbin/pfctl/pfctl_parser.c b/freebsd/sbin/pfctl/pfctl_parser.c
index 81e23e84..25e2a59b 100644
--- a/freebsd/sbin/pfctl/pfctl_parser.c
+++ b/freebsd/sbin/pfctl/pfctl_parser.c
@@ -1380,6 +1380,9 @@ ifa_lookup(const char *ifa_name, int flags)
last_if = p->ifname;
if ((flags & PFI_AFLAG_NOALIAS) && p->af == AF_INET && got4)
continue;
+ if ((flags & PFI_AFLAG_NOALIAS) && p->af == AF_INET6 &&
+ IN6_IS_ADDR_LINKLOCAL(&p->addr.v.a.addr.v6))
+ continue;
if ((flags & PFI_AFLAG_NOALIAS) && p->af == AF_INET6 && got6)
continue;
if (p->af == AF_INET)
@@ -1414,6 +1417,7 @@ ifa_lookup(const char *ifa_name, int flags)
set_ipmask(n, 128);
}
n->ifindex = p->ifindex;
+ n->ifname = strdup(p->ifname);
n->next = NULL;
n->tail = n;