mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-03 11:35:19 +00:00
conf: Move validation of virDomainGraphicsListenDef out of parser
In an effort to separate the validation steps from the Parse stage, a few validation checks of virDomainGraphicsListenDef have been moved from virDomainGraphicsListenDefParseXML() in domain_conf.c to virDomainGraphicsDefListensValidate() in domain_validate.c Signed-off-by: K Shiva <shiva_kr@riseup.net> Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
d0ee8f37eb
commit
62f29b9f98
@ -10986,7 +10986,6 @@ virDomainGraphicsAuthDefParseXML(xmlNodePtr node,
|
||||
/**
|
||||
* virDomainGraphicsListenDefParseXML:
|
||||
* @def: listen def pointer to be filled
|
||||
* @graphics: graphics def pointer
|
||||
* @node: xml node of <listen/> element
|
||||
* @parent: xml node of <graphics/> element
|
||||
* @flags: bit-wise or of VIR_DOMAIN_DEF_PARSE_*
|
||||
@ -10998,13 +10997,11 @@ virDomainGraphicsAuthDefParseXML(xmlNodePtr node,
|
||||
*/
|
||||
static int
|
||||
virDomainGraphicsListenDefParseXML(virDomainGraphicsListenDef *def,
|
||||
virDomainGraphicsDef *graphics,
|
||||
xmlNodePtr node,
|
||||
xmlNodePtr parent,
|
||||
unsigned int flags)
|
||||
{
|
||||
int ret = -1;
|
||||
const char *graphicsType = virDomainGraphicsTypeToString(graphics->type);
|
||||
g_autofree char *address = virXMLPropString(node, "address");
|
||||
g_autofree char *network = virXMLPropString(node, "network");
|
||||
g_autofree char *socketPath = virXMLPropString(node, "socket");
|
||||
@ -11021,31 +11018,6 @@ virDomainGraphicsListenDefParseXML(virDomainGraphicsListenDef *def,
|
||||
VIR_XML_PROP_REQUIRED, &def->type) < 0)
|
||||
goto error;
|
||||
|
||||
switch (def->type) {
|
||||
case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_SOCKET:
|
||||
if (graphics->type != VIR_DOMAIN_GRAPHICS_TYPE_VNC &&
|
||||
graphics->type != VIR_DOMAIN_GRAPHICS_TYPE_SPICE) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("listen type 'socket' is not available for graphics type '%1$s'"),
|
||||
graphicsType);
|
||||
goto error;
|
||||
}
|
||||
break;
|
||||
case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NONE:
|
||||
if (graphics->type != VIR_DOMAIN_GRAPHICS_TYPE_SPICE &&
|
||||
graphics->type != VIR_DOMAIN_GRAPHICS_TYPE_VNC) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("listen type 'none' is not available for graphics type '%1$s'"),
|
||||
graphicsType);
|
||||
goto error;
|
||||
}
|
||||
break;
|
||||
case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS:
|
||||
case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NETWORK:
|
||||
case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST:
|
||||
break;
|
||||
}
|
||||
|
||||
if (def->type == VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS) {
|
||||
if (address && addressCompat && STRNEQ(address, addressCompat)) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
@ -11148,7 +11120,7 @@ virDomainGraphicsListensParseXML(virDomainGraphicsDef *def,
|
||||
def->listens = g_new0(virDomainGraphicsListenDef, nListens);
|
||||
|
||||
for (i = 0; i < nListens; i++) {
|
||||
if (virDomainGraphicsListenDefParseXML(&def->listens[i], def,
|
||||
if (virDomainGraphicsListenDefParseXML(&def->listens[i],
|
||||
listenNodes[i],
|
||||
i == 0 ? node : NULL,
|
||||
flags) < 0)
|
||||
|
@ -2631,15 +2631,39 @@ static int
|
||||
virDomainGraphicsDefListensValidate(const virDomainGraphicsDef *def)
|
||||
{
|
||||
size_t i;
|
||||
const char *graphicsType = virDomainGraphicsTypeToString(def->type);
|
||||
|
||||
for (i = 0; i < def->nListens; i++) {
|
||||
if (def->listens[i].type == VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NETWORK &&
|
||||
!def->listens[i].network) {
|
||||
switch (def->listens[i].type) {
|
||||
case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NETWORK:
|
||||
if (!def->listens[i].network) {
|
||||
virReportError(VIR_ERR_XML_ERROR, "%s",
|
||||
_("'network' attribute is required for "
|
||||
"listen type 'network'"));
|
||||
_("'network' attribute is required for listen type 'network'"));
|
||||
return -1;
|
||||
}
|
||||
break;
|
||||
case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_SOCKET:
|
||||
if (def->type != VIR_DOMAIN_GRAPHICS_TYPE_VNC &&
|
||||
def->type != VIR_DOMAIN_GRAPHICS_TYPE_SPICE) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("listen type 'socket' is not available for graphics type '%1$s'"),
|
||||
graphicsType);
|
||||
return -1;
|
||||
}
|
||||
break;
|
||||
case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NONE:
|
||||
if (def->type != VIR_DOMAIN_GRAPHICS_TYPE_SPICE &&
|
||||
def->type != VIR_DOMAIN_GRAPHICS_TYPE_VNC) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("listen type 'none' is not available for graphics type '%1$s'"),
|
||||
graphicsType);
|
||||
return -1;
|
||||
}
|
||||
break;
|
||||
case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS:
|
||||
case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user