libvirt/tests
Laine Stump 5754dbd56d Give each virtual network bridge its own fixed MAC address
This fixes https://bugzilla.redhat.com/show_bug.cgi?id=609463

The problem was that, since a bridge always acquires the MAC address
of the connected interface with the numerically lowest MAC, as guests
are started and stopped, it was possible for the MAC address to change
over time, and this change in the network was being detected by
Windows 7 (it sees the MAC of the default route change), so on each
reboot it would bring up a dialog box asking about this "new network".

The solution is to create a dummy tap interface with a MAC guaranteed
to be lower than any guest interface's MAC, and attach that tap to the
bridge as soon as it's created. Since all guest MAC addresses start
with 0xFE, we can just generate a MAC with the standard "0x52, 0x54,
0" prefix, and it's guaranteed to always win (physical interfaces are
never connected to these bridges, so we don't need to worry about
competing numerically with them).

Note that the dummy tap is never set to IFF_UP state - that's not
necessary in order for the bridge to take its MAC, and not setting it
to UP eliminates the clutter of having an (eg) "virbr0-nic" displayed
in the output of the ifconfig command.

I chose to not auto-generate the MAC address in the network XML
parser, as there are likely to be consumers of that API that don't
need or want to have a MAC address associated with the
bridge.

Instead, in bridge_driver.c when the network is being defined, if
there is no MAC, one is generated. To account for virtual network
configs that already exist when upgrading from an older version of
libvirt, I've added a %post script to the specfile that searches for
all network definitions in both the config directory
(/etc/libvirt/qemu/networks) and the state directory
(/var/lib/libvirt/network) that are missing a mac address, generates a
random address, and adds it to the config (and a matching address to
the state file, if there is one).

docs/formatnetwork.html.in: document <mac address.../>
docs/schemas/network.rng: add nac address to schema
libvirt.spec.in: %post script to update existing networks
src/conf/network_conf.[ch]: parse and format <mac address.../>
src/libvirt_private.syms: export a couple private symbols we need
src/network/bridge_driver.c:
    auto-generate mac address when needed,
    create dummy interface if mac address is present.
tests/networkxml2xmlin/isolated-network.xml
tests/networkxml2xmlin/routed-network.xml
tests/networkxml2xmlout/isolated-network.xml
tests/networkxml2xmlout/routed-network.xml: add mac address to some tests
2011-02-17 13:36:32 -05:00
..
capabilityschemadata Add a more featureful qemu capabilities test data 2009-09-10 12:25:42 +01:00
commanddata maint: improve tests distribution 2010-12-17 11:57:11 -07:00
confdata maint: improve tests distribution 2010-12-17 11:57:11 -07:00
cputestdata tests: Add unit tests for internal CPU APIs 2010-12-01 14:12:54 +01:00
domainschemadata schema: Move timer element inside clock 2010-11-09 15:35:43 +01:00
domainsnapshotxml2xmlin Domain snapshot RNG and tests. 2010-05-20 13:50:03 -04:00
domainsnapshotxml2xmlout Domain snapshot RNG and tests. 2010-05-20 13:50:03 -04:00
interfaceschemadata Update interface.rng and xml test files to match netcf 0.1.5 2010-01-19 21:13:03 +01:00
networkxml2xmlin Give each virtual network bridge its own fixed MAC address 2011-02-17 13:36:32 -05:00
networkxml2xmlout Give each virtual network bridge its own fixed MAC address 2011-02-17 13:36:32 -05:00
nodedevschemadata nodedev: Add removable storage 'media_label' prop 2009-12-14 14:58:23 +01:00
nodeinfodata Get thread and socket information in virsh nodeinfo. 2010-03-08 09:26:04 -05:00
nwfilterxml2xmlin nwfilter: Add test case for testing the state attribute 2010-10-07 06:43:35 -04:00
nwfilterxml2xmlout nwfilter: Add test case for testing the state attribute 2010-10-07 06:43:35 -04:00
qemuhelpdata Add txmode attribute to interface XML for virtio backend 2011-02-17 11:07:58 -05:00
qemuxml2argvdata Add txmode attribute to interface XML for virtio backend 2011-02-17 11:07:58 -05:00
qemuxml2xmloutdata Add VIR_DIV_UP to divide memory or storage request sizes with round up 2011-01-29 00:42:10 +01:00
sexpr2xmldata maint: improve tests distribution 2010-12-17 11:57:11 -07:00
storagepoolxml2xmlin storage: add support for Vendor and Model in XML 2010-08-19 15:58:43 -06:00
storagepoolxml2xmlout storage: add support for Vendor and Model in XML 2010-08-19 15:58:43 -06:00
storagevolxml2xmlin tests: Add storage volume XML 2 XML tests. 2009-10-16 10:52:27 -04:00
storagevolxml2xmlout tests: Add storage volume XML 2 XML tests. 2009-10-16 10:52:27 -04:00
vmx2xmldata vmx: Add support for video device VRAM size 2011-01-06 18:18:35 +01:00
xencapsdata maint: improve tests distribution 2010-12-17 11:57:11 -07:00
xmconfigdata maint: improve tests distribution 2010-12-17 11:57:11 -07:00
xml2sexprdata maint: improve tests distribution 2010-12-17 11:57:11 -07:00
xml2vmxdata vmx: Add support for video device VRAM size 2011-01-06 18:18:35 +01:00
.gitignore Introduce new APIs for spawning processes 2010-12-02 16:00:44 -07:00
.valgrind.supp Supress annoying libcap-ng errors from valgrind 2009-11-26 12:07:17 +00:00
capabilityschematest Make test suite output less verbose 2010-01-15 16:28:05 +00:00
commandhelper.c commandtest: avoid printing loader-control variables from commandhelper 2011-01-06 14:21:17 -07:00
commandtest.c build: avoid close, system 2011-01-29 10:36:45 -07:00
conftest.c avoid calling exit with a constant; use EXIT_* instead 2009-12-15 17:46:04 +01:00
cpuset tests: use GPLv2+, not GPLv3 2010-05-12 08:41:10 +02:00
cputest.c tests: Add unit tests for internal CPU APIs 2010-12-01 14:12:54 +01:00
daemon-conf tests: fix daemon-conf testing failure 2010-11-03 11:43:11 +01:00
define-dev-segfault domain conf: Track <console> target type 2010-07-28 16:47:59 -04:00
domainschematest tests: Test qemuxml2xml when expected xml changes 2010-07-28 16:47:56 -04:00
domainsnapshotschematest Domain snapshot RNG and tests. 2010-05-20 13:50:03 -04:00
esxutilstest.c esx: Move VMX handling code out of the driver directory 2010-12-21 22:40:17 +01:00
eventtest.c event: fix event-handling allocation crash 2011-01-27 09:12:36 -07:00
int-overflow Fix up "make check" 2009-10-07 12:18:13 +02:00
interfaceschematest Make test suite output less verbose 2010-01-15 16:28:05 +00:00
interfacexml2xmltest.c Remove virConnectPtr from interface XML APIs 2010-02-10 13:32:48 +00:00
libvirtd-fail Fix up "make check" 2009-10-07 12:18:13 +02:00
libvirtd-pool Fix up "make check" 2009-10-07 12:18:13 +02:00
Makefile.am tests: Remove obsolete secaatest 2011-01-15 23:36:31 +01:00
networkschematest Make test suite output less verbose 2010-01-15 16:28:05 +00:00
networkxml2xmltest.c Remove virConnectPtr from network XML APis 2010-02-10 13:31:28 +00:00
nodedevschematest Make test suite output less verbose 2010-01-15 16:28:05 +00:00
nodedevxml2xmltest.c Remove virConnectPtr from all node device XML APIs 2010-02-10 13:32:01 +00:00
nodeinfotest.c tests: avoid spurious failure of nodeinfotest 2010-12-20 10:31:40 -07:00
nwfilterschematest nwfilter: Add filter schema for nwfilter XML, extend domain XML schema 2010-04-06 11:09:46 -04:00
nwfilterxml2xmltest.c tests: Fix detection of expected errors 2010-11-29 16:35:20 +01:00
object-locking.ml build: import latest gnulib 2010-04-02 10:18:55 -06:00
oomtrace.pl Generic test suite helpers for OOM testing 2008-05-29 15:21:45 +00:00
qemuargv2xmltest.c qemu: Allow serving VNC over a unix domain socket 2011-01-21 16:03:04 -05:00
qemuhelptest.c Add txmode attribute to interface XML for virtio backend 2011-02-17 11:07:58 -05:00
qemuxml2argvtest.c Add txmode attribute to interface XML for virtio backend 2011-02-17 11:07:58 -05:00
qemuxml2xmltest.c Add txmode attribute to interface XML for virtio backend 2011-02-17 11:07:58 -05:00
qparamtest.c build: enable redundant-const check 2009-02-03 13:08:59 +00:00
read-bufsiz build: use portable sed expressions 2010-09-14 08:42:10 -06:00
read-non-seekable tests: use GPLv2+, not GPLv3 2010-05-12 08:41:10 +02:00
reconnect.c avoid calling exit with a constant; use EXIT_* instead 2009-12-15 17:46:04 +01:00
schematestutils.sh schematestutils.sh: improve shell portability: avoid "echo -e" 2010-04-14 17:34:12 +02:00
seclabeltest.c Refactor the security drivers to simplify usage 2011-01-10 18:10:52 +00:00
sexpr2xmltest.c vcpu: improve vcpu support in xen command line 2010-10-19 10:06:45 -06:00
sockettest.c Add test suite for virSocket APIs 2010-10-22 11:59:37 +01:00
start tests: use GPLv2+, not GPLv3 2010-05-12 08:41:10 +02:00
statstest.c Fix statstest when driver modules are enabled 2010-10-19 17:31:30 +01:00
storagepoolschematest Make test suite output less verbose 2010-01-15 16:28:05 +00:00
storagepoolxml2xmltest.c storage: add support for Vendor and Model in XML 2010-08-19 15:58:43 -06:00
storagevolschematest Make test suite output less verbose 2010-01-15 16:28:05 +00:00
storagevolxml2xmltest.c Remove virConnectPtr from storage APIs & driver 2010-02-10 13:32:11 +00:00
test_conf.sh Make test suite output less verbose 2010-01-15 16:28:05 +00:00
test-lib.sh build: don't use "test cond1 -o cond2": it's not portable 2010-03-25 09:28:24 +01:00
testutils.c tests: handle backspace-newline pairs in test input files 2011-01-31 11:25:34 -07:00
testutils.h tests: silence qemuargv2xmltest noise 2010-09-16 10:45:33 -06:00
testutilsqemu.c tests: Fake host capabilities properly 2011-02-15 22:51:37 +01:00
testutilsqemu.h remove all trailing blank lines 2009-07-16 15:06:42 +02:00
testutilsxen.c Fix crashes in Xen capabilities code 2009-07-27 16:45:01 +01:00
testutilsxen.h remove all trailing blank lines 2009-07-16 15:06:42 +02:00
undefine tests: use GPLv2+, not GPLv3 2010-05-12 08:41:10 +02:00
vcpupin tests: use GPLv2+, not GPLv3 2010-05-12 08:41:10 +02:00
virbuftest.c tests: Fix preprocessor indentation 2010-09-13 13:35:04 +02:00
virsh-all tests: use GPLv2+, not GPLv3 2010-05-12 08:41:10 +02:00
virsh-schedinfo tests: use GPLv2+, not GPLv3 2010-05-12 08:41:10 +02:00
virsh-synopsis tests: use GPLv2+, not GPLv3 2010-05-12 08:41:10 +02:00
virshtest.c virsh: add tests for recent cli improvements 2010-10-15 14:25:39 -06:00
virt-aa-helper-test virt-aa-helper-test cleanups 2010-09-30 15:01:36 -06:00
vmx2xmltest.c vmx: Add support for video device VRAM size 2011-01-06 18:18:35 +01:00
xencapstest.c deprecate fclose() and introduce VIR_{FORCE_}FCLOSE() 2010-11-16 21:13:29 -05:00
xmconfigtest.c vcpu: improve vcpu support in xen command line 2010-10-19 10:06:45 -06:00
xml2sexprtest.c xend: Escape reserved sexpr characters 2010-11-22 16:43:29 -05:00
xml2vmxtest.c vmx: Add support for video device VRAM size 2011-01-06 18:18:35 +01:00