}
-#define VENDOR_LEN 8
-#define PRODUCT_LEN 16
-
static virDomainDiskDefPtr
virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt,
xmlNodePtr node,
if (!(vendor = virXMLNodeContentString(cur)))
return NULL;
- if (strlen(vendor) > VENDOR_LEN) {
- virReportError(VIR_ERR_XML_ERROR, "%s",
- _("disk vendor is more than 8 characters"));
- return NULL;
- }
-
if (!virStringIsPrintable(vendor)) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("disk vendor is not printable string"));
if (!(product = virXMLNodeContentString(cur)))
return NULL;
- if (strlen(product) > PRODUCT_LEN) {
- virReportError(VIR_ERR_XML_ERROR, "%s",
- _("disk product is more than 16 characters"));
- return NULL;
- }
-
if (!virStringIsPrintable(product)) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("disk product is not printable string"));
_("unknown disk tray status '%s'"), tray);
return NULL;
}
-
- if (def->device != VIR_DOMAIN_DISK_DEVICE_FLOPPY &&
- def->device != VIR_DOMAIN_DISK_DEVICE_CDROM) {
- virReportError(VIR_ERR_XML_ERROR, "%s",
- _("tray is only valid for cdrom and floppy"));
- return NULL;
- }
}
if (removable) {
}
+#define VENDOR_LEN 8
+#define PRODUCT_LEN 16
+
int
virDomainDiskDefValidate(const virDomainDef *def,
const virDomainDiskDef *disk)
return -1;
}
+ if (disk->tray_status &&
+ disk->device != VIR_DOMAIN_DISK_DEVICE_FLOPPY &&
+ disk->device != VIR_DOMAIN_DISK_DEVICE_CDROM) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("tray is only valid for cdrom and floppy"));
+ return -1;
+ }
+
+ if (disk->vendor && strlen(disk->vendor) > VENDOR_LEN) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("disk vendor is more than %d characters"),
+ VENDOR_LEN);
+ return -1;
+ }
+
+ if (disk->product && strlen(disk->product) > PRODUCT_LEN) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("disk product is more than %d characters"),
+ PRODUCT_LEN);
+ return -1;
+ }
+
return 0;
}