mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-21 19:02:25 +00:00
domain_conf.c: move idmapEntry checks to domain_validate.c
Create a new function called virDomainDefIdMapValidate() and use it to move these checks out of virDomainIdmapDefParseXML() and virDomainDefParseXML(). Reviewed-by: Michal Privoznik <mprivozn@redhat.com> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
This commit is contained in:
parent
5f91f4c4e3
commit
9b674f3136
@ -6949,6 +6949,9 @@ virDomainDefValidateInternal(const virDomainDef *def,
|
||||
if (virDomainDefTunablesValidate(def) < 0)
|
||||
return -1;
|
||||
|
||||
if (virDomainDefIdMapValidate(def) < 0)
|
||||
return -1;
|
||||
|
||||
if (virDomainNumaDefValidate(def->numa) < 0)
|
||||
return -1;
|
||||
|
||||
@ -18468,15 +18471,6 @@ virDomainIdmapDefParseXML(xmlXPathContextPtr ctxt,
|
||||
|
||||
qsort(idmap, num, sizeof(idmap[0]), virDomainIdMapEntrySort);
|
||||
|
||||
if (idmap[0].start != 0) {
|
||||
/* Root user of container hasn't been mapped to any user of host,
|
||||
* return error. */
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||
_("You must map the root user of container"));
|
||||
VIR_FREE(idmap);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return idmap;
|
||||
}
|
||||
|
||||
@ -21966,13 +21960,6 @@ virDomainDefParseXML(xmlDocPtr xml,
|
||||
}
|
||||
VIR_FREE(nodes);
|
||||
|
||||
if ((def->idmap.uidmap && !def->idmap.gidmap) ||
|
||||
(!def->idmap.uidmap && def->idmap.gidmap)) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("uid and gid should be mapped both"));
|
||||
goto error;
|
||||
}
|
||||
|
||||
if ((n = virXPathNodeSet("./sysinfo", ctxt, &nodes)) < 0)
|
||||
goto error;
|
||||
|
||||
|
@ -612,3 +612,26 @@ virDomainControllerDefValidate(const virDomainControllerDef *controller)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
virDomainDefIdMapValidate(const virDomainDef *def)
|
||||
{
|
||||
if ((def->idmap.uidmap && !def->idmap.gidmap) ||
|
||||
(!def->idmap.uidmap && def->idmap.gidmap)) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||
_("uid and gid should be mapped both"));
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ((def->idmap.uidmap && def->idmap.uidmap[0].start != 0) ||
|
||||
(def->idmap.gidmap && def->idmap.gidmap[0].start != 0)) {
|
||||
/* Root user of container hasn't been mapped to any user of host,
|
||||
* return error. */
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||
_("You must map the root user of container"));
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -44,3 +44,4 @@ int virDomainSmartcardDefValidate(const virDomainSmartcardDef *smartcard,
|
||||
const virDomainDef *def);
|
||||
int virDomainDefTunablesValidate(const virDomainDef *def);
|
||||
int virDomainControllerDefValidate(const virDomainControllerDef *controller);
|
||||
int virDomainDefIdMapValidate(const virDomainDef *def);
|
||||
|
Loading…
x
Reference in New Issue
Block a user