From nobody Sat May 4 20:54:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 151721500490418.46356481815826; Mon, 29 Jan 2018 00:36:44 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E21887E42A; Mon, 29 Jan 2018 08:36:42 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 2513B6EE70; Mon, 29 Jan 2018 08:36:42 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 92CAB4ED37; Mon, 29 Jan 2018 08:36:39 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w0T8Ztcn012973 for ; Mon, 29 Jan 2018 03:35:55 -0500 Received: by smtp.corp.redhat.com (Postfix) id 2603560C9C; Mon, 29 Jan 2018 08:35:55 +0000 (UTC) Received: from mx1.redhat.com (ext-mx07.extmail.prod.ext.phx2.redhat.com [10.5.110.31]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1E14760C9F for ; Mon, 29 Jan 2018 08:35:51 +0000 (UTC) Received: from m15-114.126.com (m15-114.126.com [220.181.15.114]) by mx1.redhat.com (Postfix) with ESMTP id 8BA59C04BD57 for ; Mon, 29 Jan 2018 08:35:47 +0000 (UTC) Received: from localhost.localdomain (unknown [58.213.111.46]) by smtp7 (Coremail) with SMTP id DsmowAB3v8rY3G5aWHXEBQ--.13603S3; Mon, 29 Jan 2018 16:35:46 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=126.com; s=s110527; h=From:Subject:Date:Message-Id; bh=SveMHpvVJ72pKr1b60 SepCxDfwN+AHR6RKuNjcHw6a8=; b=WXdnF9jhgOsJIjfjMfecMph6L9dBYLHDnq xkjrGOgjU8sM+S3R2QBwL9PQDNf6VCM+i1RlEAOFqsxgYr2gs8Q6nZj23Eedu4ys B1RetWmGOglXgyuWifRli8d/yc5FViuSIVgRG0xPAW1tw6qf0wPL6aovDYJrL/kh g7cO6st6Y= From: Chen Hanxiao To: libvir-list@redhat.com Date: Mon, 29 Jan 2018 16:35:33 +0800 Message-Id: <20180129083536.24554-2-chen_han_xiao@126.com> In-Reply-To: <20180129083536.24554-1-chen_han_xiao@126.com> References: <20180129083536.24554-1-chen_han_xiao@126.com> X-CM-TRANSID: DsmowAB3v8rY3G5aWHXEBQ--.13603S3 X-Coremail-Antispam: 1Uf129KBjvJXoW3AFWkJr15uF4xuF4rArW3GFg_yoWxJFyxpF y5G3ZIgw4rJ3WxGr93XF1FyF1rArs7Wry3Wwn3ur1qqw18JF17Jrn7KFy7KFyxX3y3CF48 uFs7KFyxKFWkJaDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07j8DG5UUUUU= X-Originating-IP: [58.213.111.46] X-CM-SenderInfo: xfkh0spkdqs5xldrqiyswou0bp/1tbiaQLcrlpD4FZE+QAAsL X-Greylist: Sender passed SPF test, ACL 227 matched, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Mon, 29 Jan 2018 08:35:49 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Mon, 29 Jan 2018 08:35:49 +0000 (UTC) for IP:'220.181.15.114' DOMAIN:'m15-114.126.com' HELO:'m15-114.126.com' FROM:'chen_han_xiao@126.com' RCPT:'' X-RedHat-Spam-Score: 1.99 * (DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_PSBL, SPF_PASS, T_RP_MATCHES_RCVD) 220.181.15.114 m15-114.126.com 220.181.15.114 m15-114.126.com X-Scanned-By: MIMEDefang 2.78 on 10.5.110.31 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-loop: libvir-list@redhat.com Cc: Chen Hanxiao Subject: [libvirt] [PATCH v3 1/4] util: introduce helper to parse /proc/net/arp X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Mon, 29 Jan 2018 08:36:44 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Chen Hanxiao introduce helper to parse /proc/net/arp and store it in struct virArpTable. Signed-off-by: Chen Hanxiao --- v3: s/virGetArpTable/virArpTableGet alloc virArpTable in virArpTableGet return ENOSUPP on none-Linux platform move helpers to virarptable.[ch] po/POTFILES.in | 1 + src/Makefile.am | 1 + src/libvirt_private.syms | 5 +++ src/util/virarptable.c | 114 +++++++++++++++++++++++++++++++++++++++++++= ++++ src/util/virarptable.h | 48 ++++++++++++++++++++ 5 files changed, 169 insertions(+) create mode 100644 src/util/virarptable.c create mode 100644 src/util/virarptable.h diff --git a/po/POTFILES.in b/po/POTFILES.in index 8382ee633..91a4c5730 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -193,6 +193,7 @@ src/uml/uml_conf.c src/uml/uml_driver.c src/util/iohelper.c src/util/viralloc.c +src/util/virarptable.c src/util/viraudit.c src/util/virauth.c src/util/virauthconfig.c diff --git a/src/Makefile.am b/src/Makefile.am index 289b03747..923eea6fe 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -98,6 +98,7 @@ augeastest_DATA =3D UTIL_SOURCES =3D \ util/viralloc.c util/viralloc.h \ util/virarch.h util/virarch.c \ + util/virarptable.h util/virarptable.c \ util/viratomic.h util/viratomic.c \ util/viraudit.c util/viraudit.h \ util/virauth.c util/virauth.h \ diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index f2a2c8650..08229797a 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1332,6 +1332,11 @@ virArchGetWordSize; virArchToString; =20 =20 +# util/virarptable.h +virArpTableFree; +virArpTableGet; + + # util/viraudit.h virAuditClose; virAuditEncode; diff --git a/src/util/virarptable.c b/src/util/virarptable.c new file mode 100644 index 000000000..48a38352f --- /dev/null +++ b/src/util/virarptable.c @@ -0,0 +1,114 @@ +/* + * virarptable.c Linux ARP table handling + * + * Copyright (C) 2018 Chen Hanxiao + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * . + * + * Authors: + * Chen Hanxiao + */ + +#include + +#include +#include + +#include "viralloc.h" +#include "virarptable.h" +#include "virfile.h" +#include "virstring.h" + +#define VIR_FROM_THIS VIR_FROM_NONE + +#ifdef __linux__ + +virArpTablePtr virArpTableGet(void) +{ + FILE *fp =3D NULL; + char line[1024]; + int num =3D 0; + virArpTablePtr table =3D NULL; + + if (VIR_ALLOC(table) < 0) + return NULL; + + if (!(fp =3D fopen("/proc/net/arp", "r"))) + goto cleanup; + + while (fgets(line, sizeof(line), fp)) { + char ip[32], mac[32], dev_name[32], hwtype[32], + flags[32], mask[32], nouse[32]; + + if (STRPREFIX(line, "IP address")) + continue; + + if (VIR_REALLOC_N(table->t, num + 1) < 0) + goto cleanup; + + table->n =3D num + 1; + + /* /proc/net/arp looks like: + * 172.16.17.254 0x1 0x2 e4:68:a3:8d:ed:d3 * enp3s0 + */ + sscanf(line, "%[0-9.]%[ ]%[^ ]%[ ]%[^ ]%[ ]%[^ ]%[ ]%[^ ]%[ ]%[^ \= t\n]", + ip, nouse, + hwtype, nouse, + flags, nouse, + mac, nouse, + mask, nouse, + dev_name); + + if (VIR_STRDUP(table->t[num].ipaddr, ip) < 0) + goto cleanup; + + if (VIR_STRDUP(table->t[num].mac, mac) < 0) + goto cleanup; + + if (VIR_STRDUP(table->t[num].dev_name, dev_name) < 0) + goto cleanup; + + num++; + } + + return table; + + cleanup: + VIR_FORCE_FCLOSE(fp); + return NULL; +} + +#else + +virArpTablePtr virArpTableGet(void) +{ + virReportError(VIR_ERR_NO_SUPPORT, "%s", + _("get arp table not implemented on this platform")); + return NULL; +} + +#endif /* __linux__ */ + +void +virArpTableFree(virArpTablePtr table) +{ + size_t i; + for (i =3D 0; i < table->n; i++) { + VIR_FREE(table->t[i].ipaddr); + VIR_FREE(table->t[i].mac); + VIR_FREE(table->t[i].dev_name); + } + VIR_FREE(table); +} diff --git a/src/util/virarptable.h b/src/util/virarptable.h new file mode 100644 index 000000000..77db4e9f4 --- /dev/null +++ b/src/util/virarptable.h @@ -0,0 +1,48 @@ +/* + * virarptable.h Linux ARP table handling + * + * Copyright (C) 2018 Chen Hanxiao + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * . + * + * Authors: + * Chen Hanxiao + */ + +#ifndef __VIR_ARPTABLE_H__ +# define __VIR_ARPTABLE_H__ + +# include "internal.h" + +typedef struct _virArpTableEntry virArpTableEntry; +typedef virArpTableEntry *virArpTableEntryPtr; +typedef struct _virArpTable virArpTable; +typedef virArpTable *virArpTablePtr; + +struct _virArpTableEntry{ + char *ipaddr; + char *mac; + char *dev_name; +}; + +struct _virArpTable { + int n; + virArpTableEntryPtr t; +}; + +virArpTablePtr virArpTableGet(void); +void virArpTableFree(virArpTablePtr table); + +#endif /* __VIR_ARPTABLE_H__ */ --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat May 4 20:54:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1517215040466769.6875258282591; Mon, 29 Jan 2018 00:37:20 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 2DF7B7C83B; Mon, 29 Jan 2018 08:37:19 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id EDD447D51A; Mon, 29 Jan 2018 08:37:18 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 9AEBE18033DC; Mon, 29 Jan 2018 08:37:18 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w0T8ZriA012957 for ; Mon, 29 Jan 2018 03:35:53 -0500 Received: by smtp.corp.redhat.com (Postfix) id 952BF6EE75; Mon, 29 Jan 2018 08:35:53 +0000 (UTC) Received: from mx1.redhat.com (ext-mx10.extmail.prod.ext.phx2.redhat.com [10.5.110.39]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 8D9006EE7A for ; Mon, 29 Jan 2018 08:35:50 +0000 (UTC) Received: from m15-114.126.com (m15-114.126.com [220.181.15.114]) by mx1.redhat.com (Postfix) with ESMTP id 288155F7AF for ; Mon, 29 Jan 2018 08:35:48 +0000 (UTC) Received: from localhost.localdomain (unknown [58.213.111.46]) by smtp7 (Coremail) with SMTP id DsmowAB3v8rY3G5aWHXEBQ--.13603S4; Mon, 29 Jan 2018 16:35:46 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=126.com; s=s110527; h=From:Subject:Date:Message-Id; bh=a7p5VR0nY72WoBi6Vh YrO078VbBmhaJNAe+1I8WHN0Q=; b=lNYUhW0c2SPybBKywqHJQmBVrI92d9V0+S 94PumwueWo+Fmp3HZz+OUUhrxFWX1iEPRh9a/o+yg40ldP2Kidtg3iEzpGyg++Kl E0ifezTtjOVFFw8Sj1/jsj8TyP3nwdyjaxGT0ovroVjdEArlqWtKzNSBG/eqsuRA uH6FaoOo8= From: Chen Hanxiao To: libvir-list@redhat.com Date: Mon, 29 Jan 2018 16:35:34 +0800 Message-Id: <20180129083536.24554-3-chen_han_xiao@126.com> In-Reply-To: <20180129083536.24554-1-chen_han_xiao@126.com> References: <20180129083536.24554-1-chen_han_xiao@126.com> X-CM-TRANSID: DsmowAB3v8rY3G5aWHXEBQ--.13603S4 X-Coremail-Antispam: 1Uf129KBjvJXoW3JFykCw4rKF4UJF17KryDJrb_yoW7GrWrpF WUXFs5trW8Gw1fGrZxGa17XFn8W3y8KF9xGFsa9a1vvr18Gr9rXw1xWw47ZFyjyr4fXFy7 CrZFgayUWF4jgFJanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07j1tC7UUUUU= X-Originating-IP: [58.213.111.46] X-CM-SenderInfo: xfkh0spkdqs5xldrqiyswou0bp/1tbiFgLcrlpD4slLTAAAsT X-Greylist: Sender passed SPF test, ACL 227 matched, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Mon, 29 Jan 2018 08:35:49 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Mon, 29 Jan 2018 08:35:49 +0000 (UTC) for IP:'220.181.15.114' DOMAIN:'m15-114.126.com' HELO:'m15-114.126.com' FROM:'chen_han_xiao@126.com' RCPT:'' X-RedHat-Spam-Score: 1.99 * (DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_PSBL, SPF_PASS, T_RP_MATCHES_RCVD) 220.181.15.114 m15-114.126.com 220.181.15.114 m15-114.126.com X-Scanned-By: MIMEDefang 2.78 on 10.5.110.39 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-loop: libvir-list@redhat.com Cc: Chen Hanxiao Subject: [libvirt] [PATCH v3 2/4] qemu: introduce qemuARPGetInterfaces to get IP from host's arp table X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Mon, 29 Jan 2018 08:37:19 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Chen Hanxiao introduce VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_ARP to get ip address of VM from the output of /proc/net/arp Signed-off-by: Chen Hanxiao --- v3: add docs in virDomainInterfaceAddresses remove error label show network interface which did not match the arp table include/libvirt/libvirt-domain.h | 1 + src/libvirt-domain.c | 7 +++ src/qemu/qemu_driver.c | 96 ++++++++++++++++++++++++++++++++++++= ++++ 3 files changed, 104 insertions(+) diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-dom= ain.h index 4048acf38..38e2d9a3e 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -4665,6 +4665,7 @@ typedef virMemoryParameter *virMemoryParameterPtr; typedef enum { VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_LEASE =3D 0, /* Parse DHCP lease fi= le */ VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_AGENT =3D 1, /* Query qemu guest ag= ent */ + VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_ARP =3D 2, /* Query ARP tables */ =20 # ifdef VIR_ENUM_SENTINELS VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_LAST diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index eaec0979a..1ae83610d 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -11721,6 +11721,13 @@ virDomainFSInfoFree(virDomainFSInfoPtr info) * To match such interface with the one from @dom XML use MAC address or IP * range. * + * If @source is VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_ARP, the /proc/net/arp + * will be check to obtain the interface addresses. + * As the arp cache did not refresh in time, the returned ip address + * may be unreachable. + * As the route config of the guest, the returned mac address + * may be duplicated. + * * @ifaces->name and @ifaces->hwaddr are never NULL. * * The caller *must* free @ifaces when no longer needed. Usual use case diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index a203c9297..d0cb88053 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -70,6 +70,7 @@ #include "virnetdevopenvswitch.h" #include "capabilities.h" #include "viralloc.h" +#include "virarptable.h" #include "viruuid.h" #include "domain_conf.h" #include "domain_audit.h" @@ -160,6 +161,9 @@ static int qemuGetDHCPInterfaces(virDomainPtr dom, virDomainObjPtr vm, virDomainInterfacePtr **ifaces); =20 +static int qemuARPGetInterfaces(virDomainObjPtr vm, + virDomainInterfacePtr **ifaces); + static virQEMUDriverPtr qemu_driver; =20 =20 @@ -20384,6 +20388,10 @@ qemuDomainInterfaceAddresses(virDomainPtr dom, =20 break; =20 + case VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_ARP: + ret =3D qemuARPGetInterfaces(vm, ifaces); + break; + default: virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, _("Unknown IP address data source %d"), @@ -20494,6 +20502,94 @@ qemuGetDHCPInterfaces(virDomainPtr dom, } =20 =20 +static int +qemuARPGetInterfaces(virDomainObjPtr vm, + virDomainInterfacePtr **ifaces) +{ + size_t i, j; + size_t ifaces_count =3D 0; + int ret =3D -1; + char macaddr[VIR_MAC_STRING_BUFLEN]; + virDomainInterfacePtr *ifaces_ret =3D NULL; + virDomainInterfacePtr iface =3D NULL; + virArpTablePtr table; + int got_one =3D 0; + + table =3D virArpTableGet(); + if (!table) + goto cleanup; + + for (i =3D 0; i < vm->def->nnets; i++) { + got_one =3D 0; + if (vm->def->nets[i]->type !=3D VIR_DOMAIN_NET_TYPE_NETWORK) + continue; + + virMacAddrFormat(&(vm->def->nets[i]->mac), macaddr); + virArpTableEntry entry; + for (j =3D 0; j < table->n; j++) { + entry =3D table->t[j]; + if (STREQ(entry.mac, macaddr)) { + got_one =3D 1; + if (VIR_EXPAND_N(ifaces_ret, ifaces_count, 1) < 0) + goto cleanup; + if (VIR_ALLOC(ifaces_ret[ifaces_count - 1]) < 0) + goto cleanup; + + iface =3D ifaces_ret[ifaces_count - 1]; + iface->naddrs =3D 1; + if (VIR_ALLOC_N(iface->addrs, iface->naddrs) < 0) + goto cleanup; + + if (VIR_STRDUP(iface->name, vm->def->nets[i]->ifname) < 0) + goto cleanup; + + if (VIR_STRDUP(iface->hwaddr, macaddr) < 0) + goto cleanup; + + if (VIR_STRDUP(iface->addrs->addr, entry.ipaddr) < 0) + goto cleanup; + } + } + + if (got_one =3D=3D 0) { + if (VIR_EXPAND_N(ifaces_ret, ifaces_count, 1) < 0) + goto cleanup; + if (VIR_ALLOC(ifaces_ret[ifaces_count - 1]) < 0) + goto cleanup; + + iface =3D ifaces_ret[ifaces_count - 1]; + iface->naddrs =3D 1; + if (VIR_ALLOC_N(iface->addrs, iface->naddrs) < 0) + goto cleanup; + + if (VIR_STRDUP(iface->name, "") < 0) + goto cleanup; + + if (VIR_STRDUP(iface->hwaddr, macaddr) < 0) + goto cleanup; + + if (VIR_STRDUP(iface->addrs->addr, "") < 0) + goto cleanup; + } + } + + *ifaces =3D ifaces_ret; + ifaces_ret =3D NULL; + ret =3D ifaces_count; + + cleanup: + virArpTableFree(table); + + if (ifaces_ret) { + for (i =3D 0; i < ifaces_count; i++) + virDomainInterfaceFree(ifaces_ret[i]); + } + VIR_FREE(ifaces_ret); + + return ret; +} + + static int qemuDomainSetUserPassword(virDomainPtr dom, const char *user, --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat May 4 20:54:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1517215041026145.34106460724445; Mon, 29 Jan 2018 00:37:21 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 90C9D25778; Mon, 29 Jan 2018 08:37:19 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 63A085D9CD; Mon, 29 Jan 2018 08:37:19 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 224DE18033DD; Mon, 29 Jan 2018 08:37:19 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w0T8Zr79012955 for ; Mon, 29 Jan 2018 03:35:53 -0500 Received: by smtp.corp.redhat.com (Postfix) id 925CC6EE7B; Mon, 29 Jan 2018 08:35:53 +0000 (UTC) Received: from mx1.redhat.com (ext-mx09.extmail.prod.ext.phx2.redhat.com [10.5.110.38]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 8C8376EE79 for ; Mon, 29 Jan 2018 08:35:51 +0000 (UTC) Received: from m15-114.126.com (m15-114.126.com [220.181.15.114]) by mx1.redhat.com (Postfix) with ESMTP id 288574903F for ; Mon, 29 Jan 2018 08:35:49 +0000 (UTC) Received: from localhost.localdomain (unknown [58.213.111.46]) by smtp7 (Coremail) with SMTP id DsmowAB3v8rY3G5aWHXEBQ--.13603S5; Mon, 29 Jan 2018 16:35:46 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=126.com; s=s110527; h=From:Subject:Date:Message-Id; bh=Tox3HTIatJomzawNCE SJCC17DqjI3Gg+/npueR+hGa0=; b=FVoUeZLnsflw+tiXXmAIokTkAw1U0Yd2tU iK64jjFlAW5VJLmNqnZ3+zHBjqYNFGrRnt28UZ+tkaVpVA5qmlgRWX8Pulg/fEvP U2gHqubqM2QW9z2bhg7fu0V/t6tjiqpo2jj8SrSR1CU7h6xaDj8aM8k1k+1BVAEG RduTMKerM= From: Chen Hanxiao To: libvir-list@redhat.com Date: Mon, 29 Jan 2018 16:35:35 +0800 Message-Id: <20180129083536.24554-4-chen_han_xiao@126.com> In-Reply-To: <20180129083536.24554-1-chen_han_xiao@126.com> References: <20180129083536.24554-1-chen_han_xiao@126.com> X-CM-TRANSID: DsmowAB3v8rY3G5aWHXEBQ--.13603S5 X-Coremail-Antispam: 1Uf129KBjvJXoW7Kr1kAr13JFWfAw1ktw48tFb_yoW8ur4kpF s3Xay7A3s7Xrn8X3Z5Cw15uFykG3y29r18uan8Xw1jvr45A3WDJr17GFWF9Fn7Cr10v3W0 yrZF9F4DZFs5AF7anT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07j3nY7UUUUU= X-Originating-IP: [58.213.111.46] X-CM-SenderInfo: xfkh0spkdqs5xldrqiyswou0bp/1tbiEwLcrlpD4FGCQAABsI X-Greylist: Sender passed SPF test, ACL 227 matched, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Mon, 29 Jan 2018 08:35:51 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Mon, 29 Jan 2018 08:35:51 +0000 (UTC) for IP:'220.181.15.114' DOMAIN:'m15-114.126.com' HELO:'m15-114.126.com' FROM:'chen_han_xiao@126.com' RCPT:'' X-RedHat-Spam-Score: 1.99 * (DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_PSBL, SPF_PASS, T_RP_MATCHES_RCVD) 220.181.15.114 m15-114.126.com 220.181.15.114 m15-114.126.com X-Scanned-By: MIMEDefang 2.78 on 10.5.110.38 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-loop: libvir-list@redhat.com Cc: Chen Hanxiao Subject: [libvirt] [PATCH v3 3/4] virsh: add --source arp to domifaddr X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Mon, 29 Jan 2018 08:37:20 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Chen Hanxiao We can use: domifaddr f26-cloud --source arp to get the address. Acked-by: Michal Privoznik Signed-off-by: Chen Hanxiao --- tools/virsh-domain-monitor.c | 2 ++ tools/virsh.pod | 7 ++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/tools/virsh-domain-monitor.c b/tools/virsh-domain-monitor.c index 32a42707e..68da11ed5 100644 --- a/tools/virsh-domain-monitor.c +++ b/tools/virsh-domain-monitor.c @@ -2190,6 +2190,8 @@ cmdDomIfAddr(vshControl *ctl, const vshCmd *cmd) source =3D VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_LEASE; } else if (STREQ(sourcestr, "agent")) { source =3D VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_AGENT; + } else if (STREQ(sourcestr, "arp")) { + source =3D VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_ARP; } else { vshError(ctl, _("Unknown data source '%s'"), sourcestr); goto cleanup; diff --git a/tools/virsh.pod b/tools/virsh.pod index 69cc42338..1dfe2a9b0 100644 --- a/tools/virsh.pod +++ b/tools/virsh.pod @@ -759,7 +759,7 @@ B (fields appear in the followin= g order): =20 =20 =3Ditem B I [I] [I<--full>] - [I<--source lease|agent>] + [I<--source lease|agent|arp>] =20 Get a list of interfaces of a running domain along with their IP and MAC addresses, or limited output just for one interface if I is @@ -774,8 +774,9 @@ only the interface name and MAC address is displayed fo= r the first name and MAC address with "-" for the others using the same name and MAC address. =20 The I<--source> argument specifies what data source to use for the -addresses, currently one of 'lease' to read DHCP leases, or 'agent' to que= ry -the guest OS via an agent. If unspecified, 'lease' is the default. +addresses, currently 'lease' to read DHCP leases, 'agent' to query +the guest OS via an agent, or 'arp' to get IP from host's arp tables. +If unspecified, 'lease' is the default. =20 =3Ditem B I I =20 --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat May 4 20:54:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1517215036326687.2264792254435; Mon, 29 Jan 2018 00:37:16 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id AF58C10F3C6; Mon, 29 Jan 2018 08:37:14 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 764DB6FDC2; Mon, 29 Jan 2018 08:37:14 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id E9EB318033D9; Mon, 29 Jan 2018 08:37:13 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w0T8ZrdL012950 for ; Mon, 29 Jan 2018 03:35:53 -0500 Received: by smtp.corp.redhat.com (Postfix) id F142160BF1; Mon, 29 Jan 2018 08:35:52 +0000 (UTC) Received: from mx1.redhat.com (ext-mx04.extmail.prod.ext.phx2.redhat.com [10.5.110.28]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E7A116FDB8 for ; Mon, 29 Jan 2018 08:35:50 +0000 (UTC) Received: from m15-114.126.com (m15-114.126.com [220.181.15.114]) by mx1.redhat.com (Postfix) with ESMTP id 2D0C770D67 for ; Mon, 29 Jan 2018 08:35:49 +0000 (UTC) Received: from localhost.localdomain (unknown [58.213.111.46]) by smtp7 (Coremail) with SMTP id DsmowAB3v8rY3G5aWHXEBQ--.13603S6; Mon, 29 Jan 2018 16:35:46 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=126.com; s=s110527; h=From:Subject:Date:Message-Id; bh=OPs4BNj8dFnizIdRLn h/uZ7reSDRpHzQpKvkECdtbf8=; b=kdhYDRm/8FM5vAozQGct8pH4al2N8j7u2X ngC57++kEbM9lOAkvyfW3kdlVB2ATyXxgMhLwakPN1WlBzLLhDGGAkMHkcTK19jZ tM74x4B9w6gFIkw0QIHwvLVnkEQlJEz14lF3KGbKYxXyzkGlGdChqE3CE6ZiZgMH PjMRlpQhQ= From: Chen Hanxiao To: libvir-list@redhat.com Date: Mon, 29 Jan 2018 16:35:36 +0800 Message-Id: <20180129083536.24554-5-chen_han_xiao@126.com> In-Reply-To: <20180129083536.24554-1-chen_han_xiao@126.com> References: <20180129083536.24554-1-chen_han_xiao@126.com> X-CM-TRANSID: DsmowAB3v8rY3G5aWHXEBQ--.13603S6 X-Coremail-Antispam: 1Uf129KBjvdXoW7XFy5Jw1xGryUKw4DXFy3twb_yoW3Jrg_W3 4xWaykXrW8JF9ak3yFqr4kuryku3y8Ar1Ykwn8KFy5tw4UKrsYyas2q390qr17XFWSyFW3 AFsIqa1kGF4IqjkaLaAFLSUrUUUUUb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUvcSsGvfC2KfnxnUUI43ZEXa7IU0gJ57UUUUU== X-Originating-IP: [58.213.111.46] X-CM-SenderInfo: xfkh0spkdqs5xldrqiyswou0bp/1tbiaQLcrlpD4FZE-gAAsM X-Greylist: Sender passed SPF test, ACL 227 matched, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Mon, 29 Jan 2018 08:35:50 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Mon, 29 Jan 2018 08:35:50 +0000 (UTC) for IP:'220.181.15.114' DOMAIN:'m15-114.126.com' HELO:'m15-114.126.com' FROM:'chen_han_xiao@126.com' RCPT:'' X-RedHat-Spam-Score: 1.99 * (DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_PSBL, SPF_PASS, T_RP_MATCHES_RCVD) 220.181.15.114 m15-114.126.com 220.181.15.114 m15-114.126.com X-Scanned-By: MIMEDefang 2.78 on 10.5.110.28 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Cc: Chen Hanxiao Subject: [libvirt] [PATCH v3 4/4] news: qemu: use arp table of host to get the IP address of guests X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Mon, 29 Jan 2018 08:37:15 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Chen Hanxiao Signed-off-by: Chen Hanxiao --- v3: more verbose description docs/news.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/news.xml b/docs/news.xml index 2268fdf79..706546e6d 100644 --- a/docs/news.xml +++ b/docs/news.xml @@ -56,6 +56,15 @@ interfaces, NWFilters, and so on). + + + qemu: use arp table of host to get the IP address of guests + + + Find IP address of a VM by arp table on hosts. + If someone customizing IP address inside VM, it will be helpful. + +
--=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list