unsigned int taint;
+ /* fwRemoval contains all commands needed to remove the firewall
+ * that was added for this network.
+ */
+ virFirewall *fwRemoval;
+
/* Immutable pointer, self locking APIs */
virMacMap *macmap;
}
+virFirewall *
+virNetworkObjGetFwRemoval(virNetworkObj *obj)
+{
+ return obj->fwRemoval;
+}
+
+
+void
+virNetworkObjSetFwRemoval(virNetworkObj *obj,
+ virFirewall *fwRemoval)
+{
+ obj->fwRemoval = fwRemoval;
+ /* give it a name so it's identifiable in the XML */
+ if (fwRemoval)
+ virFirewallSetName(fwRemoval, "fwRemoval");
+}
+
+
void
virNetworkObjSetMacMap(virNetworkObj *obj,
virMacMap **macmap)
virNetworkDefFree(obj->newDef);
virBitmapFree(obj->classIdMap);
virObjectUnref(obj->macmap);
+ virFirewallFree(obj->fwRemoval);
}
if (virNetworkDefFormatBuf(&buf, obj->def, xmlopt, flags) < 0)
return NULL;
+ if (obj->fwRemoval && virFirewallFormat(&buf, obj->fwRemoval) < 0)
+ return NULL;
+
virBufferAdjustIndent(&buf, -2);
virBufferAddLit(&buf, "</networkstatus>");
g_autofree char *configFile = NULL;
g_autoptr(virNetworkDef) def = NULL;
virNetworkObj *obj = NULL;
+ g_autoptr(virFirewall) fwRemoval = NULL;
g_autoptr(xmlDoc) xml = NULL;
xmlNodePtr node = NULL;
g_autoptr(xmlXPathContext) ctxt = NULL;
g_autofree char *classIdStr = NULL;
g_autofree char *floor_sum = NULL;
g_autofree xmlNodePtr *nodes = NULL;
+ xmlNodePtr fwNode;
ctxt->node = node;
if ((classIdStr = virXPathString("string(./class_id[1]/@bitmap)",
taint |= (1 << flag);
}
}
+ if ((fwNode = virXPathNode("./firewall", ctxt))) {
+ g_autoptr(virFirewall) fwTmp = NULL;
+
+ if (virFirewallParseXML(&fwTmp, fwNode, ctxt) < 0)
+ return NULL;
+
+ if (STREQ_NULLABLE(virFirewallGetName(fwTmp), "fwRemoval"))
+ fwRemoval = g_steal_pointer(&fwTmp);
+ }
}
/* create the object */
def = NULL;
+ virNetworkObjSetFwRemoval(obj, g_steal_pointer(&fwRemoval));
+
/* assign status data stored in the network object */
if (classIdMap) {
virBitmapFree(obj->classIdMap);
#include "network_conf.h"
#include "virnetworkportdef.h"
+#include "virfirewall.h"
typedef struct _virNetworkObj virNetworkObj;
virNetworkObjSetFloorSum(virNetworkObj *obj,
unsigned long long floor_sum);
+virFirewall *
+virNetworkObjGetFwRemoval(virNetworkObj *obj);
+
+void
+virNetworkObjSetFwRemoval(virNetworkObj *obj,
+ virFirewall *fwRemoval);
+
void
virNetworkObjSetMacMap(virNetworkObj *obj,
virMacMap **macmap);
virNetworkObjGetDef;
virNetworkObjGetDnsmasqPid;
virNetworkObjGetFloorSum;
+virNetworkObjGetFwRemoval;
virNetworkObjGetMacMap;
virNetworkObjGetMetadata;
virNetworkObjGetNewDef;
virNetworkObjSetDefTransient;
virNetworkObjSetDnsmasqPid;
virNetworkObjSetFloorSum;
+virNetworkObjSetFwRemoval;
virNetworkObjSetMacMap;
virNetworkObjSetMetadata;
virNetworkObjTaint;