ng_eiface: switch VNETs when injecting mbufs into netgraph

A ng_eiface instance may be on lease to a different vnet while
remaining tied to its parent vnet.  In such circumstances, before
injecting mbufs into netgraph, curvnet must be set to that of the
ng_eiface's netgraph node.  Mark the vnet transition as QUIET,
since otherwise it would be recorded as a curvnet recursion when
ng_eiface's ifnet resides in the same (parent) vnet as its
netgraph node.

PR:		274028
Reported by:	Dancho Penev <dpslavov@hotmail.com>
MFC after:	1 week
This commit is contained in:
Marko Zec 2023-09-23 10:56:56 +02:00
parent f9df609750
commit 03ef737c54

View file

@ -257,7 +257,9 @@ ng_eiface_start2(node_p node, hook_p hook, void *arg1, int arg2)
* freed.
*/
NG_OUTBOUND_THREAD_REF();
CURVNET_SET_QUIET(priv->node->nd_vnet);
NG_SEND_DATA_ONLY(error, priv->ether, m);
CURVNET_RESTORE();
NG_OUTBOUND_THREAD_UNREF();
/* Update stats */