]> xenbits.xensource.com Git - libvirt.git/commitdiff
conf: Use virDomainChrSourceDefPtr for _virDomainSmartcardDef 'passthru'
authorJohn Ferlan <jferlan@redhat.com>
Fri, 21 Oct 2016 22:08:02 +0000 (18:08 -0400)
committerJohn Ferlan <jferlan@redhat.com>
Mon, 24 Oct 2016 10:44:23 +0000 (06:44 -0400)
Use a pointer and the virDomainChrSourceDefNew() function in order to
allocate the structure for _virDomainSmartcardDef.

Signed-off-by: John Ferlan <jferlan@redhat.com>
src/conf/domain_audit.c
src/conf/domain_conf.c
src/conf/domain_conf.h
src/qemu/qemu_command.c
src/security/security_selinux.c

index 314dee7bad9488f4d162bb653895cb372928529d..2decf023834f536d55b998602f80bf21f1ed29d2 100644 (file)
@@ -218,7 +218,7 @@ virDomainAuditSmartcard(virDomainObjPtr vm,
 
         case VIR_DOMAIN_SMARTCARD_TYPE_PASSTHROUGH:
             virDomainAuditGenericDev(vm, "smartcard", NULL,
-                                     virDomainAuditChardevPath(&def->data.passthru),
+                                     virDomainAuditChardevPath(def->data.passthru),
                                      reason, success);
             break;
 
index 748ffd56a0d1037aa36a9ed0d311098ea91aa99a..7e2cc0c5a9888e139cca1a3839519b31258771b3 100644 (file)
@@ -2146,7 +2146,7 @@ void virDomainSmartcardDefFree(virDomainSmartcardDefPtr def)
         break;
 
     case VIR_DOMAIN_SMARTCARD_TYPE_PASSTHROUGH:
-        virDomainChrSourceDefClear(&def->data.passthru);
+        virDomainChrSourceDefFree(def->data.passthru);
         break;
 
     default:
@@ -10489,7 +10489,8 @@ virDomainChrDefParseXML(virDomainXMLOptionPtr xmlopt,
 }
 
 static virDomainSmartcardDefPtr
-virDomainSmartcardDefParseXML(xmlNodePtr node,
+virDomainSmartcardDefParseXML(virDomainXMLOptionPtr xmlopt,
+                              xmlNodePtr node,
                               unsigned int flags)
 {
     xmlNodePtr cur;
@@ -10569,7 +10570,11 @@ virDomainSmartcardDefParseXML(xmlNodePtr node,
                              "device type attribute"));
             goto error;
         }
-        if ((def->data.passthru.type = virDomainChrTypeFromString(type)) < 0) {
+
+        if (!(def->data.passthru = virDomainChrSourceDefNew(xmlopt)))
+            goto error;
+
+        if ((def->data.passthru->type = virDomainChrTypeFromString(type)) < 0) {
             virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
                            _("unknown type presented to host for "
                              "character device: %s"), type);
@@ -10577,12 +10582,12 @@ virDomainSmartcardDefParseXML(xmlNodePtr node,
         }
 
         cur = node->children;
-        if (virDomainChrSourceDefParseXML(&def->data.passthru, cur, flags,
+        if (virDomainChrSourceDefParseXML(def->data.passthru, cur, flags,
                                           NULL, NULL, NULL, 0) < 0)
             goto error;
 
-        if (def->data.passthru.type == VIR_DOMAIN_CHR_TYPE_SPICEVMC) {
-            def->data.passthru.data.spicevmc
+        if (def->data.passthru->type == VIR_DOMAIN_CHR_TYPE_SPICEVMC) {
+            def->data.passthru->data.spicevmc
                 = VIR_DOMAIN_CHR_SPICEVMC_SMARTCARD;
         }
 
@@ -13595,7 +13600,8 @@ virDomainDeviceDefParse(const char *xmlStr,
             goto error;
         break;
     case VIR_DOMAIN_DEVICE_SMARTCARD:
-        if (!(dev->data.smartcard = virDomainSmartcardDefParseXML(node, flags)))
+        if (!(dev->data.smartcard = virDomainSmartcardDefParseXML(xmlopt, node,
+                                                                  flags)))
             goto error;
         break;
     case VIR_DOMAIN_DEVICE_MEMBALLOON:
@@ -17189,7 +17195,8 @@ virDomainDefParseXML(xmlDocPtr xml,
         goto error;
 
     for (i = 0; i < n; i++) {
-        virDomainSmartcardDefPtr card = virDomainSmartcardDefParseXML(nodes[i],
+        virDomainSmartcardDefPtr card = virDomainSmartcardDefParseXML(xmlopt,
+                                                                      nodes[i],
                                                                       flags);
         if (!card)
             goto error;
@@ -21661,7 +21668,7 @@ virDomainSmartcardDefFormat(virBufferPtr buf,
         break;
 
     case VIR_DOMAIN_SMARTCARD_TYPE_PASSTHROUGH:
-        if (virDomainChrSourceDefFormat(buf, NULL, &def->data.passthru, false,
+        if (virDomainChrSourceDefFormat(buf, NULL, def->data.passthru, false,
                                         flags) < 0)
             return -1;
         break;
index 10cde0e970bbc64f2d73e1438651f0e81f0e426e..1b5620dbfb9829d23fa8c5fde8bda3223db36022 100644 (file)
@@ -1159,7 +1159,7 @@ struct _virDomainSmartcardDef {
             char *file[VIR_DOMAIN_SMARTCARD_NUM_CERTIFICATES];
             char *database;
         } cert; /* 'host-certificates' */
-        virDomainChrSourceDef passthru; /* 'passthrough' */
+        virDomainChrSourceDefPtr passthru; /* 'passthrough' */
     } data;
 
     virDomainDeviceInfo info;
index be3796dc40a7d2f358eac80062f38f0be64d23bf..760c6850c130165782c13097029ec7fdba1ffc99 100644 (file)
@@ -8346,7 +8346,7 @@ qemuBuildSmartcardCommandLine(virLogManagerPtr logManager,
         }
 
         if (!(devstr = qemuBuildChrChardevStr(logManager, cmd, cfg, def,
-                                              &smartcard->data.passthru,
+                                              smartcard->data.passthru,
                                               smartcard->info.alias,
                                               qemuCaps, true))) {
             virBufferFreeAndReset(&opt);
index a98e0c08ad47a8595b49fad1aa67187506a29625..5dad22c7558e24b825e8fcd997c6bc7bb9af2778 100644 (file)
@@ -1957,7 +1957,7 @@ virSecuritySELinuxRestoreSecuritySmartcardCallback(virDomainDefPtr def,
         return virSecuritySELinuxRestoreFileLabel(mgr, database);
 
     case VIR_DOMAIN_SMARTCARD_TYPE_PASSTHROUGH:
-        return virSecuritySELinuxRestoreChardevLabel(mgr, def, NULL, &dev->data.passthru);
+        return virSecuritySELinuxRestoreChardevLabel(mgr, def, NULL, dev->data.passthru);
 
     default:
         virReportError(VIR_ERR_INTERNAL_ERROR,
@@ -2348,7 +2348,7 @@ virSecuritySELinuxSetSecuritySmartcardCallback(virDomainDefPtr def,
 
     case VIR_DOMAIN_SMARTCARD_TYPE_PASSTHROUGH:
         return virSecuritySELinuxSetChardevLabel(mgr, def, NULL,
-                                                 &dev->data.passthru);
+                                                 dev->data.passthru);
 
     default:
         virReportError(VIR_ERR_INTERNAL_ERROR,