summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2016-01-26 21:32:07 +0100
committerBeniamino Galvani <bgalvani@redhat.com>2016-02-12 14:41:56 +0100
commit97be12b6625e738856814403195b60f7ebc13bfe (patch)
tree0f56f42e7def9b44ca459ae4e9ec6623a05e980d
parentfa8c0877ce7e01af4bbf86298cf838e5adc6475f (diff)
platform: always try to refetch new ethernet links
Due to a kernel bug [1], we sometimes receive spurious NEWLINK messages after a wifi interface has disappeared. Since the link is not present anymore we can't determine its type and thus it will show up as a Ethernet one, with no address specified. Request the link again to check if it really exists. [1] https://bugzilla.redhat.com/show_bug.cgi?id=1302037 https://bugzilla.gnome.org/show_bug.cgi?id=761151
-rw-r--r--src/platform/nm-linux-platform.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c
index 7d0ca9c10e..680108205e 100644
--- a/src/platform/nm-linux-platform.c
+++ b/src/platform/nm-linux-platform.c
@@ -3282,6 +3282,19 @@ cache_pre_hook (NMPCache *cache, const NMPObject *old, const NMPObject *new, NMP
DELAYED_ACTION_TYPE_REFRESH_LINK,
GINT_TO_POINTER (new->link.ifindex));
}
+ if ( new->link.type == NM_LINK_TYPE_ETHERNET
+ && new->link.addr.len == 0) {
+ /* Due to a kernel bug, we sometimes receive spurious NEWLINK
+ * messages after a wifi interface has disappeared. Since the
+ * link is not present anymore we can't determine its type and
+ * thus it will show up as a Ethernet one, with no address
+ * specified. Request the link again to check if it really
+ * exists. https://bugzilla.redhat.com/show_bug.cgi?id=1302037
+ */
+ delayed_action_schedule (platform,
+ DELAYED_ACTION_TYPE_REFRESH_LINK,
+ GINT_TO_POINTER (new->link.ifindex));
+ }
}
{
/* on enslave/release, we also refresh the master. */