/*
- * Copyright (c) 2012 Apple Inc. All rights reserved.
+ * Copyright (c) 2012-2017 Apple Inc. All rights reserved.
*
* @APPLE_OSREFERENCE_LICENSE_HEADER_START@
*
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),
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;
ifnet_flowadv(fce->fce_flowid);
break;
+
case FLOWSRC_PF:
default:
break;