static int testStoragePoolObjSetDefaults(virConnectPtr conn, virStoragePoolObjPtr pool);
+static char *
+testDomainGenerateIfname(virConnectPtr conn,
+ virDomainDefPtr domdef) {
+ int maxif = 1024;
+ int ifctr, i;
+
+ for (ifctr = 0; ifctr < maxif; ++ifctr) {
+ char *ifname;
+ int found = 0;
+
+ if (virAsprintf(&ifname, "testnet%d", ifctr) < 0) {
+ virReportOOMError(conn);
+ return NULL;
+ }
+
+ /* Generate network interface names */
+ for (i = 0 ; i < domdef->nnets ; i++) {
+ if (domdef->nets[i]->ifname &&
+ STREQ (domdef->nets[i]->ifname, ifname)) {
+ found = 1;
+ break;
+ }
+ }
+
+ if (!found)
+ return ifname;
+ }
+
+ testError(conn, VIR_ERR_INTERNAL_ERROR,
+ _("Exceeded max iface limit %d"), maxif);
+ return NULL;
+}
+
+static virDomainObjPtr
+testDomainAssignDef(virConnectPtr conn,
+ virDomainObjList *domlist,
+ virDomainDefPtr domdef)
+{
+ virDomainObjPtr domobj = NULL;
+ int i = 0;
+
+ for (i = 0; i < domdef->nnets; i++) {
+ char *ifname;
+ if (domdef->nets[i]->ifname)
+ continue;
+
+ ifname = testDomainGenerateIfname(conn, domdef);
+ if (!ifname)
+ goto error;
+
+ domdef->nets[i]->ifname = ifname;
+ }
+
+ if (!(domobj = virDomainAssignDef(conn, domlist, domdef)))
+ goto error;
+
+error:
+ return domobj;
+}
+
static int testOpenDefault(virConnectPtr conn) {
int u;
struct timeval tv;
defaultDomainXML,
VIR_DOMAIN_XML_INACTIVE)))
goto error;
- if (!(domobj = virDomainAssignDef(conn, &privconn->domains, domdef))) {
+ if (!(domobj = testDomainAssignDef(conn, &privconn->domains, domdef))) {
virDomainDefFree(domdef);
goto error;
}
goto error;
}
- if (!(dom = virDomainAssignDef(conn, &privconn->domains, def))) {
+ if (!(dom = testDomainAssignDef(conn, &privconn->domains, def))) {
virDomainDefFree(def);
goto error;
}
VIR_DOMAIN_XML_INACTIVE)) == NULL)
goto cleanup;
- if ((dom = virDomainAssignDef(conn, &privconn->domains,
- def)) == NULL) {
+ if ((dom = testDomainAssignDef(conn, &privconn->domains,
+ def)) == NULL) {
virDomainDefFree(def);
goto cleanup;
}
if (!def)
goto cleanup;
- if ((dom = virDomainAssignDef(conn, &privconn->domains,
- def)) == NULL)
+ if ((dom = testDomainAssignDef(conn, &privconn->domains,
+ def)) == NULL)
goto cleanup;
dom->state = VIR_DOMAIN_RUNNING;
VIR_DOMAIN_XML_INACTIVE)) == NULL)
goto cleanup;
- if ((dom = virDomainAssignDef(conn, &privconn->domains,
- def)) == NULL) {
+ if ((dom = testDomainAssignDef(conn, &privconn->domains,
+ def)) == NULL) {
goto cleanup;
}
def = NULL;