[libvirt] [PATCH 09/28] conf: new function virDomainNetDefClear

Laine Stump laine at laine.org
Wed Jun 22 17:37:08 UTC 2016


We need to clear these out without freeing the object completely.
---
 src/conf/domain_conf.c   | 14 +++++++++++++-
 src/conf/domain_conf.h   |  1 +
 src/libvirt_private.syms |  1 +
 3 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index c5b4815..899b6af 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -1737,7 +1737,8 @@ virDomainActualNetDefFree(virDomainActualNetDefPtr def)
     VIR_FREE(def);
 }
 
-void virDomainNetDefFree(virDomainNetDefPtr def)
+void
+virDomainNetDefClear(virDomainNetDefPtr def)
 {
     size_t i;
 
@@ -1753,6 +1754,7 @@ void virDomainNetDefFree(virDomainNetDefPtr def)
 
     case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
         virDomainChrSourceDefFree(def->data.vhostuser);
+        def->data.vhostuser = NULL;
         break;
 
     case VIR_DOMAIN_NET_TYPE_SERVER:
@@ -1767,6 +1769,7 @@ void virDomainNetDefFree(virDomainNetDefPtr def)
         VIR_FREE(def->data.network.name);
         VIR_FREE(def->data.network.portgroup);
         virDomainActualNetDefFree(def->data.network.actual);
+        def->data.network.actual = NULL;
         break;
 
     case VIR_DOMAIN_NET_TYPE_BRIDGE:
@@ -1811,10 +1814,19 @@ void virDomainNetDefFree(virDomainNetDefPtr def)
 
     VIR_FREE(def->filter);
     virNWFilterHashTableFree(def->filterparams);
+    def->filterparams = NULL;
 
     virNetDevBandwidthFree(def->bandwidth);
+    def->bandwidth = NULL;
     virNetDevVlanClear(&def->vlan);
+}
 
+void
+virDomainNetDefFree(virDomainNetDefPtr def)
+{
+    if (!def)
+        return;
+    virDomainNetDefClear(def);
     VIR_FREE(def);
 }
 
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 8529a78..b9dc174 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -2492,6 +2492,7 @@ virDomainControllerDefPtr
 virDomainControllerDefNew(virDomainControllerType type);
 void virDomainFSDefFree(virDomainFSDefPtr def);
 void virDomainActualNetDefFree(virDomainActualNetDefPtr def);
+void virDomainNetDefClear(virDomainNetDefPtr def);
 void virDomainNetDefFree(virDomainNetDefPtr def);
 void virDomainSmartcardDefFree(virDomainSmartcardDefPtr def);
 void virDomainChrDefFree(virDomainChrDefPtr def);
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 36e3901..807ffce 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -372,6 +372,7 @@ virDomainMemoryFindInactiveByDef;
 virDomainMemoryInsert;
 virDomainMemoryRemove;
 virDomainNetAppendIPAddress;
+virDomainNetDefClear;
 virDomainNetDefFormat;
 virDomainNetDefFree;
 virDomainNetFind;
-- 
2.5.5




More information about the libvir-list mailing list