src: Use virDomainNetFindByName

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
Michal Privoznik 2017-10-02 15:24:39 +02:00
parent 784742c762
commit c2c47b586f
5 changed files with 34 additions and 71 deletions

View File

@ -4961,7 +4961,7 @@ libxlDomainInterfaceStats(virDomainPtr dom,
{ {
libxlDriverPrivatePtr driver = dom->conn->privateData; libxlDriverPrivatePtr driver = dom->conn->privateData;
virDomainObjPtr vm; virDomainObjPtr vm;
size_t i; virDomainNetDefPtr net = NULL;
int ret = -1; int ret = -1;
if (!(vm = libxlDomObjFromDomain(dom))) if (!(vm = libxlDomObjFromDomain(dom)))
@ -4979,20 +4979,16 @@ libxlDomainInterfaceStats(virDomainPtr dom,
goto endjob; goto endjob;
} }
/* Check the path is one of the domain's network interfaces. */ if (!(net = virDomainNetFindByName(vm->def, path))) {
for (i = 0; i < vm->def->nnets; i++) {
if (vm->def->nets[i]->ifname &&
STREQ(vm->def->nets[i]->ifname, path)) {
ret = 0;
break;
}
}
if (ret == 0)
ret = virNetDevTapInterfaceStats(path, stats);
else
virReportError(VIR_ERR_INVALID_ARG, virReportError(VIR_ERR_INVALID_ARG,
_("'%s' is not a known interface"), path); _("'%s' is not a known interface"), path);
goto endjob;
}
if (virNetDevTapInterfaceStats(path, stats) < 0)
goto endjob;
ret = 0;
endjob: endjob:
libxlDomainObjEndJob(driver, vm); libxlDomainObjEndJob(driver, vm);

View File

@ -2853,9 +2853,9 @@ lxcDomainInterfaceStats(virDomainPtr dom,
virDomainInterfaceStatsPtr stats) virDomainInterfaceStatsPtr stats)
{ {
virDomainObjPtr vm; virDomainObjPtr vm;
size_t i;
int ret = -1; int ret = -1;
virLXCDriverPtr driver = dom->conn->privateData; virLXCDriverPtr driver = dom->conn->privateData;
virDomainNetDefPtr net = NULL;
if (!(vm = lxcDomObjFromDomain(dom))) if (!(vm = lxcDomObjFromDomain(dom)))
goto cleanup; goto cleanup;
@ -2872,20 +2872,16 @@ lxcDomainInterfaceStats(virDomainPtr dom,
goto endjob; goto endjob;
} }
/* Check the path is one of the domain's network interfaces. */ if (!(net = virDomainNetFindByName(vm->def, path))) {
for (i = 0; i < vm->def->nnets; i++) {
if (vm->def->nets[i]->ifname &&
STREQ(vm->def->nets[i]->ifname, path)) {
ret = 0;
break;
}
}
if (ret == 0)
ret = virNetDevTapInterfaceStats(path, stats);
else
virReportError(VIR_ERR_INVALID_ARG, virReportError(VIR_ERR_INVALID_ARG,
_("Invalid path, '%s' is not a known interface"), path); _("Invalid path, '%s' is not a known interface"), path);
goto endjob;
}
if (virNetDevTapInterfaceStats(path, stats) < 0)
goto endjob;
ret = 0;
endjob: endjob:
virLXCDomainObjEndJob(driver, vm); virLXCDomainObjEndJob(driver, vm);

View File

@ -1985,7 +1985,7 @@ openvzDomainInterfaceStats(virDomainPtr dom,
{ {
struct openvz_driver *driver = dom->conn->privateData; struct openvz_driver *driver = dom->conn->privateData;
virDomainObjPtr vm; virDomainObjPtr vm;
size_t i; virDomainNetDefPtr net = NULL;
int ret = -1; int ret = -1;
openvzDriverLock(driver); openvzDriverLock(driver);
@ -2006,20 +2006,16 @@ openvzDomainInterfaceStats(virDomainPtr dom,
goto cleanup; goto cleanup;
} }
/* Check the path is one of the domain's network interfaces. */ if (!(net = virDomainNetFindByName(vm->def, path))) {
for (i = 0; i < vm->def->nnets; i++) {
if (vm->def->nets[i]->ifname &&
STREQ(vm->def->nets[i]->ifname, path)) {
ret = 0;
break;
}
}
if (ret == 0)
ret = virNetDevTapInterfaceStats(path, stats);
else
virReportError(VIR_ERR_INVALID_ARG, virReportError(VIR_ERR_INVALID_ARG,
_("invalid path, '%s' is not a known interface"), path); _("invalid path, '%s' is not a known interface"), path);
goto cleanup;
}
if (virNetDevTapInterfaceStats(path, stats) < 0)
goto cleanup;
ret = 0;
cleanup: cleanup:
if (vm) if (vm)

View File

@ -11016,7 +11016,6 @@ qemuDomainInterfaceStats(virDomainPtr dom,
{ {
virDomainObjPtr vm; virDomainObjPtr vm;
virDomainNetDefPtr net = NULL; virDomainNetDefPtr net = NULL;
size_t i;
int ret = -1; int ret = -1;
if (!(vm = qemuDomObjFromDomain(dom))) if (!(vm = qemuDomObjFromDomain(dom)))
@ -11031,15 +11030,7 @@ qemuDomainInterfaceStats(virDomainPtr dom,
goto cleanup; goto cleanup;
} }
/* Check the path is one of the domain's network interfaces. */ if (!(net = virDomainNetFindByName(vm->def, path))) {
for (i = 0; i < vm->def->nnets; i++) {
if (STREQ_NULLABLE(vm->def->nets[i]->ifname, path)) {
net = vm->def->nets[i];
break;
}
}
if (!net) {
virReportError(VIR_ERR_INVALID_ARG, virReportError(VIR_ERR_INVALID_ARG,
_("invalid path, '%s' is not a known interface"), path); _("invalid path, '%s' is not a known interface"), path);
goto cleanup; goto cleanup;

View File

@ -593,25 +593,16 @@ testDomainGenerateIfname(virDomainDefPtr domdef)
{ {
int maxif = 1024; int maxif = 1024;
int ifctr; int ifctr;
size_t i;
for (ifctr = 0; ifctr < maxif; ++ifctr) { for (ifctr = 0; ifctr < maxif; ++ifctr) {
virDomainNetDefPtr net = NULL;
char *ifname; char *ifname;
int found = 0;
if (virAsprintf(&ifname, "testnet%d", ifctr) < 0) if (virAsprintf(&ifname, "testnet%d", ifctr) < 0)
return NULL; return NULL;
/* Generate network interface names */ /* Generate network interface names */
for (i = 0; i < domdef->nnets; i++) { if (!(net = virDomainNetFindByName(domdef, ifname)))
if (domdef->nets[i]->ifname &&
STREQ(domdef->nets[i]->ifname, ifname)) {
found = 1;
break;
}
}
if (!found)
return ifname; return ifname;
VIR_FREE(ifname); VIR_FREE(ifname);
} }
@ -3176,8 +3167,9 @@ static int testDomainInterfaceStats(virDomainPtr domain,
virDomainObjPtr privdom; virDomainObjPtr privdom;
struct timeval tv; struct timeval tv;
unsigned long long statbase; unsigned long long statbase;
size_t i; virDomainNetDefPtr net = NULL;
int found = 0, ret = -1; int ret = -1;
if (!(privdom = testDomObjFromDomain(domain))) if (!(privdom = testDomObjFromDomain(domain)))
return -1; return -1;
@ -3188,15 +3180,7 @@ static int testDomainInterfaceStats(virDomainPtr domain,
goto error; goto error;
} }
for (i = 0; i < privdom->def->nnets; i++) { if (!(net = virDomainNetFindByName(privdom->def, path))) {
if (privdom->def->nets[i]->ifname &&
STREQ(privdom->def->nets[i]->ifname, path)) {
found = 1;
break;
}
}
if (!found) {
virReportError(VIR_ERR_INVALID_ARG, virReportError(VIR_ERR_INVALID_ARG,
_("invalid path, '%s' is not a known interface"), path); _("invalid path, '%s' is not a known interface"), path);
goto error; goto error;