summaryrefslogtreecommitdiff
path: root/src/platform/nm-fake-platform.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/platform/nm-fake-platform.c')
-rw-r--r--src/platform/nm-fake-platform.c37
1 files changed, 35 insertions, 2 deletions
diff --git a/src/platform/nm-fake-platform.c b/src/platform/nm-fake-platform.c
index b2878e3b0c..7194707b29 100644
--- a/src/platform/nm-fake-platform.c
+++ b/src/platform/nm-fake-platform.c
@@ -49,6 +49,11 @@ typedef struct {
int vlan_id;
} NMFakePlatformLink;
+typedef struct {
+ int ifindex;
+ NMPlatform *platform;
+} NMFakePlatformLinkData;
+
#define NM_FAKE_PLATFORM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_FAKE_PLATFORM, NMFakePlatformPrivate))
G_DEFINE_TYPE (NMFakePlatform, nm_fake_platform, NM_TYPE_PLATFORM)
@@ -175,6 +180,23 @@ _nm_platform_link_get (NMPlatform *platform, int ifindex, NMPlatformLink *l)
}
static gboolean
+_link_announce (NMFakePlatformLinkData *data)
+{
+ NMFakePlatformLink *device = link_get (data->platform, data->ifindex);
+
+ if (device)
+ g_signal_emit_by_name (data->platform,
+ NM_PLATFORM_SIGNAL_LINK_CHANGED,
+ device->link.ifindex,
+ device,
+ NM_PLATFORM_SIGNAL_ADDED,
+ NM_PLATFORM_REASON_INTERNAL);
+ g_free (data);
+
+ return FALSE;
+}
+
+static gboolean
link_add (NMPlatform *platform, const char *name, NMLinkType type, const void *address, size_t address_len)
{
NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform);
@@ -184,8 +206,12 @@ link_add (NMPlatform *platform, const char *name, NMLinkType type, const void *a
g_array_append_val (priv->links, device);
- if (device.link.ifindex)
- g_signal_emit_by_name (platform, NM_PLATFORM_SIGNAL_LINK_CHANGED, device.link.ifindex, &device, NM_PLATFORM_SIGNAL_ADDED, NM_PLATFORM_REASON_INTERNAL);
+ if (device.link.ifindex) {
+ NMFakePlatformLinkData *data = g_new (NMFakePlatformLinkData, 1);
+ data->ifindex = device.link.ifindex;
+ data->platform = platform;
+ g_idle_add ((GSourceFunc) _link_announce, data);
+ }
return TRUE;
}
@@ -273,6 +299,12 @@ link_get_type_name (NMPlatform *platform, int ifindex)
return type_to_type_name (link_get_type (platform, ifindex));
}
+static gboolean
+link_get_unmanaged (NMPlatform *platform, int ifindex, gboolean *managed)
+{
+ return FALSE;
+}
+
static void
link_changed (NMPlatform *platform, NMFakePlatformLink *device)
{
@@ -1358,6 +1390,7 @@ nm_fake_platform_class_init (NMFakePlatformClass *klass)
platform_class->link_get_name = link_get_name;
platform_class->link_get_type = link_get_type;
platform_class->link_get_type_name = link_get_type_name;
+ platform_class->link_get_unmanaged = link_get_unmanaged;
platform_class->link_set_up = link_set_up;
platform_class->link_set_down = link_set_down;