]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/net/flowadv.c
xnu-4570.51.1.tar.gz
[apple/xnu.git] / bsd / net / flowadv.c
index 99e4d2cad0f9efc6b1138c5025827c682944822d..214c5c715eb578b02b49ceb321951b4eafb90f34 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012 Apple Inc. All rights reserved.
+ * Copyright (c) 2012-2017 Apple Inc. All rights reserved.
  *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
  *
@@ -179,12 +179,24 @@ flowadv_add(struct flowadv_fclist *fcl)
        lck_mtx_unlock(&fadv_lock);
 }
 
+void
+flowadv_add_entry(struct flowadv_fcentry *fce) {
+       lck_mtx_lock_spin(&fadv_lock);
+       STAILQ_INSERT_HEAD(&fadv_list, fce, fce_link);
+       VERIFY(!STAILQ_EMPTY(&fadv_list));
+
+       if (!fadv_active && fadv_thread != THREAD_NULL)
+               wakeup_one((caddr_t)&fadv_list);
+
+       lck_mtx_unlock(&fadv_lock);
+}
+
 static int
 flowadv_thread_cont(int err)
 {
 #pragma unused(err)
        for (;;) {
-               lck_mtx_assert(&fadv_lock, LCK_MTX_ASSERT_OWNED);
+               LCK_MTX_ASSERT(&fadv_lock, LCK_MTX_ASSERT_OWNED);
                while (STAILQ_EMPTY(&fadv_list)) {
                        VERIFY(!fadv_active);
                        (void) msleep0(&fadv_list, &fadv_lock, (PSOCK | PSPIN),
@@ -203,7 +215,7 @@ flowadv_thread_cont(int err)
                        STAILQ_NEXT(fce, fce_link) = NULL;
 
                        lck_mtx_unlock(&fadv_lock);
-                       switch (fce->fce_flowsrc) {
+                       switch (fce->fce_flowsrc_type) {
                        case FLOWSRC_INPCB:
                                inp_flowadv(fce->fce_flowid);
                                break;
@@ -212,6 +224,7 @@ flowadv_thread_cont(int err)
                                ifnet_flowadv(fce->fce_flowid);
                                break;
 
+
                        case FLOWSRC_PF:
                        default:
                                break;