]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
conf: move chardev protocol parsing to separate function
authorPavel Hrdina <phrdina@redhat.com>
Fri, 18 Aug 2017 13:37:08 +0000 (15:37 +0200)
committerPavel Hrdina <phrdina@redhat.com>
Tue, 22 Aug 2017 15:43:51 +0000 (17:43 +0200)
In order to ensure that the default protocol is RAW, explicitly
assigning VIR_DOMAIN_CHR_TCP_PROTOCOL_RAW = 0.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
src/conf/domain_conf.c
src/conf/domain_conf.h

index 36c8c77f7edad95c8dc9a497add45d6dbc28230a..39a5b07dad4f4d31c40b833661377402a44e9464 100644 (file)
@@ -10893,6 +10893,30 @@ virDomainChrDefParseTargetXML(virDomainChrDefPtr def,
     return ret;
 }
 
+
+static int
+virDomainChrSourceDefParseProtocol(virDomainChrSourceDefPtr def,
+                                   xmlNodePtr protocol)
+{
+    char *prot = NULL;
+
+    if (def->type != VIR_DOMAIN_CHR_TYPE_TCP)
+        return 0;
+
+    if ((prot = virXMLPropString(protocol, "type")) &&
+        (def->data.tcp.protocol =
+         virDomainChrTcpProtocolTypeFromString(prot)) < 0) {
+        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                       _("Unknown protocol '%s'"), prot);
+        VIR_FREE(prot);
+        return -1;
+    }
+
+    VIR_FREE(prot);
+    return 0;
+}
+
+
 #define SERIAL_CHANNEL_NAME_CHARS \
     "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-."
 
@@ -10918,7 +10942,6 @@ virDomainChrSourceDefParseXML(virDomainChrSourceDefPtr def,
     char *logfile = NULL;
     char *logappend = NULL;
     char *mode = NULL;
-    char *protocol = NULL;
     char *channel = NULL;
     char *master = NULL;
     char *slave = NULL;
@@ -11048,7 +11071,8 @@ virDomainChrSourceDefParseXML(virDomainChrSourceDefPtr def,
                 goto error;
             }
             protocolParsed = true;
-            protocol = virXMLPropString(cur, "type");
+            if (virDomainChrSourceDefParseProtocol(def, cur) < 0)
+                goto error;
         }
     }
 
@@ -11159,16 +11183,6 @@ virDomainChrSourceDefParseXML(virDomainChrSourceDefPtr def,
             }
             def->data.tcp.tlsFromConfig = !!tmp;
         }
-
-        if (!protocol)
-            def->data.tcp.protocol = VIR_DOMAIN_CHR_TCP_PROTOCOL_RAW;
-        else if ((def->data.tcp.protocol =
-                  virDomainChrTcpProtocolTypeFromString(protocol)) < 0) {
-            virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                           _("Unknown protocol '%s'"), protocol);
-            goto error;
-        }
-
         break;
 
     case VIR_DOMAIN_CHR_TYPE_UDP:
@@ -11235,7 +11249,6 @@ virDomainChrSourceDefParseXML(virDomainChrSourceDefPtr def,
     ret = 0;
  cleanup:
     VIR_FREE(mode);
-    VIR_FREE(protocol);
     VIR_FREE(bindHost);
     VIR_FREE(bindService);
     VIR_FREE(connectHost);
index 1f1dc1de0112fd3c4aae3bc7e0a8f6bd5bdf8e38..8c438cabcaf03b4129e7f574273a4f3cf01d9c7d 100644 (file)
@@ -1121,7 +1121,7 @@ typedef enum {
 } virDomainChrType;
 
 typedef enum {
-    VIR_DOMAIN_CHR_TCP_PROTOCOL_RAW,
+    VIR_DOMAIN_CHR_TCP_PROTOCOL_RAW = 0,
     VIR_DOMAIN_CHR_TCP_PROTOCOL_TELNET,
     VIR_DOMAIN_CHR_TCP_PROTOCOL_TELNETS, /* secure telnet */
     VIR_DOMAIN_CHR_TCP_PROTOCOL_TLS,