]> xenbits.xensource.com Git - libvirt.git/commitdiff
Add internal XML parsing/formatting flag
authorMark McLoughlin <markmc@redhat.com>
Fri, 17 Jul 2009 21:08:33 +0000 (22:08 +0100)
committerMark McLoughlin <markmc@redhat.com>
Wed, 22 Jul 2009 10:34:05 +0000 (11:34 +0100)
We need to store things like device names and PCI slot numbers in the
qemu domain state file so that we don't lose that information on
libvirtd restart. Add a flag to indicate that this information should
be parsed or formatted.

Make bit 16 and above of the flags bitmask for internal use only and
consume the first bit for this new status flag.

* include/libvirt/libvirt.h: add VIR_DOMAIN_XML_FLAGS_MASK

* src/libvirt.c: reject private flags in virDomainGetXMLDesc()

* src/domain_conf.h: add VIR_DOMAIN_XML_INTERNAL_STATUS

* src/domain_conf.c: pass the flag from virDomainObjParseXML() and
  virDomainSaveStatus

src/domain_conf.c
src/domain_conf.h
src/libvirt.c
src/libvirt_internal.h

index f3e4c6c39c9eecc56e2bf1c260b73f51688f3ca7..10e6ac6183d156b8613e3212cce0fb027c45ab0c 100644 (file)
@@ -2896,7 +2896,8 @@ static virDomainObjPtr virDomainObjParseXML(virConnectPtr conn,
 
     oldnode = ctxt->node;
     ctxt->node = config;
-    obj->def = virDomainDefParseXML(conn, caps, ctxt, 0);
+    obj->def = virDomainDefParseXML(conn, caps, ctxt,
+                                    VIR_DOMAIN_XML_INTERNAL_STATUS);
     ctxt->node = oldnode;
     if (!obj->def)
         goto error;
@@ -4277,12 +4278,11 @@ int virDomainSaveStatus(virConnectPtr conn,
                         const char *statusDir,
                         virDomainObjPtr obj)
 {
+    int flags = VIR_DOMAIN_XML_SECURE|VIR_DOMAIN_XML_INTERNAL_STATUS;
     int ret = -1;
     char *xml;
 
-    if (!(xml = virDomainObjFormat(conn,
-                                   obj,
-                                   VIR_DOMAIN_XML_SECURE)))
+    if (!(xml = virDomainObjFormat(conn, obj, flags)))
         goto cleanup;
 
     if (virDomainSaveXML(conn, statusDir, obj->def, xml))
index 6e111fa24ece1d10af9b498ed49403293171fe71..69b665f49fe93823423f0a2083ea3b3e8eecb6be 100644 (file)
 #include "util.h"
 #include "threads.h"
 
+/* Private component of virDomainXMLFlags */
+typedef enum {
+   VIR_DOMAIN_XML_INTERNAL_STATUS = (1<<16), /* dump internal domain status information */
+} virDomainXMLInternalFlags;
+
 /* Different types of hypervisor */
 /* NB: Keep in sync with virDomainVirtTypeToString impl */
 enum virDomainVirtType {
index 8ee7741a5f91e258355c727bbb0f6f39cb4ff10a..7463c06f5c10a2d7341e4fd1d59ff8c19c729df1 100644 (file)
@@ -2726,6 +2726,8 @@ virDomainGetXMLDesc(virDomainPtr domain, int flags)
         goto error;
     }
 
+    flags &= VIR_DOMAIN_XML_FLAGS_MASK;
+
     if (conn->driver->domainDumpXML) {
         char *ret;
         ret = conn->driver->domainDumpXML (domain, flags);
index 8800eb904d5b6111870355835ae867c51f93d385..6976f34657a304745eb9560ab47268fc2c722ba8 100644 (file)
@@ -24,6 +24,8 @@
 
 #include "internal.h"
 
+/* bits 16 and above of virDomainXMLFlags are for internal use */
+#define VIR_DOMAIN_XML_FLAGS_MASK 0xffff
 
 #ifdef WITH_LIBVIRTD
 int virStateInitialize(int privileged);