From e3909729d277c313f6093b5ff78594d8107721d2 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Fri, 13 Oct 2017 13:40:47 -0700 Subject: [PATCH] virDomainNetFind: Report error if no device found Every caller reports the error themselves. Might as well move it into the function and thus unify it. Signed-off-by: Michal Privoznik Reviewed-by: John Ferlan --- src/conf/domain_conf.c | 18 ++++++++++-------- src/libxl/libxl_driver.c | 5 +---- src/lxc/lxc_driver.c | 5 +---- src/openvz/openvz_driver.c | 5 +---- src/qemu/qemu_driver.c | 21 ++++----------------- src/test/test_driver.c | 5 +---- src/xen/xen_driver.c | 6 +++++- 7 files changed, 23 insertions(+), 42 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 54be9028d7..caffa896d2 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -26983,13 +26983,12 @@ virDomainGraphicsListenAppendSocket(virDomainGraphicsDefPtr def, * * Finds a domain's net def, given the interface name or MAC address * - * Returns a pointer to the net def or NULL if not found. + * Returns a pointer to the net def or NULL if not found (error is reported). */ virDomainNetDefPtr virDomainNetFind(virDomainDefPtr def, const char *device) { bool isMac = false; - virDomainNetDefPtr net = NULL; virMacAddr mac; size_t i; @@ -26998,16 +26997,19 @@ virDomainNetFind(virDomainDefPtr def, const char *device) if (isMac) { for (i = 0; i < def->nnets; i++) { - if (virMacAddrCmp(&mac, &def->nets[i]->mac) == 0) { - net = def->nets[i]; - break; - } + if (virMacAddrCmp(&mac, &def->nets[i]->mac) == 0) + return def->nets[i]; } } else { /* ifname */ - net = virDomainNetFindByName(def, device); + virDomainNetDefPtr net = NULL; + + if ((net = virDomainNetFindByName(def, device))) + return net; } - return net; + virReportError(VIR_ERR_INVALID_ARG, + _("'%s' is not a known interface"), device); + return NULL; } diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index 8483d6ecf7..1c4abb6d36 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -4979,11 +4979,8 @@ libxlDomainInterfaceStats(virDomainPtr dom, goto endjob; } - if (!(net = virDomainNetFindByName(vm->def, path))) { - virReportError(VIR_ERR_INVALID_ARG, - _("'%s' is not a known interface"), path); + if (!(net = virDomainNetFindByName(vm->def, path))) goto endjob; - } if (virNetDevTapInterfaceStats(path, stats, !virDomainNetTypeSharesHostView(net)) < 0) diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 6ad61bdb76..95a2d8a78a 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -2872,11 +2872,8 @@ lxcDomainInterfaceStats(virDomainPtr dom, goto endjob; } - if (!(net = virDomainNetFindByName(vm->def, path))) { - virReportError(VIR_ERR_INVALID_ARG, - _("Invalid path, '%s' is not a known interface"), path); + if (!(net = virDomainNetFindByName(vm->def, path))) goto endjob; - } if (virNetDevTapInterfaceStats(path, stats, !virDomainNetTypeSharesHostView(net)) < 0) diff --git a/src/openvz/openvz_driver.c b/src/openvz/openvz_driver.c index 11173898dc..8d1af7d7c7 100644 --- a/src/openvz/openvz_driver.c +++ b/src/openvz/openvz_driver.c @@ -2006,11 +2006,8 @@ openvzDomainInterfaceStats(virDomainPtr dom, goto cleanup; } - if (!(net = virDomainNetFindByName(vm->def, path))) { - virReportError(VIR_ERR_INVALID_ARG, - _("invalid path, '%s' is not a known interface"), path); + if (!(net = virDomainNetFindByName(vm->def, path))) goto cleanup; - } if (virNetDevTapInterfaceStats(path, stats, !virDomainNetTypeSharesHostView(net)) < 0) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 7c6f1674a9..00de5150c8 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -11040,11 +11040,8 @@ qemuDomainInterfaceStats(virDomainPtr dom, goto cleanup; } - if (!(net = virDomainNetFindByName(vm->def, path))) { - virReportError(VIR_ERR_INVALID_ARG, - _("invalid path, '%s' is not a known interface"), path); + if (!(net = virDomainNetFindByName(vm->def, path))) goto cleanup; - } if (virDomainNetGetActualType(net) == VIR_DOMAIN_NET_TYPE_VHOSTUSER) { if (virNetDevOpenvswitchInterfaceStats(path, stats) < 0) @@ -11114,18 +11111,12 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom, goto endjob; if (def && - !(net = virDomainNetFind(vm->def, device))) { - virReportError(VIR_ERR_INVALID_ARG, - _("Can't find device %s"), device); + !(net = virDomainNetFind(vm->def, device))) goto endjob; - } if (persistentDef && - !(persistentNet = virDomainNetFind(persistentDef, device))) { - virReportError(VIR_ERR_INVALID_ARG, - _("Can't find device %s"), device); + !(persistentNet = virDomainNetFind(persistentDef, device))) goto endjob; - } if ((VIR_ALLOC(bandwidth) < 0) || (VIR_ALLOC(bandwidth->in) < 0) || @@ -11291,12 +11282,8 @@ qemuDomainGetInterfaceParameters(virDomainPtr dom, goto cleanup; } - net = virDomainNetFind(def, device); - if (!net) { - virReportError(VIR_ERR_INVALID_ARG, - _("Can't find device %s"), device); + if (!(net = virDomainNetFind(def, device))) goto cleanup; - } for (i = 0; i < *nparams && i < QEMU_NB_BANDWIDTH_PARAM; i++) { switch (i) { diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 1c48347994..d572edf21b 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -3180,11 +3180,8 @@ static int testDomainInterfaceStats(virDomainPtr domain, goto error; } - if (!(net = virDomainNetFindByName(privdom->def, path))) { - virReportError(VIR_ERR_INVALID_ARG, - _("invalid path, '%s' is not a known interface"), path); + if (!(net = virDomainNetFindByName(privdom->def, path))) goto error; - } if (gettimeofday(&tv, NULL) < 0) { virReportSystemError(errno, diff --git a/src/xen/xen_driver.c b/src/xen/xen_driver.c index dae0f4f289..8a62481868 100644 --- a/src/xen/xen_driver.c +++ b/src/xen/xen_driver.c @@ -2113,6 +2113,7 @@ xenUnifiedDomainInterfaceStats(virDomainPtr dom, const char *path, virDomainInterfaceStatsPtr stats) { virDomainDefPtr def = NULL; + virDomainNetDefPtr net = NULL; int ret = -1; if (!(def = xenGetDomainDefForDom(dom))) @@ -2121,7 +2122,10 @@ xenUnifiedDomainInterfaceStats(virDomainPtr dom, const char *path, if (virDomainInterfaceStatsEnsureACL(dom->conn, def) < 0) goto cleanup; - ret = xenHypervisorDomainInterfaceStats(def, path, stats); + if (!(net = virDomainNetFind(def, path))) + goto cleanup; + + ret = xenHypervisorDomainInterfaceStats(def, net->ifname, stats); cleanup: virDomainDefFree(def); -- GitLab