static bool virNWFilterDefEqual(const virNWFilterDef *def1, virNWFilterDefPtr def2, bool cmpUUIDs) { bool ret = false; unsigned char rem_uuid[VIR_UUID_BUFLEN]; char *xml1, *xml2 = NULL; if (!cmpUUIDs) { /* make sure the UUIDs are equal */ memcpy(rem_uuid, def2->uuid, sizeof(rem_uuid)); memcpy(def2->uuid, def1->uuid, sizeof(def2->uuid)); } if (!(xml1 = virNWFilterDefFormat(def1)) || !(xml2 = virNWFilterDefFormat(def2))) goto cleanup; ret = STREQ(xml1, xml2); cleanup: if (!cmpUUIDs) memcpy(def2->uuid, rem_uuid, sizeof(rem_uuid)); VIR_FREE(xml1); VIR_FREE(xml2); return ret; }
static char * nwfilterGetXMLDesc(virNWFilterPtr obj, int flags) { virNWFilterDriverStatePtr driver = obj->conn->nwfilterPrivateData; virNWFilterObjPtr nwfilter; char *ret = NULL; virCheckFlags(0, NULL); nwfilterDriverLock(driver); nwfilter = virNWFilterObjFindByUUID(&driver->nwfilters, obj->uuid); nwfilterDriverUnlock(driver); if (!nwfilter) { virNWFilterReportError(VIR_ERR_NO_NWFILTER, "%s", _("no nwfilter with matching uuid")); goto cleanup; } ret = virNWFilterDefFormat(nwfilter->def); cleanup: if (nwfilter) virNWFilterObjUnlock(nwfilter); return ret; }
static int testCompareXMLToXMLFiles(const char *inxml, const char *outxml, bool expect_error) { char *actual = NULL; int ret = -1; virNWFilterDefPtr dev = NULL; virResetLastError(); if (!(dev = virNWFilterDefParseFile(inxml))) { if (expect_error) { virResetLastError(); goto done; } goto fail; } if (!(actual = virNWFilterDefFormat(dev))) goto fail; if (virtTestCompareToFile(actual, outxml) < 0) goto fail; done: ret = 0; fail: VIR_FREE(actual); virNWFilterDefFree(dev); return ret; }
static int testCompareXMLToXMLFiles(const char *inxml, const char *outxml, bool expect_warning) { char inXmlData[MAX_FILE]; char *inXmlPtr = &(inXmlData[0]); char outXmlData[MAX_FILE]; char *outXmlPtr = &(outXmlData[0]); char *actual = NULL; int ret = -1; virNWFilterDefPtr dev = NULL; char *log; if (virtTestLoadFile(inxml, &inXmlPtr, MAX_FILE) < 0) goto fail; if (virtTestLoadFile(outxml, &outXmlPtr, MAX_FILE) < 0) goto fail; if (!(dev = virNWFilterDefParseString(NULL, inXmlData))) goto fail; if ((log = virtTestLogContentAndReset()) == NULL) goto fail; if ((*log != '\0') != expect_warning) { free(log); goto fail; } free(log); if (expect_warning) { /* need to suppress the errors */ virResetLastError(); } if (!(actual = virNWFilterDefFormat(dev))) goto fail; if (STRNEQ(outXmlData, actual)) { virtTestDifference(stderr, outXmlData, actual); goto fail; } ret = 0; fail: free(actual); virNWFilterDefFree(dev); return ret; }
static int testCompareXMLToXMLFiles(const char *inxml, const char *outxml, bool expect_error) { char *inXmlData = NULL; char *outXmlData = NULL; char *actual = NULL; int ret = -1; virNWFilterDefPtr dev = NULL; if (virtTestLoadFile(inxml, &inXmlData) < 0) goto fail; if (virtTestLoadFile(outxml, &outXmlData) < 0) goto fail; virResetLastError(); if (!(dev = virNWFilterDefParseString(NULL, inXmlData))) goto fail; if (!!virGetLastError() != expect_error) goto fail; if (expect_error) { /* need to suppress the errors */ virResetLastError(); } if (!(actual = virNWFilterDefFormat(dev))) goto fail; if (STRNEQ(outXmlData, actual)) { virtTestDifference(stderr, outXmlData, actual); goto fail; } ret = 0; fail: VIR_FREE(inXmlData); VIR_FREE(outXmlData); VIR_FREE(actual); virNWFilterDefFree(dev); return ret; }