summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2016-03-08 13:43:40 +0100
committerThomas Haller <thaller@redhat.com>2016-03-15 12:56:58 +0100
commit80136bed7405c4d97b6d1024cce15a7127d0c084 (patch)
tree9e7e53959b1b2a0c882d75143727ee9f0d6dda87
parentfc53700fce9827fae8e9b24631ebb37bc45efe18 (diff)
downloadNetworkManager-80136bed7405c4d97b6d1024cce15a7127d0c084.tar.gz
default-route-manager: make NMDefaultRouteManager namespace aware
-rw-r--r--src/nm-default-route-manager.c51
-rw-r--r--src/nm-default-route-manager.h3
2 files changed, 52 insertions, 2 deletions
diff --git a/src/nm-default-route-manager.c b/src/nm-default-route-manager.c
index 084749e03a..3ee634a7b7 100644
--- a/src/nm-default-route-manager.c
+++ b/src/nm-default-route-manager.c
@@ -58,6 +58,10 @@ typedef struct {
G_DEFINE_TYPE (NMDefaultRouteManager, nm_default_route_manager, G_TYPE_OBJECT)
+NM_GOBJECT_PROPERTIES_DEFINE_BASE (
+ PROP_PLATFORM,
+);
+
NM_DEFINE_SINGLETON_GETTER (NMDefaultRouteManager, nm_default_route_manager_get, NM_TYPE_DEFAULT_ROUTE_MANAGER);
#define _NMLOG_PREFIX_NAME "default-route"
@@ -1381,20 +1385,54 @@ _platform_changed_cb (NMPlatform *platform,
/***********************************************************************************/
static void
+set_property (GObject *object, guint prop_id,
+ const GValue *value, GParamSpec *pspec)
+{
+ NMDefaultRouteManager *self = NM_DEFAULT_ROUTE_MANAGER (object);
+ NMDefaultRouteManagerPrivate *priv = NM_DEFAULT_ROUTE_MANAGER_GET_PRIVATE (self);
+
+ switch (prop_id) {
+ case PROP_PLATFORM:
+ /* construct-only */
+ priv->platform = g_value_get_object (value) ? : NM_PLATFORM_GET;
+ if (!priv->platform)
+ g_return_if_reached ();
+ g_object_ref (priv->platform);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
nm_default_route_manager_init (NMDefaultRouteManager *self)
{
+}
+
+static void
+constructed (GObject *object)
+{
+ NMDefaultRouteManager *self = NM_DEFAULT_ROUTE_MANAGER (object);
NMDefaultRouteManagerPrivate *priv = NM_DEFAULT_ROUTE_MANAGER_GET_PRIVATE (self);
priv->entries_ip4 = g_ptr_array_new_full (0, (GDestroyNotify) _entry_free);
priv->entries_ip6 = g_ptr_array_new_full (0, (GDestroyNotify) _entry_free);
- priv->platform = g_object_ref (NM_PLATFORM_GET);
g_signal_connect (priv->platform, NM_PLATFORM_SIGNAL_IP4_ADDRESS_CHANGED, G_CALLBACK (_platform_changed_cb), self);
g_signal_connect (priv->platform, NM_PLATFORM_SIGNAL_IP6_ADDRESS_CHANGED, G_CALLBACK (_platform_changed_cb), self);
g_signal_connect (priv->platform, NM_PLATFORM_SIGNAL_IP4_ROUTE_CHANGED, G_CALLBACK (_platform_changed_cb), self);
g_signal_connect (priv->platform, NM_PLATFORM_SIGNAL_IP6_ROUTE_CHANGED, G_CALLBACK (_platform_changed_cb), self);
}
+NMDefaultRouteManager *
+nm_default_route_manager_new (NMPlatform *platform)
+{
+ return g_object_new (NM_TYPE_DEFAULT_ROUTE_MANAGER,
+ NM_DEFAULT_ROUTE_MANAGER_PLATFORM, platform,
+ NULL);
+}
+
static void
dispose (GObject *object)
{
@@ -1437,6 +1475,17 @@ nm_default_route_manager_class_init (NMDefaultRouteManagerClass *klass)
g_type_class_add_private (klass, sizeof (NMDefaultRouteManagerPrivate));
/* virtual methods */
+ object_class->constructed = constructed;
object_class->dispose = dispose;
+ object_class->set_property = set_property;
+
+ obj_properties[PROP_PLATFORM] =
+ g_param_spec_object (NM_DEFAULT_ROUTE_MANAGER_PLATFORM, "", "",
+ NM_TYPE_PLATFORM,
+ G_PARAM_WRITABLE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS);
+ g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties);
+
}
diff --git a/src/nm-default-route-manager.h b/src/nm-default-route-manager.h
index 2ee4b6d6f4..ca92814c34 100644
--- a/src/nm-default-route-manager.h
+++ b/src/nm-default-route-manager.h
@@ -33,7 +33,7 @@
#define NM_IS_DEFAULT_ROUTE_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_DEFAULT_ROUTE_MANAGER))
#define NM_DEFAULT_ROUTE_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DEFAULT_ROUTE_MANAGER, NMDefaultRouteManagerClass))
-
+#define NM_DEFAULT_ROUTE_MANAGER_PLATFORM "platform"
struct _NMDefaultRouteManager {
GObject parent;
@@ -46,6 +46,7 @@ typedef struct {
GType nm_default_route_manager_get_type (void);
NMDefaultRouteManager *nm_default_route_manager_get (void);
+NMDefaultRouteManager *nm_default_route_manager_new (NMPlatform *platform);
void nm_default_route_manager_ip4_update_default_route (NMDefaultRouteManager *manager, gpointer source);
void nm_default_route_manager_ip6_update_default_route (NMDefaultRouteManager *manager, gpointer source);