On 12/24/18 3:58 PM, Daniel P. Berrangé wrote: > Currently the network driver registers a set of callbacks with the virt > driver in order to handle allocating/releasing network ports associated > with guest NICs. > > This series introduces a virNetworkPortPtr object and associated XML > that describes a network port. The virt drivers now call public APIs > associated with this new object to create/delete ports for guest NICs. > > There are some parts that are not yet addressed by this series > > - The live updating of bandwidth limits on network ports > - The old code would re-connect VIFs to bridges, and/or change > bridges during startup. This code is deleted right now as it > doesn't belong in the network driver. It needs to move to the > virt drivers in some (to be determined) manner. > > Daniel P. Berrangé (27): > conf: make virPCIDeviceAddressFormat void > network: restrict usage of port management APIs > network: pass a virNetworkPtr to port management APIs > conf: simplify link from hostdev back to network device > network: add missing bandwidth limits for bridge forward type > network: use 'bridge' as actual type instead of 'network' > virt drivers: don't handle type=network after resolving actual network > type > network: unconditionally merge port profiles > conf: introduce virNetworkPortDefPtr struct and XML support > network: stop passing virDomainNetDefPtr into bandwidth functions > network: make networkLogAllocation independent of domain conf > util: add API for copying virtual port profile data > conf: add APIs to convert virDomainNetDef to virNetworkPortDef > network: convert networkAllocateActualDevice to virNetworkPortDef > network: convert networkNotifyActualDevice to virNetworkPortDef > network: convert networkReleaseActualDevice to virNetworkPortDef > network: convert hook script to take a network port XML > network: introduce networkAllocatePort > network: introduce networkNotifyPort > network: introduce networkReleasePort > network: add public APIs for network port object > access: add permissions for network port objects > remote: add support for new network port APIs > virsh: add support for network port APIs > conf: support recording ports against virNetworkObjPtr > network: add implementation of network port APIs > conf: switch over to use network port APIs for virt drivers > > include/libvirt/libvirt-network.h | 49 + > include/libvirt/virterror.h | 3 + > src/access/genpolkit.pl | 2 +- > src/access/viraccessdriver.h | 6 + > src/access/viraccessdrivernop.c | 11 + > src/access/viraccessdriverpolkit.c | 26 + > src/access/viraccessdriverstack.c | 25 + > src/access/viraccessmanager.c | 16 + > src/access/viraccessmanager.h | 6 + > src/access/viraccessperm.c | 8 +- > src/access/viraccessperm.h | 38 + > src/conf/Makefile.inc.am | 2 + > src/conf/device_conf.c | 3 +- > src/conf/device_conf.h | 6 +- > src/conf/domain_conf.c | 413 ++++++- > src/conf/domain_conf.h | 46 +- > src/conf/network_conf.c | 7 +- > src/conf/storage_adapter_conf.c | 4 +- > src/conf/virnetworkobj.c | 303 +++++ > src/conf/virnetworkobj.h | 30 + > src/conf/virnetworkportdef.c | 497 ++++++++ > src/conf/virnetworkportdef.h | 112 ++ > src/datatypes.c | 60 + > src/datatypes.h | 41 + > src/driver-network.h | 27 + > src/libvirt-network.c | 351 ++++++ > src/libvirt_private.syms | 21 + > src/libvirt_public.syms | 14 + > src/libxl/libxl_conf.c | 21 +- > src/libxl/libxl_domain.c | 28 +- > src/libxl/libxl_driver.c | 27 +- > src/lxc/lxc_driver.c | 37 +- > src/lxc/lxc_process.c | 21 +- > src/network/bridge_driver.c | 1069 +++++++++-------- > src/qemu/qemu_command.c | 11 +- > src/qemu/qemu_domain_address.c | 4 +- > src/qemu/qemu_driver.c | 2 +- > src/qemu/qemu_hotplug.c | 84 +- > src/qemu/qemu_hotplug.h | 2 +- > src/qemu/qemu_interface.c | 12 +- > src/qemu/qemu_process.c | 32 +- > src/remote/remote_daemon_dispatch.c | 25 + > src/remote/remote_driver.c | 28 + > src/remote/remote_protocol.x | 89 +- > src/remote_protocol-structs | 47 + > src/rpc/gendispatch.pl | 18 +- > src/util/virerror.c | 9 + > src/util/virhook.c | 4 +- > src/util/virhook.h | 4 +- > src/util/virhostdev.c | 17 +- > src/util/virnetdevvportprofile.c | 16 + > src/util/virnetdevvportprofile.h | 2 + > tests/Makefile.am | 7 + > .../plug-bridge-mactbl.xml | 9 + > .../virnetworkportxml2xmldata/plug-bridge.xml | 9 + > .../virnetworkportxml2xmldata/plug-direct.xml | 12 + > .../plug-hostdev-pci.xml | 12 + > tests/virnetworkportxml2xmldata/plug-none.xml | 8 + > tests/virnetworkportxml2xmltest.c | 104 ++ > tools/virsh-completer.c | 51 + > tools/virsh-completer.h | 4 + > tools/virsh-network.c | 399 +++++- > tools/virsh-network.h | 5 + > 63 files changed, 3681 insertions(+), 675 deletions(-) > create mode 100644 src/conf/virnetworkportdef.c > create mode 100644 src/conf/virnetworkportdef.h > create mode 100644 tests/virnetworkportxml2xmldata/plug-bridge-mactbl.xml > create mode 100644 tests/virnetworkportxml2xmldata/plug-bridge.xml > create mode 100644 tests/virnetworkportxml2xmldata/plug-direct.xml > create mode 100644 tests/virnetworkportxml2xmldata/plug-hostdev-pci.xml > create mode 100644 tests/virnetworkportxml2xmldata/plug-none.xml > create mode 100644 tests/virnetworkportxml2xmltest.c > There are few problem with these patches (not the idea). The idea is sound. The first is that "<plug type='bridge' bridge='virbr0'/>" is lost from 'virsh net-port-dumpxml --network default --port $UUID' on daemon restart. The second is that a running domain is lost on daemon restart because of the bandwidth problem I'm mentioning in 09/27: 2019-01-08 16:11:44.945+0000: 127017: error : virNetDevBandwidthParse:174 : unsupported configuration: floor attribute is supported only for interfaces of type network 2019-01-08 16:11:44.945+0000: 127017: error : virDomainObjListLoadAllConfigs:628 : Failed to load config for domain 'fedora' The third is that if there is a domain already running that was starter prior applying these patches I see the following error on daemon restart (the domain is gone too): 2019-01-08 16:11:44.946+0000: 127017: error : virDomainActualNetDefParseXML:10789 : internal error: unsupported type 'user' in interface's <actual> element 2019-01-08 16:11:44.946+0000: 127017: error : virDomainObjListLoadAllConfigs:628 : Failed to load config for domain 'gentoo' Michal -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list