--- src/conf/domain_conf.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++ src/conf/domain_conf.h | 2 + src/libvirt_private.syms | 1 + 3 files changed, 73 insertions(+), 0 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 0190a81..f0ed479 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -11832,6 +11832,76 @@ virDomainDefFormat(virDomainDefPtr def, unsigned int flags) return virBufferContentAndReset(&buf); } +char * +virDomainDeviceDefFormat(virDomainDeviceDefPtr dev, unsigned int flags) +{ + virBuffer buf = VIR_BUFFER_INITIALIZER; + + virCheckFlags(DUMPXML_FLAGS, NULL); + + switch(dev->type) { + case VIR_DOMAIN_DEVICE_DISK: + if (virDomainDiskDefFormat(&buf, dev->data.disk, flags) < 0) + goto cleanup; + break; + case VIR_DOMAIN_DEVICE_LEASE: + if (virDomainLeaseDefFormat(&buf, dev->data.lease) < 0) + goto cleanup; + break; + case VIR_DOMAIN_DEVICE_FS: + if (virDomainFSDefFormat(&buf, dev->data.fs, flags) < 0) + goto cleanup; + break; + case VIR_DOMAIN_DEVICE_NET: + if (virDomainNetDefFormat(&buf, dev->data.net, flags) < 0) + goto cleanup; + break; + case VIR_DOMAIN_DEVICE_INPUT: + if (virDomainInputDefFormat(&buf, dev->data.input, flags) < 0) + goto cleanup; + break; + case VIR_DOMAIN_DEVICE_SOUND: + if (virDomainSoundDefFormat(&buf, dev->data.sound, flags) < 0) + goto cleanup; + break; + case VIR_DOMAIN_DEVICE_VIDEO: + if (virDomainVideoDefFormat(&buf, dev->data.video, flags) < 0) + goto cleanup; + break; + case VIR_DOMAIN_DEVICE_HOSTDEV: + if (virDomainHostdevDefFormat(&buf, dev->data.hostdev, flags) < 0) + goto cleanup; + break; + case VIR_DOMAIN_DEVICE_WATCHDOG: + if (virDomainWatchdogDefFormat(&buf, dev->data.watchdog, flags) < 0) + goto cleanup; + break; + case VIR_DOMAIN_DEVICE_CONTROLLER: + if (virDomainControllerDefFormat(&buf, dev->data.controller, flags) < 0) + goto cleanup; + break; + case VIR_DOMAIN_DEVICE_GRAPHICS: + if (virDomainGraphicsDefFormat(&buf, dev->data.graphics, flags) < 0) + goto cleanup; + break; + case VIR_DOMAIN_DEVICE_HUB: + if (virDomainHubDefFormat(&buf, dev->data.hub, flags) < 0) + goto cleanup; + break; + case VIR_DOMAIN_DEVICE_REDIRDEV: + if (virDomainRedirdevDefFormat(&buf, dev->data.redirdev, flags) < 0) + goto cleanup; + break; + default: + /* Shouldn't hit here. */ + break; + } + return virBufferContentAndReset(&buf); + +cleanup: + virBufferFreeAndReset(&buf); + return NULL; +} static char *virDomainObjFormat(virCapsPtr caps, virDomainObjPtr obj, diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 03aa5b6..9d726b2 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1780,6 +1780,8 @@ int virDomainDefFormatInternal(virDomainDefPtr def, unsigned int flags, virBufferPtr buf); +char *virDomainDeviceDefFormat(virDomainDeviceDefPtr def, + unsigned int flags); int virDomainCpuSetParse(const char *str, char sep, char *cpuset, diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index ac2c52e..5dd4006 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -282,6 +282,7 @@ virDomainDeviceAddressIsValid; virDomainDeviceAddressPciMultiTypeFromString; virDomainDeviceAddressPciMultiTypeToString; virDomainDeviceAddressTypeToString; +virDomainDeviceDefFormat; virDomainDeviceDefFree; virDomainDeviceDefParse; virDomainDeviceInfoIterate; -- 1.7.7.3 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list