diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index fb79884bf3..119768496b 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1988,6 +1988,8 @@ virCommandAllowCap; virCommandClearCaps; virCommandDaemonize; virCommandDoAsyncIO; +virCommandDryRunTokenFree; +virCommandDryRunTokenNew; virCommandExec; virCommandFree; virCommandGetArgList; diff --git a/src/util/vircommand.c b/src/util/vircommand.c index 07e64c92dd..192613ed0a 100644 --- a/src/util/vircommand.c +++ b/src/util/vircommand.c @@ -3087,8 +3087,45 @@ virCommandDoAsyncIO(virCommandPtr cmd) cmd->flags |= VIR_EXEC_ASYNC_IO | VIR_EXEC_NONBLOCK; } + +struct _virCommandDryRunToken { + int dummy; +}; + + +/** + * virCommandDryRunTokenNew: + * + * Returns a token which is used with virCommandSetDryRun. Freeing the token + * with the appropriate automatic cleanup function ensures that the dry run + * environment is reset. + */ +virCommandDryRunToken * +virCommandDryRunTokenNew(void) +{ + return g_new0(virCommandDryRunToken, 1); +} + + +/** + * virCommandDryRunTokenFree: + * + * Helper to free a virCommandDryRunToken. Do not use this function directly, + * always declare virCommandDryRunToken as a g_autoptr. + */ +void +virCommandDryRunTokenFree(virCommandDryRunToken *tok) +{ + dryRunBuffer = NULL; + dryRunCallback = NULL; + dryRunOpaque = NULL; + g_free(tok); +} + + /** * virCommandSetDryRun: + * @tok: a virCommandDryRunToken obtained from virCommandDryRunTokenNew * @buf: buffer to store stringified commands * @callback: callback to process input/output/args * @@ -3120,10 +3157,14 @@ virCommandDoAsyncIO(virCommandPtr cmd) * To cancel this effect pass NULL for @buf and @callback. */ void -virCommandSetDryRun(virBufferPtr buf, +virCommandSetDryRun(virCommandDryRunToken *tok, + virBufferPtr buf, virCommandDryRunCallback cb, void *opaque) { + if (!tok) + abort(); + dryRunBuffer = buf; dryRunCallback = cb; dryRunOpaque = opaque; diff --git a/src/util/vircommandpriv.h b/src/util/vircommandpriv.h index 80f1d1376c..d06a8f5e30 100644 --- a/src/util/vircommandpriv.h +++ b/src/util/vircommandpriv.h @@ -35,6 +35,13 @@ typedef void (*virCommandDryRunCallback)(const char *const*args, int *status, void *opaque); -void virCommandSetDryRun(virBufferPtr buf, +typedef struct _virCommandDryRunToken virCommandDryRunToken; + +virCommandDryRunToken * virCommandDryRunTokenNew(void); +void virCommandDryRunTokenFree(virCommandDryRunToken *token); +G_DEFINE_AUTOPTR_CLEANUP_FUNC(virCommandDryRunToken, virCommandDryRunTokenFree); + +void virCommandSetDryRun(virCommandDryRunToken *tok, + virBufferPtr buf, virCommandDryRunCallback cb, void *opaque); diff --git a/tests/networkxml2firewalltest.c b/tests/networkxml2firewalltest.c index d358f12897..952c076a19 100644 --- a/tests/networkxml2firewalltest.c +++ b/tests/networkxml2firewalltest.c @@ -96,8 +96,9 @@ static int testCompareXMLToArgvFiles(const char *xml, virNetworkDefPtr def = NULL; int ret = -1; char *actual; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); - virCommandSetDryRun(&buf, testCommandDryRun, NULL); + virCommandSetDryRun(dryRunToken, &buf, testCommandDryRun, NULL); if (!(def = virNetworkDefParseFile(xml, NULL))) goto cleanup; @@ -107,7 +108,6 @@ static int testCompareXMLToArgvFiles(const char *xml, actual = actualargv = virBufferContentAndReset(&buf); virTestClearCommandPath(actualargv); - virCommandSetDryRun(NULL, NULL, NULL); /* The first network to be created populates the * libvirt global chains. We must skip args for diff --git a/tests/nodedevmdevctltest.c b/tests/nodedevmdevctltest.c index 050424116f..cb9dbe5431 100644 --- a/tests/nodedevmdevctltest.c +++ b/tests/nodedevmdevctltest.c @@ -75,6 +75,7 @@ testMdevctlStartOrDefine(const char *virt_type, g_autofree char *errmsg = NULL; g_autofree char *stdinbuf = NULL; g_autoptr(virCommand) cmd = NULL; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); if (!(def = virNodeDeviceDefParseFile(mdevxml, create, virt_type))) goto cleanup; @@ -86,7 +87,7 @@ testMdevctlStartOrDefine(const char *virt_type, if (!cmd) goto cleanup; - virCommandSetDryRun(&buf, testCommandDryRunCallback, &stdinbuf); + virCommandSetDryRun(dryRunToken, &buf, testCommandDryRunCallback, &stdinbuf); if (virCommandRun(cmd, NULL) < 0) goto cleanup; @@ -102,7 +103,6 @@ testMdevctlStartOrDefine(const char *virt_type, ret = 0; cleanup: - virCommandSetDryRun(NULL, NULL, NULL); virNodeDeviceObjEndAPI(&obj); return ret; } @@ -152,13 +152,14 @@ testMdevctlUuidCommand(const char *uuid, GetStopUndefineCmdFunc func, const char int ret = -1; g_autoptr(virCommand) cmd = NULL; g_autofree char *errmsg = NULL; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); cmd = func(uuid, &errmsg); if (!cmd) goto cleanup; - virCommandSetDryRun(&buf, NULL, NULL); + virCommandSetDryRun(dryRunToken, &buf, NULL, NULL); if (virCommandRun(cmd, NULL) < 0) goto cleanup; @@ -171,7 +172,6 @@ testMdevctlUuidCommand(const char *uuid, GetStopUndefineCmdFunc func, const char ret = 0; cleanup: - virCommandSetDryRun(NULL, NULL, NULL); return ret; } @@ -214,13 +214,14 @@ testMdevctlListDefined(const void *data G_GNUC_UNUSED) g_autofree char *cmdlinefile = g_strdup_printf("%s/nodedevmdevctldata/mdevctl-list-defined.argv", abs_srcdir); + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); cmd = nodeDeviceGetMdevctlListCommand(true, &output, &errmsg); if (!cmd) goto cleanup; - virCommandSetDryRun(&buf, NULL, NULL); + virCommandSetDryRun(dryRunToken, &buf, NULL, NULL); if (virCommandRun(cmd, NULL) < 0) goto cleanup; @@ -234,7 +235,6 @@ testMdevctlListDefined(const void *data G_GNUC_UNUSED) cleanup: virBufferFreeAndReset(&buf); - virCommandSetDryRun(NULL, NULL, NULL); return ret; } diff --git a/tests/nwfilterebiptablestest.c b/tests/nwfilterebiptablestest.c index f47b4f1dfd..36df17d1c1 100644 --- a/tests/nwfilterebiptablestest.c +++ b/tests/nwfilterebiptablestest.c @@ -103,8 +103,9 @@ testNWFilterEBIPTablesAllTeardown(const void *opaque G_GNUC_UNUSED) "ebtables --concurrent -t nat -X libvirt-O-vnet0\n"; char *actual = NULL; int ret = -1; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); - virCommandSetDryRun(&buf, NULL, NULL); + virCommandSetDryRun(dryRunToken, &buf, NULL, NULL); if (ebiptables_driver.allTeardown("vnet0") < 0) goto cleanup; @@ -119,7 +120,6 @@ testNWFilterEBIPTablesAllTeardown(const void *opaque G_GNUC_UNUSED) ret = 0; cleanup: - virCommandSetDryRun(NULL, NULL, NULL); VIR_FREE(actual); return ret; } @@ -170,8 +170,9 @@ testNWFilterEBIPTablesTearOldRules(const void *opaque G_GNUC_UNUSED) "ebtables --concurrent -t nat -E libvirt-P-vnet0 libvirt-O-vnet0\n"; char *actual = NULL; int ret = -1; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); - virCommandSetDryRun(&buf, NULL, NULL); + virCommandSetDryRun(dryRunToken, &buf, NULL, NULL); if (ebiptables_driver.tearOldRules("vnet0") < 0) goto cleanup; @@ -186,7 +187,6 @@ testNWFilterEBIPTablesTearOldRules(const void *opaque G_GNUC_UNUSED) ret = 0; cleanup: - virCommandSetDryRun(NULL, NULL, NULL); VIR_FREE(actual); return ret; } @@ -215,8 +215,9 @@ testNWFilterEBIPTablesRemoveBasicRules(const void *opaque G_GNUC_UNUSED) "ebtables --concurrent -t nat -X libvirt-P-vnet0\n"; char *actual = NULL; int ret = -1; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); - virCommandSetDryRun(&buf, NULL, NULL); + virCommandSetDryRun(dryRunToken, &buf, NULL, NULL); if (ebiptables_driver.removeBasicRules("vnet0") < 0) goto cleanup; @@ -231,7 +232,6 @@ testNWFilterEBIPTablesRemoveBasicRules(const void *opaque G_GNUC_UNUSED) ret = 0; cleanup: - virCommandSetDryRun(NULL, NULL, NULL); VIR_FREE(actual); return ret; } @@ -245,8 +245,9 @@ testNWFilterEBIPTablesTearNewRules(const void *opaque G_GNUC_UNUSED) VIR_NWFILTER_NEW_RULES_TEARDOWN; char *actual = NULL; int ret = -1; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); - virCommandSetDryRun(&buf, NULL, NULL); + virCommandSetDryRun(dryRunToken, &buf, NULL, NULL); if (ebiptables_driver.tearNewRules("vnet0") < 0) goto cleanup; @@ -261,7 +262,6 @@ testNWFilterEBIPTablesTearNewRules(const void *opaque G_GNUC_UNUSED) ret = 0; cleanup: - virCommandSetDryRun(NULL, NULL, NULL); VIR_FREE(actual); return ret; } @@ -313,8 +313,9 @@ testNWFilterEBIPTablesApplyBasicRules(const void *opaque G_GNUC_UNUSED) char *actual = NULL; int ret = -1; virMacAddr mac = { .addr = { 0x10, 0x20, 0x30, 0x40, 0x50, 0x60 } }; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); - virCommandSetDryRun(&buf, NULL, NULL); + virCommandSetDryRun(dryRunToken, &buf, NULL, NULL); if (ebiptables_driver.applyBasicRules("vnet0", &mac) < 0) goto cleanup; @@ -329,7 +330,6 @@ testNWFilterEBIPTablesApplyBasicRules(const void *opaque G_GNUC_UNUSED) ret = 0; cleanup: - virCommandSetDryRun(NULL, NULL, NULL); VIR_FREE(actual); return ret; } @@ -399,8 +399,9 @@ testNWFilterEBIPTablesApplyDHCPOnlyRules(const void *opaque G_GNUC_UNUSED) } } }; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); - virCommandSetDryRun(&buf, NULL, NULL); + virCommandSetDryRun(dryRunToken, &buf, NULL, NULL); if (ebiptables_driver.applyDHCPOnlyRules("vnet0", &mac, &val, false) < 0) goto cleanup; @@ -415,7 +416,6 @@ testNWFilterEBIPTablesApplyDHCPOnlyRules(const void *opaque G_GNUC_UNUSED) ret = 0; cleanup: - virCommandSetDryRun(NULL, NULL, NULL); VIR_FREE(actual); return ret; } @@ -468,8 +468,9 @@ testNWFilterEBIPTablesApplyDropAllRules(const void *opaque G_GNUC_UNUSED) "ebtables --concurrent -t nat -E libvirt-P-vnet0 libvirt-O-vnet0\n"; char *actual = NULL; int ret = -1; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); - virCommandSetDryRun(&buf, NULL, NULL); + virCommandSetDryRun(dryRunToken, &buf, NULL, NULL); if (ebiptables_driver.applyDropAllRules("vnet0") < 0) goto cleanup; @@ -484,7 +485,6 @@ testNWFilterEBIPTablesApplyDropAllRules(const void *opaque G_GNUC_UNUSED) ret = 0; cleanup: - virCommandSetDryRun(NULL, NULL, NULL); VIR_FREE(actual); return ret; } diff --git a/tests/nwfilterxml2firewalltest.c b/tests/nwfilterxml2firewalltest.c index 3e2ab0b0ba..38f2ab7040 100644 --- a/tests/nwfilterxml2firewalltest.c +++ b/tests/nwfilterxml2firewalltest.c @@ -371,10 +371,11 @@ static int testCompareXMLToArgvFiles(const char *xml, GHashTable *vars = virHashNew(virNWFilterVarValueHashFree); virNWFilterInst inst; int ret = -1; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); memset(&inst, 0, sizeof(inst)); - virCommandSetDryRun(&buf, NULL, NULL); + virCommandSetDryRun(dryRunToken, &buf, NULL, NULL); if (!vars) goto cleanup; @@ -392,7 +393,6 @@ static int testCompareXMLToArgvFiles(const char *xml, actualargv = virBufferContentAndReset(&buf); virTestClearCommandPath(actualargv); - virCommandSetDryRun(NULL, NULL, NULL); testRemoveCommonRules(actualargv); diff --git a/tests/sysinfotest.c b/tests/sysinfotest.c index e40a4564a7..5d028d2fd3 100644 --- a/tests/sysinfotest.c +++ b/tests/sysinfotest.c @@ -96,17 +96,17 @@ testSysinfo(const void *data) g_autofree char *sysinfo = NULL; g_autofree char *cpuinfo = NULL; g_autofree char *expected = NULL; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); sysinfo = g_strdup_printf("%s/sysinfodata/%ssysinfo.data", abs_srcdir, testdata->name); cpuinfo = g_strdup_printf("%s/sysinfodata/%scpuinfo.data", abs_srcdir, testdata->name); expected = g_strdup_printf("%s/sysinfodata/%ssysinfo.expect", abs_srcdir, testdata->name); - virCommandSetDryRun(NULL, testDMIDecodeDryRun, sysinfo); + virCommandSetDryRun(dryRunToken, NULL, testDMIDecodeDryRun, sysinfo); virSysinfoSetup(sysinfo, cpuinfo); ret = testdata->func(); - virCommandSetDryRun(NULL, NULL, NULL); if (!ret) return -1; diff --git a/tests/virfirewalltest.c b/tests/virfirewalltest.c index 8bd73311fd..5515da4b4d 100644 --- a/tests/virfirewalltest.c +++ b/tests/virfirewalltest.c @@ -189,6 +189,7 @@ testFirewallSingleGroup(const void *opaque) IPTABLES_PATH " -w -A INPUT --source 192.168.122.1 --jump ACCEPT\n" IPTABLES_PATH " -w -A INPUT --source '!192.168.122.1' --jump REJECT\n"; const struct testFirewallData *data = opaque; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); fwDisabled = data->fwDisabled; if (virFirewallSetBackend(data->tryBackend) < 0) @@ -196,7 +197,7 @@ testFirewallSingleGroup(const void *opaque) if (data->expectBackend == VIR_FIREWALL_BACKEND_DIRECT || data->expectBackend == VIR_FIREWALL_BACKEND_FIREWALLD) - virCommandSetDryRun(&cmdbuf, NULL, NULL); + virCommandSetDryRun(dryRunToken, &cmdbuf, NULL, NULL); else fwBuf = &cmdbuf; @@ -226,7 +227,6 @@ testFirewallSingleGroup(const void *opaque) ret = 0; cleanup: fwBuf = NULL; - virCommandSetDryRun(NULL, NULL, NULL); return ret; } @@ -243,6 +243,7 @@ testFirewallRemoveRule(const void *opaque) IPTABLES_PATH " -w -A INPUT --source '!192.168.122.1' --jump REJECT\n"; const struct testFirewallData *data = opaque; virFirewallRulePtr fwrule; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); fwDisabled = data->fwDisabled; if (virFirewallSetBackend(data->tryBackend) < 0) @@ -250,7 +251,7 @@ testFirewallRemoveRule(const void *opaque) if (data->expectBackend == VIR_FIREWALL_BACKEND_DIRECT || data->expectBackend == VIR_FIREWALL_BACKEND_FIREWALLD) - virCommandSetDryRun(&cmdbuf, NULL, NULL); + virCommandSetDryRun(dryRunToken, &cmdbuf, NULL, NULL); else fwBuf = &cmdbuf; @@ -286,7 +287,6 @@ testFirewallRemoveRule(const void *opaque) ret = 0; cleanup: fwBuf = NULL; - virCommandSetDryRun(NULL, NULL, NULL); return ret; } @@ -304,6 +304,7 @@ testFirewallManyGroups(const void *opaque G_GNUC_UNUSED) IPTABLES_PATH " -w -A OUTPUT --source 192.168.122.1 --jump ACCEPT\n" IPTABLES_PATH " -w -A OUTPUT --jump DROP\n"; const struct testFirewallData *data = opaque; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); fwDisabled = data->fwDisabled; if (virFirewallSetBackend(data->tryBackend) < 0) @@ -311,7 +312,7 @@ testFirewallManyGroups(const void *opaque G_GNUC_UNUSED) if (data->expectBackend == VIR_FIREWALL_BACKEND_DIRECT || data->expectBackend == VIR_FIREWALL_BACKEND_FIREWALLD) - virCommandSetDryRun(&cmdbuf, NULL, NULL); + virCommandSetDryRun(dryRunToken, &cmdbuf, NULL, NULL); else fwBuf = &cmdbuf; @@ -353,7 +354,6 @@ testFirewallManyGroups(const void *opaque G_GNUC_UNUSED) ret = 0; cleanup: fwBuf = NULL; - virCommandSetDryRun(NULL, NULL, NULL); return ret; } @@ -392,6 +392,7 @@ testFirewallIgnoreFailGroup(const void *opaque G_GNUC_UNUSED) IPTABLES_PATH " -w -A OUTPUT --source 192.168.122.1 --jump ACCEPT\n" IPTABLES_PATH " -w -A OUTPUT --jump DROP\n"; const struct testFirewallData *data = opaque; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); fwDisabled = data->fwDisabled; if (virFirewallSetBackend(data->tryBackend) < 0) @@ -399,7 +400,7 @@ testFirewallIgnoreFailGroup(const void *opaque G_GNUC_UNUSED) if (data->expectBackend == VIR_FIREWALL_BACKEND_DIRECT || data->expectBackend == VIR_FIREWALL_BACKEND_FIREWALLD) { - virCommandSetDryRun(&cmdbuf, testFirewallRollbackHook, NULL); + virCommandSetDryRun(dryRunToken, &cmdbuf, testFirewallRollbackHook, NULL); } else { fwBuf = &cmdbuf; fwError = true; @@ -443,7 +444,6 @@ testFirewallIgnoreFailGroup(const void *opaque G_GNUC_UNUSED) ret = 0; cleanup: fwBuf = NULL; - virCommandSetDryRun(NULL, NULL, NULL); return ret; } @@ -461,6 +461,7 @@ testFirewallIgnoreFailRule(const void *opaque G_GNUC_UNUSED) IPTABLES_PATH " -w -A OUTPUT --source 192.168.122.1 --jump ACCEPT\n" IPTABLES_PATH " -w -A OUTPUT --jump DROP\n"; const struct testFirewallData *data = opaque; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); fwDisabled = data->fwDisabled; if (virFirewallSetBackend(data->tryBackend) < 0) @@ -468,7 +469,7 @@ testFirewallIgnoreFailRule(const void *opaque G_GNUC_UNUSED) if (data->expectBackend == VIR_FIREWALL_BACKEND_DIRECT || data->expectBackend == VIR_FIREWALL_BACKEND_FIREWALLD) { - virCommandSetDryRun(&cmdbuf, testFirewallRollbackHook, NULL); + virCommandSetDryRun(dryRunToken, &cmdbuf, testFirewallRollbackHook, NULL); } else { fwBuf = &cmdbuf; fwError = true; @@ -511,7 +512,6 @@ testFirewallIgnoreFailRule(const void *opaque G_GNUC_UNUSED) ret = 0; cleanup: fwBuf = NULL; - virCommandSetDryRun(NULL, NULL, NULL); return ret; } @@ -527,6 +527,7 @@ testFirewallNoRollback(const void *opaque G_GNUC_UNUSED) IPTABLES_PATH " -w -A INPUT --source 192.168.122.1 --jump ACCEPT\n" IPTABLES_PATH " -w -A INPUT --source 192.168.122.255 --jump REJECT\n"; const struct testFirewallData *data = opaque; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); fwDisabled = data->fwDisabled; if (virFirewallSetBackend(data->tryBackend) < 0) @@ -534,7 +535,7 @@ testFirewallNoRollback(const void *opaque G_GNUC_UNUSED) if (data->expectBackend == VIR_FIREWALL_BACKEND_DIRECT || data->expectBackend == VIR_FIREWALL_BACKEND_FIREWALLD) { - virCommandSetDryRun(&cmdbuf, testFirewallRollbackHook, NULL); + virCommandSetDryRun(dryRunToken, &cmdbuf, testFirewallRollbackHook, NULL); } else { fwBuf = &cmdbuf; fwError = true; @@ -573,7 +574,6 @@ testFirewallNoRollback(const void *opaque G_GNUC_UNUSED) ret = 0; cleanup: fwBuf = NULL; - virCommandSetDryRun(NULL, NULL, NULL); return ret; } @@ -591,6 +591,7 @@ testFirewallSingleRollback(const void *opaque G_GNUC_UNUSED) IPTABLES_PATH " -w -D INPUT --source 192.168.122.255 --jump REJECT\n" IPTABLES_PATH " -w -D INPUT --source '!192.168.122.1' --jump REJECT\n"; const struct testFirewallData *data = opaque; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); fwDisabled = data->fwDisabled; if (virFirewallSetBackend(data->tryBackend) < 0) @@ -598,7 +599,7 @@ testFirewallSingleRollback(const void *opaque G_GNUC_UNUSED) if (data->expectBackend == VIR_FIREWALL_BACKEND_DIRECT || data->expectBackend == VIR_FIREWALL_BACKEND_FIREWALLD) { - virCommandSetDryRun(&cmdbuf, testFirewallRollbackHook, NULL); + virCommandSetDryRun(dryRunToken, &cmdbuf, testFirewallRollbackHook, NULL); } else { fwError = true; fwBuf = &cmdbuf; @@ -654,7 +655,6 @@ testFirewallSingleRollback(const void *opaque G_GNUC_UNUSED) ret = 0; cleanup: fwBuf = NULL; - virCommandSetDryRun(NULL, NULL, NULL); return ret; } @@ -671,6 +671,7 @@ testFirewallManyRollback(const void *opaque G_GNUC_UNUSED) IPTABLES_PATH " -w -D INPUT --source 192.168.122.255 --jump REJECT\n" IPTABLES_PATH " -w -D INPUT --source '!192.168.122.1' --jump REJECT\n"; const struct testFirewallData *data = opaque; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); fwDisabled = data->fwDisabled; if (virFirewallSetBackend(data->tryBackend) < 0) @@ -678,7 +679,7 @@ testFirewallManyRollback(const void *opaque G_GNUC_UNUSED) if (data->expectBackend == VIR_FIREWALL_BACKEND_DIRECT || data->expectBackend == VIR_FIREWALL_BACKEND_FIREWALLD) { - virCommandSetDryRun(&cmdbuf, testFirewallRollbackHook, NULL); + virCommandSetDryRun(dryRunToken, &cmdbuf, testFirewallRollbackHook, NULL); } else { fwBuf = &cmdbuf; fwError = true; @@ -738,7 +739,6 @@ testFirewallManyRollback(const void *opaque G_GNUC_UNUSED) ret = 0; cleanup: fwBuf = NULL; - virCommandSetDryRun(NULL, NULL, NULL); return ret; } @@ -759,6 +759,7 @@ testFirewallChainedRollback(const void *opaque G_GNUC_UNUSED) IPTABLES_PATH " -w -D INPUT --source 192.168.122.255 --jump REJECT\n" IPTABLES_PATH " -w -D INPUT --source '!192.168.122.1' --jump REJECT\n"; const struct testFirewallData *data = opaque; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); fwDisabled = data->fwDisabled; if (virFirewallSetBackend(data->tryBackend) < 0) @@ -766,7 +767,7 @@ testFirewallChainedRollback(const void *opaque G_GNUC_UNUSED) if (data->expectBackend == VIR_FIREWALL_BACKEND_DIRECT || data->expectBackend == VIR_FIREWALL_BACKEND_FIREWALLD) { - virCommandSetDryRun(&cmdbuf, testFirewallRollbackHook, NULL); + virCommandSetDryRun(dryRunToken, &cmdbuf, testFirewallRollbackHook, NULL); } else { fwBuf = &cmdbuf; fwError = true; @@ -852,7 +853,6 @@ testFirewallChainedRollback(const void *opaque G_GNUC_UNUSED) ret = 0; cleanup: fwBuf = NULL; - virCommandSetDryRun(NULL, NULL, NULL); return ret; } @@ -953,6 +953,7 @@ testFirewallQuery(const void *opaque G_GNUC_UNUSED) IPTABLES_PATH " -w -A INPUT --source 192.168.122.128 --jump REJECT\n" IPTABLES_PATH " -w -A INPUT --source '!192.168.122.1' --jump REJECT\n"; const struct testFirewallData *data = opaque; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); expectedLineNum = 0; expectedLineError = false; @@ -962,7 +963,7 @@ testFirewallQuery(const void *opaque G_GNUC_UNUSED) if (data->expectBackend == VIR_FIREWALL_BACKEND_DIRECT || data->expectBackend == VIR_FIREWALL_BACKEND_FIREWALLD) { - virCommandSetDryRun(&cmdbuf, testFirewallQueryHook, NULL); + virCommandSetDryRun(dryRunToken, &cmdbuf, testFirewallQueryHook, NULL); } else { fwBuf = &cmdbuf; fwError = true; @@ -1030,7 +1031,6 @@ testFirewallQuery(const void *opaque G_GNUC_UNUSED) ret = 0; cleanup: fwBuf = NULL; - virCommandSetDryRun(NULL, NULL, NULL); return ret; } diff --git a/tests/viriscsitest.c b/tests/viriscsitest.c index e86d3970b6..e673b69ed6 100644 --- a/tests/viriscsitest.c +++ b/tests/viriscsitest.c @@ -212,10 +212,11 @@ testISCSIGetSession(const void *data) struct testIscsiadmCbData cbData = { 0 }; char *actual_session = NULL; int ret = -1; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); cbData.output_version = info->output_version; - virCommandSetDryRun(NULL, testIscsiadmCb, &cbData); + virCommandSetDryRun(dryRunToken, NULL, testIscsiadmCb, &cbData); actual_session = virISCSIGetSession(info->device_path, true); @@ -230,7 +231,6 @@ testISCSIGetSession(const void *data) ret = 0; cleanup: - virCommandSetDryRun(NULL, NULL, NULL); VIR_FREE(actual_session); return ret; } @@ -250,8 +250,9 @@ testISCSIScanTargets(const void *data) char **targets = NULL; int ret = -1; size_t i; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); - virCommandSetDryRun(NULL, testIscsiadmCb, NULL); + virCommandSetDryRun(dryRunToken, NULL, testIscsiadmCb, NULL); if (virISCSIScanTargets(info->portal, NULL, false, &ntargets, &targets) < 0) @@ -276,7 +277,6 @@ testISCSIScanTargets(const void *data) ret = 0; cleanup: - virCommandSetDryRun(NULL, NULL, NULL); for (i = 0; i < ntargets; i++) VIR_FREE(targets[i]); VIR_FREE(targets); @@ -297,15 +297,15 @@ testISCSIConnectionLogin(const void *data) const struct testConnectionInfoLogin *info = data; struct testIscsiadmCbData cbData = { 0 }; int ret = -1; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); - virCommandSetDryRun(NULL, testIscsiadmCb, &cbData); + virCommandSetDryRun(dryRunToken, NULL, testIscsiadmCb, &cbData); if (virISCSIConnectionLogin(info->portal, info->initiatoriqn, info->target) < 0) goto cleanup; ret = 0; cleanup: - virCommandSetDryRun(NULL, NULL, NULL); return ret; } diff --git a/tests/virkmodtest.c b/tests/virkmodtest.c index 369eb8baca..d278032aec 100644 --- a/tests/virkmodtest.c +++ b/tests/virkmodtest.c @@ -61,8 +61,9 @@ testKModLoad(const void *args G_GNUC_UNUSED) int ret = -1; char *errbuf = NULL; g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); - virCommandSetDryRun(&buf, NULL, NULL); + virCommandSetDryRun(dryRunToken, &buf, NULL, NULL); errbuf = virKModLoad(MODNAME); if (errbuf) { @@ -76,7 +77,6 @@ testKModLoad(const void *args G_GNUC_UNUSED) ret = 0; cleanup: - virCommandSetDryRun(NULL, NULL, NULL); VIR_FREE(errbuf); return ret; } @@ -88,8 +88,9 @@ testKModUnload(const void *args G_GNUC_UNUSED) int ret = -1; char *errbuf = NULL; g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); - virCommandSetDryRun(&buf, NULL, NULL); + virCommandSetDryRun(dryRunToken, &buf, NULL, NULL); errbuf = virKModUnload(MODNAME); if (errbuf) { @@ -103,7 +104,6 @@ testKModUnload(const void *args G_GNUC_UNUSED) ret = 0; cleanup: - virCommandSetDryRun(NULL, NULL, NULL); VIR_FREE(errbuf); return ret; } diff --git a/tests/virnetdevbandwidthtest.c b/tests/virnetdevbandwidthtest.c index 6f3cab27be..52742dff05 100644 --- a/tests/virnetdevbandwidthtest.c +++ b/tests/virnetdevbandwidthtest.c @@ -72,13 +72,14 @@ testVirNetDevBandwidthSet(const void *data) g_autoptr(virNetDevBandwidth) band = NULL; g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER; char *actual_cmd = NULL; + g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew(); PARSE(info->band, band); if (!iface) iface = "eth0"; - virCommandSetDryRun(&buf, NULL, NULL); + virCommandSetDryRun(dryRunToken, &buf, NULL, NULL); if (virNetDevBandwidthSet(iface, band, info->hierarchical_class, true) < 0) goto cleanup; @@ -97,7 +98,6 @@ testVirNetDevBandwidthSet(const void *data) ret = 0; cleanup: - virCommandSetDryRun(NULL, NULL, NULL); VIR_FREE(actual_cmd); return ret; }