diff options
| author | Michael Biebl <biebl@debian.org> | 2016-03-30 00:56:30 +0200 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2016-03-30 00:56:30 +0200 |
| commit | d9c99a29a0d3384c9c3d2adce430f5cb1134ab6a (patch) | |
| tree | fa41baf72753961e71dd8d5bdbe2b89c9109e4f1 /src/nm-route-manager.c | |
| parent | c2de0d98ba39e0a1a970d066fd19be786092f376 (diff) | |
Imported Upstream version 1.1.92 upstream/1.1.92
Diffstat (limited to 'src/nm-route-manager.c')
| -rw-r--r-- | src/nm-route-manager.c | 48 |
1 files changed, 44 insertions, 4 deletions
diff --git a/src/nm-route-manager.c b/src/nm-route-manager.c index 84811d5a..3cf24118 100644 --- a/src/nm-route-manager.c +++ b/src/nm-route-manager.c @@ -73,6 +73,10 @@ typedef struct { G_DEFINE_TYPE (NMRouteManager, nm_route_manager, G_TYPE_OBJECT); +NM_GOBJECT_PROPERTIES_DEFINE_BASE ( + PROP_PLATFORM, +); + NM_DEFINE_SINGLETON_GETTER (NMRouteManager, nm_route_manager_get, NM_TYPE_ROUTE_MANAGER); /*********************************************************************************************/ @@ -1139,11 +1143,30 @@ static const VTableIP vtable_v6 = { /*********************************************************************************************/ static void -nm_route_manager_init (NMRouteManager *self) +set_property (GObject *object, guint prop_id, + const GValue *value, GParamSpec *pspec) { + NMRouteManager *self = NM_ROUTE_MANAGER (object); NMRouteManagerPrivate *priv = NM_ROUTE_MANAGER_GET_PRIVATE (self); - priv->platform = g_object_ref (NM_PLATFORM_GET); + 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_route_manager_init (NMRouteManager *self) +{ + NMRouteManagerPrivate *priv = NM_ROUTE_MANAGER_GET_PRIVATE (self); priv->ip4_routes.entries = g_array_new (FALSE, FALSE, sizeof (NMPlatformIP4Route)); priv->ip6_routes.entries = g_array_new (FALSE, FALSE, sizeof (NMPlatformIP6Route)); @@ -1159,6 +1182,14 @@ nm_route_manager_init (NMRouteManager *self) (GDestroyNotify) _ip4_device_routes_purge_entry_free); } +NMRouteManager * +nm_route_manager_new (NMPlatform *platform) +{ + return g_object_new (NM_TYPE_ROUTE_MANAGER, + NM_ROUTE_MANAGER_PLATFORM, platform, + NULL); +} + static void dispose (GObject *object) { @@ -1168,8 +1199,6 @@ dispose (GObject *object) g_hash_table_remove_all (priv->ip4_device_routes.entries); _ip4_device_routes_cancel (self); - g_clear_object (&priv->platform); - G_OBJECT_CLASS (nm_route_manager_parent_class)->dispose (object); } @@ -1189,6 +1218,8 @@ finalize (GObject *object) g_hash_table_unref (priv->ip4_device_routes.entries); + g_clear_object (&priv->platform); + G_OBJECT_CLASS (nm_route_manager_parent_class)->finalize (object); } @@ -1200,6 +1231,15 @@ nm_route_manager_class_init (NMRouteManagerClass *klass) g_type_class_add_private (klass, sizeof (NMRouteManagerPrivate)); /* virtual methods */ + object_class->set_property = set_property; object_class->dispose = dispose; object_class->finalize = finalize; + + obj_properties[PROP_PLATFORM] = + g_param_spec_object (NM_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); } |