]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/net/pf_if.c
xnu-3789.51.2.tar.gz
[apple/xnu.git] / bsd / net / pf_if.c
index 4c05205baf47a7c00cf1933fd706c00072e792ed..05f265677392dfb7e4cf085e73f95bb7d45b3649 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007-2010 Apple Inc. All rights reserved.
+ * Copyright (c) 2007-2016 Apple Inc. All rights reserved.
  *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
  *
@@ -148,7 +148,8 @@ pfi_kif_get(const char *kif_name)
 
        bzero(&s, sizeof (s));
        strlcpy(s.pfik_name, kif_name, sizeof (s.pfik_name));
-       if ((kif = RB_FIND(pfi_ifhead, &pfi_ifs, (struct pfi_kif *)&s)) != NULL)
+       if ((kif = RB_FIND(pfi_ifhead, &pfi_ifs,
+           (struct pfi_kif *)(void *)&s)) != NULL)
                return (kif);
 
        /* create new one */
@@ -229,14 +230,11 @@ void
 pfi_attach_ifnet(struct ifnet *ifp)
 {
        struct pfi_kif *kif;
-       char if_name[IFNAMSIZ];
 
        lck_mtx_assert(pf_lock, LCK_MTX_ASSERT_OWNED);
 
        pfi_update++;
-       (void) snprintf(if_name, sizeof (if_name), "%s%d",
-           ifp->if_name, ifp->if_unit);
-       if ((kif = pfi_kif_get(if_name)) == NULL)
+       if ((kif = pfi_kif_get(if_name(ifp))) == NULL)
                panic("pfi_kif_get failed");
 
        ifnet_lock_exclusive(ifp);
@@ -286,7 +284,6 @@ pfi_match_addr(struct pfi_dynaddr *dyn, struct pf_addr *a, sa_family_t af)
                default:
                        return (pfr_match_addr(dyn->pfid_kt, a, AF_INET));
                }
-               break;
 #endif /* INET */
 #if INET6
        case AF_INET6:
@@ -299,7 +296,6 @@ pfi_match_addr(struct pfi_dynaddr *dyn, struct pf_addr *a, sa_family_t af)
                default:
                        return (pfr_match_addr(dyn->pfid_kt, a, AF_INET6));
                }
-               break;
 #endif /* INET6 */
        default:
                return (0);
@@ -461,8 +457,8 @@ pfi_instance_add(struct ifnet *ifp, int net, int flags)
                        continue;
                }
                if ((flags & PFI_AFLAG_NETWORK) && af == AF_INET6 &&
-                   IN6_IS_ADDR_LINKLOCAL(
-                   &((struct sockaddr_in6 *)ia->ifa_addr)->sin6_addr)) {
+                   IN6_IS_ADDR_LINKLOCAL(&((struct sockaddr_in6 *)
+                   (void *)ia->ifa_addr)->sin6_addr)) {
                        IFA_UNLOCK(ia);
                        continue;
                }
@@ -484,10 +480,10 @@ pfi_instance_add(struct ifnet *ifp, int net, int flags)
                if (net2 == 128 && (flags & PFI_AFLAG_NETWORK)) {
                        if (af == AF_INET)
                                net2 = pfi_unmask(&((struct sockaddr_in *)
-                                   ia->ifa_netmask)->sin_addr);
+                                   (void *)ia->ifa_netmask)->sin_addr);
                        else if (af == AF_INET6)
                                net2 = pfi_unmask(&((struct sockaddr_in6 *)
-                                   ia->ifa_netmask)->sin6_addr);
+                                   (void *)ia->ifa_netmask)->sin6_addr);
                }
                if (af == AF_INET && net2 > 32)
                        net2 = 32;
@@ -536,9 +532,10 @@ pfi_address_add(struct sockaddr *sa, int af, int net)
        p->pfra_af = af;
        p->pfra_net = net;
        if (af == AF_INET)
-               p->pfra_ip4addr = ((struct sockaddr_in *)sa)->sin_addr;
+               p->pfra_ip4addr = ((struct sockaddr_in *)(void *)sa)->sin_addr;
        else if (af == AF_INET6) {
-               p->pfra_ip6addr = ((struct sockaddr_in6 *)sa)->sin6_addr;
+               p->pfra_ip6addr =
+                   ((struct sockaddr_in6 *)(void *)sa)->sin6_addr;
                if (IN6_IS_SCOPE_EMBED(&p->pfra_ip6addr))
                        p->pfra_ip6addr.s6_addr16[1] = 0;
        }
@@ -601,28 +598,27 @@ pfi_update_status(const char *name, struct pf_status *pfs)
        lck_mtx_assert(pf_lock, LCK_MTX_ASSERT_OWNED);
 
        strlcpy(key.pfik_name, name, sizeof (key.pfik_name));
-       p = RB_FIND(pfi_ifhead, &pfi_ifs, (struct pfi_kif *)&key);
+       p = RB_FIND(pfi_ifhead, &pfi_ifs, (struct pfi_kif *)(void *)&key);
        if (p == NULL)
                return;
 
-       if (pfs) {
+       if (pfs != NULL) {
                bzero(pfs->pcounters, sizeof (pfs->pcounters));
                bzero(pfs->bcounters, sizeof (pfs->bcounters));
-       }
-       /* just clear statistics */
-       if (pfs == NULL) {
+               for (i = 0; i < 2; i++)
+                       for (j = 0; j < 2; j++)
+                               for (k = 0; k < 2; k++) {
+                                       pfs->pcounters[i][j][k] +=
+                                               p->pfik_packets[i][j][k];
+                                       pfs->bcounters[i][j] +=
+                                               p->pfik_bytes[i][j][k];
+                               }
+       } else {
+               /* just clear statistics */
                bzero(p->pfik_packets, sizeof (p->pfik_packets));
                bzero(p->pfik_bytes, sizeof (p->pfik_bytes));
                p->pfik_tzero = pf_calendar_time_second();
        }
-       for (i = 0; i < 2; i++)
-               for (j = 0; j < 2; j++)
-                       for (k = 0; k < 2; k++) {
-                               pfs->pcounters[i][j][k] +=
-                                   p->pfik_packets[i][j][k];
-                               pfs->bcounters[i][j] +=
-                                   p->pfik_bytes[i][j][k];
-                       }
 }
 
 int