summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2015-03-23 15:17:07 +0100
committerLubomir Rintel <lkundrak@v3.sk>2015-03-23 15:17:07 +0100
commitca9679334cb7abf66a9e80050d229d82e1823625 (patch)
treed5cf9f8a5d5b700bd4f79d76d1d8125779b6229b
parentc6011cde1428daaefe19d8cfda51359c60e6b4d3 (diff)
parent498d45e85ff6d5ff86ba76c4e38b140cdce7d640 (diff)
downloadNetworkManager-ca9679334cb7abf66a9e80050d229d82e1823625.tar.gz
platform: merge branch 'lr/udev-unmanaged-fd731014'
https://bugzilla.gnome.org/show_bug.cgi?id=731014
-rw-r--r--callouts/Makefile.am6
-rw-r--r--contrib/fedora/rpm/NetworkManager.spec6
-rw-r--r--data/77-nm-olpc-mesh.rules (renamed from callouts/77-nm-olpc-mesh.rules)0
-rw-r--r--data/85-nm-unmanaged.rules34
-rw-r--r--data/Makefile.am9
-rw-r--r--man/NetworkManager.xml28
-rw-r--r--src/devices/nm-device-veth.c1
-rw-r--r--src/nm-manager.c5
-rw-r--r--src/platform/nm-fake-platform.c37
-rw-r--r--src/platform/nm-linux-platform.c65
-rw-r--r--src/platform/nm-platform.c19
-rw-r--r--src/platform/nm-platform.h2
-rw-r--r--src/platform/tests/test-address.c2
-rw-r--r--src/platform/tests/test-cleanup.c2
-rw-r--r--src/platform/tests/test-link.c8
-rw-r--r--src/platform/tests/test-route.c2
-rw-r--r--src/tests/test-route-manager.c4
17 files changed, 169 insertions, 61 deletions
diff --git a/callouts/Makefile.am b/callouts/Makefile.am
index f682579e91..cc38e01a82 100644
--- a/callouts/Makefile.am
+++ b/callouts/Makefile.am
@@ -87,11 +87,6 @@ libtest_dispatcher_envp_la_LIBADD = \
$(GLIB_LIBS)
-if WITH_UDEV_DIR
-udevrulesdir = $(UDEV_DIR)/rules.d
-udevrules_DATA = 77-nm-olpc-mesh.rules
-endif
-
dbusactivationdir = $(datadir)/dbus-1/system-services
dbusactivation_in_files = org.freedesktop.nm_dispatcher.service.in
dbusactivation_DATA = $(dbusactivation_in_files:.service.in=.service)
@@ -115,7 +110,6 @@ CLEANFILES = $(nodist_libnmdbus_dispatcher_la_SOURCES) $(dbusactivation_DATA)
EXTRA_DIST = \
$(dbusservice_DATA) \
- $(udevrules_DATA) \
$(dbusactivation_in_files) \
nm-dispatcher.xml
diff --git a/contrib/fedora/rpm/NetworkManager.spec b/contrib/fedora/rpm/NetworkManager.spec
index f88ce95892..a488ca3648 100644
--- a/contrib/fedora/rpm/NetworkManager.spec
+++ b/contrib/fedora/rpm/NetworkManager.spec
@@ -489,6 +489,9 @@ make check
%post
+/usr/bin/udevadm control --reload-rules || :
+/usr/bin/udevadm trigger --subsystem-match=net || :
+
%systemd_post NetworkManager.service NetworkManager-wait-online.service NetworkManager-dispatcher.service
%preun
@@ -502,6 +505,9 @@ fi
%systemd_preun NetworkManager-wait-online.service NetworkManager-dispatcher.service
%postun
+/usr/bin/udevadm control --reload-rules || :
+/usr/bin/udevadm trigger --subsystem-match=net || :
+
%systemd_postun
diff --git a/callouts/77-nm-olpc-mesh.rules b/data/77-nm-olpc-mesh.rules
index a1a1554c2b..a1a1554c2b 100644
--- a/callouts/77-nm-olpc-mesh.rules
+++ b/data/77-nm-olpc-mesh.rules
diff --git a/data/85-nm-unmanaged.rules b/data/85-nm-unmanaged.rules
new file mode 100644
index 0000000000..aefab5c461
--- /dev/null
+++ b/data/85-nm-unmanaged.rules
@@ -0,0 +1,34 @@
+# Do not modify this file, it will get overwriten on updates.
+# To override or extend the rules place a file in /etc/udev/rules.d
+
+SUBSYSTEM!="net", GOTO="nm_unmanaged_end"
+
+# Determine ID_NET_DRIVER if there's no ID_NET_DRIVER or DRIVERS (old udev?)
+ENV{ID_NET_DRIVER}=="?*", GOTO="nm_unmanaged_driver"
+DRIVERS=="?*", GOTO="nm_unmanaged_driver"
+PROGRAM="/bin/sh -c '/usr/sbin/ethtool -i $env{INTERFACE} |/bin/sed -n s/^driver:\ //p'", RESULT=="?*", ENV{ID_NET_DRIVER}="%c"
+LABEL="nm_unmanaged_driver"
+
+# VirtualBox host networking. Out-of-tree driver that looks like an ordinary
+# Ethernet. No parent device (lives in /virtual/), no support for ethtool
+# to identify the driver, MAC address defaults to 08:00:27:, but can be
+# changed. Interface name will have to do, it's always vboxnet*.
+ENV{INTERFACE}=="vboxnet[0-9]*", ENV{NM_UNMANAGED}="1"
+
+# VMWare host networking. Out-of-tree driver that looks like an ordinary
+# Ethernet. No parent device (lives in /virtual/), no support for
+# ethtool to identify the driver. They have their own MAC prefix that
+# can not be changed.
+PROGRAM="/bin/cat %S%p/address", RESULT=="00:50:56:*", ENV{INTERFACE}=="vmnet[0-9]*", ENV{NM_UNMANAGED}="1"
+
+# Parallels Workstation host networking. Out-of-tree driver that looks like
+# an ordinary Ethernet. No parent device (lives in /virtual/), no support for
+# ethtool to identify the driver and the interface name is too generic.
+# However, they have their own MAC prefix that can not be changed.
+PROGRAM="/bin/cat %S%p/address", RESULT=="00:1c:42:*", ENV{INTERFACE}=="vnic[0-9]*", ENV{NM_UNMANAGED}="1"
+
+# Virtual Ethernet device pair. Often used to communicate with a peer interface
+# in another net namespace and managed by libvirt, Docker or the like.
+ENV{ID_NET_DRIVER}=="veth", ENV{NM_UNMANAGED}="1"
+
+LABEL="nm_unmanaged_end"
diff --git a/data/Makefile.am b/data/Makefile.am
index e91361a71b..5a95ea2a42 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -34,6 +34,13 @@ endif
examplesdir = $(docdir)/examples
examples_DATA = server.conf
+if WITH_UDEV_DIR
+udevrulesdir = $(UDEV_DIR)/rules.d
+udevrules_DATA = \
+ 85-nm-unmanaged.rules \
+ 77-nm-olpc-mesh.rules
+endif
+
server.conf: server.conf.in
$(edit) $< >$@
@@ -51,6 +58,8 @@ EXTRA_DIST = \
NetworkManager-wait-online-systemd-pre200.service.in \
NetworkManager-dispatcher.service.in \
org.freedesktop.NetworkManager.service.in \
+ 85-nm-unmanaged.rules \
+ 77-nm-olpc-mesh.rules \
server.conf.in
CLEANFILES = \
diff --git a/man/NetworkManager.xml b/man/NetworkManager.xml
index aa54fe1524..ceb810e3b4 100644
--- a/man/NetworkManager.xml
+++ b/man/NetworkManager.xml
@@ -359,6 +359,33 @@
</refsect1>
<refsect1>
+ <title>UDEV PROPERTIES</title>
+
+ <para>
+ <citerefentry><refentrytitle>udev</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+ device manager is used for the network device discovery. The following
+ property influences how NetworkManager manages the devices:
+ </para>
+
+ <variablelist>
+ <varlistentry>
+ <term><varname>NM_UNMANAGED</varname></term>
+ <listitem><para>
+ No default connection will be created and automatic activation
+ will not be attempted when this property of a device is set to a
+ true value ("1" or "true"). You will still be able to attach a
+ connection to the device manually or observe externally added
+ configuration such as addresses or routes.
+ </para><para>
+ Create an udev rule that sets this property to prevent NetworkManager
+ from interfering with virtual Ethernet device interfaces that are
+ managed by virtualization tools.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
<title>DEBUGGING</title>
<para>
The following environment variables are supported to help
@@ -386,6 +413,7 @@
<citerefentry><refentrytitle>nm-settings</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
<citerefentry><refentrytitle>nm-applet</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>nm-connection-editor</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+ <citerefentry><refentrytitle>udev</refentrytitle><manvolnum>7</manvolnum></citerefentry>
</para>
</refsect1>
</refentry>
diff --git a/src/devices/nm-device-veth.c b/src/devices/nm-device-veth.c
index db29c00d2f..6a05cc3214 100644
--- a/src/devices/nm-device-veth.c
+++ b/src/devices/nm-device-veth.c
@@ -102,7 +102,6 @@ get_peer (NMDeviceVeth *self)
static void
nm_device_veth_init (NMDeviceVeth *self)
{
- nm_device_set_initial_unmanaged_flag (NM_DEVICE (self), NM_UNMANAGED_DEFAULT, TRUE);
}
static void
diff --git a/src/nm-manager.c b/src/nm-manager.c
index 4da0f315f6..9ccb7e44d2 100644
--- a/src/nm-manager.c
+++ b/src/nm-manager.c
@@ -1795,7 +1795,7 @@ add_device (NMManager *self, NMDevice *device, gboolean try_assume)
NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
const char *iface, *driver, *type_desc;
const GSList *unmanaged_specs;
- gboolean user_unmanaged, sleeping;
+ gboolean user_unmanaged, sleeping, platform_unmanaged;
gboolean enabled = FALSE;
RfKillType rtype;
GSList *iter, *remove = NULL;
@@ -1871,6 +1871,9 @@ add_device (NMManager *self, NMDevice *device, gboolean try_assume)
user_unmanaged = nm_device_spec_match_list (device, unmanaged_specs);
nm_device_set_initial_unmanaged_flag (device, NM_UNMANAGED_USER, user_unmanaged);
+ if (nm_platform_link_get_unmanaged (nm_device_get_ifindex (device), &platform_unmanaged))
+ nm_device_set_initial_unmanaged_flag (device, NM_UNMANAGED_DEFAULT, platform_unmanaged);
+
sleeping = manager_sleeping (self);
nm_device_set_initial_unmanaged_flag (device, NM_UNMANAGED_INTERNAL, sleeping);
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;
diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c
index 47075f226f..3a0bbe4d1c 100644
--- a/src/platform/nm-linux-platform.c
+++ b/src/platform/nm-linux-platform.c
@@ -780,41 +780,6 @@ link_type_from_udev (NMPlatform *platform, int ifindex, const char *ifname, int
return_type (NM_LINK_TYPE_UNKNOWN, "unknown");
}
-static gboolean
-link_is_software (struct rtnl_link *rtnllink)
-{
- const char *type;
-
- /* FIXME: replace somehow with NMLinkType or nm_platform_is_software(), but
- * solve the infinite callstack problems that getting the type of a TUN/TAP
- * device causes.
- */
-
- if ( rtnl_link_get_arptype (rtnllink) == ARPHRD_INFINIBAND
- && strchr (rtnl_link_get_name (rtnllink), '.'))
- return TRUE;
-
- type = rtnl_link_get_type (rtnllink);
- if (type == NULL)
- return FALSE;
-
- if (!strcmp (type, "dummy") ||
- !strcmp (type, "gre") ||
- !strcmp (type, "gretap") ||
- !strcmp (type, "macvlan") ||
- !strcmp (type, "macvtap") ||
- !strcmp (type, "tun") ||
- !strcmp (type, "veth") ||
- !strcmp (type, "vlan") ||
- !strcmp (type, "vxlan") ||
- !strcmp (type, "bridge") ||
- !strcmp (type, "bond") ||
- !strcmp (type, "team"))
- return TRUE;
-
- return FALSE;
-}
-
static const char *
ethtool_get_driver (const char *ifname)
{
@@ -837,10 +802,6 @@ link_is_announceable (NMPlatform *platform, struct rtnl_link *rtnllink)
{
NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (platform);
- /* Software devices are always visible outside the platform */
- if (link_is_software (rtnllink))
- return TRUE;
-
/* Hardware devices must be found by udev so rules get run and tags set */
if (g_hash_table_lookup (priv->udev_devices,
GINT_TO_POINTER (rtnl_link_get_ifindex (rtnllink))))
@@ -1587,7 +1548,7 @@ announce_object (NMPlatform *platform, const struct nl_object *object, NMPlatfor
if (!init_link (platform, &device, rtnl_link))
return;
- /* Skip hardware devices not yet discovered by udev. They will be
+ /* Skip devices not yet discovered by udev. They will be
* announced by udev_device_added(). This doesn't apply to removed
* devices, as those come either from udev_device_removed(),
* event_notification() or link_delete() which block the announcment
@@ -1596,7 +1557,7 @@ announce_object (NMPlatform *platform, const struct nl_object *object, NMPlatfor
switch (change_type) {
case NM_PLATFORM_SIGNAL_ADDED:
case NM_PLATFORM_SIGNAL_CHANGED:
- if (!link_is_software (rtnl_link) && !device.driver)
+ if (!device.driver)
return;
break;
default:
@@ -2434,6 +2395,20 @@ link_get_type_name (NMPlatform *platform, int ifindex)
return type;
}
+static gboolean
+link_get_unmanaged (NMPlatform *platform, int ifindex, gboolean *managed)
+{
+ NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (platform);
+ GUdevDevice *udev_device = g_hash_table_lookup (priv->udev_devices, GINT_TO_POINTER (ifindex));
+
+ if (g_udev_device_get_property (udev_device, "NM_UNMANAGED")) {
+ *managed = g_udev_device_get_property_as_boolean (udev_device, "NM_UNMANAGED");
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
static guint32
link_get_flags (NMPlatform *platform, int ifindex)
{
@@ -4537,7 +4512,12 @@ setup (NMPlatform *platform)
/* And read initial device list */
enumerator = g_udev_enumerator_new (priv->udev_client);
g_udev_enumerator_add_match_subsystem (enumerator, "net");
- g_udev_enumerator_add_match_is_initialized (enumerator);
+
+ /* Demand that the device is initialized (udev rules ran,
+ * device has a stable name now) in case udev is running
+ * (not in a container). */
+ if (access ("/sys", W_OK) == 0)
+ g_udev_enumerator_add_match_is_initialized (enumerator);
devices = g_udev_enumerator_execute (enumerator);
for (iter = devices; iter; iter = g_list_next (iter)) {
@@ -4605,6 +4585,7 @@ nm_linux_platform_class_init (NMLinuxPlatformClass *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_refresh = link_refresh;
diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c
index 9500a75424..d51c142e04 100644
--- a/src/platform/nm-platform.c
+++ b/src/platform/nm-platform.c
@@ -653,6 +653,25 @@ nm_platform_link_get_type_name (int ifindex)
}
/**
+ * nm_platform_link_get_unmanaged:
+ * @ifindex: Interface index.
+ * @managed: Management status in case %TRUE is returned
+ *
+ * Returns: %TRUE if platform overrides whether the device ought
+ * to be managed by default. %FALSE with @managed unmodified
+ * otherwise.
+ */
+gboolean
+nm_platform_link_get_unmanaged (int ifindex, gboolean *managed)
+{
+ reset_error ();
+
+ g_return_val_if_fail (klass->link_get_unmanaged, FALSE);
+
+ return klass->link_get_unmanaged (platform, ifindex, managed);
+}
+
+/**
* nm_platform_link_is_software:
* @ifindex: Interface index.
*
diff --git a/src/platform/nm-platform.h b/src/platform/nm-platform.h
index c2dca4e585..bc7b84c9ff 100644
--- a/src/platform/nm-platform.h
+++ b/src/platform/nm-platform.h
@@ -351,6 +351,7 @@ typedef struct {
const char *(*link_get_name) (NMPlatform *, int ifindex);
NMLinkType (*link_get_type) (NMPlatform *, int ifindex);
const char *(*link_get_type_name) (NMPlatform *, int ifindex);
+ gboolean (*link_get_unmanaged) (NMPlatform *, int ifindex, gboolean *managed);
gboolean (*link_refresh) (NMPlatform *, int ifindex);
@@ -498,6 +499,7 @@ int nm_platform_link_get_ifindex (const char *name);
const char *nm_platform_link_get_name (int ifindex);
NMLinkType nm_platform_link_get_type (int ifindex);
const char *nm_platform_link_get_type_name (int ifindex);
+gboolean nm_platform_link_get_unmanaged (int ifindex, gboolean *managed);
gboolean nm_platform_link_is_software (int ifindex);
gboolean nm_platform_link_supports_slaves (int ifindex);
diff --git a/src/platform/tests/test-address.c b/src/platform/tests/test-address.c
index 3ef13b8ec3..902b33ee59 100644
--- a/src/platform/tests/test-address.c
+++ b/src/platform/tests/test-address.c
@@ -254,7 +254,7 @@ setup_tests (void)
nm_platform_link_delete (nm_platform_link_get_ifindex (DEVICE_NAME));
g_assert (!nm_platform_link_exists (DEVICE_NAME));
g_assert (nm_platform_dummy_add (DEVICE_NAME));
- accept_signal (link_added);
+ wait_signal (link_added);
free_signal (link_added);
g_test_add_func ("/address/internal/ip4", test_ip4_address);
diff --git a/src/platform/tests/test-cleanup.c b/src/platform/tests/test-cleanup.c
index afbb438cca..5d789d1bdf 100644
--- a/src/platform/tests/test-cleanup.c
+++ b/src/platform/tests/test-cleanup.c
@@ -36,7 +36,7 @@ test_cleanup_internal (void)
/* Create and set up device */
g_assert (nm_platform_dummy_add (DEVICE_NAME));
- accept_signal (link_added);
+ wait_signal (link_added);
free_signal (link_added);
g_assert (nm_platform_link_set_up (nm_platform_link_get_ifindex (DEVICE_NAME)));
ifindex = nm_platform_link_get_ifindex (DEVICE_NAME);
diff --git a/src/platform/tests/test-link.c b/src/platform/tests/test-link.c
index ec4f9ba203..0643b052cd 100644
--- a/src/platform/tests/test-link.c
+++ b/src/platform/tests/test-link.c
@@ -115,7 +115,7 @@ software_add (NMLinkType link_type, const char *name)
/* Don't call link_callback for the bridge interface */
parent_added = add_signal_ifname (NM_PLATFORM_SIGNAL_LINK_CHANGED, NM_PLATFORM_SIGNAL_ADDED, link_callback, PARENT_NAME);
if (nm_platform_bridge_add (PARENT_NAME, NULL, 0))
- accept_signal (parent_added);
+ wait_signal (parent_added);
free_signal (parent_added);
{
@@ -148,7 +148,7 @@ test_slave (int master, int type, SignalData *master_changed)
g_assert (ifindex > 0);
link_changed = add_signal_ifindex (NM_PLATFORM_SIGNAL_LINK_CHANGED, NM_PLATFORM_SIGNAL_CHANGED, link_callback, ifindex);
link_removed = add_signal_ifindex (NM_PLATFORM_SIGNAL_LINK_CHANGED, NM_PLATFORM_SIGNAL_REMOVED, link_callback, ifindex);
- accept_signal (link_added);
+ wait_signal (link_added);
/* Set the slave up to see whether master's IFF_LOWER_UP is set correctly.
*
@@ -263,7 +263,7 @@ test_software (NMLinkType link_type, const char *link_typename)
link_added = add_signal_ifname (NM_PLATFORM_SIGNAL_LINK_CHANGED, NM_PLATFORM_SIGNAL_ADDED, link_callback, DEVICE_NAME);
g_assert (software_add (link_type, DEVICE_NAME));
no_error ();
- accept_signal (link_added);
+ wait_signal (link_added);
g_assert (nm_platform_link_exists (DEVICE_NAME));
ifindex = nm_platform_link_get_ifindex (DEVICE_NAME);
g_assert (ifindex >= 0);
@@ -407,7 +407,7 @@ test_internal (void)
/* Add device */
g_assert (nm_platform_dummy_add (DEVICE_NAME));
no_error ();
- accept_signal (link_added);
+ wait_signal (link_added);
/* Try to add again */
g_assert (!nm_platform_dummy_add (DEVICE_NAME));
diff --git a/src/platform/tests/test-route.c b/src/platform/tests/test-route.c
index fec1e38d26..b6e99ab9fb 100644
--- a/src/platform/tests/test-route.c
+++ b/src/platform/tests/test-route.c
@@ -319,7 +319,7 @@ setup_tests (void)
nm_platform_link_delete (nm_platform_link_get_ifindex (DEVICE_NAME));
g_assert (!nm_platform_link_exists (DEVICE_NAME));
g_assert (nm_platform_dummy_add (DEVICE_NAME));
- accept_signal (link_added);
+ wait_signal (link_added);
free_signal (link_added);
g_assert (nm_platform_link_set_up (nm_platform_link_get_ifindex (DEVICE_NAME)));
diff --git a/src/tests/test-route-manager.c b/src/tests/test-route-manager.c
index d6ada104d4..b93dbb18f5 100644
--- a/src/tests/test-route-manager.c
+++ b/src/tests/test-route-manager.c
@@ -648,7 +648,7 @@ fixture_setup (test_fixture *fixture, gconstpointer user_data)
nm_platform_link_delete (nm_platform_link_get_ifindex ("nm-test-device0"));
g_assert (!nm_platform_link_exists ("nm-test-device0"));
g_assert (nm_platform_dummy_add ("nm-test-device0"));
- accept_signal (link_added);
+ wait_signal (link_added);
free_signal (link_added);
fixture->ifindex0 = nm_platform_link_get_ifindex ("nm-test-device0");
g_assert (nm_platform_link_set_up (fixture->ifindex0));
@@ -660,7 +660,7 @@ fixture_setup (test_fixture *fixture, gconstpointer user_data)
nm_platform_link_delete (nm_platform_link_get_ifindex ("nm-test-device1"));
g_assert (!nm_platform_link_exists ("nm-test-device1"));
g_assert (nm_platform_dummy_add ("nm-test-device1"));
- accept_signal (link_added);
+ wait_signal (link_added);
free_signal (link_added);
fixture->ifindex1 = nm_platform_link_get_ifindex ("nm-test-device1");
g_assert (nm_platform_link_set_up (fixture->ifindex1));