diff options
author | Thomas Haller <thaller@redhat.com> | 2016-04-15 20:53:15 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2016-04-15 20:58:47 +0200 |
commit | 64918e001d8a763831ecf305796951619d7865db (patch) | |
tree | 631d28cae5226ba4fe62f6880ac23f39dae255d0 | |
parent | dd21e2b7e57b35ce76ac9e5d5d717447eab35dd7 (diff) | |
download | NetworkManager-th/device-ip-config-on-link-up-rh1309899-1-0.tar.gz |
platform: ensure refetching routes and link goes downth/device-ip-config-on-link-up-rh1309899-1-0
It's not enough to consider IF_LOWER_UP flag. Instead,
the important flag is actually IF_UP.
Actually, I suspect that IF_LOWER_UP is not needed. But for
now leave it there to not break anything.
-rw-r--r-- | src/platform/nm-linux-platform.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c index 4e45e0a164..0043fc6d8b 100644 --- a/src/platform/nm-linux-platform.c +++ b/src/platform/nm-linux-platform.c @@ -1887,9 +1887,14 @@ cache_pre_hook (NMPCache *cache, const NMPObject *old, const NMPObject *new, NMP if ( ops_type == NMP_CACHE_OPS_UPDATED && old && new /* <-- nonsensical, make coverity happy */ && old->_link.netlink.is_in_netlink - && NM_FLAGS_HAS (old->link.flags, IFF_LOWER_UP) && new->_link.netlink.is_in_netlink - && !NM_FLAGS_HAS (new->link.flags, IFF_LOWER_UP)) { + && ( ( NM_FLAGS_HAS (old->link.flags, IFF_UP) + && !NM_FLAGS_HAS (new->link.flags, IFF_UP)) + || ( NM_FLAGS_HAS (old->link.flags, IFF_LOWER_UP) + && !NM_FLAGS_HAS (new->link.flags, IFF_LOWER_UP)))) { + /* FIXME: I suspect that IFF_LOWER_UP must not be considered, and I + * think kernel does send RTM_DELROUTE events for IPv6 routes, so + * we might not need to refresh IPv6 routes. */ delayed_action_schedule (platform, DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ROUTES | DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ROUTES, |