aboutsummaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorJason Wang <jasowang@redhat.com>2013-02-21 11:05:56 +0800
committerStefan Hajnoczi <stefanha@redhat.com>2013-02-27 16:10:47 +0100
commitce675a7579fea498397c5d2da3c5367671e9f02a (patch)
treed9b1bdbdac18c9f66c0c7d2f986019452f513896 /net
parent7d91ddd25e3a4e5008a2ac16127d51a34fd56bf1 (diff)
downloadqemu-ce675a7579fea498397c5d2da3c5367671e9f02a.zip
qemu-ce675a7579fea498397c5d2da3c5367671e9f02a.tar.gz
qemu-ce675a7579fea498397c5d2da3c5367671e9f02a.tar.bz2
tap: forbid creating multiqueue tap when hub is used
Obviously, hub does not support multiqueue tap. So this patch forbids creating multiple queue tap when hub is used to prevent the crash when command line such as "-net tap,queues=2" is used. Cc: qemu-stable@nongnu.org Signed-off-by: Jason Wang <jasowang@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'net')
-rw-r--r--net/tap.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/net/tap.c b/net/tap.c
index 48c254e..daab350 100644
--- a/net/tap.c
+++ b/net/tap.c
@@ -693,6 +693,13 @@ int net_init_tap(const NetClientOptions *opts, const char *name,
queues = tap->has_queues ? tap->queues : 1;
vhostfdname = tap->has_vhostfd ? tap->vhostfd : NULL;
+ /* QEMU vlans does not support multiqueue tap, in this case peer is set.
+ * For -netdev, peer is always NULL. */
+ if (peer && (tap->has_queues || tap->has_fds || tap->has_vhostfds)) {
+ error_report("Multiqueue tap cannnot be used with QEMU vlans");
+ return -1;
+ }
+
if (tap->has_fd) {
if (tap->has_ifname || tap->has_script || tap->has_downscript ||
tap->has_vnet_hdr || tap->has_helper || tap->has_queues ||