diff options
author | Thomas Haller <thaller@redhat.com> | 2016-03-08 13:43:40 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2016-03-15 12:56:58 +0100 |
commit | 80136bed7405c4d97b6d1024cce15a7127d0c084 (patch) | |
tree | 9e7e53959b1b2a0c882d75143727ee9f0d6dda87 | |
parent | fc53700fce9827fae8e9b24631ebb37bc45efe18 (diff) | |
download | NetworkManager-80136bed7405c4d97b6d1024cce15a7127d0c084.tar.gz |
default-route-manager: make NMDefaultRouteManager namespace aware
-rw-r--r-- | src/nm-default-route-manager.c | 51 | ||||
-rw-r--r-- | src/nm-default-route-manager.h | 3 |
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); |