This (admittedly very long, but most of the patches are either very
small or just code movement/renaming, really!) series started out to
be just a replacement for a single patch posted by Vasiliy Tolstov
back in April (originally pushed upstream as commit 690969af, which
was reverted in commit 1d14b13f when I noticed an inconsistency in
behavior between lxc and qemu).
But each step forward seemed to require (or strongly suggest) a step
sideways to reorganize existing code, or eliminate annoying problems I
found, and I ended up with 28 patches.
The patches that actually add the new functionality are 24-28 (and
they are quite small), all the rest just setting up for that. In
particular, the three largest patches (03, 13, 14) are purely moving
code and renaming identifiers.
Patches 07, 08, 12, and 18 fix minor bugs I found during all the
changes. (12 is a bit strange, as it removes an undocumented behavior
from the openvz driver that has been there since 2010).
The one possible controversy in this series (other than the
modification to openvz configuration in patch 12) is my placement of
the config info for the host-side network device. I could have either
put the IP info for the host-side interface as a subelement of
<target> where the host-side interface is named, or I could follow the
convention of other device types and make it a subelement of the
<source> element of interface (since there is where you're supposed to
describe how a device connects to the host side resources). <target>
element is used to give the name of the tap interface itself. I went
back and forth about this, and in the end decided that since the IP
address is configuring how the device connects to the outside world
(just as with the "network" and "bridge" attributes of <source>
for
those other network types), that it makes most sense to put it under
<source>
Please don't be put off by the large number of patches - most of them
are fairly straightforward and should be quick reviews. I promise! :-)
Laine Stump (27):
util: move virNetDevLinkDump to virnetlink.c
util: move virInterface(State|Link)/virNetDevFeature from conf to util
global: consistently use IP rather than Ip in identifiers
conf: clean up virDomainNetIPParseXML()
tests: mock virNetDevSetIPAddress
util: allow calling virSocketAddrGetIPPrefix with NULL netmask or
address
lxc: eliminate extraneous free of netDef->ifname_guest
lxc: use correct prefix when setting veth IP address
conf: new function virDomainNetDefClear
qemu: don't set/clear NetDef IP addresses in
qemuConnectDomainXMLToNative()
qemu: eliminate memory leaks when converting NetDefs to
type='ethernet'
conf/openvz: eliminate incorrect/undocumented use of <source
dev='blah'/>
util: new files virnetdevip.[ch] for IP-related netdev functions
util: move IP route & address object-related functions to
virnetdevip.c
conf: single object containing list of IP addresses, list of routes
conf: use virNetDevIPInfo in virDomainHostdevCaps
conf: use virNetDevIPInfo for guest-side <interface> config
qemu: forbid setting guest-side IP address/route info of <interface>
conf: clean up after adding calls to virNetDevIPInfo helpers
lxc: move debug/error log when adding IP addresses to
virNetDevIPAddrAdd
util: new function virNetDevIPInfoAddToDev
util: provide default destination IP in alternate
virNetDevIPRouteAdd()
util: make messages consistent in both versions of
virNetDevIPRouteAdd()
conf: support host-side IP/route information in <interface>
util: support setting peer for virNetDevIPInfo addresses
lxc: support setting host-side IP addresses/routes
qemu: support setting host-side IP addresses/routes
Vasiliy Tolstov (1):
conf: allow setting peer address in <ip> element of <interface>
docs/formatdomain.html.in | 60 +-
docs/schemas/domaincommon.rng | 82 +-
po/POTFILES.in | 1 +
src/Makefile.am | 1 +
src/conf/device_conf.c | 31 +-
src/conf/device_conf.h | 44 +-
src/conf/domain_conf.c | 399 +++++----
src/conf/domain_conf.h | 28 +-
src/conf/interface_conf.c | 38 +-
src/conf/interface_conf.h | 10 +-
src/conf/network_conf.c | 96 +-
src/conf/network_conf.h | 24 +-
src/conf/networkcommon_conf.c | 107 +--
src/conf/networkcommon_conf.h | 55 +-
src/conf/node_device_conf.h | 2 +-
src/esx/esx_driver.c | 44 +-
src/esx/esx_interface_driver.c | 4 +-
src/esx/esx_vi.c | 4 +-
src/esx/esx_vi.h | 2 +-
src/libvirt_private.syms | 50 +-
src/libxl/libxl_conf.c | 10 +-
src/libxl/libxl_domain.c | 2 +-
src/lxc/lxc_container.c | 92 +-
src/lxc/lxc_controller.c | 2 +-
src/lxc/lxc_native.c | 42 +-
src/lxc/lxc_process.c | 8 +
src/network/bridge_driver.c | 103 +--
src/network/bridge_driver_linux.c | 76 +-
src/nwfilter/nwfilter_ebiptables_driver.c | 24 +-
src/openvz/openvz_conf.c | 2 +-
src/openvz/openvz_driver.c | 15 +-
src/qemu/qemu_domain.c | 34 +
src/qemu/qemu_driver.c | 76 +-
src/qemu/qemu_hotplug.c | 6 +-
src/qemu/qemu_interface.c | 6 +-
src/uml/uml_conf.c | 4 +-
src/util/virnetdev.c | 876 +------------------
src/util/virnetdev.h | 46 +-
src/util/virnetdevip.c | 971 +++++++++++++++++++++
src/util/virnetdevip.h | 93 ++
src/util/virnetdevvportprofile.c | 4 +-
src/util/virnetlink.c | 135 +++
src/util/virnetlink.h | 5 +
src/util/virsocketaddr.c | 12 +-
src/util/virsocketaddr.h | 3 +-
src/vbox/vbox_common.c | 6 +-
src/vbox/vbox_network.c | 8 +-
src/vz/vz_sdk.c | 2 +-
src/xenconfig/xen_common.c | 14 +-
src/xenconfig/xen_sxpr.c | 16 +-
tests/lxcxml2xmldata/lxc-ethernet-hostip.xml | 44 +
tests/lxcxml2xmltest.c | 1 +
.../qemuxml2argv-net-eth-hostip.args | 23 +
.../qemuxml2argv-net-eth-hostip.xml | 39 +
tests/qemuxml2argvmock.c | 10 +-
tests/qemuxml2argvtest.c | 1 +
.../qemuxml2xmlout-net-eth-hostip.xml | 44 +
tests/qemuxml2xmltest.c | 1 +
tests/virnetdevtest.c | 14 +-
tests/xml2sexprdata/xml2sexpr-net-routed.xml | 1 -
60 files changed, 2193 insertions(+), 1760 deletions(-)
create mode 100644 src/util/virnetdevip.c
create mode 100644 src/util/virnetdevip.h
create mode 100644 tests/lxcxml2xmldata/lxc-ethernet-hostip.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-net-eth-hostip.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-net-eth-hostip.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-net-eth-hostip.xml
--
2.5.5