]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Record the default NIC model in the domain XML
authorPeter Krempa <pkrempa@redhat.com>
Tue, 19 Feb 2013 16:33:52 +0000 (17:33 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 4 Apr 2013 20:41:20 +0000 (22:41 +0200)
This patch implements the devices post parse callback and uses it to fill
the default qemu network card model into the XML if none is specified.

Libvirt assumes that the network card model for qemu is the "rtl8139".
Record this in the XML using the new callback to avoid user
confusion.

18 files changed:
src/qemu/qemu_conf.c
src/qemu/qemu_domain.c
src/qemu/qemu_domain.h
tests/qemuxml2argvdata/qemuxml2argv-net-bandwidth.xml
tests/qemuxml2argvdata/qemuxml2argv-net-client.args
tests/qemuxml2argvdata/qemuxml2argv-net-eth-ifname.args
tests/qemuxml2argvdata/qemuxml2argv-net-eth-ifname.xml
tests/qemuxml2argvdata/qemuxml2argv-net-eth-names.args
tests/qemuxml2argvdata/qemuxml2argv-net-eth.args
tests/qemuxml2argvdata/qemuxml2argv-net-eth.xml
tests/qemuxml2argvdata/qemuxml2argv-net-hostdev.xml
tests/qemuxml2argvdata/qemuxml2argv-net-mcast.args
tests/qemuxml2argvdata/qemuxml2argv-net-openvswitch.xml
tests/qemuxml2argvdata/qemuxml2argv-net-server.args
tests/qemuxml2argvdata/qemuxml2argv-net-user.args
tests/qemuxml2argvdata/qemuxml2argv-net-user.xml
tests/qemuxml2argvdata/qemuxml2argv-net-virtio-network-portgroup.xml
tests/qemuxml2xmloutdata/qemuxml2xmlout-graphics-spice-timeout.xml

index c709188b986493c0bde27dde6a85ae87ae461cd1..7ee60d6304f8ef0b30ddb2aae0248b12fa584a06 100644 (file)
@@ -554,7 +554,7 @@ virQEMUDriverConfigPtr virQEMUDriverGetConfig(virQEMUDriverPtr driver)
 virDomainXMLOptionPtr
 virQEMUDriverCreateXMLConf(void)
 {
-    return virDomainXMLOptionNew(NULL,
+    return virDomainXMLOptionNew(&virQEMUDriverDomainDefParserConfig,
                                  &virQEMUDriverPrivateDataCallbacks,
                                  &virQEMUDriverDomainXMLNamespace);
 }
index a0a66dd15f6bcd9cb2aae7a76e4c332c48e4e13a..80e70cd36ce6725a787c0eae8497d5f4b105e1fc 100644 (file)
@@ -662,6 +662,31 @@ virDomainXMLNamespace virQEMUDriverDomainXMLNamespace = {
 };
 
 
+static int
+qemuDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
+                             virDomainDefPtr def ATTRIBUTE_UNUSED,
+                             virCapsPtr caps ATTRIBUTE_UNUSED,
+                             void *opaque ATTRIBUTE_UNUSED)
+{
+    if (dev->type == VIR_DOMAIN_DEVICE_NET &&
+        dev->data.net->type != VIR_DOMAIN_NET_TYPE_HOSTDEV) {
+        if (!dev->data.net->model &&
+            !(dev->data.net->model = strdup("rtl8139")))
+                goto no_memory;
+    }
+    return 0;
+
+no_memory:
+    virReportOOMError();
+    return -1;
+}
+
+
+virDomainDefParserConfig virQEMUDriverDomainDefParserConfig = {
+    .devicesPostParseCallback = qemuDomainDeviceDefPostParse,
+};
+
+
 static void
 qemuDomainObjSaveJob(virQEMUDriverPtr driver, virDomainObjPtr obj)
 {
index 26d58591950a08208f28f2d29843a9fc9e6b4bdd..089ced0cb55e7286a44da07f2437c4466c3ddb1f 100644 (file)
@@ -342,5 +342,6 @@ void qemuDomainCleanupRun(virQEMUDriverPtr driver,
 
 extern virDomainXMLPrivateDataCallbacks virQEMUDriverPrivateDataCallbacks;
 extern virDomainXMLNamespace virQEMUDriverDomainXMLNamespace;
+extern virDomainDefParserConfig virQEMUDriverDomainDefParserConfig;
 
 #endif /* __QEMU_DOMAIN_H__ */
index bf7dde51075a981a8c795678bc69cf3e87753a01..885e8549d50e2a26f95737b1fbccfbdb7c769625 100644 (file)
@@ -44,6 +44,7 @@
     <interface type='network'>
       <mac address='52:54:00:24:a5:9f'/>
       <source network='default'/>
+      <model type='rtl8139'/>
       <bandwidth>
         <inbound average='1000' peak='4000' burst='1024'/>
         <outbound average='128' peak='256' burst='32768'/>
index 7974f2ec63b5022a4bf54eb79433c7326237e450..34fab0aad7f6f340050b52a87b2ec45c3cd697eb 100644 (file)
@@ -1,5 +1,5 @@
 LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M \
 pc -m 214 -smp 1 -nographic -monitor unix:/tmp/test-monitor,server,nowait \
 -no-acpi -boot c -usb -hda /dev/HostVG/QEMUGuest1 -net nic,\
-macaddr=52:54:00:8c:b9:05,vlan=0 -net socket,connect=192.168.0.1:5558,vlan=0 \
--serial none -parallel none
+macaddr=52:54:00:8c:b9:05,vlan=0,model=rtl8139 -net socket,\
+connect=192.168.0.1:5558,vlan=0 -serial none -parallel none
index cced5d519d3d082e33b823c3893cedc3d2bfdb1e..6aef3075c007f5ddae98c440b7b6c86190455468 100644 (file)
@@ -1,5 +1,5 @@
 LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M \
 pc -m 214 -smp 1 -nographic -monitor unix:/tmp/test-monitor,server,nowait \
 -no-acpi -boot c -usb -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
+macaddr=00:11:22:33:44:55,vlan=0,model=rtl8139 -net tap,ifname=nic02,\
+script=/etc/qemu-ifup,vlan=0 -serial none -parallel none
index 04a4ca483c9f5482f7319860512259df7a03942b..b150371ba86f9729ed1136ed8f7cce4949f18fcb 100644 (file)
@@ -25,6 +25,7 @@
       <mac address='00:11:22:33:44:55'/>
       <script path='/etc/qemu-ifup'/>
       <target dev='nic02'/>
+      <model type='rtl8139'/>
     </interface>
     <memballoon model='virtio'/>
   </devices>
index dc15f635b5752750df1c81040d6f3ab3ee35f1a9..57761c5071412bff676ffb871f7e671ce2947a9e 100644 (file)
@@ -1,7 +1,7 @@
 LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M \
 pc -m 214 -smp 1 -nographic -monitor unix:/tmp/test-monitor,server,nowait \
 -no-acpi -boot c -usb -hda /dev/HostVG/QEMUGuest1 -net nic,\
-macaddr=00:11:22:33:44:55,vlan=0,name=net0 -net tap,script=/etc/qemu-ifup,\
-vlan=0,name=hostnet0 -net nic,macaddr=00:11:22:33:44:56,vlan=1,model=e1000,\
-name=net1 -net tap,script=/etc/qemu-ifup,vlan=1,name=hostnet1 -serial none \
--parallel none
+macaddr=00:11:22:33:44:55,vlan=0,model=rtl8139,name=net0 -net tap,\
+script=/etc/qemu-ifup,vlan=0,name=hostnet0 -net nic,macaddr=00:11:22:33:44:56,\
+vlan=1,model=e1000,name=net1 -net tap,script=/etc/qemu-ifup,vlan=1,name=hostnet1 \
+-serial none -parallel none
index a482193ed739fbfe1e1faf2394da5e6a417e7f6a..877dac2e864aabc3b0a30690ef0de1dfdf05758a 100644 (file)
@@ -1,5 +1,5 @@
 LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M \
 pc -m 214 -smp 1 -nographic -monitor unix:/tmp/test-monitor,server,nowait \
 -no-acpi -boot c -usb -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
+macaddr=00:11:22:33:44:55,vlan=0,model=rtl8139 -net tap,script=/etc/qemu-ifup,\
+vlan=0 -serial none -parallel none
index 87dd65fdbfe2a12c78716fa07670f4e3eb7a4c91..eca5da563b91f14e741d6d18f67aaf566e396f9c 100644 (file)
@@ -24,6 +24,7 @@
     <interface type='ethernet'>
       <mac address='00:11:22:33:44:55'/>
       <script path='/etc/qemu-ifup'/>
+      <model type='rtl8139'/>
     </interface>
     <memballoon model='virtio'/>
   </devices>
index 81f70d0d438512b775e70bd50eca4535f560ef10..9be0d2dcaf16f23a572f777aea30298a64b311e5 100644 (file)
@@ -32,6 +32,7 @@
       <virtualport type='802.1Qbg'>
         <parameters managerid='11' typeid='1193047' typeidversion='2' instanceid='09b11c53-8b5c-4eeb-8f00-d84eaa0aaa4f'/>
       </virtualport>
+      <model type='rtl8139'/>
     </interface>
     <memballoon model='virtio'/>
   </devices>
index fc2091b1c8e611e960330fd74d049ab9a6edb3ee..ed4f01e943fc954985aad32215bf4241e8316ea6 100644 (file)
@@ -1,5 +1,5 @@
 LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M \
 pc -m 214 -smp 1 -nographic -monitor unix:/tmp/test-monitor,server,nowait \
 -no-acpi -boot c -usb -hda /dev/HostVG/QEMUGuest1 -net nic,\
-macaddr=52:54:00:8c:b9:05,vlan=0 -net socket,mcast=192.0.0.1:5558,vlan=0 \
--serial none -parallel none
+macaddr=52:54:00:8c:b9:05,vlan=0,model=rtl8139 -net socket,mcast=192.0.0.1:5558,\
+vlan=0 -serial none -parallel none
index ff098448d970f366edd733e4a5b8ae0fba6e09e9..9c2c5dc77a3fdb9969f0c1d5262c85384a14926b 100644 (file)
@@ -32,6 +32,7 @@
       <virtualport type='openvswitch'>
         <parameters interfaceid='09b11c53-8b5c-4eeb-8f00-d84eaa0aaa4f' profileid='bob'/>
       </virtualport>
+      <model type='rtl8139'/>
     </interface>
     <memballoon model='virtio'/>
   </devices>
index 7c9d735c241d03b555b8389a835353cf02f89b80..c92a3ff92baeb08a9034ca8436afcaf8483c5459 100644 (file)
@@ -1,5 +1,5 @@
 LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M \
 pc -m 214 -smp 1 -nographic -monitor unix:/tmp/test-monitor,server,nowait \
 -no-acpi -boot c -usb -hda /dev/HostVG/QEMUGuest1 -net nic,\
-macaddr=52:54:00:8c:b9:05,vlan=0 -net socket,listen=192.168.0.1:5558,vlan=0 \
--serial none -parallel none
+macaddr=52:54:00:8c:b9:05,vlan=0,model=rtl8139 -net socket,\
+listen=192.168.0.1:5558,vlan=0 -serial none -parallel none
index 73642817609854d403c3110bc364717040aebf27..814167be70b41be0c9a7881655e02ff5de1e5777 100644 (file)
@@ -1,4 +1,5 @@
 LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M \
 pc -m 214 -smp 1 -nographic -monitor unix:/tmp/test-monitor,server,nowait \
 -no-acpi -boot c -usb -hda /dev/HostVG/QEMUGuest1 -net nic,\
-macaddr=00:11:22:33:44:55,vlan=0 -net user,vlan=0 -serial none -parallel none
+macaddr=00:11:22:33:44:55,vlan=0,model=rtl8139 -net user,vlan=0 -serial none \
+-parallel none
index 37e5edfe80d9e3de49a64e9c49333c3afd21e19e..fe3a271967ffe51e0a6f21f2f3e0c3003beef7b1 100644 (file)
@@ -23,6 +23,7 @@
     <controller type='ide' index='0'/>
     <interface type='user'>
       <mac address='00:11:22:33:44:55'/>
+      <model type='rtl8139'/>
     </interface>
     <memballoon model='virtio'/>
   </devices>
index c84ed3f3582629ab545b95191548d4a73ccd70af..0fb9b2c959ddd9d41f2d9735fd5ed6c6fb295c13 100644 (file)
@@ -38,6 +38,7 @@
       <virtualport>
         <parameters instanceid='09b11c53-8b5c-4eeb-8f00-d84eaa0aaa4f' interfaceid='09b11c53-8b5c-4eeb-8f00-d84eaa0aaa4f'/>
       </virtualport>
+      <model type='rtl8139'/>
     </interface>
     <interface type='network'>
       <mac address='22:11:22:33:44:55'/>
@@ -45,6 +46,7 @@
       <virtualport type='802.1Qbh'>
         <parameters profileid='testhis99'/>
       </virtualport>
+      <model type='rtl8139'/>
     </interface>
     <memballoon model='virtio'/>
   </devices>
index cd19b6442b3ac807dec27dcb62cb906754788753..54b68fa62feafd0a857f79cb00d5eee9ee971904 100644 (file)
@@ -62,6 +62,7 @@
     <interface type='ethernet'>
       <mac address='52:54:00:71:70:89'/>
       <script path='/etc/qemu-ifup'/>
+      <model type='rtl8139'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
     </interface>
     <serial type='pty'>