From 784742c7620cb9de8c995fb40cdb96dbbc497e22 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Mon, 2 Oct 2017 15:04:14 +0200 Subject: [PATCH] conf: Introduce virDomainNetFindByName Small wrapper to lookup interface in domain definition by its name. Signed-off-by: Michal Privoznik Reviewed-by: John Ferlan --- src/conf/domain_conf.c | 32 ++++++++++++++++++++++++++------ src/conf/domain_conf.h | 1 + src/libvirt_private.syms | 1 + 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 51aed84917..c502ed951d 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -27004,17 +27004,37 @@ virDomainNetFind(virDomainDefPtr def, const char *device) } } } else { /* ifname */ - for (i = 0; i < def->nnets; i++) { - if (STREQ_NULLABLE(device, def->nets[i]->ifname)) { - net = def->nets[i]; - break; - } - } + net = virDomainNetFindByName(def, device); } return net; } + +/** + * virDomainNetFindByName: + * @def: domain's def + * @ifname: interface name + * + * Finds a domain's net def given the interface name. + * + * Returns a pointer to the net def or NULL if not found. + */ +virDomainNetDefPtr +virDomainNetFindByName(virDomainDefPtr def, + const char *ifname) +{ + size_t i; + + for (i = 0; i < def->nnets; i++) { + if (STREQ_NULLABLE(ifname, def->nets[i]->ifname)) + return def->nets[i]; + } + + return NULL; +} + + /** * virDomainDeviceDefCopy: * @caps: Capabilities diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 28abe2b0b2..5f922068d5 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -3001,6 +3001,7 @@ int virDomainDiskSourceParse(xmlNodePtr node, int virDomainNetFindIdx(virDomainDefPtr def, virDomainNetDefPtr net); virDomainNetDefPtr virDomainNetFind(virDomainDefPtr def, const char *device); +virDomainNetDefPtr virDomainNetFindByName(virDomainDefPtr def, const char *ifname); bool virDomainHasNet(virDomainDefPtr def, virDomainNetDefPtr net); int virDomainNetInsert(virDomainDefPtr def, virDomainNetDefPtr net); virDomainNetDefPtr virDomainNetRemove(virDomainDefPtr def, size_t i); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 5b1bc5e4fe..7a12d6a146 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -422,6 +422,7 @@ virDomainNetDefClear; virDomainNetDefFormat; virDomainNetDefFree; virDomainNetFind; +virDomainNetFindByName; virDomainNetFindIdx; virDomainNetGenerateMAC; virDomainNetGetActualBandwidth;