summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDominique Martinet <asmadeus@codewreck.org>2016-01-19 15:53:25 +0100
committerDominique Martinet <asmadeus@codewreck.org>2016-01-19 18:05:51 +0100
commitf7ea916622d78715b32d2b475ca5ef0e09ddc49b (patch)
treec63c022b5f711b52732284dbffcc2c6875f75e1b
parenta42885e747326dc5bc0836fd0fc47deea12da41e (diff)
network/vhost-net: open /dev/vhost-net beforehand if not running as root
-rwxr-xr-xkvm-wrapper.sh12
1 files changed, 9 insertions, 3 deletions
diff --git a/kvm-wrapper.sh b/kvm-wrapper.sh
index 1dc15aa..13887fc 100755
--- a/kvm-wrapper.sh
+++ b/kvm-wrapper.sh
@@ -680,7 +680,7 @@ function kvm_start_vm ()
KVM_BR[$i]="${KVM_BR[i]:-${KVM_BR[@]:0:1}}"
KVM_IF[$i]="${KVM_IF[i]:-${KVM_IF[@]:0:1}}"
- KVM_NET_OPT[$i]="${KVM_NET_OPT[i]-${KVM_NET_OPT[@]:0:1}}"
+ KVM_NETDEV_OPT[$i]="${KVM_NET_OPT[i]-${KVM_NET_OPT[@]:0:1}}"
KVM_NET_MTU[$i]="${KVM_NET_MTU[i]-${KVM_NET_MTU[@]:0:1}}"
# tapdev can only be 15 chars long, if VM_NAME is too long keep start + last 2 chars
@@ -689,6 +689,12 @@ function kvm_start_vm ()
TAPDEV=tap-${VM_NAME:0:$((10-${#i}))}-${i} || \
TAPDEV=tap-${VM_NAME:0:$((8-${#i}))}${VM_NAME:(-2)}-${i}
+ if [[ ${KVM_NETDEV_OPT[i]} == *"vhost=on"* ]] && [[ -n "$KVM_USER" ]]; then
+ exec {VHOSTFD}<>/dev/vhost-net
+ KVM_NETDEV_OPT[$i]="${KVM_NETDEV_OPT[$i]},vhostfd=${VHOSTFD}"
+ CLEANUP+=("exec ${VHOSTFD}<>-")
+ fi
+
if [[ -n "$KVM_MACVTAP" ]]; then
local TAPFILE
local TAPFD
@@ -702,14 +708,14 @@ function kvm_start_vm ()
CLEANUP+=("exec ${TAPFD}<>-")
CLEANUP+=("ip link del $TAPDEV")
- KVM_NET+="-netdev type=tap,id=guest${i},fd=${TAPFD}${KVM_NET_OPT[i]} -device ${KVM_IF[i]},netdev=guest${i},mac=${KVM_MACADDR[i]} "
+ KVM_NET+="-netdev type=tap,id=guest${i},fd=${TAPFD}${KVM_NETDEV_OPT[i]} -device ${KVM_IF[i]},netdev=guest${i},mac=${KVM_MACADDR[i]} "
else
ip tuntap add dev $TAPDEV mode tap ${KVM_USER+user $KVM_USER}
ip link set $TAPDEV ${KVM_NET_MTU[$i]:+mtu ${KVM_NET_MTU[$i]}} up
brctl addif ${KVM_BR[i]} $TAPDEV
CLEANUP+=("ip tuntap del dev $TAPDEV mode tap")
- KVM_NET+="-netdev type=tap,id=guest${i},ifname=${TAPDEV},script=no,downscript=no${KVM_NET_OPT[i]} -device ${KVM_IF[i]},netdev=guest${i},mac=${KVM_MACADDR[i]} "
+ KVM_NET+="-netdev type=tap,id=guest${i},ifname=${TAPDEV},script=no,downscript=no${KVM_NETDEV_OPT[i]} -device ${KVM_IF[i]},netdev=guest${i},mac=${KVM_MACADDR[i]} "
fi
done
}