/** * dnsmasqContextNew: * * Create a new Dnsmasq context * * Returns a pointer to the new structure or NULL in case of error */ dnsmasqContext * dnsmasqContextNew(const char *network_name, const char *config_dir) { dnsmasqContext *ctx; if (VIR_ALLOC(ctx) < 0) { virReportOOMError(); return NULL; } if (!(ctx->config_dir = strdup(config_dir))) { virReportOOMError(); goto error; } if (!(ctx->hostsfile = hostsfileNew(network_name, config_dir))) goto error; if (!(ctx->addnhostsfile = addnhostsNew(network_name, config_dir))) goto error; return ctx; error: dnsmasqContextFree(ctx); return NULL; }
static int testCompareXMLToArgvFiles(const char *inxml, const char *outargv, dnsmasqCapsPtr caps) { char *inXmlData = NULL; char *outArgvData = NULL; char *actual = NULL; int ret = -1; virNetworkDefPtr dev = NULL; virNetworkObjPtr obj = NULL; virCommandPtr cmd = NULL; char *pidfile = NULL; dnsmasqContext *dctx = NULL; if (virtTestLoadFile(inxml, &inXmlData) < 0) goto fail; if (virtTestLoadFile(outargv, &outArgvData) < 0) goto fail; if (replaceTokens(&outArgvData, "@DNSMASQ@", DNSMASQ)) goto fail; if (!(dev = virNetworkDefParseString(inXmlData))) goto fail; if (VIR_ALLOC(obj) < 0) goto fail; obj->def = dev; dctx = dnsmasqContextNew(dev->name, "/var/lib/libvirt/dnsmasq"); if (dctx == NULL) goto fail; if (networkBuildDhcpDaemonCommandLine(obj, &cmd, pidfile, dctx, caps) < 0) goto fail; if (!(actual = virCommandToString(cmd))) goto fail; if (STRNEQ(outArgvData, actual)) { virtTestDifference(stderr, outArgvData, actual); goto fail; } ret = 0; fail: VIR_FREE(inXmlData); VIR_FREE(outArgvData); VIR_FREE(actual); VIR_FREE(pidfile); virCommandFree(cmd); virNetworkObjFree(obj); dnsmasqContextFree(dctx); return ret; }
static int testCompareXMLToConfFiles(const char *inxml, const char *outconf, dnsmasqCapsPtr caps) { char *inXmlData = NULL; char *outConfData = NULL; char *actual = NULL; int ret = -1; virNetworkDefPtr dev = NULL; virNetworkObjPtr obj = NULL; virCommandPtr cmd = NULL; char *pidfile = NULL; dnsmasqContext *dctx = NULL; if (virtTestLoadFile(inxml, &inXmlData) < 0) goto fail; if (virtTestLoadFile(outconf, &outConfData) < 0) goto fail; if (!(dev = virNetworkDefParseString(inXmlData))) goto fail; if (VIR_ALLOC(obj) < 0) goto fail; obj->def = dev; dctx = dnsmasqContextNew(dev->name, "/var/lib/libvirt/dnsmasq"); if (dctx == NULL) goto fail; if (networkDnsmasqConfContents(obj, pidfile, &actual, dctx, caps) < 0) goto fail; if (STRNEQ(outConfData, actual)) { virtTestDifference(stderr, outConfData, actual); goto fail; } ret = 0; fail: VIR_FREE(inXmlData); VIR_FREE(outConfData); VIR_FREE(actual); VIR_FREE(pidfile); virCommandFree(cmd); virNetworkObjFree(obj); dnsmasqContextFree(dctx); return ret; }
static int testCompareXMLToConfFiles(const char *inxml, const char *outconf, dnsmasqCapsPtr caps) { char *actual = NULL; int ret = -1; virNetworkDefPtr dev = NULL; virNetworkObjPtr obj = NULL; virCommandPtr cmd = NULL; char *pidfile = NULL; dnsmasqContext *dctx = NULL; if (!(dev = virNetworkDefParseFile(inxml))) goto fail; if (!(obj = virNetworkObjNew())) goto fail; obj->def = dev; dctx = dnsmasqContextNew(dev->name, "/var/lib/libvirt/dnsmasq"); if (dctx == NULL) goto fail; if (networkDnsmasqConfContents(obj, pidfile, &actual, dctx, caps) < 0) goto fail; if (virTestCompareToFile(actual, outconf) < 0) goto fail; ret = 0; fail: VIR_FREE(actual); VIR_FREE(pidfile); virCommandFree(cmd); virObjectUnref(obj); dnsmasqContextFree(dctx); return ret; }
/** * dnsmasqContextNew: * * Create a new Dnsmasq context * * Returns a pointer to the new structure or NULL in case of error */ dnsmasqContext * dnsmasqContextNew(const char *network_name, const char *config_dir) { dnsmasqContext *ctx; if (VIR_ALLOC(ctx) < 0) return NULL; if (VIR_STRDUP(ctx->config_dir, config_dir) < 0) goto error; if (!(ctx->hostsfile = hostsfileNew(network_name, config_dir))) goto error; if (!(ctx->addnhostsfile = addnhostsNew(network_name, config_dir))) goto error; return ctx; error: dnsmasqContextFree(ctx); return NULL; }