Re: [libvirt] [PATCH 6/6] conf: Move *AddressParseXML() to device_conf

2018-09-03 Thread Ján Tomko

On Fri, Aug 31, 2018 at 04:00:47PM +0200, Andrea Bolognani wrote:

The corresponding structs are declared there.

Signed-off-by: Andrea Bolognani 
---
src/conf/device_conf.c   | 267 ++
src/conf/device_conf.h   |  17 +++
src/conf/domain_conf.c   | 270 ---
src/libvirt_private.syms |   6 +
4 files changed, 290 insertions(+), 270 deletions(-)



Reviewed-by: Ján Tomko 

Jano


signature.asc
Description: Digital signature
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

[libvirt] [PATCH 6/6] conf: Move *AddressParseXML() to device_conf

2018-08-31 Thread Andrea Bolognani
The corresponding structs are declared there.

Signed-off-by: Andrea Bolognani 
---
 src/conf/device_conf.c   | 267 ++
 src/conf/device_conf.h   |  17 +++
 src/conf/domain_conf.c   | 270 ---
 src/libvirt_private.syms |   6 +
 4 files changed, 290 insertions(+), 270 deletions(-)

diff --git a/src/conf/device_conf.c b/src/conf/device_conf.c
index 48788540d3..18592bbc1d 100644
--- a/src/conf/device_conf.c
+++ b/src/conf/device_conf.c
@@ -343,6 +343,273 @@ 
virDomainDeviceCCWAddressIsValid(virDomainDeviceCCWAddressPtr addr)
addr->devno <= VIR_DOMAIN_DEVICE_CCW_MAX_DEVNO;
 }
 
+int
+virDomainDeviceCCWAddressParseXML(xmlNodePtr node,
+  virDomainDeviceCCWAddressPtr addr)
+{
+int   ret = -1;
+char *cssid;
+char *ssid;
+char *devno;
+
+memset(addr, 0, sizeof(*addr));
+
+cssid = virXMLPropString(node, "cssid");
+ssid = virXMLPropString(node, "ssid");
+devno = virXMLPropString(node, "devno");
+
+if (cssid && ssid && devno) {
+if (cssid &&
+virStrToLong_uip(cssid, NULL, 0, >cssid) < 0) {
+virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+   _("Cannot parse  'cssid' attribute"));
+goto cleanup;
+}
+if (ssid &&
+virStrToLong_uip(ssid, NULL, 0, >ssid) < 0) {
+virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+   _("Cannot parse  'ssid' attribute"));
+goto cleanup;
+}
+if (devno &&
+virStrToLong_uip(devno, NULL, 0, >devno) < 0) {
+virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+   _("Cannot parse  'devno' attribute"));
+goto cleanup;
+}
+if (!virDomainDeviceCCWAddressIsValid(addr)) {
+virReportError(VIR_ERR_INTERNAL_ERROR,
+   _("Invalid specification for virtio ccw"
+ " address: cssid='%s' ssid='%s' devno='%s'"),
+   cssid, ssid, devno);
+goto cleanup;
+}
+addr->assigned = true;
+} else if (cssid || ssid || devno) {
+virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+   _("Invalid partial specification for virtio ccw"
+ " address"));
+goto cleanup;
+}
+
+ret = 0;
+
+ cleanup:
+VIR_FREE(cssid);
+VIR_FREE(ssid);
+VIR_FREE(devno);
+return ret;
+}
+
+int
+virDomainDeviceDriveAddressParseXML(xmlNodePtr node,
+virDomainDeviceDriveAddressPtr addr)
+{
+char *bus, *unit, *controller, *target;
+int ret = -1;
+
+memset(addr, 0, sizeof(*addr));
+
+controller = virXMLPropString(node, "controller");
+bus = virXMLPropString(node, "bus");
+target = virXMLPropString(node, "target");
+unit = virXMLPropString(node, "unit");
+
+if (controller &&
+virStrToLong_uip(controller, NULL, 10, >controller) < 0) {
+virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+   _("Cannot parse  'controller' attribute"));
+goto cleanup;
+}
+
+if (bus &&
+virStrToLong_uip(bus, NULL, 10, >bus) < 0) {
+virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+   _("Cannot parse  'bus' attribute"));
+goto cleanup;
+}
+
+if (target &&
+virStrToLong_uip(target, NULL, 10, >target) < 0) {
+virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+   _("Cannot parse  'target' attribute"));
+goto cleanup;
+}
+
+if (unit &&
+virStrToLong_uip(unit, NULL, 10, >unit) < 0) {
+virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+   _("Cannot parse  'unit' attribute"));
+goto cleanup;
+}
+
+ret = 0;
+
+ cleanup:
+VIR_FREE(controller);
+VIR_FREE(bus);
+VIR_FREE(target);
+VIR_FREE(unit);
+return ret;
+}
+
+int
+virDomainDeviceVirtioSerialAddressParseXML(xmlNodePtr node,
+   
virDomainDeviceVirtioSerialAddressPtr addr)
+{
+char *controller, *bus, *port;
+int ret = -1;
+
+memset(addr, 0, sizeof(*addr));
+
+controller = virXMLPropString(node, "controller");
+bus = virXMLPropString(node, "bus");
+port = virXMLPropString(node, "port");
+
+if (controller &&
+virStrToLong_uip(controller, NULL, 10, >controller) < 0) {
+virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+   _("Cannot parse  'controller' attribute"));
+goto cleanup;
+}
+
+if (bus &&
+virStrToLong_uip(bus, NULL, 10, >bus) < 0) {
+virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+   _("Cannot parse  'bus' attribute"));
+goto cleanup;
+}
+
+if (port &&
+virStrToLong_uip(port, NULL, 10, >port) < 0) {
+