On 07/09/2018 12:44 PM, Daniel P. Berrangé wrote:
On Mon, Jul 09, 2018 at 11:56:10AM +0200, Michal Privoznik wrote:
> After f14c37ce4c2ccd111 the cleanup path for
> qemuBuildInterfaceCommandLine() and qemuBuildNetCommandLine()
> tries to connect to nwfilter driver in order to tear down any
> NWFilter that was brought up during cmd line construction. Since
> we also have negative test cases where errors during cmd line
> build are expected the cleanup paths are executed and NWFilter
> removal is attempted.
>
> Fortunately, there is another bug that by pure luck prevented us
> from actually spawning the daemon and thus modifying actual user
> data. See next commit for explanation.
>
> Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
> ---
> src/driver.h | 2 +-
> tests/qemuxml2argvmock.c | 7 +++++++
> 2 files changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/src/driver.h b/src/driver.h
> index 0b1f7a2269..0a0d8facee 100644
> --- a/src/driver.h
> +++ b/src/driver.h
> @@ -113,7 +113,7 @@ int virDriverLoadModule(const char *name,
>
> virConnectPtr virGetConnectInterface(void);
> virConnectPtr virGetConnectNetwork(void);
> -virConnectPtr virGetConnectNWFilter(void);
> +virConnectPtr virGetConnectNWFilter(void) ATTRIBUTE_NOINLINE;
> virConnectPtr virGetConnectNodeDev(void);
> virConnectPtr virGetConnectSecret(void);
> virConnectPtr virGetConnectStorage(void);
> diff --git a/tests/qemuxml2argvmock.c b/tests/qemuxml2argvmock.c
> index 4df92cf396..13ccfb855d 100644
> --- a/tests/qemuxml2argvmock.c
> +++ b/tests/qemuxml2argvmock.c
> @@ -233,3 +233,10 @@ qemuOpenChrChardevUNIXSocket(const virDomainChrSourceDef *dev
ATTRIBUTE_UNUSED)
> abort();
> return 1729;
> }
> +
> +
> +virConnectPtr
> +virGetConnectNWFilter(void)
> +{
> + return NULL;
> +}
In qemuxml2argvtest.c we actally set a fake shared connection, but I only
set it for two of the drivers. We should just register it for all the
drivers. eg expand these lines:
virSetConnectSecret(conn);
virSetConnectStorage(conn);
Oh, that means I have to provide some basic implementation. I can't just
set conn->nwFilterDriver = NULL; because then virGetConnectNWFilte()
would still try to connect.
Okay, I think I can do it.
Michal