From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MvyEV-0006Pl-Kz for qemu-devel@nongnu.org; Thu, 08 Oct 2009 15:00:59 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MvyEJ-0006Hk-Fs for qemu-devel@nongnu.org; Thu, 08 Oct 2009 15:00:52 -0400 Received: from [199.232.76.173] (port=52362 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MvyEJ-0006Hb-8U for qemu-devel@nongnu.org; Thu, 08 Oct 2009 15:00:47 -0400 Received: from mx1.redhat.com ([209.132.183.28]:26780) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MvyEH-000751-Vk for qemu-devel@nongnu.org; Thu, 08 Oct 2009 15:00:46 -0400 Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id n98J0heN023286 for ; Thu, 8 Oct 2009 15:00:43 -0400 From: Mark McLoughlin Date: Thu, 8 Oct 2009 19:58:28 +0100 Message-Id: <1255028312-28180-13-git-send-email-markmc@redhat.com> In-Reply-To: <1255028312-28180-1-git-send-email-markmc@redhat.com> References: <1255028312-28180-1-git-send-email-markmc@redhat.com> Subject: [Qemu-devel] [PATCH 12/16] net: maintain a list of vlan-less clients List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Mark McLoughlin Allows them to be cleaned up at shutdown. This is pretty lame, but will eventually go away as we make vlans the special case. Signed-off-by: Mark McLoughlin --- net.c | 13 +++++++++++-- 1 files changed, 11 insertions(+), 2 deletions(-) diff --git a/net.c b/net.c index 9af217e..d6fe84b 100644 --- a/net.c +++ b/net.c @@ -115,6 +115,7 @@ #include "slirp/libslirp.h" static QTAILQ_HEAD(, VLANState) vlans; +static QTAILQ_HEAD(, VLANClientState) non_vlan_clients; /***********************************************************/ /* network device redirectors */ @@ -327,6 +328,8 @@ VLANClientState *qemu_new_vlan_client(VLANState *vlan, if (vlan) { vc->vlan = vlan; QTAILQ_INSERT_TAIL(&vc->vlan->clients, vc, next); + } else { + QTAILQ_INSERT_TAIL(&non_vlan_clients, vc, next); } return vc; @@ -336,6 +339,8 @@ void qemu_del_vlan_client(VLANClientState *vc) { if (vc->vlan) { QTAILQ_REMOVE(&vc->vlan->clients, vc, next); + } else { + QTAILQ_REMOVE(&non_vlan_clients, vc, next); } if (vc->cleanup) { @@ -3227,14 +3232,17 @@ done: void net_cleanup(void) { VLANState *vlan; + VLANClientState *vc, *next_vc; QTAILQ_FOREACH(vlan, &vlans, next) { - VLANClientState *vc, *next_vc; - QTAILQ_FOREACH_SAFE(vc, &vlan->clients, next, next_vc) { qemu_del_vlan_client(vc); } } + + QTAILQ_FOREACH_SAFE(vc, &non_vlan_clients, next, next_vc) { + qemu_del_vlan_client(vc); + } } static void net_check_clients(void) @@ -3274,6 +3282,7 @@ int net_init_clients(void) } QTAILQ_INIT(&vlans); + QTAILQ_INIT(&non_vlan_clients); if (qemu_opts_foreach(&qemu_netdev_opts, net_init_netdev, NULL, 1) == -1) return -1; -- 1.6.2.5