[libvirt] [PATCH 00/27] network: refactor to decouple virt drivers from network driver

Daniel P. Berrangé berrange at redhat.com
Mon Dec 24 14:58:48 UTC 2018


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

-- 
2.19.2




More information about the libvir-list mailing list