[libvirt] [libvirt-glib][PATCH V3] Add filterref and filterref parameter support.
Ian Main
imain at redhat.com
Wed Oct 30 21:17:32 UTC 2013
On Wed, Oct 30, 2013 at 10:52:19AM +0100, Christophe Fergeau wrote:
> ACK
>
> Do you have push access to libvirt git repos?
No I do not. If you want to go that route my github username is
'imain'. It's fine either way though, you can just push this if you
like.
Ian
> Christophe
>
> On Tue, Oct 29, 2013 at 12:13:38PM -0700, Ian Main wrote:
> > This patch adds support for setting filterref's on interfaces. Also
> > supported are parameters to the filterref's.
> >
> > V2:
> >
> > - alphabetical orderized (don't look it up!) Makefile.am
> > - s/set_filter/set_name/ s/get_filter/get_name/
> > - remove trailing whitespace.
> > - fix missing line.
> > - add return_val_if_fail check.
> > - moved qcow fix in demo to a new patch.
> > - fixed new_from_xml().
> >
> > V3:
> >
> > - added g_debug in add_filterref_parameter();
> > - more fixing new_from_xml().
> > - orderized (I like this word now) libvirt-gconfig.h includes.
> >
> > Signed-off-by: Ian Main <imain at redhat.com>
> > ---
> > examples/config-demo.py | 7 +
> > libvirt-gconfig/Makefile.am | 4 +
> > ...-gconfig-domain-interface-filterref-parameter.c | 101 +++++++++++++
> > ...-gconfig-domain-interface-filterref-parameter.h | 75 ++++++++++
> > .../libvirt-gconfig-domain-interface-filterref.c | 159 +++++++++++++++++++++
> > .../libvirt-gconfig-domain-interface-filterref.h | 76 ++++++++++
> > libvirt-gconfig/libvirt-gconfig-domain-interface.c | 41 ++++++
> > libvirt-gconfig/libvirt-gconfig-domain-interface.h | 5 +
> > libvirt-gconfig/libvirt-gconfig.h | 2 +
> > libvirt-gconfig/libvirt-gconfig.sym | 18 +++
> > 10 files changed, 488 insertions(+)
> > create mode 100644 libvirt-gconfig/libvirt-gconfig-domain-interface-filterref-parameter.c
> > create mode 100644 libvirt-gconfig/libvirt-gconfig-domain-interface-filterref-parameter.h
> > create mode 100644 libvirt-gconfig/libvirt-gconfig-domain-interface-filterref.c
> > create mode 100644 libvirt-gconfig/libvirt-gconfig-domain-interface-filterref.h
> >
> > diff --git a/examples/config-demo.py b/examples/config-demo.py
> > index 09b9e89..367d99a 100644
> > --- a/examples/config-demo.py
> > +++ b/examples/config-demo.py
> > @@ -35,6 +35,13 @@ domain.add_device(disk)
> >
> > interface = LibvirtGConfig.DomainInterfaceNetwork.new()
> > interface.set_source("default")
> > +filterref = LibvirtGConfig.DomainInterfaceFilterref.new()
> > +filterref.set_name("clean-traffic")
> > +parameter = LibvirtGConfig.DomainInterfaceFilterrefParameter.new()
> > +parameter.set_name("IP")
> > +parameter.set_value("205.23.12.40")
> > +filterref.add_parameter(parameter)
> > +interface.set_filterref(filterref)
> > domain.add_device(interface)
> >
> > interface = LibvirtGConfig.DomainInterfaceUser.new()
> > diff --git a/libvirt-gconfig/Makefile.am b/libvirt-gconfig/Makefile.am
> > index 35dc978..0793da1 100644
> > --- a/libvirt-gconfig/Makefile.am
> > +++ b/libvirt-gconfig/Makefile.am
> > @@ -47,6 +47,8 @@ GCONFIG_HEADER_FILES = \
> > libvirt-gconfig-domain-input.h \
> > libvirt-gconfig-domain-interface.h \
> > libvirt-gconfig-domain-interface-bridge.h \
> > + libvirt-gconfig-domain-interface-filterref.h \
> > + libvirt-gconfig-domain-interface-filterref-parameter.h \
> > libvirt-gconfig-domain-interface-network.h \
> > libvirt-gconfig-domain-interface-user.h \
> > libvirt-gconfig-domain-memballoon.h \
> > @@ -129,6 +131,8 @@ GCONFIG_SOURCE_FILES = \
> > libvirt-gconfig-domain-input.c \
> > libvirt-gconfig-domain-interface.c \
> > libvirt-gconfig-domain-interface-bridge.c \
> > + libvirt-gconfig-domain-interface-filterref.c \
> > + libvirt-gconfig-domain-interface-filterref-parameter.c \
> > libvirt-gconfig-domain-interface-network.c \
> > libvirt-gconfig-domain-interface-user.c \
> > libvirt-gconfig-domain-memballoon.c \
> > diff --git a/libvirt-gconfig/libvirt-gconfig-domain-interface-filterref-parameter.c b/libvirt-gconfig/libvirt-gconfig-domain-interface-filterref-parameter.c
> > new file mode 100644
> > index 0000000..e697e86
> > --- /dev/null
> > +++ b/libvirt-gconfig/libvirt-gconfig-domain-interface-filterref-parameter.c
> > @@ -0,0 +1,101 @@
> > +/*
> > + * libvirt-gconfig-domain-interface-filterref-parameter.c:
> > + * libvirt filterref parameters
> > + *
> > + * Copyright (C) 2013 Red Hat, Inc.
> > + *
> > + * This library is free software; you can redistribute it and/or
> > + * modify it under the terms of the GNU Lesser General Public
> > + * License as published by the Free Software Foundation; either
> > + * version 2.1 of the License, or (at your option) any later version.
> > + *
> > + * This library is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> > + * Lesser General Public License for more details.
> > + *
> > + * You should have received a copy of the GNU Lesser General Public
> > + * License along with this library. If not, see
> > + * <http://www.gnu.org/licenses/>.
> > + *
> > + * Authors: Ian Main <imain at redhat.com>
> > + * Daniel P. Berrange <berrange at redhat.com>
> > + */
> > +
> > +#include <config.h>
> > +
> > +#include "libvirt-gconfig/libvirt-gconfig.h"
> > +#include "libvirt-gconfig/libvirt-gconfig-private.h"
> > +
> > +#define GVIR_CONFIG_DOMAIN_INTERFACE_FILTERREF_PARAMETER_GET_PRIVATE(obj) \
> > + (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_FILTERREF_PARAMETER, GVirConfigDomainInterfaceFilterrefParameterPrivate))
> > +
> > +struct _GVirConfigDomainInterfaceFilterrefParameterPrivate
> > +{
> > + gboolean unused;
> > +};
> > +
> > +G_DEFINE_TYPE(GVirConfigDomainInterfaceFilterrefParameter, gvir_config_domain_interface_filterref_parameter, GVIR_CONFIG_TYPE_OBJECT);
> > +
> > +static void gvir_config_domain_interface_filterref_parameter_class_init(GVirConfigDomainInterfaceFilterrefParameterClass *klass)
> > +{
> > + g_type_class_add_private(klass, sizeof(GVirConfigDomainInterfaceFilterrefParameterPrivate));
> > +}
> > +
> > +static void gvir_config_domain_interface_filterref_parameter_init(GVirConfigDomainInterfaceFilterrefParameter *parameter)
> > +{
> > + g_debug("Init GVirConfigDomainInterfaceFilterrefParameter=%p", parameter);
> > +
> > + parameter->priv = GVIR_CONFIG_DOMAIN_INTERFACE_FILTERREF_PARAMETER_GET_PRIVATE(parameter);
> > +}
> > +
> > +GVirConfigDomainInterfaceFilterrefParameter *gvir_config_domain_interface_filterref_parameter_new(void)
> > +{
> > + GVirConfigObject *object;
> > +
> > + object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_FILTERREF_PARAMETER,
> > + "parameter", NULL);
> > + return GVIR_CONFIG_DOMAIN_INTERFACE_FILTERREF_PARAMETER(object);
> > +}
> > +
> > +GVirConfigDomainInterfaceFilterrefParameter *
> > +gvir_config_domain_interface_filterref_parameter_new_from_xml(const gchar *xml, GError **error)
> > +{
> > + GVirConfigObject *object;
> > +
> > + object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_FILTERREF_PARAMETER,
> > + "parameter",
> > + NULL,
> > + xml,
> > + error);
> > +
> > + return GVIR_CONFIG_DOMAIN_INTERFACE_FILTERREF_PARAMETER(object);
> > +}
> > +
> > +void gvir_config_domain_interface_filterref_parameter_set_name(GVirConfigDomainInterfaceFilterrefParameter *parameter, const gchar *name)
> > +{
> > + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_INTERFACE_FILTERREF_PARAMETER(parameter));
> > + gvir_config_object_set_attribute(GVIR_CONFIG_OBJECT(parameter),
> > + "name", name, NULL);
> > +}
> > +
> > +void gvir_config_domain_interface_filterref_parameter_set_value(GVirConfigDomainInterfaceFilterrefParameter *parameter, const gchar *value)
> > +{
> > + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_INTERFACE_FILTERREF_PARAMETER(parameter));
> > + gvir_config_object_set_attribute(GVIR_CONFIG_OBJECT(parameter),
> > + "value", value, NULL);
> > +}
> > +
> > +const gchar *gvir_config_domain_interface_filterref_parameter_get_name(GVirConfigDomainInterfaceFilterrefParameter *parameter)
> > +{
> > + return gvir_config_object_get_attribute(GVIR_CONFIG_OBJECT(parameter),
> > + NULL,
> > + "name");
> > +}
> > +const gchar *gvir_config_domain_interface_filterref_parameter_get_value(GVirConfigDomainInterfaceFilterrefParameter *parameter)
> > +{
> > + return gvir_config_object_get_attribute(GVIR_CONFIG_OBJECT(parameter),
> > + NULL,
> > + "value");
> > +}
> > +
> > diff --git a/libvirt-gconfig/libvirt-gconfig-domain-interface-filterref-parameter.h b/libvirt-gconfig/libvirt-gconfig-domain-interface-filterref-parameter.h
> > new file mode 100644
> > index 0000000..a768c84
> > --- /dev/null
> > +++ b/libvirt-gconfig/libvirt-gconfig-domain-interface-filterref-parameter.h
> > @@ -0,0 +1,75 @@
> > +/*
> > + * libvirt-gconfig-domain-interface-filterref-parameter.h:
> > + * libvirt filterref parameters
> > + *
> > + * Copyright (C) 2013 Red Hat, Inc.
> > + *
> > + * This library is free software; you can redistribute it and/or
> > + * modify it under the terms of the GNU Lesser General Public
> > + * License as published by the Free Software Foundation; either
> > + * version 2.1 of the License, or (at your option) any later version.
> > + *
> > + * This library is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> > + * Lesser General Public License for more details.
> > + *
> > + * You should have received a copy of the GNU Lesser General Public
> > + * License along with this library. If not, see
> > + * <http://www.gnu.org/licenses/>.
> > + *
> > + * Authors: Ian Main <imain at redhat.com>
> > + * Daniel P. Berrange <berrange at redhat.com>
> > + */
> > +
> > +#if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD)
> > +#error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly."
> > +#endif
> > +
> > +#ifndef __LIBVIRT_GCONFIG_DOMAIN_INTERFACE_FILTERREF_PARAMETER_H__
> > +#define __LIBVIRT_GCONFIG_DOMAIN_INTERFACE_FILTERREF_PARAMETER_H__
> > +
> > +G_BEGIN_DECLS
> > +
> > +#define GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_FILTERREF_PARAMETER (gvir_config_domain_interface_filterref_parameter_get_type ())
> > +#define GVIR_CONFIG_DOMAIN_INTERFACE_FILTERREF_PARAMETER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_FILTERREF_PARAMETER, GVirConfigDomainInterfaceFilterrefParameter))
> > +#define GVIR_CONFIG_DOMAIN_INTERFACE_FILTERREF_PARAMETER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_FILTERREF_PARAMETER, GVirConfigDomainInterfaceFilterrefParameterClass))
> > +#define GVIR_CONFIG_IS_DOMAIN_INTERFACE_FILTERREF_PARAMETER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_FILTERREF_PARAMETER))
> > +#define GVIR_CONFIG_IS_DOMAIN_INTERFACE_FILTERREF_PARAMETER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_FILTERREF_PARAMETER))
> > +#define GVIR_CONFIG_DOMAIN_INTERFACE_FILTERREF_PARAMETER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_FILTERREF_PARAMETER, GVirConfigDomainInterfaceFilterrefParameterClass))
> > +
> > +typedef struct _GVirConfigDomainInterfaceFilterrefParameter GVirConfigDomainInterfaceFilterrefParameter;
> > +typedef struct _GVirConfigDomainInterfaceFilterrefParameterPrivate GVirConfigDomainInterfaceFilterrefParameterPrivate;
> > +typedef struct _GVirConfigDomainInterfaceFilterrefParameterClass GVirConfigDomainInterfaceFilterrefParameterClass;
> > +
> > +struct _GVirConfigDomainInterfaceFilterrefParameter
> > +{
> > + GVirConfigObject parent;
> > +
> > + GVirConfigDomainInterfaceFilterrefParameterPrivate *priv;
> > +
> > + /* Do not add fields to this struct */
> > +};
> > +
> > +struct _GVirConfigDomainInterfaceFilterrefParameterClass
> > +{
> > + GVirConfigObjectClass parent_class;
> > +
> > + gpointer padding[20];
> > +};
> > +
> > +GType gvir_config_domain_interface_filterref_parameter_get_type(void);
> > +
> > +GVirConfigDomainInterfaceFilterrefParameter *gvir_config_domain_interface_filterref_parameter_new(void);
> > +
> > +GVirConfigDomainInterfaceFilterrefParameter *
> > +gvir_config_domain_interface_filterref_parameter_new_from_xml(const gchar *xml, GError **error);
> > +
> > +void gvir_config_domain_interface_filterref_parameter_set_name(GVirConfigDomainInterfaceFilterrefParameter *parameter, const gchar *name);
> > +void gvir_config_domain_interface_filterref_parameter_set_value(GVirConfigDomainInterfaceFilterrefParameter *parameter, const gchar *value);
> > +const gchar *gvir_config_domain_interface_filterref_parameter_get_name(GVirConfigDomainInterfaceFilterrefParameter *parameter);
> > +const gchar *gvir_config_domain_interface_filterref_parameter_get_value(GVirConfigDomainInterfaceFilterrefParameter *parameter);
> > +
> > +G_END_DECLS
> > +
> > +#endif /* __LIBVIRT_GCONFIG_DOMAIN_INTERFACE_FILTERREF_PARAMETER_H__ */
> > diff --git a/libvirt-gconfig/libvirt-gconfig-domain-interface-filterref.c b/libvirt-gconfig/libvirt-gconfig-domain-interface-filterref.c
> > new file mode 100644
> > index 0000000..c192249
> > --- /dev/null
> > +++ b/libvirt-gconfig/libvirt-gconfig-domain-interface-filterref.c
> > @@ -0,0 +1,159 @@
> > +/*
> > + * libvirt-gconfig-domain-interface-network-filterref.c:
> > + * libvirt filter reference config.
> > + *
> > + * Copyright (C) 2013 Red Hat, Inc.
> > + *
> > + * This library is free software; you can redistribute it and/or
> > + * modify it under the terms of the GNU Lesser General Public
> > + * License as published by the Free Software Foundation; either
> > + * version 2.1 of the License, or (at your option) any later version.
> > + *
> > + * This library is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> > + * Lesser General Public License for more details.
> > + *
> > + * You should have received a copy of the GNU Lesser General Public
> > + * License along with this library. If not, see
> > + * <http://www.gnu.org/licenses/>.
> > + *
> > + * Author: Ian Main <imain at redhat.com>
> > + */
> > +
> > +#include <config.h>
> > +
> > +#include "libvirt-gconfig/libvirt-gconfig.h"
> > +#include "libvirt-gconfig/libvirt-gconfig-private.h"
> > +
> > +#define GVIR_CONFIG_DOMAIN_INTERFACE_FILTERREF_GET_PRIVATE(obj) \
> > + (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_FILTERREF, GVirConfigDomainInterfaceFilterrefPrivate))
> > +
> > +struct _GVirConfigDomainInterfaceFilterrefPrivate
> > +{
> > + gboolean unused;
> > +};
> > +
> > +G_DEFINE_TYPE(GVirConfigDomainInterfaceFilterref, gvir_config_domain_interface_filterref, GVIR_CONFIG_TYPE_OBJECT);
> > +
> > +static void gvir_config_domain_interface_filterref_class_init(GVirConfigDomainInterfaceFilterrefClass *klass)
> > +{
> > + g_type_class_add_private(klass, sizeof(GVirConfigDomainInterfaceFilterrefPrivate));
> > +}
> > +
> > +static void gvir_config_domain_interface_filterref_init(GVirConfigDomainInterfaceFilterref *filterref)
> > +{
> > + g_debug("Init GVirConfigDomainInterfaceFilterref=%p", filterref);
> > +
> > + filterref->priv = GVIR_CONFIG_DOMAIN_INTERFACE_FILTERREF_GET_PRIVATE(filterref);
> > +}
> > +
> > +
> > +GVirConfigDomainInterfaceFilterref *gvir_config_domain_interface_filterref_new(void)
> > +{
> > + GVirConfigObject *object;
> > +
> > + object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_FILTERREF,
> > + "filterref", NULL);
> > + return GVIR_CONFIG_DOMAIN_INTERFACE_FILTERREF(object);
> > +}
> > +
> > +GVirConfigDomainInterfaceFilterref *gvir_config_domain_interface_filterref_new_from_xml(const gchar *xml,
> > + GError **error)
> > +{
> > + GVirConfigObject *object;
> > +
> > + object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_FILTERREF,
> > + "filterref", NULL, xml, error);
> > + if (gvir_config_object_get_attribute(object, NULL, "filter") == NULL) {
> > + g_object_unref(G_OBJECT(object));
> > + return NULL;
> > + }
> > + return GVIR_CONFIG_DOMAIN_INTERFACE_FILTERREF(object);
> > +}
> > +
> > +void gvir_config_domain_interface_filterref_set_name(GVirConfigDomainInterfaceFilterref *filterref,
> > + const char *filter)
> > +{
> > + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_INTERFACE_FILTERREF(filterref));
> > +
> > + gvir_config_object_set_attribute(GVIR_CONFIG_OBJECT(filterref),
> > + "filter", filter, NULL);
> > +}
> > +
> > +const char *gvir_config_domain_interface_filterref_get_name(GVirConfigDomainInterfaceFilterref *filterref)
> > +{
> > + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_INTERFACE_FILTERREF(filterref), NULL);
> > + return gvir_config_object_get_attribute(GVIR_CONFIG_OBJECT(filterref),
> > + NULL,
> > + "filter");
> > +}
> > +
> > +void gvir_config_domain_interface_filterref_add_parameter(GVirConfigDomainInterfaceFilterref *filterref,
> > + GVirConfigDomainInterfaceFilterrefParameter *parameter)
> > +{
> > + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_INTERFACE_FILTERREF(filterref));
> > + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_INTERFACE_FILTERREF_PARAMETER(parameter));
> > +
> > + gvir_config_object_attach_add(GVIR_CONFIG_OBJECT(filterref),
> > + GVIR_CONFIG_OBJECT(parameter));
> > +}
> > +
> > +struct GetParameterData {
> > + GVirConfigXmlDoc *doc;
> > + GList *parameters;
> > +};
> > +
> > +
> > +static gboolean add_filterref_parameter(xmlNodePtr node, gpointer opaque)
> > +{
> > + struct GetParameterData* data = (struct GetParameterData*)opaque;
> > + GVirConfigObject *parameter;
> > +
> > + if (g_strcmp0((const gchar *)node->name, "parameter") != 0) {
> > + g_debug("unexpected node %s", node->name);
> > + return TRUE;
> > + }
> > +
> > + parameter = gvir_config_object_new_from_tree(GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_FILTERREF_PARAMETER,
> > + data->doc, NULL, node);
> > + if (parameter != NULL)
> > + data->parameters = g_list_append(data->parameters, parameter);
> > + else
> > + g_debug("Failed to parse %s node", node->name);
> > +
> > + return TRUE;
> > +}
> > +
> > +/**
> > + * gvir_config_domain_interface_filterref_get_parameters:
> > + * @filterref: a #GVirConfigDomainInterfaceFilterref
> > + *
> > + * Gets the list of parameters attached to @filterref. The returned list should be
> > + * freed with g_list_free(), after its elements have been unreffed with
> > + * g_object_unref().
> > + *
> > + * Returns: (element-type LibvirtGConfig.DomainInterfaceFilterrefParameter) (transfer full):
> > + * a newly allocated #GList of #GVirConfigDomainInterfaceFilterrefParameter.
> > + */
> > +GList *gvir_config_domain_interface_filterref_get_parameters(GVirConfigDomainInterfaceFilterref *filterref)
> > +{
> > + struct GetParameterData data;
> > +
> > + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_INTERFACE_FILTERREF(filterref), NULL);
> > +
> > + g_object_get(G_OBJECT(filterref), "doc", &data.doc, NULL);
> > + data.parameters = NULL;
> > +
> > + gvir_config_object_foreach_child(GVIR_CONFIG_OBJECT(filterref),
> > + NULL,
> > + add_filterref_parameter,
> > + &data);
> > +
> > + if (data.doc != NULL) {
> > + g_object_unref(G_OBJECT(data.doc));
> > + }
> > +
> > + return data.parameters;
> > +}
> > +
> > diff --git a/libvirt-gconfig/libvirt-gconfig-domain-interface-filterref.h b/libvirt-gconfig/libvirt-gconfig-domain-interface-filterref.h
> > new file mode 100644
> > index 0000000..4a2bfd4
> > --- /dev/null
> > +++ b/libvirt-gconfig/libvirt-gconfig-domain-interface-filterref.h
> > @@ -0,0 +1,76 @@
> > +/*
> > + * libvirt-gconfig-domain-interface-network-filterref.h: libvirt filter reference config
> > + *
> > + * Copyright (C) 2013 Red Hat, Inc.
> > + *
> > + * This library is free software; you can redistribute it and/or
> > + * modify it under the terms of the GNU Lesser General Public
> > + * License as published by the Free Software Foundation; either
> > + * version 2.1 of the License, or (at your option) any later version.
> > + *
> > + * This library is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> > + * Lesser General Public License for more details.
> > + *
> > + * You should have received a copy of the GNU Lesser General Public
> > + * License along with this library. If not, see
> > + * <http://www.gnu.org/licenses/>.
> > + *
> > + * Author: Ian Main <imain at redhat.com>
> > + */
> > +
> > +#if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD)
> > +#error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly."
> > +#endif
> > +
> > +#ifndef __LIBVIRT_GCONFIG_DOMAIN_INTERFACE_FILTERREF_H__
> > +#define __LIBVIRT_GCONFIG_DOMAIN_INTERFACE_FILTERREF_H__
> > +
> > +G_BEGIN_DECLS
> > +
> > +#define GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_FILTERREF (gvir_config_domain_interface_filterref_get_type ())
> > +#define GVIR_CONFIG_DOMAIN_INTERFACE_FILTERREF(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_FILTERREF, GVirConfigDomainInterfaceFilterref))
> > +#define GVIR_CONFIG_DOMAIN_INTERFACE_FILTERREF_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_FILTERREF, GVirConfigDomainInterfaceFilterrefClass))
> > +#define GVIR_CONFIG_IS_DOMAIN_INTERFACE_FILTERREF(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_FILTERREF))
> > +#define GVIR_CONFIG_IS_DOMAIN_INTERFACE_FILTERREF_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_FILTERREF))
> > +#define GVIR_CONFIG_DOMAIN_INTERFACE_FILTERREF_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_FILTERREF, GVirConfigDomainInterfaceFilterrefClass))
> > +
> > +typedef struct _GVirConfigDomainInterfaceFilterref GVirConfigDomainInterfaceFilterref;
> > +typedef struct _GVirConfigDomainInterfaceFilterrefPrivate GVirConfigDomainInterfaceFilterrefPrivate;
> > +typedef struct _GVirConfigDomainInterfaceFilterrefClass GVirConfigDomainInterfaceFilterrefClass;
> > +
> > +struct _GVirConfigDomainInterfaceFilterref
> > +{
> > + GVirConfigObject parent;
> > +
> > + GVirConfigDomainInterfaceFilterrefPrivate *priv;
> > +
> > + /* Do not add fields to this struct */
> > +};
> > +
> > +struct _GVirConfigDomainInterfaceFilterrefClass
> > +{
> > + GVirConfigObjectClass parent_class;
> > +
> > + gpointer padding[20];
> > +};
> > +
> > +GType gvir_config_domain_interface_filterref_get_type(void);
> > +
> > +GVirConfigDomainInterfaceFilterref *gvir_config_domain_interface_filterref_new(void);
> > +
> > +GVirConfigDomainInterfaceFilterref *
> > +gvir_config_domain_interface_filterref_new_from_xml(const gchar *xml, GError **error);
> > +
> > +void gvir_config_domain_interface_filterref_set_name(GVirConfigDomainInterfaceFilterref *filterref,
> > + const char *filter);
> > +const char *gvir_config_domain_interface_filterref_get_name(GVirConfigDomainInterfaceFilterref *filterref);
> > +
> > +void gvir_config_domain_interface_filterref_add_parameter(GVirConfigDomainInterfaceFilterref *filterref,
> > + GVirConfigDomainInterfaceFilterrefParameter *parameter);
> > +GList *gvir_config_domain_interface_filterref_get_parameters(GVirConfigDomainInterfaceFilterref *filterref);
> > +
> > +G_END_DECLS
> > +
> > +#endif /* __LIBVIRT_GCONFIG_DOMAIN_INTERFACE_FILTERREF_H__ */
> > diff --git a/libvirt-gconfig/libvirt-gconfig-domain-interface.c b/libvirt-gconfig/libvirt-gconfig-domain-interface.c
> > index 86a0c34..ce1b3f0 100644
> > --- a/libvirt-gconfig/libvirt-gconfig-domain-interface.c
> > +++ b/libvirt-gconfig/libvirt-gconfig-domain-interface.c
> > @@ -131,6 +131,47 @@ const char *gvir_config_domain_interface_get_model(GVirConfigDomainInterface *in
> > "model", "type");
> > }
> >
> > +/**
> > + * gvir_config_domain_interface_set_filterref:
> > + * @interface: a #GVirConfigDomainInterface
> > + * @filterref: (allow-none): the filterref to set
> > + */
> > +void gvir_config_domain_interface_set_filterref(GVirConfigDomainInterface *interface,
> > + GVirConfigDomainInterfaceFilterref *filterref)
> > +{
> > + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_INTERFACE(interface));
> > + g_return_if_fail(filterref == NULL || GVIR_CONFIG_IS_DOMAIN_INTERFACE_FILTERREF(filterref));
> > +
> > + gvir_config_object_attach_replace(GVIR_CONFIG_OBJECT(interface),
> > + "filterref",
> > + GVIR_CONFIG_OBJECT(filterref));
> > +}
> > +
> > +/**
> > + * gvir_config_domain_interface_get_filterref:
> > + * @interface: a #GVirConfigDomainInterface
> > + *
> > + * Gets the filterref associated with the @interface
> > + *
> > + * Returns: (transfer full): A #GVirConfigDomainInterfaceFilterref. The returned
> > + * object should be unreffed with g_object_unref() when no longer needed.
> > + */
> > +
> > +GVirConfigDomainInterfaceFilterref *gvir_config_domain_interface_get_filterref(GVirConfigDomainInterface *interface)
> > +{
> > + GVirConfigObject *object;
> > +
> > + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_INTERFACE(interface), NULL);
> > +
> > + object = gvir_config_object_get_child_with_type
> > + (GVIR_CONFIG_OBJECT(interface),
> > + "filterref",
> > + GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_FILTERREF);
> > +
> > + return GVIR_CONFIG_DOMAIN_INTERFACE_FILTERREF(object);
> > +}
> > +
> > +
> > G_GNUC_INTERNAL GVirConfigDomainDevice *
> > gvir_config_domain_interface_new_from_tree(GVirConfigXmlDoc *doc,
> > xmlNodePtr tree)
> > diff --git a/libvirt-gconfig/libvirt-gconfig-domain-interface.h b/libvirt-gconfig/libvirt-gconfig-domain-interface.h
> > index 65c5d0b..2b0c22f 100644
> > --- a/libvirt-gconfig/libvirt-gconfig-domain-interface.h
> > +++ b/libvirt-gconfig/libvirt-gconfig-domain-interface.h
> > @@ -27,6 +27,8 @@
> > #ifndef __LIBVIRT_GCONFIG_DOMAIN_INTERFACE_H__
> > #define __LIBVIRT_GCONFIG_DOMAIN_INTERFACE_H__
> >
> > +#include <libvirt-gconfig/libvirt-gconfig-domain-interface-filterref.h>
> > +
> > G_BEGIN_DECLS
> >
> > #define GVIR_CONFIG_TYPE_DOMAIN_INTERFACE (gvir_config_domain_interface_get_type ())
> > @@ -76,6 +78,9 @@ const char *gvir_config_domain_interface_get_ifname(GVirConfigDomainInterface *i
> > GVirConfigDomainInterfaceLinkState gvir_config_domain_interface_get_link_state(GVirConfigDomainInterface *interface);
> > const char *gvir_config_domain_interface_get_mac(GVirConfigDomainInterface *interface);
> > const char *gvir_config_domain_interface_get_model(GVirConfigDomainInterface *interface);
> > +void gvir_config_domain_interface_set_filterref(GVirConfigDomainInterface *interface,
> > + GVirConfigDomainInterfaceFilterref *filterref);
> > +GVirConfigDomainInterfaceFilterref *gvir_config_domain_interface_get_filterref(GVirConfigDomainInterface *interface);
> >
> > G_END_DECLS
> >
> > diff --git a/libvirt-gconfig/libvirt-gconfig.h b/libvirt-gconfig/libvirt-gconfig.h
> > index 03e8ce7..af80241 100644
> > --- a/libvirt-gconfig/libvirt-gconfig.h
> > +++ b/libvirt-gconfig/libvirt-gconfig.h
> > @@ -64,6 +64,8 @@
> > #include <libvirt-gconfig/libvirt-gconfig-domain-input.h>
> > #include <libvirt-gconfig/libvirt-gconfig-domain-interface.h>
> > #include <libvirt-gconfig/libvirt-gconfig-domain-interface-bridge.h>
> > +#include <libvirt-gconfig/libvirt-gconfig-domain-interface-filterref-parameter.h>
> > +#include <libvirt-gconfig/libvirt-gconfig-domain-interface-filterref.h>
> > #include <libvirt-gconfig/libvirt-gconfig-domain-interface-network.h>
> > #include <libvirt-gconfig/libvirt-gconfig-domain-interface-user.h>
> > #include <libvirt-gconfig/libvirt-gconfig-domain-memballoon.h>
> > diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym
> > index 72eafc1..a5f8b05 100644
> > --- a/libvirt-gconfig/libvirt-gconfig.sym
> > +++ b/libvirt-gconfig/libvirt-gconfig.sym
> > @@ -608,6 +608,24 @@ global:
> > gvir_config_domain_graphics_rdp_set_replace_user;
> >
> > gvir_config_object_new_from_xml;
> > +
> > + gvir_config_domain_interface_set_filterref;
> > + gvir_config_domain_interface_get_filterref;
> > +
> > + gvir_config_domain_interface_filterref_get_type;
> > + gvir_config_domain_interface_filterref_new;
> > + gvir_config_domain_interface_filterref_new_from_xml;
> > + gvir_config_domain_interface_filterref_set_name;
> > + gvir_config_domain_interface_filterref_get_name;
> > + gvir_config_domain_interface_filterref_add_parameter;
> > + gvir_config_domain_interface_filterref_get_parameters;
> > + gvir_config_domain_interface_filterref_parameter_get_type;
> > + gvir_config_domain_interface_filterref_parameter_new;
> > + gvir_config_domain_interface_filterref_parameter_new_from_xml;
> > + gvir_config_domain_interface_filterref_parameter_set_name;
> > + gvir_config_domain_interface_filterref_parameter_set_value;
> > + gvir_config_domain_interface_filterref_parameter_get_name;
> > + gvir_config_domain_interface_filterref_parameter_get_value;
> > } LIBVIRT_GCONFIG_0.1.7;
> >
> > # .... define new API here using predicted next version number ....
> > --
> > 1.8.1.4
> >
> > --
> > libvir-list mailing list
> > libvir-list at redhat.com
> > https://www.redhat.com/mailman/listinfo/libvir-list
More information about the libvir-list
mailing list