qemu: support setting host-side IP addresses/routes

For type='ethernet' interfaces only.

(This patch had been pushed earlier in
commit 0b4645a7e0, but was reverted in
commit 84d47a3cce because it had been
accidentally pushed during the freeze for release 2.0.0)
This commit is contained in:
Laine Stump 2016-06-21 12:00:45 -04:00
parent 187920273c
commit fe8567f6ad
6 changed files with 113 additions and 1 deletions

View File

@ -196,8 +196,12 @@ qemuInterfaceStopDevice(virDomainNetDefPtr net)
break; break;
} }
case VIR_DOMAIN_NET_TYPE_USER:
case VIR_DOMAIN_NET_TYPE_ETHERNET: case VIR_DOMAIN_NET_TYPE_ETHERNET:
if (virNetDevIPInfoAddToDev(net->ifname, &net->hostIP) < 0)
goto cleanup;
break;
case VIR_DOMAIN_NET_TYPE_USER:
case VIR_DOMAIN_NET_TYPE_VHOSTUSER: case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
case VIR_DOMAIN_NET_TYPE_SERVER: case VIR_DOMAIN_NET_TYPE_SERVER:
case VIR_DOMAIN_NET_TYPE_CLIENT: case VIR_DOMAIN_NET_TYPE_CLIENT:

View File

@ -0,0 +1,23 @@
LC_ALL=C \
PATH=/bin \
HOME=/home/test \
USER=test \
LOGNAME=test \
QEMU_AUDIO_DRV=none \
/usr/bin/qemu \
-name QEMUGuest1 \
-S \
-M pc \
-m 214 \
-smp 1 \
-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
-nographic \
-nodefaults \
-monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \
-no-acpi \
-boot c \
-usb \
-drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-ide0-0-0 \
-device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 \
-device rtl8139,vlan=0,id=net0,mac=00:11:22:33:44:55,bus=pci.0,addr=0x3 \
-net tap,fd=3,vlan=0,name=hostnet0

View File

@ -0,0 +1,39 @@
<domain type='qemu'>
<name>QEMUGuest1</name>
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
<memory unit='KiB'>219100</memory>
<currentMemory unit='KiB'>219100</currentMemory>
<vcpu placement='static'>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'>
<driver name='qemu' type='raw'/>
<source dev='/dev/HostVG/QEMUGuest1'/>
<target dev='hda' bus='ide'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<controller type='usb' index='0'/>
<controller type='ide' index='0'/>
<controller type='pci' index='0' model='pci-root'/>
<interface type='ethernet'>
<mac address='00:11:22:33:44:55'/>
<source>
<ip address='192.168.125.1' family='ipv4' prefix='24' peer='192.168.125.2'/>
<route family='ipv4' address='10.20.0.0' prefix='16' gateway='192.168.125.2'/>
</source>
<script path='/etc/qemu-ifup'/>
<model type='rtl8139'/>
</interface>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<memballoon model='none'/>
</devices>
</domain>

View File

@ -1012,6 +1012,7 @@ mymain(void)
DO_TEST("net-eth", NONE); DO_TEST("net-eth", NONE);
DO_TEST("net-eth-ifname", NONE); DO_TEST("net-eth-ifname", NONE);
DO_TEST("net-eth-names", NONE); DO_TEST("net-eth-names", NONE);
DO_TEST("net-eth-hostip", NONE);
DO_TEST("net-client", NONE); DO_TEST("net-client", NONE);
DO_TEST("net-server", NONE); DO_TEST("net-server", NONE);
DO_TEST("net-mcast", NONE); DO_TEST("net-mcast", NONE);

View File

@ -0,0 +1,44 @@
<domain type='qemu'>
<name>QEMUGuest1</name>
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
<memory unit='KiB'>219100</memory>
<currentMemory unit='KiB'>219100</currentMemory>
<vcpu placement='static'>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'>
<driver name='qemu' type='raw'/>
<source dev='/dev/HostVG/QEMUGuest1'/>
<target dev='hda' bus='ide'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<controller type='usb' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<controller type='pci' index='0' model='pci-root'/>
<interface type='ethernet'>
<mac address='00:11:22:33:44:55'/>
<source>
<ip address='192.168.125.1' family='ipv4' prefix='24' peer='192.168.125.2'/>
<route family='ipv4' address='10.20.0.0' prefix='16' gateway='192.168.125.2'/>
</source>
<script path='/etc/qemu-ifup'/>
<model type='rtl8139'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<memballoon model='none'/>
</devices>
</domain>

View File

@ -464,6 +464,7 @@ mymain(void)
DO_TEST("net-virtio-disable-offloads"); DO_TEST("net-virtio-disable-offloads");
DO_TEST("net-eth"); DO_TEST("net-eth");
DO_TEST("net-eth-ifname"); DO_TEST("net-eth-ifname");
DO_TEST("net-eth-hostip");
DO_TEST("net-virtio-network-portgroup"); DO_TEST("net-virtio-network-portgroup");
DO_TEST("net-hostdev"); DO_TEST("net-hostdev");
DO_TEST("net-hostdev-vfio"); DO_TEST("net-hostdev-vfio");