diff options
| author | Michael Biebl <biebl@debian.org> | 2018-09-23 10:11:11 +0200 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2018-09-23 10:11:11 +0200 |
| commit | 135c3be0fb0eedb7a1b493ffde6c1ab3d23771f6 (patch) | |
| tree | 40408d2ad887437e3ca63ff7fc6334bf22ae3fe6 /src/nm-manager.c | |
| parent | 81e5928f26b40b0227604ccaf4b051fe14c9b3ef (diff) | |
| parent | e126f3e804c35480c4f075777430419d6ece23da (diff) | |
Update upstream source from tag 'upstream/1.12.4'
Update to upstream version '1.12.4' with Debian dir 650b52e60bf462f2972d0c33deec2cb171953445
Diffstat (limited to 'src/nm-manager.c')
| -rw-r--r-- | src/nm-manager.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/nm-manager.c b/src/nm-manager.c index 289dcf83..ad906169 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -3008,10 +3008,21 @@ platform_link_added (NMManager *self, continue; if (nm_device_is_real (candidate)) { - /* Ignore the link added event since there's already a realized - * device with the link's name. + /* There's already a realized device with the link's name + * and a different ifindex. */ - nm_device_update_from_platform_link (candidate, plink); + if (nm_device_get_ifindex (candidate) <= 0) + nm_device_update_from_platform_link (candidate, plink); + else { + /* The ifindex of a device can't be changed after + * initialization because it is used as a key by + * the dns-manager. + */ + _LOGD (LOGD_DEVICE, "(%s): removing old device %p after ifindex change from %d to %d", + plink->name, candidate, nm_device_get_ifindex (candidate), ifindex); + remove_device (self, candidate, FALSE, TRUE); + goto add; + } return; } else if (nm_device_realize_start (candidate, plink, @@ -3031,6 +3042,7 @@ platform_link_added (NMManager *self, /* Try next unrealized device */ } +add: /* Try registered device factories */ factory = nm_device_factory_manager_find_factory_for_link_type (plink->type); if (factory) { |