When using the type='ethernet' network device configuration for a guest
we pass a script, and optional interface name to QEMU. If ifname is
omitted, then QEMU allocates one itself. The problem was we were passing
an ifname of '(null)' by mistake. This patch corrects that problem and
adds a test for it.
Daniel
diff -r b6a065030fa6 src/qemu_conf.c
--- a/src/qemu_conf.c Fri Jan 30 12:28:00 2009 +0000
+++ b/src/qemu_conf.c Fri Jan 30 13:07:11 2009 +0000
@@ -1147,11 +1147,18 @@ int qemudBuildCommandLine(virConnectPtr
case VIR_DOMAIN_NET_TYPE_ETHERNET:
{
char arg[PATH_MAX];
- if (snprintf(arg, PATH_MAX-1,
"tap,ifname=%s,script=%s,vlan=%d",
- net->ifname,
- net->data.ethernet.script,
- vlan) >= (PATH_MAX-1))
- goto error;
+ if (net->ifname) {
+ if (snprintf(arg, PATH_MAX-1,
"tap,ifname=%s,script=%s,vlan=%d",
+ net->ifname,
+ net->data.ethernet.script,
+ vlan) >= (PATH_MAX-1))
+ goto error;
+ } else {
+ if (snprintf(arg, PATH_MAX-1, "tap,script=%s,vlan=%d",
+ net->data.ethernet.script,
+ vlan) >= (PATH_MAX-1))
+ goto error;
+ }
ADD_ARG_LIT(arg);
}
diff -r b6a065030fa6 tests/qemuxml2argvdata/qemuxml2argv-net-eth-ifname.args
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/qemuxml2argvdata/qemuxml2argv-net-eth-ifname.args Fri Jan 30 13:07:11 2009
+0000
@@ -0,0 +1,1 @@
+LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214
-smp 1 -nographic -monitor pty -pidfile /nowhere/QEMUGuest1.pid -no-acpi -boot c -hda
/dev/HostVG/QEMUGuest1 -net nic,macaddr=00:11:22:33:44:55,vlan=0 -net
tap,ifname=nic02,script=/etc/qemu-ifup,vlan=0 -serial none -parallel none -usb
diff -r b6a065030fa6 tests/qemuxml2argvdata/qemuxml2argv-net-eth-ifname.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/qemuxml2argvdata/qemuxml2argv-net-eth-ifname.xml Fri Jan 30 13:07:11 2009
+0000
@@ -0,0 +1,27 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory>219200</memory>
+ <currentMemory>219200</currentMemory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch='i686' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu</emulator>
+ <disk type='block' device='disk'>
+ <source dev='/dev/HostVG/QEMUGuest1'/>
+ <target dev='hda' bus='ide'/>
+ </disk>
+ <interface type='ethernet'>
+ <mac address='00:11:22:33:44:55'/>
+ <script path='/etc/qemu-ifup'/>
+ <target dev='nic02'/>
+ </interface>
+ </devices>
+</domain>
diff -r b6a065030fa6 tests/qemuxml2argvdata/qemuxml2argv-net-eth.args
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/qemuxml2argvdata/qemuxml2argv-net-eth.args Fri Jan 30 13:07:11 2009 +0000
@@ -0,0 +1,1 @@
+LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214
-smp 1 -nographic -monitor pty -pidfile /nowhere/QEMUGuest1.pid -no-acpi -boot c -hda
/dev/HostVG/QEMUGuest1 -net nic,macaddr=00:11:22:33:44:55,vlan=0 -net
tap,script=/etc/qemu-ifup,vlan=0 -serial none -parallel none -usb
diff -r b6a065030fa6 tests/qemuxml2argvdata/qemuxml2argv-net-eth.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/qemuxml2argvdata/qemuxml2argv-net-eth.xml Fri Jan 30 13:07:11 2009 +0000
@@ -0,0 +1,26 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory>219200</memory>
+ <currentMemory>219200</currentMemory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch='i686' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu</emulator>
+ <disk type='block' device='disk'>
+ <source dev='/dev/HostVG/QEMUGuest1'/>
+ <target dev='hda' bus='ide'/>
+ </disk>
+ <interface type='ethernet'>
+ <mac address='00:11:22:33:44:55'/>
+ <script path='/etc/qemu-ifup'/>
+ </interface>
+ </devices>
+</domain>
diff -r b6a065030fa6 tests/qemuxml2argvtest.c
--- a/tests/qemuxml2argvtest.c Fri Jan 30 12:28:00 2009 +0000
+++ b/tests/qemuxml2argvtest.c Fri Jan 30 13:07:11 2009 +0000
@@ -224,6 +224,8 @@ mymain(int argc, char **argv)
QEMUD_CMD_FLAG_UUID | QEMUD_CMD_FLAG_DOMID);
DO_TEST("net-user", 0);
DO_TEST("net-virtio", 0);
+ DO_TEST("net-eth", 0);
+ DO_TEST("net-eth-ifname", 0);
DO_TEST("serial-vc", 0);
DO_TEST("serial-pty", 0);
diff -r b6a065030fa6 tests/qemuxml2xmltest.c
--- a/tests/qemuxml2xmltest.c Fri Jan 30 12:28:00 2009 +0000
+++ b/tests/qemuxml2xmltest.c Fri Jan 30 13:07:11 2009 +0000
@@ -111,6 +111,8 @@ mymain(int argc, char **argv)
DO_TEST("misc-no-reboot");
DO_TEST("net-user");
DO_TEST("net-virtio");
+ DO_TEST("net-eth");
+ DO_TEST("net-eth-ifname");
DO_TEST("sound");
DO_TEST("serial-vc");
--
|: Red Hat, Engineering, London -o-
http://people.redhat.com/berrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org -o-
http://ovirt.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|