mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-26 17:00:08 +01:00
l3cfg: track ifname in NML3Cfg
This commit is contained in:
parent
b5c563329a
commit
62ea998d32
2 changed files with 50 additions and 0 deletions
|
|
@ -5,6 +5,7 @@
|
|||
#include "nm-l3cfg.h"
|
||||
|
||||
#include "platform/nm-platform.h"
|
||||
#include "platform/nmp-object.h"
|
||||
#include "nm-netns.h"
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
@ -35,9 +36,43 @@ G_DEFINE_TYPE (NML3Cfg, nm_l3cfg, G_TYPE_OBJECT)
|
|||
|
||||
/*****************************************************************************/
|
||||
|
||||
static void
|
||||
_load_link (NML3Cfg *self, gboolean initial)
|
||||
{
|
||||
nm_auto_nmpobj const NMPObject *obj_old = NULL;
|
||||
const NMPObject *obj;
|
||||
const char *ifname;
|
||||
const char *ifname_old;
|
||||
|
||||
obj = nm_platform_link_get_obj (self->priv.platform, self->priv.ifindex, TRUE);
|
||||
|
||||
if ( initial
|
||||
&& obj == self->priv.pllink)
|
||||
return;
|
||||
|
||||
obj_old = g_steal_pointer (&self->priv.pllink);
|
||||
self->priv.pllink = nmp_object_ref (obj);
|
||||
|
||||
ifname_old = nmp_object_link_get_ifname (obj_old);
|
||||
ifname = nmp_object_link_get_ifname (self->priv.pllink);
|
||||
|
||||
if (initial) {
|
||||
_LOGT ("link ifname changed: %s%s%s (initial)",
|
||||
NM_PRINT_FMT_QUOTE_STRING (ifname));
|
||||
} else if (!nm_streq0 (ifname, ifname_old)) {
|
||||
_LOGT ("link ifname changed: %s%s%s (was %s%s%s)",
|
||||
NM_PRINT_FMT_QUOTE_STRING (ifname),
|
||||
NM_PRINT_FMT_QUOTE_STRING (ifname_old));
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
void
|
||||
_nm_l3cfg_notify_platform_change_on_idle (NML3Cfg *self, guint32 obj_type_flags)
|
||||
{
|
||||
if (NM_FLAGS_ANY (obj_type_flags, nmp_object_type_to_flags (NMP_OBJECT_TYPE_LINK)))
|
||||
_load_link (self, FALSE);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
@ -89,6 +124,8 @@ constructed (GObject *object)
|
|||
NM_HASH_OBFUSCATE_PTR (self->priv.netns));
|
||||
|
||||
G_OBJECT_CLASS (nm_l3cfg_parent_class)->constructed (object);
|
||||
|
||||
_load_link (self, TRUE);
|
||||
}
|
||||
|
||||
NML3Cfg *
|
||||
|
|
@ -111,6 +148,8 @@ finalize (GObject *object)
|
|||
g_clear_object (&self->priv.netns);
|
||||
g_clear_object (&self->priv.platform);
|
||||
|
||||
nm_clear_pointer (&self->priv.pllink, nmp_object_unref);
|
||||
|
||||
_LOGT ("finalized");
|
||||
|
||||
G_OBJECT_CLASS (nm_l3cfg_parent_class)->finalize (object);
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@
|
|||
#ifndef __NM_L3CFG_H__
|
||||
#define __NM_L3CFG_H__
|
||||
|
||||
#include "platform/nmp-object.h"
|
||||
|
||||
#define NM_TYPE_L3CFG (nm_l3cfg_get_type ())
|
||||
#define NM_L3CFG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_L3CFG, NML3Cfg))
|
||||
#define NM_L3CFG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_L3CFG, NML3CfgClass))
|
||||
|
|
@ -19,6 +21,7 @@ struct _NML3Cfg {
|
|||
NMNetns *netns;
|
||||
NMPlatform *platform;
|
||||
int ifindex;
|
||||
const NMPObject *pllink;
|
||||
} priv;
|
||||
};
|
||||
|
||||
|
|
@ -42,6 +45,14 @@ nm_l3cfg_get_ifindex (const NML3Cfg *self)
|
|||
return self->priv.ifindex;
|
||||
}
|
||||
|
||||
static inline const char *
|
||||
nm_l3cfg_get_ifname (const NML3Cfg *self)
|
||||
{
|
||||
nm_assert (NM_IS_L3CFG (self));
|
||||
|
||||
return nmp_object_link_get_ifname (self->priv.pllink);
|
||||
}
|
||||
|
||||
static inline NMNetns *
|
||||
nm_l3cfg_get_netns (const NML3Cfg *self)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue