From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:45746) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RznRS-00034h-3F for qemu-devel@nongnu.org; Tue, 21 Feb 2012 05:59:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RznRJ-0000Mt-85 for qemu-devel@nongnu.org; Tue, 21 Feb 2012 05:59:30 -0500 Received: from mx1.redhat.com ([209.132.183.28]:63986) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RznRI-0000MR-V6 for qemu-devel@nongnu.org; Tue, 21 Feb 2012 05:59:21 -0500 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.14.4/8.14.4) with ESMTP id q1LAxKZX016878 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 21 Feb 2012 05:59:20 -0500 From: Gerd Hoffmann Date: Tue, 21 Feb 2012 11:59:10 +0100 Message-Id: <1329821953-32446-7-git-send-email-kraxel@redhat.com> In-Reply-To: <1329821953-32446-1-git-send-email-kraxel@redhat.com> References: <1329821953-32446-1-git-send-email-kraxel@redhat.com> Subject: [Qemu-devel] [PATCH 6/9] spice: support ipv6 channel address in monitor events and in spice info List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Yonit Halperin , Gerd Hoffmann From: Yonit Halperin RHBZ #788444 CC: Gerd Hoffmann Signed-off-by: Yonit Halperin Signed-off-by: Gerd Hoffmann --- ui/spice-core.c | 37 ++++++++++++++++++++++++++++++++----- 1 files changed, 32 insertions(+), 5 deletions(-) diff --git a/ui/spice-core.c b/ui/spice-core.c index 05cb745..1308a3d 100644 --- a/ui/spice-core.c +++ b/ui/spice-core.c @@ -220,10 +220,23 @@ static void channel_event(int event, SpiceChannelEventInfo *info) } client = qdict_new(); - add_addr_info(client, &info->paddr, info->plen); - server = qdict_new(); - add_addr_info(server, &info->laddr, info->llen); + +#ifdef SPICE_CHANNEL_EVENT_FLAG_ADDR_EXT + if (info->flags & SPICE_CHANNEL_EVENT_FLAG_ADDR_EXT) { + add_addr_info(client, (struct sockaddr *)&info->paddr_ext, + info->plen_ext); + add_addr_info(server, (struct sockaddr *)&info->laddr_ext, + info->llen_ext); + } else { + fprintf(stderr, "spice: %s, extended address is expected\n", + __func__); +#endif + add_addr_info(client, &info->paddr, info->plen); + add_addr_info(server, &info->laddr, info->llen); +#ifdef SPICE_CHANNEL_EVENT_FLAG_ADDR_EXT + } +#endif if (event == SPICE_CHANNEL_EVENT_INITIALIZED) { qdict_put(server, "auth", qstring_from_str(auth)); @@ -376,16 +389,30 @@ static SpiceChannelList *qmp_query_spice_channels(void) QTAILQ_FOREACH(item, &channel_list, link) { SpiceChannelList *chan; char host[NI_MAXHOST], port[NI_MAXSERV]; + struct sockaddr *paddr; + socklen_t plen; chan = g_malloc0(sizeof(*chan)); chan->value = g_malloc0(sizeof(*chan->value)); - getnameinfo(&item->info->paddr, item->info->plen, +#ifdef SPICE_CHANNEL_EVENT_FLAG_ADDR_EXT + if (item->info->flags & SPICE_CHANNEL_EVENT_FLAG_ADDR_EXT) { + paddr = (struct sockaddr *)&item->info->paddr_ext; + plen = item->info->plen_ext; + } else { +#endif + paddr = &item->info->paddr; + plen = item->info->plen; +#ifdef SPICE_CHANNEL_EVENT_FLAG_ADDR_EXT + } +#endif + + getnameinfo(paddr, plen, host, sizeof(host), port, sizeof(port), NI_NUMERICHOST | NI_NUMERICSERV); chan->value->host = g_strdup(host); chan->value->port = g_strdup(port); - chan->value->family = g_strdup(inet_strfamily(item->info->paddr.sa_family)); + chan->value->family = g_strdup(inet_strfamily(paddr->sa_family)); chan->value->connection_id = item->info->connection_id; chan->value->channel_type = item->info->type; -- 1.7.1