From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NfZRh-0004XH-7P for qemu-devel@nongnu.org; Thu, 11 Feb 2010 08:51:05 -0500 Received: from [199.232.76.173] (port=57675 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NfZRg-0004X2-Ij for qemu-devel@nongnu.org; Thu, 11 Feb 2010 08:51:04 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NfZRe-0006aM-Gi for qemu-devel@nongnu.org; Thu, 11 Feb 2010 08:51:04 -0500 Received: from oxygen.pond.sub.org ([213.239.205.148]:44581) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1NfZRZ-0006XW-Tc for qemu-devel@nongnu.org; Thu, 11 Feb 2010 08:51:02 -0500 Received: from blackfin.pond.sub.org (pD951BCD9.dip.t-dialin.net [217.81.188.217]) by oxygen.pond.sub.org (Postfix) with ESMTPA id 9DD03276D97 for ; Thu, 11 Feb 2010 14:45:03 +0100 (CET) From: Markus Armbruster Date: Thu, 11 Feb 2010 14:44:59 +0100 Message-Id: <1265895902-15664-4-git-send-email-armbru@redhat.com> In-Reply-To: <1265895902-15664-1-git-send-email-armbru@redhat.com> References: <1265895902-15664-1-git-send-email-armbru@redhat.com> Subject: [Qemu-devel] [PATCH 3/6] net: Fix bogus "Warning: vlan 0 with no nics" with -device List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Mark McLoughlin net_check_clients() prints this when an VLAN has host devices, but no guest devices. It uses VLANState members nb_guest_devs and nb_host_devs to keep track of these devices. However, -device does not update nb_guest_devs, only net_init_nic() does that, for -net nic. Check the VLAN clients directly, and remove the counters. Signed-off-by: Markus Armbruster --- net.c | 25 ++++++++++++++++++------- net.h | 1 - net/slirp.c | 4 ---- net/socket.c | 4 ---- net/tap-win32.c | 4 ---- net/tap.c | 4 ---- net/vde.c | 4 ---- 7 files changed, 18 insertions(+), 28 deletions(-) diff --git a/net.c b/net.c index 38b65f4..509f074 100644 --- a/net.c +++ b/net.c @@ -812,9 +812,6 @@ static int net_init_nic(QemuOpts *opts, } nd->used = 1; - if (vlan) { - nd->vlan->nb_guest_devs++; - } nb_nics++; return idx; @@ -1278,13 +1275,27 @@ void net_cleanup(void) void net_check_clients(void) { VLANState *vlan; + VLANClientState *vc; + int has_nic, has_host_dev; QTAILQ_FOREACH(vlan, &vlans, next) { - if (vlan->nb_guest_devs == 0 && vlan->nb_host_devs == 0) - continue; - if (vlan->nb_guest_devs == 0) + QTAILQ_FOREACH(vc, &vlan->clients, next) { + switch (vc->info->type) { + case NET_CLIENT_TYPE_NIC: + has_nic = 1; + break; + case NET_CLIENT_TYPE_SLIRP: + case NET_CLIENT_TYPE_TAP: + case NET_CLIENT_TYPE_SOCKET: + case NET_CLIENT_TYPE_VDE: + has_host_dev = 1; + break; + default: ; + } + } + if (has_host_dev && !has_nic) fprintf(stderr, "Warning: vlan %d with no nics\n", vlan->id); - if (vlan->nb_host_devs == 0) + if (has_nic && !has_host_dev) fprintf(stderr, "Warning: vlan %d is not connected to host network\n", vlan->id); diff --git a/net.h b/net.h index 3467c10..33a1eaf 100644 --- a/net.h +++ b/net.h @@ -79,7 +79,6 @@ struct VLANState { int id; QTAILQ_HEAD(, VLANClientState) clients; QTAILQ_ENTRY(VLANState) next; - unsigned int nb_guest_devs, nb_host_devs; NetQueue *send_queue; }; diff --git a/net/slirp.c b/net/slirp.c index 361899b..317cca7 100644 --- a/net/slirp.c +++ b/net/slirp.c @@ -738,10 +738,6 @@ int net_init_slirp(QemuOpts *opts, qemu_free(config); } - if (ret != -1 && vlan) { - vlan->nb_host_devs++; - } - qemu_free(vnet); return ret; diff --git a/net/socket.c b/net/socket.c index 5533737..442a9c7 100644 --- a/net/socket.c +++ b/net/socket.c @@ -569,9 +569,5 @@ int net_init_socket(QemuOpts *opts, return -1; } - if (vlan) { - vlan->nb_host_devs++; - } - return 0; } diff --git a/net/tap-win32.c b/net/tap-win32.c index b717c17..8370c80 100644 --- a/net/tap-win32.c +++ b/net/tap-win32.c @@ -714,10 +714,6 @@ int net_init_tap(QemuOpts *opts, Monitor *mon, const char *name, VLANState *vlan return -1; } - if (vlan) { - vlan->nb_host_devs++; - } - return 0; } diff --git a/net/tap.c b/net/tap.c index d3492de..7a7320c 100644 --- a/net/tap.c +++ b/net/tap.c @@ -449,9 +449,5 @@ int net_init_tap(QemuOpts *opts, Monitor *mon, const char *name, VLANState *vlan } } - if (vlan) { - vlan->nb_host_devs++; - } - return 0; } diff --git a/net/vde.c b/net/vde.c index 42b4633..0b46fa6 100644 --- a/net/vde.c +++ b/net/vde.c @@ -127,9 +127,5 @@ int net_init_vde(QemuOpts *opts, Monitor *mon, const char *name, VLANState *vlan return -1; } - if (vlan) { - vlan->nb_host_devs++; - } - return 0; } -- 1.6.6