diff options
author | Dominique Martinet <asmadeus@codewreck.org> | 2016-01-19 15:53:25 +0100 |
---|---|---|
committer | Dominique Martinet <asmadeus@codewreck.org> | 2016-01-19 18:05:51 +0100 |
commit | f7ea916622d78715b32d2b475ca5ef0e09ddc49b (patch) | |
tree | c63c022b5f711b52732284dbffcc2c6875f75e1b | |
parent | a42885e747326dc5bc0836fd0fc47deea12da41e (diff) |
network/vhost-net: open /dev/vhost-net beforehand if not running as root
-rwxr-xr-x | kvm-wrapper.sh | 12 |
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 } |