mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-02-28 21:30:30 +01:00
connectivity: fix determining the global connectivity state
Since we determine the connectivity state of each device individually, the global connectivity state is an aggregate of all these states. I am not sure about considering here devices that don't have the (best) default route for their respective address family. But anyway. When we aggregate the best connectivity, we chose the numerical largest value. That is wrong, because PORTAL is numerically smaller than LIMITED. That means, if you have two devices, one with connectivity LIMITED and one with connectivity PORTAL, then LIMITED wrongly wins. Fixes:6b7e9f9b22https://bugzilla.redhat.com/show_bug.cgi?id=1619873 (cherry picked from commitade753d06f)
This commit is contained in:
parent
51b7b10d3d
commit
d1e98e334d
1 changed files with 5 additions and 2 deletions
|
|
@ -2821,18 +2821,21 @@ device_connectivity_changed (NMDevice *device,
|
|||
|
||||
best_state = nm_device_get_connectivity_state (device);
|
||||
if (best_state < NM_CONNECTIVITY_FULL) {
|
||||
/* FIXME: is this really correct, to considere devices that don't have
|
||||
* (the best) default route for connectivity checking? */
|
||||
c_list_for_each_entry (dev, &priv->devices_lst_head, devices_lst) {
|
||||
state = nm_device_get_connectivity_state (dev);
|
||||
if (state <= best_state)
|
||||
if (nm_connectivity_state_cmp (state, best_state) <= 0)
|
||||
continue;
|
||||
best_state = state;
|
||||
if (best_state >= NM_CONNECTIVITY_FULL) {
|
||||
if (nm_connectivity_state_cmp (best_state, NM_CONNECTIVITY_FULL) >= 0) {
|
||||
/* it doesn't get better than this. */
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
nm_assert (best_state <= NM_CONNECTIVITY_FULL);
|
||||
nm_assert (nm_connectivity_state_cmp (best_state, NM_CONNECTIVITY_FULL) <= 0);
|
||||
|
||||
if (best_state != priv->connectivity_state) {
|
||||
priv->connectivity_state = best_state;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue