summaryrefslogtreecommitdiffstats
path: root/sys/netinet6/ip6_fw.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/netinet6/ip6_fw.c')
-rw-r--r--sys/netinet6/ip6_fw.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/sys/netinet6/ip6_fw.c b/sys/netinet6/ip6_fw.c
index ce56a0d..370ff78 100644
--- a/sys/netinet6/ip6_fw.c
+++ b/sys/netinet6/ip6_fw.c
@@ -326,14 +326,17 @@ iface_match(struct ifnet *ifp, union ip6_fw_if *ifu, int byname)
{
/* Check by name or by IP address */
if (byname) {
- /* Check unit number (-1 is wildcard) */
- if (ifu->fu_via_if.unit != -1
- && ifp->if_unit != ifu->fu_via_if.unit)
- return (0);
/* Check name */
- if (strncmp(ifp->if_name, ifu->fu_via_if.name, IP6FW_IFNLEN))
- return (0);
- return (1);
+ if (ifu->fu_via_if.glob) {
+ if (fnmatch(ifu->fu_via_if.name, ifp->if_xname, 0)
+ == FNM_NOMATCH)
+ return(0);
+ } else {
+ if (strncmp(ifp->if_xname, ifu->fu_via_if.name,
+ IP6FW_IFNLEN) != 0)
+ return(0);
+ }
+ return(1);
} else if (!IN6_IS_ADDR_UNSPECIFIED(&ifu->fu_via_ip6)) { /* Zero == wildcard */
struct ifaddr *ia;
OpenPOWER on IntegriCloud