emulators/virtualbox-ose-kmod-legacy: Fix build error since 1500027 (struct ifnet is now hidden)

Based on patch from wulf.

PR:		282780
Tested by:	groenveld@acm.org
This commit is contained in:
Vladimir Druzenko 2024-12-25 12:48:45 +03:00
parent 1b244fbbf4
commit 3528379355
2 changed files with 326 additions and 26 deletions

View File

@ -1,14 +1,147 @@
--- src/VBox/HostDrivers/VBoxNetAdp/freebsd/VBoxNetAdp-freebsd.c.orig 2020-05-13 19:43:54 UTC
--- src/VBox/HostDrivers/VBoxNetAdp/freebsd/VBoxNetAdp-freebsd.c.orig 2020-07-09 16:57:01 UTC
+++ src/VBox/HostDrivers/VBoxNetAdp/freebsd/VBoxNetAdp-freebsd.c
@@ -235,7 +235,11 @@ static void VBoxNetAdpFreeBSDNetstart(struct ifnet *if
@@ -216,7 +216,11 @@ static void VBoxNetAdpFreeBSDNetinit(void *priv)
PVBOXNETADP pThis = priv;
struct ifnet *ifp = pThis->u.s.ifp;
+#if __FreeBSD_version >= 1500000
+ if_setdrvflagbits(ifp, IFF_DRV_RUNNING, 0);
+#else
ifp->if_drv_flags |= IFF_DRV_RUNNING;
+#endif
}
/**
@@ -226,21 +230,46 @@ static void VBoxNetAdpFreeBSDNetstart(struct ifnet *if
*/
static void VBoxNetAdpFreeBSDNetstart(struct ifnet *ifp)
{
+#if __FreeBSD_version >= 1500000
+ PVBOXNETADP pThis = if_getsoftc(ifp);
+#else
PVBOXNETADP pThis = ifp->if_softc;
+#endif
struct mbuf *m;
+#if __FreeBSD_version >= 1500000
+ if ((if_getdrvflags(ifp) & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != IFF_DRV_RUNNING)
+#else
if ((ifp->if_drv_flags & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != IFF_DRV_RUNNING)
+#endif
return;
+#if __FreeBSD_version >= 1500000
+ if_setdrvflagbits(ifp, IFF_DRV_OACTIVE, 0);
+ while (!if_sendq_empty(ifp))
+#else
ifp->if_drv_flags |= IFF_DRV_OACTIVE;
while (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
+#endif
{
+#if __FreeBSD_version >= 1100036
+ if_inc_counter(ifp, IFCOUNTER_OPACKETS, 1);
+#else
ifp->if_opackets++;
+#endif
+#if __FreeBSD_version >= 1500000
+ m = if_dequeue(ifp);
+#else
IFQ_DRV_DEQUEUE(&ifp->if_snd, m);
+#endif
BPF_MTAP(ifp, m);
m_freem(m);
}
+#if __FreeBSD_version >= 1500000
+ if_setdrvflagbits(ifp, 0, IFF_DRV_OACTIVE);
+#else
ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+#endif
}
/**
@@ -253,6 +282,18 @@ static int VBoxNetAdpFreeBSDNetioctl(struct ifnet *ifp
switch (cmd)
{
case SIOCSIFFLAGS:
+#if __FreeBSD_version >= 1500000
+ if (if_getflags(ifp) & IFF_UP)
+ {
+ if (!(if_getdrvflags(ifp) & IFF_DRV_RUNNING))
+ if_init(ifp, if_getsoftc(ifp));
+ }
+ else
+ {
+ if (if_getdrvflags(ifp) & IFF_DRV_RUNNING)
+ if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
+ }
+#else
if (ifp->if_flags & IFF_UP)
{
if (!(ifp->if_drv_flags & IFF_DRV_RUNNING))
@@ -263,6 +304,7 @@ static int VBoxNetAdpFreeBSDNetioctl(struct ifnet *ifp
if (ifp->if_drv_flags & IFF_DRV_RUNNING)
ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
}
+#endif
break;
case SIOCGIFMEDIA:
{
@@ -297,7 +339,11 @@ int vboxNetAdpOsCreate(PVBOXNETADP pThis, PCRTMAC pMac
int vboxNetAdpOsCreate(PVBOXNETADP pThis, PCRTMAC pMac)
{
+#if __FreeBSD_version >= 1500000
+ if_t ifp;
+#else
struct ifnet *ifp;
+#endif
VBOXCURVNET_SET_FROM_UCRED();
ifp = if_alloc(IFT_ETHER);
@@ -305,6 +351,16 @@ int vboxNetAdpOsCreate(PVBOXNETADP pThis, PCRTMAC pMac
return VERR_NO_MEMORY;
if_initname(ifp, VBOXNETADP_NAME, pThis->iUnit);
+#if __FreeBSD_version >= 1500000
+ if_setsoftc(ifp, pThis);
+ if_setmtu(ifp, ETHERMTU);
+ if_setflagbits(ifp, IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST, 0);
+ if_setioctlfn(ifp, VBoxNetAdpFreeBSDNetioctl);
+ if_setstartfn(ifp, VBoxNetAdpFreeBSDNetstart);
+ if_setinitfn(ifp, VBoxNetAdpFreeBSDNetinit);
+ if_setsendqlen(ifp, IFQ_MAXLEN);
+ if_setsendqready(ifp);
+#else
ifp->if_softc = pThis;
ifp->if_mtu = ETHERMTU;
ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
@@ -314,10 +370,17 @@ int vboxNetAdpOsCreate(PVBOXNETADP pThis, PCRTMAC pMac
IFQ_SET_MAXLEN(&ifp->if_snd, IFQ_MAXLEN);
ifp->if_snd.ifq_drv_maxlen = IFQ_MAXLEN;
IFQ_SET_READY(&ifp->if_snd);
+#endif
ether_ifattach(ifp, (void *)pMac);
+#if __FreeBSD_version >= 1500000
+ (void)if_setbaudrate(ifp, 0);
+
+ strncpy(pThis->szName, if_name(ifp), VBOXNETADP_MAX_NAME_LEN);
+#else
ifp->if_baudrate = 0;
strncpy(pThis->szName, ifp->if_xname, VBOXNETADP_MAX_NAME_LEN);
+#endif
pThis->u.s.ifp = ifp;
VBOXCURVNET_RESTORE();
return 0;
@@ -328,7 +391,11 @@ void vboxNetAdpOsDestroy(PVBOXNETADP pThis)
struct ifnet *ifp;
ifp = pThis->u.s.ifp;
+#if __FreeBSD_version >= 1500000
+ VBOXCURVNET_SET(if_getvnet(ifp));
+#else
VBOXCURVNET_SET(ifp->if_vnet);
+#endif
ether_ifdetach(ifp);
if_free(ifp);
VBOXCURVNET_RESTORE();

View File

@ -33,7 +33,28 @@
break;
case MOD_UNLOAD:
@@ -361,7 +362,14 @@ static int ng_vboxnetflt_rcvdata(hook_p hook, item_p i
@@ -334,12 +335,20 @@ static int ng_vboxnetflt_rcvdata(hook_p hook, item_p i
{
const node_p node = NG_HOOK_NODE(hook);
PVBOXNETFLTINS pThis = NG_NODE_PRIVATE(node);
+#if __FreeBSD_version >= 1500000
+ if_t ifp = pThis->u.s.ifp;
+#else
struct ifnet *ifp = pThis->u.s.ifp;
+#endif
struct mbuf *m;
struct m_tag *mtag;
bool fActive;
+#if __FreeBSD_version >= 1500000
+ VBOXCURVNET_SET(if_getvnet(ifp));
+#else
VBOXCURVNET_SET(ifp->if_vnet);
+#endif
fActive = vboxNetFltTryRetainBusyActive(pThis);
NGI_GET_M(item, m);
@@ -361,7 +370,14 @@ static int ng_vboxnetflt_rcvdata(hook_p hook, item_p i
{
if (mtag != NULL || !fActive)
{
@ -48,7 +69,7 @@
if (fActive)
vboxNetFltRelease(pThis, true /*fBusy*/);
VBOXCURVNET_RESTORE();
@@ -370,7 +378,11 @@ static int ng_vboxnetflt_rcvdata(hook_p hook, item_p i
@@ -370,7 +386,11 @@ static int ng_vboxnetflt_rcvdata(hook_p hook, item_p i
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);
@ -60,7 +81,7 @@
}
/*
* Handle mbufs on the outgoing hook, frames going to the interface
@@ -388,7 +400,11 @@ static int ng_vboxnetflt_rcvdata(hook_p hook, item_p i
@@ -388,7 +408,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);
@ -72,16 +93,30 @@
}
else
{
@@ -428,6 +444,8 @@ static void vboxNetFltFreeBSDinput(void *arg, int pend
@@ -425,12 +449,22 @@ static void vboxNetFltFreeBSDinput(void *arg, int pend
{
PVBOXNETFLTINS pThis = (PVBOXNETFLTINS)arg;
struct mbuf *m, *m0;
+#if __FreeBSD_version >= 1500000
+ if_t ifp = pThis->u.s.ifp;
+#else
struct ifnet *ifp = pThis->u.s.ifp;
+#endif
unsigned int cSegs = 0;
bool fDropIt = false, fActive;
+ bool is_vl_tagged = false;
+ uint16_t vl_tag;
PINTNETSG pSG;
+#if __FreeBSD_version >= 1500000
+ VBOXCURVNET_SET(if_getvnet(ifp));
+#else
VBOXCURVNET_SET(ifp->if_vnet);
@@ -440,6 +458,19 @@ static void vboxNetFltFreeBSDinput(void *arg, int pend
+#endif
vboxNetFltRetain(pThis, true /* fBusy */);
for (;;)
{
@@ -440,6 +474,19 @@ static void vboxNetFltFreeBSDinput(void *arg, int pend
if (m == NULL)
break;
@ -101,7 +136,7 @@
for (m0 = m; m0 != NULL; m0 = m0->m_next)
if (m0->m_len > 0)
cSegs++;
@@ -454,10 +485,40 @@ static void vboxNetFltFreeBSDinput(void *arg, int pend
@@ -454,10 +501,39 @@ static void vboxNetFltFreeBSDinput(void *arg, int pend
vboxNetFltFreeBSDMBufToSG(pThis, m, pSG, cSegs, 0);
fDropIt = pThis->pSwitchPort->pfnRecv(pThis->pSwitchPort, NULL /* pvIf */, pSG, INTNETTRUNKDIR_WIRE);
RTMemTmpFree(pSG);
@ -128,8 +163,8 @@
+
if (fDropIt)
m_freem(m);
else
+ {
- else
+ else {
+#if __FreeBSD_version >= 1300049
+ struct epoch_tracker et;
+ NET_EPOCH_ENTER(et);
@ -142,7 +177,28 @@
}
vboxNetFltRelease(pThis, true /* fBusy */);
VBOXCURVNET_RESTORE();
@@ -513,6 +574,7 @@ int vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *p
@@ -470,12 +546,20 @@ static void vboxNetFltFreeBSDoutput(void *arg, int pen
{
PVBOXNETFLTINS pThis = (PVBOXNETFLTINS)arg;
struct mbuf *m, *m0;
+#if __FreeBSD_version >= 1500000
+ if_t ifp = pThis->u.s.ifp;
+#else
struct ifnet *ifp = pThis->u.s.ifp;
+#endif
unsigned int cSegs = 0;
bool fDropIt = false, fActive;
PINTNETSG pSG;
+#if __FreeBSD_version >= 1500000
+ VBOXCURVNET_SET(if_getvnet(ifp));
+#else
VBOXCURVNET_SET(ifp->if_vnet);
+#endif
vboxNetFltRetain(pThis, true /* fBusy */);
for (;;)
{
@@ -513,26 +597,41 @@ int vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *p
*/
int vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *pvIfData, PINTNETSG pSG, uint32_t fDst)
{
@ -150,7 +206,24 @@
NOREF(pvIfData);
void (*input_f)(struct ifnet *, struct mbuf *);
@@ -529,10 +591,16 @@ int vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *p
+#if __FreeBSD_version >= 1500000
+ if_t ifp;
+#else
struct ifnet *ifp;
+#endif
struct mbuf *m;
struct m_tag *mtag;
bool fActive;
int error;
ifp = ASMAtomicUoReadPtrT(&pThis->u.s.ifp, struct ifnet *);
+#if __FreeBSD_version >= 1500000
+ VBOXCURVNET_SET(if_getvnet(ifp));
+#else
VBOXCURVNET_SET(ifp->if_vnet);
+#endif
if (fDst & INTNETTRUNKDIR_WIRE)
{
m = vboxNetFltFreeBSDSGMBufFromSG(pThis, pSG);
if (m == NULL)
@ -167,7 +240,7 @@
m->m_flags |= M_PKTHDR;
ether_output_frame(ifp, m);
@@ -542,10 +610,16 @@ int vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *p
@@ -542,10 +641,16 @@ int vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *p
{
m = vboxNetFltFreeBSDSGMBufFromSG(pThis, pSG);
if (m == NULL)
@ -184,7 +257,7 @@
/*
* Delivering packets to the host will be captured by the
* input hook. Tag the packet with a mbuf tag so that we
@@ -556,6 +630,7 @@ int vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *p
@@ -556,6 +661,7 @@ int vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *p
if (mtag == NULL)
{
m_freem(m);
@ -192,7 +265,7 @@
return VERR_NO_MEMORY;
}
@@ -563,9 +638,17 @@ int vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *p
@@ -563,9 +669,21 @@ int vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *p
m_tag_prepend(m, mtag);
m->m_flags |= M_PKTHDR;
m->m_pkthdr.rcvif = ifp;
@ -200,7 +273,11 @@
+ struct epoch_tracker et;
+ NET_EPOCH_ENTER(et);
+#endif
+#if __FreeBSD_version >= 1500000
+ if_input(ifp, m);
+#else
ifp->if_input(ifp, m);
+#endif
+#if __FreeBSD_version >= 1300049
+ NET_EPOCH_EXIT(et);
+#endif
@ -210,15 +287,20 @@
return VINF_SUCCESS;
}
@@ -578,6 +661,7 @@ int vboxNetFltOsInitInstance(PVBOXNETFLTINS pThis, voi
@@ -578,15 +696,23 @@ int vboxNetFltOsInitInstance(PVBOXNETFLTINS pThis, voi
int vboxNetFltOsInitInstance(PVBOXNETFLTINS pThis, void *pvContext)
{
+ IPRT_FREEBSD_SAVE_EFL_AC();
char nam[NG_NODESIZ];
+#if __FreeBSD_version >= 1500000
+ if_t ifp;
+#else
struct ifnet *ifp;
+#endif
node_p node;
@@ -586,7 +670,10 @@ int vboxNetFltOsInitInstance(PVBOXNETFLTINS pThis, voi
VBOXCURVNET_SET_FROM_UCRED();
NOREF(pvContext);
ifp = ifunit(pThis->szName);
if (ifp == NULL)
@ -229,7 +311,19 @@
/* Create a new netgraph node for this instance */
if (ng_make_node_common(&ng_vboxnetflt_typestruct, &node) != 0)
@@ -630,12 +717,14 @@ int vboxNetFltOsInitInstance(PVBOXNETFLTINS pThis, voi
@@ -596,7 +722,11 @@ int vboxNetFltOsInitInstance(PVBOXNETFLTINS pThis, voi
ASMAtomicUoWritePtr(&pThis->u.s.ifp, ifp);
pThis->u.s.node = node;
+#if __FreeBSD_version >= 1500000
+ bcopy(if_getlladdr(ifp), &pThis->u.s.MacAddr, ETHER_ADDR_LEN);
+#else
bcopy(IF_LLADDR(ifp), &pThis->u.s.MacAddr, ETHER_ADDR_LEN);
+#endif
ASMAtomicUoWriteBool(&pThis->fDisconnectedFromHost, false);
/* Initialize deferred input queue */
@@ -630,16 +760,26 @@ int vboxNetFltOsInitInstance(PVBOXNETFLTINS pThis, voi
vboxNetFltRelease(pThis, true /*fBusy*/);
}
VBOXCURVNET_RESTORE();
@ -241,10 +335,22 @@
bool vboxNetFltOsMaybeRediscovered(PVBOXNETFLTINS pThis)
{
+ IPRT_FREEBSD_SAVE_EFL_AC();
+#if __FreeBSD_version >= 1500000
+ if_t ifp, ifp0;
+#else
struct ifnet *ifp, *ifp0;
+#endif
ifp = ASMAtomicUoReadPtrT(&pThis->u.s.ifp, struct ifnet *);
@@ -652,6 +741,7 @@ bool vboxNetFltOsMaybeRediscovered(PVBOXNETFLTINS pThi
+#if __FreeBSD_version >= 1500000
+ VBOXCURVNET_SET(if_getvnet(ifp));
+#else
VBOXCURVNET_SET(ifp->if_vnet);
+#endif
/*
* Attempt to check if the interface is still there and re-initialize if
* something has changed.
@@ -652,6 +792,7 @@ bool vboxNetFltOsMaybeRediscovered(PVBOXNETFLTINS pThi
pThis->u.s.node = NULL;
}
VBOXCURVNET_RESTORE();
@ -252,7 +358,7 @@
if (ifp0 != NULL)
{
@@ -664,6 +754,7 @@ void vboxNetFltOsDeleteInstance(PVBOXNETFLTINS pThis)
@@ -664,6 +805,7 @@ void vboxNetFltOsDeleteInstance(PVBOXNETFLTINS pThis)
void vboxNetFltOsDeleteInstance(PVBOXNETFLTINS pThis)
{
@ -260,7 +366,7 @@
taskqueue_drain(taskqueue_fast, &pThis->u.s.tskin);
taskqueue_drain(taskqueue_fast, &pThis->u.s.tskout);
@@ -676,6 +767,7 @@ void vboxNetFltOsDeleteInstance(PVBOXNETFLTINS pThis)
@@ -676,6 +818,7 @@ void vboxNetFltOsDeleteInstance(PVBOXNETFLTINS pThis)
ng_rmnode_self(pThis->u.s.node);
VBOXCURVNET_RESTORE();
pThis->u.s.node = NULL;
@ -268,15 +374,51 @@
}
int vboxNetFltOsPreInitInstance(PVBOXNETFLTINS pThis)
@@ -689,6 +781,7 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b
@@ -689,7 +832,12 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b
void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, bool fActive)
{
+ IPRT_FREEBSD_SAVE_EFL_AC();
+#if __FreeBSD_version >= 1500000
+ if_t ifp;
+#else
struct ifnet *ifp;
+#endif
struct ifreq ifreq;
int error;
@@ -722,7 +815,10 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b
node_p node;
@@ -701,18 +849,30 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b
Log(("%s: fActive:%d\n", __func__, fActive));
ifp = ASMAtomicUoReadPtrT(&pThis->u.s.ifp, struct ifnet *);
+#if __FreeBSD_version >= 1500000
+ VBOXCURVNET_SET(if_getvnet(ifp));
+#else
VBOXCURVNET_SET(ifp->if_vnet);
+#endif
node = ASMAtomicUoReadPtrT(&pThis->u.s.node, node_p);
memset(&ifreq, 0, sizeof(struct ifreq));
/* Activate interface */
if (fActive)
{
+#if __FreeBSD_version >= 1500000
+ pThis->u.s.flags = if_getflags(ifp);
+#else
pThis->u.s.flags = ifp->if_flags;
+#endif
ifpromisc(ifp, 1);
/* ng_ether nodes are named after the interface name */
+#if __FreeBSD_version >= 1500000
+ snprintf(path, sizeof(path), "%s:", if_name(ifp));
+#else
snprintf(path, sizeof(path), "%s:", ifp->if_xname);
+#endif
/*
* Send a netgraph connect message to the ng_ether node
@@ -722,9 +882,16 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b
NG_MKMESSAGE(msg, NGM_GENERIC_COOKIE, NGM_CONNECT,
sizeof(struct ngm_connect), M_NOWAIT);
if (msg == NULL)
@ -285,9 +427,15 @@
return;
+ }
con = (struct ngm_connect *)msg->data;
+#if __FreeBSD_version >= 1500000
+ snprintf(con->path, NG_PATHSIZ, "vboxnetflt_%s:", if_name(ifp));
+#else
snprintf(con->path, NG_PATHSIZ, "vboxnetflt_%s:", ifp->if_xname);
+#endif
strlcpy(con->ourhook, "lower", NG_HOOKSIZ);
@@ -736,7 +832,10 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b
strlcpy(con->peerhook, "input", NG_HOOKSIZ);
NG_SEND_MSG_PATH(error, node, msg, path, 0);
@@ -736,10 +903,17 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b
NG_MKMESSAGE(msg, NGM_GENERIC_COOKIE, NGM_CONNECT,
sizeof(struct ngm_connect), M_NOWAIT);
if (msg == NULL)
@ -297,8 +445,27 @@
+ }
con = (struct ngm_connect *)msg->data;
snprintf(con->path, NG_PATHSIZ, "vboxnetflt_%s:",
+#if __FreeBSD_version >= 1500000
+ if_name(ifp));
+#else
ifp->if_xname);
@@ -759,7 +858,10 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b
+#endif
strlcpy(con->ourhook, "upper", sizeof(con->ourhook));
strlcpy(con->peerhook, "output", sizeof(con->peerhook));
NG_SEND_MSG_PATH(error, node, msg, path, 0);
@@ -751,7 +925,11 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b
ifpromisc(ifp, 0);
/* Disconnect msgs are addressed to ourself */
+#if __FreeBSD_version >= 1500000
+ snprintf(path, sizeof(path), "vboxnetflt_%s:", if_name(ifp));
+#else
snprintf(path, sizeof(path), "vboxnetflt_%s:", ifp->if_xname);
+#endif
/*
* Send a netgraph message to disconnect our 'input' hook
@@ -759,7 +937,10 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b
NG_MKMESSAGE(msg, NGM_GENERIC_COOKIE, NGM_RMHOOK,
sizeof(struct ngm_rmhook), M_NOWAIT);
if (msg == NULL)
@ -309,7 +476,7 @@
rm = (struct ngm_rmhook *)msg->data;
strlcpy(rm->ourhook, "input", NG_HOOKSIZ);
NG_SEND_MSG_PATH(error, node, msg, path, 0);
@@ -770,12 +872,16 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b
@@ -770,12 +951,16 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b
NG_MKMESSAGE(msg, NGM_GENERIC_COOKIE, NGM_RMHOOK,
sizeof(struct ngm_rmhook), M_NOWAIT);
if (msg == NULL)