mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-30 19:00:11 +01:00
route-manager: make NMRouteManager namespace aware
This commit is contained in:
parent
80136bed74
commit
56121fec83
2 changed files with 47 additions and 4 deletions
|
|
@ -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);
|
||||
|
||||
/*********************************************************************************************/
|
||||
|
|
@ -1138,13 +1142,32 @@ static const VTableIP vtable_v6 = {
|
|||
|
||||
/*********************************************************************************************/
|
||||
|
||||
static void
|
||||
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);
|
||||
|
||||
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->platform = g_object_ref (NM_PLATFORM_GET);
|
||||
|
||||
priv->ip4_routes.entries = g_array_new (FALSE, FALSE, sizeof (NMPlatformIP4Route));
|
||||
priv->ip6_routes.entries = g_array_new (FALSE, FALSE, sizeof (NMPlatformIP6Route));
|
||||
priv->ip4_routes.effective_metrics = g_array_new (FALSE, FALSE, sizeof (gint64));
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@
|
|||
#define NM_IS_ROUTE_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_ROUTE_MANAGER))
|
||||
#define NM_ROUTE_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_ROUTE_MANAGER, NMRouteManagerClass))
|
||||
|
||||
#define NM_ROUTE_MANAGER_PLATFORM "platform"
|
||||
|
||||
struct _NMRouteManager {
|
||||
GObject parent;
|
||||
};
|
||||
|
|
@ -48,5 +50,6 @@ gboolean nm_route_manager_route_flush (NMRouteManager *self, int ifindex);
|
|||
void nm_route_manager_ip4_route_register_device_route_purge_list (NMRouteManager *self, GArray *device_route_purge_list);
|
||||
|
||||
NMRouteManager *nm_route_manager_get (void);
|
||||
NMRouteManager *nm_route_manager_new (NMPlatform *platform);
|
||||
|
||||
#endif /* NM_ROUTE_MANAGER_H */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue