[PATCH 2/4] New Zones interface
- From: Jiri Popelka <jpopelka redhat com>
- To: networkmanager-list gnome org
- Subject: [PATCH 2/4] New Zones interface
- Date: Tue, 26 Jul 2011 15:43:40 +0200
added interface XML to introspection/
added GTypeInterface skeleton in src/ that NMPolicy can implement
---
introspection/Makefile.am | 3 +-
introspection/all.xml | 1 +
introspection/nm-zones.xml | 42 +++++++++++++++++++++
libnm-glib/Makefile.am | 6 +++-
src/Makefile.am | 10 ++++-
src/nm-zones-interface.c | 87 ++++++++++++++++++++++++++++++++++++++++++++
src/nm-zones-interface.h | 51 ++++++++++++++++++++++++++
7 files changed, 196 insertions(+), 4 deletions(-)
create mode 100644 introspection/nm-zones.xml
create mode 100644 src/nm-zones-interface.c
create mode 100644 src/nm-zones-interface.h
diff --git a/introspection/Makefile.am b/introspection/Makefile.am
index 320245e..7b86631 100644
--- a/introspection/Makefile.am
+++ b/introspection/Makefile.am
@@ -24,5 +24,6 @@ EXTRA_DIST = \
nm-dhcp6-config.xml \
nm-agent-manager.xml \
nm-wimax-nsp.xml \
- nm-secret-agent.xml
+ nm-secret-agent.xml \
+ nm-zones.xml
diff --git a/introspection/all.xml b/introspection/all.xml
index 5d1baf0..f2df540 100644
--- a/introspection/all.xml
+++ b/introspection/all.xml
@@ -45,6 +45,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
<xi:include href="nm-agent-manager.xml"/>
<xi:include href="nm-vpn-connection.xml"/>
<xi:include href="nm-vpn-plugin.xml"/>
+<xi:include href="nm-zones.xml"/>
<xi:include href="errors.xml"/>
<xi:include href="vpn-errors.xml"/>
diff --git a/introspection/nm-zones.xml b/introspection/nm-zones.xml
new file mode 100644
index 0000000..e42b05b
--- /dev/null
+++ b/introspection/nm-zones.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<node name="/" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
+ <interface name="org.freedesktop.NetworkManager.Zones">
+ <tp:docstring>
+ The Zones interface allows clients to be informed about what zone connection belongs to.
+ </tp:docstring>
+
+ <signal name="ConnectionAdded">
+ <tp:docstring>
+ A connection was added to zone.
+ </tp:docstring>
+ <arg name="iface_name" type="s">
+ <tp:docstring>
+ The interface name.
+ </tp:docstring>
+ </arg>
+ <arg name="zone_name" type="s">
+ <tp:docstring>
+ The zone name.
+ </tp:docstring>
+ </arg>
+ </signal>
+
+ <signal name="ConnectionRemoved">
+ <tp:docstring>
+ A connection was removed from zone.
+ </tp:docstring>
+ <arg name="iface_name" type="s">
+ <tp:docstring>
+ The interface name.
+ </tp:docstring>
+ </arg>
+ <arg name="zone_name" type="s">
+ <tp:docstring>
+ The zone name.
+ </tp:docstring>
+ </arg>
+ </signal>
+
+ </interface>
+</node>
diff --git a/libnm-glib/Makefile.am b/libnm-glib/Makefile.am
index 4eec401..c362389 100644
--- a/libnm-glib/Makefile.am
+++ b/libnm-glib/Makefile.am
@@ -23,7 +23,8 @@ BUILT_SOURCES = \
nm-dhcp4-config-bindings.h \
nm-ip6-config-bindings.h \
nm-dhcp6-config-bindings.h \
- nm-secret-agent-glue.h
+ nm-secret-agent-glue.h \
+ nm-zones-bindings.h
noinst_LTLIBRARIES = \
@@ -234,6 +235,9 @@ nm-device-wimax-bindings.h: $(top_srcdir)/introspection/nm-device-wimax.xml
nm-device-modem-bindings.h: $(top_srcdir)/introspection/nm-device-modem.xml
dbus-binding-tool --prefix=nm_device_modem --mode=glib-client --output=$@ $<
+nm-zones-bindings.h: $(top_srcdir)/introspection/nm-zones.xml
+ $(AM_V_GEN) dbus-binding-tool --prefix=nm_zones --mode=glib-client --output=$@ $<
+
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libnm-glib.pc libnm-glib-vpn.pc
diff --git a/src/Makefile.am b/src/Makefile.am
index 94e1a8c..e8fd898 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -171,7 +171,9 @@ NetworkManager_SOURCES = \
nm-dhcp6-config.h \
nm-rfkill.h \
nm-session-monitor.c \
- nm-session-monitor.h
+ nm-session-monitor.h \
+ nm-zones-interface.c \
+ nm-zones-interface.h
nm-access-point-glue.h: $(top_srcdir)/introspection/nm-access-point.xml
$(AM_V_GEN) dbus-binding-tool --prefix=nm_access_point --mode=glib-server --output=$@ $<
@@ -212,6 +214,9 @@ nm-dhcp6-config-glue.h: $(top_srcdir)/introspection/nm-dhcp6-config.xml
nm-device-modem-glue.h: $(top_srcdir)/introspection/nm-device-modem.xml
$(AM_V_GEN) dbus-binding-tool --prefix=nm_device_modem --mode=glib-server --output=$@ $<
+nm-zones-glue.h: $(top_srcdir)/introspection/nm-zones.xml
+ $(AM_V_GEN) dbus-binding-tool --prefix=nm_zones --mode=glib-server --output=$@ $<
+
BUILT_SOURCES = \
nm-access-point-glue.h \
nm-manager-glue.h \
@@ -225,7 +230,8 @@ BUILT_SOURCES = \
nm-ip6-config-glue.h \
nm-active-connection-glue.h \
nm-dhcp4-config-glue.h \
- nm-dhcp6-config-glue.h
+ nm-dhcp6-config-glue.h \
+ nm-zones-glue.h
NetworkManager_CPPFLAGS = \
$(DBUS_CFLAGS) \
diff --git a/src/nm-zones-interface.c b/src/nm-zones-interface.c
new file mode 100644
index 0000000..62c6a4c
--- /dev/null
+++ b/src/nm-zones-interface.c
@@ -0,0 +1,87 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* NetworkManager -- Network link manager
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2011 Red Hat, Inc.
+ */
+
+#include "nm-zones-interface.h"
+#include "nm-zones-glue.h"
+#include "nm-marshal.h"
+#include <dbus/dbus-glib-lowlevel.h>
+
+static void
+nm_zones_interface_base_init (gpointer g_iface)
+{
+ GType iface_type = G_TYPE_FROM_INTERFACE (g_iface);
+ static gboolean is_initialized = FALSE;
+
+ if (!is_initialized)
+ {
+
+ /* Signals */
+
+ g_signal_new (NM_ZONES_INTERFACE_CONNECTION_ADDED,
+ iface_type,
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (NMZonesInterface, connection_added),
+ NULL, NULL,
+ _nm_marshal_VOID__STRING_STRING,
+ G_TYPE_NONE, 2,
+ G_TYPE_STRING, G_TYPE_STRING);
+
+ g_signal_new (NM_ZONES_INTERFACE_CONNECTION_REMOVED,
+ iface_type,
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (NMZonesInterface, connection_removed),
+ NULL, NULL,
+ _nm_marshal_VOID__STRING_STRING,
+ G_TYPE_NONE, 2,
+ G_TYPE_STRING, G_TYPE_STRING);
+
+ is_initialized = TRUE;
+ }
+
+ /* Bind this GType into the GLib/D-Bus wrappers */
+ dbus_g_object_type_install_info (iface_type,
+ &dbus_glib_nm_zones_object_info);
+
+}
+
+GType
+nm_zones_interface_get_type (void)
+{
+ static GType type = 0;
+
+ if (!G_UNLIKELY (type)) {
+ const GTypeInfo type_info = {
+ sizeof (NMZonesInterface), /* class_size */
+ nm_zones_interface_base_init, /* base_init */
+ NULL, /* base_finalize */
+ NULL, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ 0, /* instance_size */
+ 0, /* n_preallocs */
+ NULL /* instance_init */
+ };
+
+ type = g_type_register_static (G_TYPE_INTERFACE, "NMZonesInterface", &type_info, 0);
+ g_type_interface_add_prerequisite (type, G_TYPE_OBJECT);
+ }
+
+ return type;
+}
diff --git a/src/nm-zones-interface.h b/src/nm-zones-interface.h
new file mode 100644
index 0000000..c150bde
--- /dev/null
+++ b/src/nm-zones-interface.h
@@ -0,0 +1,51 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* NetworkManager -- Network link manager
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2011 Red Hat, Inc.
+ */
+
+#ifndef NM_ZONES_INTERFACE_H
+#define NM_ZONES_INTERFACE_H
+
+#include <glib-object.h>
+
+#define NM_TYPE_ZONES_INTERFACE (nm_zones_interface_get_type ())
+#define NM_ZONES_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_ZONES_INTERFACE, NMZonesInterface))
+#define NM_IS_ZONES_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_ZONES_INTERFACE))
+#define NM_ZONES_INTERFACE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), NM_TYPE_ZONES_INTERFACE, NMZonesInterface))
+
+#define NM_ZONES_INTERFACE_CONNECTION_ADDED "connection-added"
+#define NM_ZONES_INTERFACE_CONNECTION_REMOVED "connection-removed"
+
+typedef struct _NMZonesInterface NMZonesInterface;
+
+struct _NMZonesInterface {
+ GTypeInterface g_iface;
+
+ /* Signals */
+ void (*connection_added) (NMZonesInterface *zones,
+ const char *iface_name,
+ const char *zone_name);
+ void (*connection_removed) (NMZonesInterface *zones,
+ const char *iface_name,
+ const char *zone_name);
+
+};
+
+GType nm_zones_interface_get_type (void);
+
+#endif /* NM_ZONES_INTERFACE_H */
--
1.7.6
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]