]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
domain-conf: add network def private data
authorMarc-André Lureau <marcandre.lureau@redhat.com>
Thu, 8 Aug 2019 14:55:01 +0000 (18:55 +0400)
committerMichal Privoznik <mprivozn@redhat.com>
Fri, 6 Sep 2019 10:47:47 +0000 (12:47 +0200)
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/bhyve/bhyve_parse_command.c
src/conf/domain_conf.c
src/conf/domain_conf.h
src/libvirt_private.syms
src/libxl/xen_common.c
src/lxc/lxc_native.c
src/vbox/vbox_common.c

index 490381688ca0e9645965221103355852603fc8ff..7d460e9824f0939ac7fe63f55c82ef84658380c3 100644 (file)
@@ -501,7 +501,7 @@ bhyveParsePCINet(virDomainDefPtr def,
     const char *separator = NULL;
     const char *mac = NULL;
 
-    if (VIR_ALLOC(net) < 0)
+    if (!(net = virDomainNetDefNew(xmlopt)))
         goto cleanup;
 
     /* As we only support interface type='bridge' and cannot
index 210deeee7e2f51d20d2abf0ff414e50555e97d97..e051d4b67a81ec38a580281d61f6aa2d5921aac4 100644 (file)
@@ -2455,6 +2455,7 @@ virDomainNetDefFree(virDomainNetDefPtr def)
     if (!def)
         return;
     virDomainNetDefClear(def);
+    virObjectUnref(def->privateData);
     VIR_FREE(def);
 }
 
@@ -11449,7 +11450,7 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt,
     VIR_AUTOFREE(char *) trustGuestRxFilters = NULL;
     VIR_AUTOFREE(char *) vhost_path = NULL;
 
-    if (VIR_ALLOC(def) < 0)
+    if (!(def = virDomainNetDefNew(xmlopt)))
         return NULL;
 
     ctxt->node = node;
@@ -14345,6 +14346,24 @@ virDomainGraphicsDefNew(virDomainXMLOptionPtr xmlopt)
 }
 
 
+virDomainNetDefPtr
+virDomainNetDefNew(virDomainXMLOptionPtr xmlopt)
+{
+    virDomainNetDefPtr def = NULL;
+
+    if (VIR_ALLOC(def) < 0)
+        return NULL;
+
+    if (xmlopt && xmlopt->privateData.networkNew &&
+        !(def->privateData = xmlopt->privateData.networkNew())) {
+        virDomainNetDefFree(def);
+        def = NULL;
+    }
+
+    return def;
+}
+
+
 /* Parse the XML definition for a graphics device */
 static virDomainGraphicsDefPtr
 virDomainGraphicsDefParseXML(virDomainXMLOptionPtr xmlopt,
index 33cef5b75c89d454f0e4ed25016fb08f8b607362..c00d2b4953ee5a09bb2a8e73a0262fe0258e38a9 100644 (file)
@@ -1018,6 +1018,7 @@ struct _virDomainNetDef {
     unsigned int mtu;
     virNetDevCoalescePtr coalesce;
     virDomainVirtioOptionsPtr virtio;
+    virObjectPtr privateData;
 };
 
 typedef enum {
@@ -2713,6 +2714,7 @@ struct _virDomainXMLPrivateDataCallbacks {
     virDomainXMLPrivateDataNewFunc    chrSourceNew;
     virDomainXMLPrivateDataNewFunc    vsockNew;
     virDomainXMLPrivateDataNewFunc    graphicsNew;
+    virDomainXMLPrivateDataNewFunc    networkNew;
     virDomainXMLPrivateDataFormatFunc format;
     virDomainXMLPrivateDataParseFunc  parse;
     /* following function shall return a pointer which will be used as the
@@ -2897,6 +2899,10 @@ virDomainChrDefPtr virDomainChrDefNew(virDomainXMLOptionPtr xmlopt);
 
 virDomainGraphicsDefPtr
 virDomainGraphicsDefNew(virDomainXMLOptionPtr xmlopt);
+
+virDomainNetDefPtr
+virDomainNetDefNew(virDomainXMLOptionPtr xmlopt);
+
 virDomainDefPtr virDomainDefNew(void);
 
 void virDomainObjAssignDef(virDomainObjPtr domain,
index a34d92f5ef91ac750aaba88e61206f0e57dda233..f1fe7259f9987c8625fd9112ca48f998cb94b3de 100644 (file)
@@ -478,6 +478,7 @@ virDomainNetDefActualToNetworkPort;
 virDomainNetDefClear;
 virDomainNetDefFormat;
 virDomainNetDefFree;
+virDomainNetDefNew;
 virDomainNetDefToNetworkPort;
 virDomainNetFind;
 virDomainNetFindByName;
index 7eb52c8c84bba028e0adbe2fa1b5c12d60adc547..d327f03d730ffe3d16d9293d2f95278bb4b1190f 100644 (file)
@@ -1234,7 +1234,7 @@ xenParseVif(char *entry, const char *vif_typename)
         key = nextkey;
     }
 
-    if (VIR_ALLOC(net) < 0)
+    if (!(net = virDomainNetDefNew(NULL)))
         goto cleanup;
 
     if (mac[0]) {
index b4c6e790d843eb936be7a05bda63acb3b5f22c4d..018eec69771a50e6dae736565efbcb3bc384c69c 100644 (file)
@@ -359,7 +359,7 @@ lxcCreateNetDef(const char *type,
     virDomainNetDefPtr net = NULL;
     virMacAddr macAddr;
 
-    if (VIR_ALLOC(net) < 0)
+    if (!(net = virDomainNetDefNew(NULL)))
         goto error;
 
     if (STREQ_NULLABLE(flag, "up"))
index 49e657cdb70df1ae3dc5e8b39939f9649a0e434f..ddabcb80ca531ffded0f0aaa235b64e2b6b98ed1 100644 (file)
@@ -3692,7 +3692,7 @@ vboxDumpNetwork(vboxDriverPtr data, INetworkAdapter *adapter)
     char *utf8 = NULL;
     virDomainNetDefPtr net = NULL;
 
-    if (VIR_ALLOC(net) < 0)
+    if (!(net = virDomainNetDefNew(data->xmlopt)))
         return NULL;
 
     gVBoxAPI.UINetworkAdapter.GetAttachmentType(adapter, &attachmentType);