mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-01 06:48:00 +02:00
default-route-manager: make NMDefaultRouteManager namespace aware
This commit is contained in:
parent
fc53700fce
commit
80136bed74
2 changed files with 52 additions and 2 deletions
|
|
@ -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"
|
||||
|
|
@ -1380,21 +1384,55 @@ _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);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue