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"
/***********************************************************************************/
+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)
{
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);
+
}
#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;
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);