Is this enforced? Since you pass the hardware through, you can't rely
on the guest actually doing this, yes?
This is essentially a miniature network stack with a its own mini
bonding layer, mini hotplug, and mini API, except s/API/ABI/. Is this a
correct view?
If so, the Linuxy approach would be to use the ordinary drivers and the
Linux networking API, and hide the bond setup using namespaces. The
bond driver, or perhaps a new, similar, driver can be enhanced to
propagate ethtool commands to its (hidden) components, and to have a
control channel with the hypervisor.
This would make the approach hypervisor agnostic, you're just pairing
two devices and presenting them to the rest of the stack as a single device.
So the Shell would be the reworked or new bond driver, and Plugins would
be ordinary Linux network drivers.
--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.
--