[PATCH 1/6] api: add public virNWFilterDefineXMLFlags() and remote protocol
Michal Prívozník
mprivozn at redhat.com
Fri Aug 20 13:41:25 UTC 2021
On 8/20/21 1:57 PM, Kristina Hanicova wrote:
> This new API function allows to define nwfilter with given flags.
>
> Signed-off-by: Kristina Hanicova <khanicov at redhat.com>
> ---
> include/libvirt/libvirt-nwfilter.h | 3 +++
> src/driver-nwfilter.h | 6 +++++
> src/libvirt-nwfilter.c | 43 ++++++++++++++++++++++++++++++
> src/libvirt_public.syms | 5 ++++
> src/remote/remote_driver.c | 1 +
> src/remote/remote_protocol.x | 18 ++++++++++++-
> src/remote_protocol-structs | 8 ++++++
> 7 files changed, 83 insertions(+), 1 deletion(-)
>
> diff --git a/include/libvirt/libvirt-nwfilter.h b/include/libvirt/libvirt-nwfilter.h
> index 44ca1b3fae..041b1fc33b 100644
> --- a/include/libvirt/libvirt-nwfilter.h
> +++ b/include/libvirt/libvirt-nwfilter.h
> @@ -85,6 +85,9 @@ virNWFilterPtr virNWFilterLookupByUUIDString (virConnectPtr conn,
> */
> virNWFilterPtr virNWFilterDefineXML (virConnectPtr conn,
> const char *xmlDesc);
> +virNWFilterPtr virNWFilterDefineXMLFlags(virConnectPtr conn,
> + const char *xmlDesc,
> + unsigned int flags);
>
> /*
> * Delete persistent nwfilter
> diff --git a/src/driver-nwfilter.h b/src/driver-nwfilter.h
> index fd76e3af84..1ec591ece9 100644
> --- a/src/driver-nwfilter.h
> +++ b/src/driver-nwfilter.h
> @@ -49,6 +49,11 @@ typedef virNWFilterPtr
> (*virDrvNWFilterDefineXML)(virConnectPtr conn,
> const char *xmlDesc);
>
> +typedef virNWFilterPtr
> +(*virDrvNWFilterDefineXMLFlags)(virConnectPtr conn,
> + const char *xmlDesc,
> + unsigned int flags);
> +
> typedef int
> (*virDrvNWFilterUndefine)(virNWFilterPtr nwfilter);
>
> @@ -98,6 +103,7 @@ struct _virNWFilterDriver {
> virDrvNWFilterLookupByName nwfilterLookupByName;
> virDrvNWFilterLookupByUUID nwfilterLookupByUUID;
> virDrvNWFilterDefineXML nwfilterDefineXML;
> + virDrvNWFilterDefineXMLFlags nwfilterDefineXMLFlags;
> virDrvNWFilterUndefine nwfilterUndefine;
> virDrvNWFilterGetXMLDesc nwfilterGetXMLDesc;
> virDrvConnectListAllNWFilterBindings connectListAllNWFilterBindings;
> diff --git a/src/libvirt-nwfilter.c b/src/libvirt-nwfilter.c
> index e299385895..c5c53327d3 100644
> --- a/src/libvirt-nwfilter.c
> +++ b/src/libvirt-nwfilter.c
> @@ -406,6 +406,49 @@ virNWFilterDefineXML(virConnectPtr conn, const char *xmlDesc)
> }
>
>
> +/**
> + * virNWFilterDefineXMLFlags:
> + * @conn: pointer to the hypervisor connection
> + * @xmlDesc: an XML description of the nwfilter
> + * @flags: extra flags; not used yet, so callers should always pass 0
> + *
> + * Define a new network filter, based on an XML description
> + * similar to the one returned by virNWFilterGetXMLDesc()
> + *
> + * virNWFilterFree should be used to free the resources after the
> + * nwfilter object is no longer needed.
> + *
> + * Returns a new nwfilter object or NULL in case of failure
> + */
> +virNWFilterPtr
> +virNWFilterDefineXMLFlags(virConnectPtr conn, const char *xmlDesc, unsigned int flags)
> +{
> + VIR_DEBUG("conn=%p, xmlDesc=%s", conn, NULLSTR(xmlDesc));
The @flags should be included in the debug printing too.
> +
> + virResetLastError();
> +
> + virCheckFlags(0, NULL);
This isn't a good idea. It stops client from sending a flag they don't
know, true. But ultimately it's the server (nwfilter driver) where we
want to validate @flags because a client can be talking to newer/older
server which in general supports different set of flags. Just drop this
line.
Michal
More information about the libvir-list
mailing list