Share qemuInterfacexxxxConnect methods with ch

Laine Stump laine at redhat.com
Tue Sep 19 14:34:25 UTC 2023


On 9/18/23 3:20 PM, Praveen Paladugu wrote:
> Folks,
> 
> I am working on upstreaming network support for ch driver. Like qemu driver,ch
> driver invokes steps in qemuInterfaceEthernetConnect,
> qemuInterfaceBridgeConnect methods to connect tap devices to appropriate
> host backends.
> 
> Current implementation clones aboves methods to ch_interface files and
> uses them. I'd like to drop driver specific args from above methods and
> move them to a common place so that qemu and ch drivers can share above
> methods.
> 
> 
> int
> virInterfaceEthernetConnect(virDomainDef *def,
>                             virDomainNetDef *net,
>                             ebtablesContext *ebtables,
>                             bool macFilter,
>                             bool privileged,
>                             int *tapfd,
>                             size_t tapfdSize)
> 
> I started with `qemuInterfaceEthernetConnect` and modified the signature as
> shown above. I initially tried putting `virInterfaceEthernetConnect` in
> 'src/util' but that caused a lot of cross inclusions. Above definition pulls in
> domain_conf.h, domain_nwfilter.h, domain_audit.h and more headers, into utils
> which causes cross inclusion.
> 
> 
> I later created interface/interface_connect.{c,h} files and moved the methods to
> these files. This would require driver code to include
> interface/interface_connect.h, which seemed better than above cross inclusion
> scenario.

The interface directory implements the interface driver, which was 
intended to manage the configuration of host network interfaces, *not* 
the network interfaces used by virtual machines, so that isn't the 
correct place for this function that will be common between qemu and ch 
drivers.

src/hypervisor was created specifically to contain code that is used by 
multiple hypervisor drivers, but that also needs to use things from 
src/conf (see the first commit log entry of most of the files in that 
directory), so that would be a more likely location.

Please don't name the functions "virInterface*()" though, as that would 
get confused with the public functions of libvirt's virInterface API.



> 
> Do you see any issues with moving above methods to interface/interface_connect.x
> files? Any other ideas on how to reorg above methods so that they can be shared
> by qemu and ch drivers?
> 
> 
> Praveen
> 



More information about the libvir-list mailing list