Differential D28871 Diff 85283 emulators/virtualbox-ose/files/patch-src-VBox-HostDrivers-VBoxNetFlt-freebsd-VBoxNetFlt-freebsd.c
Changeset View
Changeset View
Standalone View
Standalone View
emulators/virtualbox-ose/files/patch-src-VBox-HostDrivers-VBoxNetFlt-freebsd-VBoxNetFlt-freebsd.c
--- src/VBox/HostDrivers/VBoxNetFlt/freebsd/VBoxNetFlt-freebsd.c.orig 2018-10-15 14:30:58 UTC | --- src/VBox/HostDrivers/VBoxNetFlt/freebsd/VBoxNetFlt-freebsd.c.orig 2019-04-16 10:16:39 UTC | ||||
+++ src/VBox/HostDrivers/VBoxNetFlt/freebsd/VBoxNetFlt-freebsd.c | +++ src/VBox/HostDrivers/VBoxNetFlt/freebsd/VBoxNetFlt-freebsd.c | ||||
@@ -52,6 +52,7 @@ | @@ -52,6 +52,7 @@ | ||||
#include <net/if_dl.h> | #include <net/if_dl.h> | ||||
#include <net/if_types.h> | #include <net/if_types.h> | ||||
#include <net/ethernet.h> | #include <net/ethernet.h> | ||||
+#include <net/if_vlan_var.h> | +#include <net/if_vlan_var.h> | ||||
#include <netgraph/ng_message.h> | #include <netgraph/ng_message.h> | ||||
#include <netgraph/netgraph.h> | #include <netgraph/netgraph.h> | ||||
@@ -73,6 +74,7 @@ | @@ -73,6 +74,7 @@ | ||||
#define VBOXNETFLT_OS_SPECFIC 1 | #define VBOXNETFLT_OS_SPECFIC 1 | ||||
#include "../VBoxNetFltInternal.h" | #include "../VBoxNetFltInternal.h" | ||||
+#include "freebsd/the-freebsd-kernel.h" | +#include "freebsd/the-freebsd-kernel.h" | ||||
static int vboxnetflt_modevent(struct module *, int, void *); | static int vboxnetflt_modevent(struct module *, int, void *); | ||||
static ng_constructor_t ng_vboxnetflt_constructor; | static ng_constructor_t ng_vboxnetflt_constructor; | ||||
@@ -370,7 +372,11 @@ static int ng_vboxnetflt_rcvdata(hook_p hook, item_p i | @@ -436,6 +438,8 @@ static void vboxNetFltFreeBSDinput(void *arg, int pend | ||||
mtx_lock_spin(&pThis->u.s.inq.ifq_mtx); | |||||
_IF_ENQUEUE(&pThis->u.s.inq, m); | |||||
mtx_unlock_spin(&pThis->u.s.inq.ifq_mtx); | |||||
+#if __FreeBSD_version >= 1100100 | |||||
+ taskqueue_enqueue(taskqueue_fast, &pThis->u.s.tskin); | |||||
+#else | |||||
taskqueue_enqueue_fast(taskqueue_fast, &pThis->u.s.tskin); | |||||
+#endif | |||||
} | |||||
/* | |||||
* Handle mbufs on the outgoing hook, frames going to the interface | |||||
@@ -388,7 +394,11 @@ static int ng_vboxnetflt_rcvdata(hook_p hook, item_p i | |||||
mtx_lock_spin(&pThis->u.s.outq.ifq_mtx); | |||||
_IF_ENQUEUE(&pThis->u.s.outq, m); | |||||
mtx_unlock_spin(&pThis->u.s.outq.ifq_mtx); | |||||
+#if __FreeBSD_version >= 1100100 | |||||
+ taskqueue_enqueue(taskqueue_fast, &pThis->u.s.tskout); | |||||
+#else | |||||
taskqueue_enqueue_fast(taskqueue_fast, &pThis->u.s.tskout); | |||||
+#endif | |||||
} | |||||
else | |||||
{ | |||||
@@ -428,6 +438,8 @@ static void vboxNetFltFreeBSDinput(void *arg, int pend | |||||
struct ifnet *ifp = pThis->u.s.ifp; | struct ifnet *ifp = pThis->u.s.ifp; | ||||
unsigned int cSegs = 0; | unsigned int cSegs = 0; | ||||
bool fDropIt = false, fActive; | bool fDropIt = false, fActive; | ||||
+ bool is_vl_tagged = false; | + bool is_vl_tagged = false; | ||||
+ uint16_t vl_tag; | + uint16_t vl_tag; | ||||
PINTNETSG pSG; | PINTNETSG pSG; | ||||
VBOXCURVNET_SET(ifp->if_vnet); | VBOXCURVNET_SET(ifp->if_vnet); | ||||
@@ -440,6 +452,19 @@ static void vboxNetFltFreeBSDinput(void *arg, int pend | @@ -448,6 +452,19 @@ static void vboxNetFltFreeBSDinput(void *arg, int pend | ||||
if (m == NULL) | if (m == NULL) | ||||
break; | break; | ||||
+ /* Prepend a VLAN header for consumption by the virtual switch */ | + /* Prepend a VLAN header for consumption by the virtual switch */ | ||||
+ if (m->m_flags & M_VLANTAG) { | + if (m->m_flags & M_VLANTAG) { | ||||
+ vl_tag = m->m_pkthdr.ether_vtag; | + vl_tag = m->m_pkthdr.ether_vtag; | ||||
+ is_vl_tagged = true; | + is_vl_tagged = true; | ||||
+ | + | ||||
+ m = ether_vlanencap(m, m->m_pkthdr.ether_vtag); | + m = ether_vlanencap(m, m->m_pkthdr.ether_vtag); | ||||
+ if (m == NULL) { | + if (m == NULL) { | ||||
+ printf("vboxflt: unable to prepend VLAN header\n"); | + printf("vboxflt: unable to prepend VLAN header\n"); | ||||
+ break; | + break; | ||||
+ } | + } | ||||
+ m->m_flags &= ~M_VLANTAG; | + m->m_flags &= ~M_VLANTAG; | ||||
+ } | + } | ||||
+ | + | ||||
for (m0 = m; m0 != NULL; m0 = m0->m_next) | for (m0 = m; m0 != NULL; m0 = m0->m_next) | ||||
if (m0->m_len > 0) | if (m0->m_len > 0) | ||||
cSegs++; | cSegs++; | ||||
@@ -454,6 +479,27 @@ static void vboxNetFltFreeBSDinput(void *arg, int pend | @@ -462,6 +479,27 @@ static void vboxNetFltFreeBSDinput(void *arg, int pend | ||||
vboxNetFltFreeBSDMBufToSG(pThis, m, pSG, cSegs, 0); | vboxNetFltFreeBSDMBufToSG(pThis, m, pSG, cSegs, 0); | ||||
fDropIt = pThis->pSwitchPort->pfnRecv(pThis->pSwitchPort, NULL /* pvIf */, pSG, INTNETTRUNKDIR_WIRE); | fDropIt = pThis->pSwitchPort->pfnRecv(pThis->pSwitchPort, NULL /* pvIf */, pSG, INTNETTRUNKDIR_WIRE); | ||||
RTMemTmpFree(pSG); | RTMemTmpFree(pSG); | ||||
+ | + | ||||
+ /* Restore the VLAN flags before re-injecting the packet */ | + /* Restore the VLAN flags before re-injecting the packet */ | ||||
+ if (is_vl_tagged && !fDropIt) { | + if (is_vl_tagged && !fDropIt) { | ||||
+ struct ether_vlan_header *vl_hdr; | + struct ether_vlan_header *vl_hdr; | ||||
+ | + | ||||
Show All 11 Lines | |||||
+ | + | ||||
+ m->m_pkthdr.ether_vtag = vl_tag; | + m->m_pkthdr.ether_vtag = vl_tag; | ||||
+ m->m_flags |= M_VLANTAG; | + m->m_flags |= M_VLANTAG; | ||||
+ } | + } | ||||
+ | + | ||||
if (fDropIt) | if (fDropIt) | ||||
m_freem(m); | m_freem(m); | ||||
else | else | ||||
@@ -513,6 +559,7 @@ static void vboxNetFltFreeBSDoutput(void *arg, int pen | @@ -521,6 +559,7 @@ static void vboxNetFltFreeBSDoutput(void *arg, int pen | ||||
*/ | */ | ||||
int vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *pvIfData, PINTNETSG pSG, uint32_t fDst) | int vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *pvIfData, PINTNETSG pSG, uint32_t fDst) | ||||
{ | { | ||||
+ IPRT_FREEBSD_SAVE_EFL_AC(); | + IPRT_FREEBSD_SAVE_EFL_AC(); | ||||
NOREF(pvIfData); | NOREF(pvIfData); | ||||
void (*input_f)(struct ifnet *, struct mbuf *); | void (*input_f)(struct ifnet *, struct mbuf *); | ||||
@@ -529,10 +576,16 @@ int vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *p | @@ -537,10 +576,16 @@ int vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *p | ||||
{ | { | ||||
m = vboxNetFltFreeBSDSGMBufFromSG(pThis, pSG); | m = vboxNetFltFreeBSDSGMBufFromSG(pThis, pSG); | ||||
if (m == NULL) | if (m == NULL) | ||||
+ { | + { | ||||
+ IPRT_FREEBSD_RESTORE_EFL_AC(); | + IPRT_FREEBSD_RESTORE_EFL_AC(); | ||||
return VERR_NO_MEMORY; | return VERR_NO_MEMORY; | ||||
+ } | + } | ||||
m = m_pullup(m, ETHER_HDR_LEN); | m = m_pullup(m, ETHER_HDR_LEN); | ||||
if (m == NULL) | if (m == NULL) | ||||
+ { | + { | ||||
+ IPRT_FREEBSD_RESTORE_EFL_AC(); | + IPRT_FREEBSD_RESTORE_EFL_AC(); | ||||
return VERR_NO_MEMORY; | return VERR_NO_MEMORY; | ||||
+ } | + } | ||||
m->m_flags |= M_PKTHDR; | m->m_flags |= M_PKTHDR; | ||||
ether_output_frame(ifp, m); | ether_output_frame(ifp, m); | ||||
@@ -542,10 +595,16 @@ int vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *p | @@ -550,10 +595,16 @@ int vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *p | ||||
{ | { | ||||
m = vboxNetFltFreeBSDSGMBufFromSG(pThis, pSG); | m = vboxNetFltFreeBSDSGMBufFromSG(pThis, pSG); | ||||
if (m == NULL) | if (m == NULL) | ||||
+ { | + { | ||||
+ IPRT_FREEBSD_RESTORE_EFL_AC(); | + IPRT_FREEBSD_RESTORE_EFL_AC(); | ||||
return VERR_NO_MEMORY; | return VERR_NO_MEMORY; | ||||
+ } | + } | ||||
m = m_pullup(m, ETHER_HDR_LEN); | m = m_pullup(m, ETHER_HDR_LEN); | ||||
if (m == NULL) | if (m == NULL) | ||||
+ { | + { | ||||
+ IPRT_FREEBSD_RESTORE_EFL_AC(); | + IPRT_FREEBSD_RESTORE_EFL_AC(); | ||||
return VERR_NO_MEMORY; | return VERR_NO_MEMORY; | ||||
+ } | + } | ||||
/* | /* | ||||
* Delivering packets to the host will be captured by the | * Delivering packets to the host will be captured by the | ||||
* input hook. Tag the packet with a mbuf tag so that we | * input hook. Tag the packet with a mbuf tag so that we | ||||
@@ -556,6 +615,7 @@ int vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *p | @@ -564,6 +615,7 @@ int vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *p | ||||
if (mtag == NULL) | if (mtag == NULL) | ||||
{ | { | ||||
m_freem(m); | m_freem(m); | ||||
+ IPRT_FREEBSD_RESTORE_EFL_AC(); | + IPRT_FREEBSD_RESTORE_EFL_AC(); | ||||
return VERR_NO_MEMORY; | return VERR_NO_MEMORY; | ||||
} | } | ||||
@@ -566,6 +626,7 @@ int vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *p | @@ -574,6 +626,7 @@ int vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *p | ||||
ifp->if_input(ifp, m); | ifp->if_input(ifp, m); | ||||
} | } | ||||
VBOXCURVNET_RESTORE(); | VBOXCURVNET_RESTORE(); | ||||
+ IPRT_FREEBSD_RESTORE_EFL_AC(); | + IPRT_FREEBSD_RESTORE_EFL_AC(); | ||||
return VINF_SUCCESS; | return VINF_SUCCESS; | ||||
} | } | ||||
@@ -578,6 +639,7 @@ static bool vboxNetFltFreeBsdIsPromiscuous(PVBOXNETFLT | @@ -586,6 +639,7 @@ static bool vboxNetFltFreeBsdIsPromiscuous(PVBOXNETFLT | ||||
int vboxNetFltOsInitInstance(PVBOXNETFLTINS pThis, void *pvContext) | int vboxNetFltOsInitInstance(PVBOXNETFLTINS pThis, void *pvContext) | ||||
{ | { | ||||
+ IPRT_FREEBSD_SAVE_EFL_AC(); | + IPRT_FREEBSD_SAVE_EFL_AC(); | ||||
char nam[NG_NODESIZ]; | char nam[NG_NODESIZ]; | ||||
struct ifnet *ifp; | struct ifnet *ifp; | ||||
node_p node; | node_p node; | ||||
@@ -586,7 +648,10 @@ int vboxNetFltOsInitInstance(PVBOXNETFLTINS pThis, voi | @@ -594,7 +648,10 @@ int vboxNetFltOsInitInstance(PVBOXNETFLTINS pThis, voi | ||||
NOREF(pvContext); | NOREF(pvContext); | ||||
ifp = ifunit(pThis->szName); | ifp = ifunit(pThis->szName); | ||||
if (ifp == NULL) | if (ifp == NULL) | ||||
+ { | + { | ||||
+ IPRT_FREEBSD_RESTORE_EFL_AC(); | + IPRT_FREEBSD_RESTORE_EFL_AC(); | ||||
return VERR_INTNET_FLT_IF_NOT_FOUND; | return VERR_INTNET_FLT_IF_NOT_FOUND; | ||||
+ } | + } | ||||
/* Create a new netgraph node for this instance */ | /* Create a new netgraph node for this instance */ | ||||
if (ng_make_node_common(&ng_vboxnetflt_typestruct, &node) != 0) | if (ng_make_node_common(&ng_vboxnetflt_typestruct, &node) != 0) | ||||
@@ -630,12 +695,14 @@ int vboxNetFltOsInitInstance(PVBOXNETFLTINS pThis, voi | @@ -638,12 +695,14 @@ int vboxNetFltOsInitInstance(PVBOXNETFLTINS pThis, voi | ||||
vboxNetFltRelease(pThis, true /*fBusy*/); | vboxNetFltRelease(pThis, true /*fBusy*/); | ||||
} | } | ||||
VBOXCURVNET_RESTORE(); | VBOXCURVNET_RESTORE(); | ||||
+ IPRT_FREEBSD_RESTORE_EFL_AC(); | + IPRT_FREEBSD_RESTORE_EFL_AC(); | ||||
return VINF_SUCCESS; | return VINF_SUCCESS; | ||||
} | } | ||||
bool vboxNetFltOsMaybeRediscovered(PVBOXNETFLTINS pThis) | bool vboxNetFltOsMaybeRediscovered(PVBOXNETFLTINS pThis) | ||||
{ | { | ||||
+ IPRT_FREEBSD_SAVE_EFL_AC(); | + IPRT_FREEBSD_SAVE_EFL_AC(); | ||||
struct ifnet *ifp, *ifp0; | struct ifnet *ifp, *ifp0; | ||||
ifp = ASMAtomicUoReadPtrT(&pThis->u.s.ifp, struct ifnet *); | ifp = ASMAtomicUoReadPtrT(&pThis->u.s.ifp, struct ifnet *); | ||||
@@ -652,6 +719,7 @@ bool vboxNetFltOsMaybeRediscovered(PVBOXNETFLTINS pThi | @@ -660,6 +719,7 @@ bool vboxNetFltOsMaybeRediscovered(PVBOXNETFLTINS pThi | ||||
pThis->u.s.node = NULL; | pThis->u.s.node = NULL; | ||||
} | } | ||||
VBOXCURVNET_RESTORE(); | VBOXCURVNET_RESTORE(); | ||||
+ IPRT_FREEBSD_RESTORE_EFL_AC(); | + IPRT_FREEBSD_RESTORE_EFL_AC(); | ||||
if (ifp0 != NULL) | if (ifp0 != NULL) | ||||
{ | { | ||||
@@ -664,6 +732,7 @@ bool vboxNetFltOsMaybeRediscovered(PVBOXNETFLTINS pThi | @@ -672,6 +732,7 @@ bool vboxNetFltOsMaybeRediscovered(PVBOXNETFLTINS pThi | ||||
void vboxNetFltOsDeleteInstance(PVBOXNETFLTINS pThis) | void vboxNetFltOsDeleteInstance(PVBOXNETFLTINS pThis) | ||||
{ | { | ||||
+ IPRT_FREEBSD_SAVE_EFL_AC(); | + IPRT_FREEBSD_SAVE_EFL_AC(); | ||||
taskqueue_drain(taskqueue_fast, &pThis->u.s.tskin); | taskqueue_drain(taskqueue_fast, &pThis->u.s.tskin); | ||||
taskqueue_drain(taskqueue_fast, &pThis->u.s.tskout); | taskqueue_drain(taskqueue_fast, &pThis->u.s.tskout); | ||||
@@ -676,6 +745,7 @@ void vboxNetFltOsDeleteInstance(PVBOXNETFLTINS pThis) | @@ -684,6 +745,7 @@ void vboxNetFltOsDeleteInstance(PVBOXNETFLTINS pThis) | ||||
ng_rmnode_self(pThis->u.s.node); | ng_rmnode_self(pThis->u.s.node); | ||||
VBOXCURVNET_RESTORE(); | VBOXCURVNET_RESTORE(); | ||||
pThis->u.s.node = NULL; | pThis->u.s.node = NULL; | ||||
+ IPRT_FREEBSD_RESTORE_EFL_AC(); | + IPRT_FREEBSD_RESTORE_EFL_AC(); | ||||
} | } | ||||
int vboxNetFltOsPreInitInstance(PVBOXNETFLTINS pThis) | int vboxNetFltOsPreInitInstance(PVBOXNETFLTINS pThis) | ||||
@@ -689,6 +759,7 @@ int vboxNetFltOsPreInitInstance(PVBOXNETFLTINS pThis) | @@ -697,6 +759,7 @@ int vboxNetFltOsPreInitInstance(PVBOXNETFLTINS pThis) | ||||
void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, bool fActive) | void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, bool fActive) | ||||
{ | { | ||||
+ IPRT_FREEBSD_SAVE_EFL_AC(); | + IPRT_FREEBSD_SAVE_EFL_AC(); | ||||
struct ifnet *ifp; | struct ifnet *ifp; | ||||
struct ifreq ifreq; | struct ifreq ifreq; | ||||
int error; | int error; | ||||
@@ -722,7 +793,10 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b | @@ -730,7 +793,10 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b | ||||
NG_MKMESSAGE(msg, NGM_GENERIC_COOKIE, NGM_CONNECT, | NG_MKMESSAGE(msg, NGM_GENERIC_COOKIE, NGM_CONNECT, | ||||
sizeof(struct ngm_connect), M_NOWAIT); | sizeof(struct ngm_connect), M_NOWAIT); | ||||
if (msg == NULL) | if (msg == NULL) | ||||
+ { | + { | ||||
+ IPRT_FREEBSD_RESTORE_EFL_AC(); | + IPRT_FREEBSD_RESTORE_EFL_AC(); | ||||
return; | return; | ||||
+ } | + } | ||||
con = (struct ngm_connect *)msg->data; | con = (struct ngm_connect *)msg->data; | ||||
snprintf(con->path, NG_PATHSIZ, "vboxnetflt_%s:", ifp->if_xname); | snprintf(con->path, NG_PATHSIZ, "vboxnetflt_%s:", ifp->if_xname); | ||||
strlcpy(con->ourhook, "lower", NG_HOOKSIZ); | strlcpy(con->ourhook, "lower", NG_HOOKSIZ); | ||||
@@ -736,7 +810,10 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b | @@ -744,7 +810,10 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b | ||||
NG_MKMESSAGE(msg, NGM_GENERIC_COOKIE, NGM_CONNECT, | NG_MKMESSAGE(msg, NGM_GENERIC_COOKIE, NGM_CONNECT, | ||||
sizeof(struct ngm_connect), M_NOWAIT); | sizeof(struct ngm_connect), M_NOWAIT); | ||||
if (msg == NULL) | if (msg == NULL) | ||||
+ { | + { | ||||
+ IPRT_FREEBSD_RESTORE_EFL_AC(); | + IPRT_FREEBSD_RESTORE_EFL_AC(); | ||||
return; | return; | ||||
+ } | + } | ||||
con = (struct ngm_connect *)msg->data; | con = (struct ngm_connect *)msg->data; | ||||
snprintf(con->path, NG_PATHSIZ, "vboxnetflt_%s:", | snprintf(con->path, NG_PATHSIZ, "vboxnetflt_%s:", | ||||
ifp->if_xname); | ifp->if_xname); | ||||
@@ -759,7 +836,10 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b | @@ -767,7 +836,10 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b | ||||
NG_MKMESSAGE(msg, NGM_GENERIC_COOKIE, NGM_RMHOOK, | NG_MKMESSAGE(msg, NGM_GENERIC_COOKIE, NGM_RMHOOK, | ||||
sizeof(struct ngm_rmhook), M_NOWAIT); | sizeof(struct ngm_rmhook), M_NOWAIT); | ||||
if (msg == NULL) | if (msg == NULL) | ||||
+ { | + { | ||||
+ IPRT_FREEBSD_RESTORE_EFL_AC(); | + IPRT_FREEBSD_RESTORE_EFL_AC(); | ||||
return; | return; | ||||
+ } | + } | ||||
rm = (struct ngm_rmhook *)msg->data; | rm = (struct ngm_rmhook *)msg->data; | ||||
strlcpy(rm->ourhook, "input", NG_HOOKSIZ); | strlcpy(rm->ourhook, "input", NG_HOOKSIZ); | ||||
NG_SEND_MSG_PATH(error, node, msg, path, 0); | NG_SEND_MSG_PATH(error, node, msg, path, 0); | ||||
@@ -770,12 +850,16 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b | @@ -778,12 +850,16 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b | ||||
NG_MKMESSAGE(msg, NGM_GENERIC_COOKIE, NGM_RMHOOK, | NG_MKMESSAGE(msg, NGM_GENERIC_COOKIE, NGM_RMHOOK, | ||||
sizeof(struct ngm_rmhook), M_NOWAIT); | sizeof(struct ngm_rmhook), M_NOWAIT); | ||||
if (msg == NULL) | if (msg == NULL) | ||||
+ { | + { | ||||
+ IPRT_FREEBSD_RESTORE_EFL_AC(); | + IPRT_FREEBSD_RESTORE_EFL_AC(); | ||||
return; | return; | ||||
+ } | + } | ||||
rm = (struct ngm_rmhook *)msg->data; | rm = (struct ngm_rmhook *)msg->data; | ||||
strlcpy(rm->ourhook, "output", NG_HOOKSIZ); | strlcpy(rm->ourhook, "output", NG_HOOKSIZ); | ||||
NG_SEND_MSG_PATH(error, node, msg, path, 0); | NG_SEND_MSG_PATH(error, node, msg, path, 0); | ||||
} | } | ||||
VBOXCURVNET_RESTORE(); | VBOXCURVNET_RESTORE(); | ||||
+ IPRT_FREEBSD_RESTORE_EFL_AC(); | + IPRT_FREEBSD_RESTORE_EFL_AC(); | ||||
} | } | ||||
int vboxNetFltOsDisconnectIt(PVBOXNETFLTINS pThis) | int vboxNetFltOsDisconnectIt(PVBOXNETFLTINS pThis) |