On Mon, 2015-07-20 at 14:24 +0200, Lubomir Rintel wrote:
This makes NetworkManager recover on brief carrier toggle following a
DHCP outage.
src/devices/nm-device.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
index 913c488..53ddb66 100644
--- a/src/devices/nm-device.c
+++ b/src/devices/nm-device.c
@@ -1295,6 +1295,10 @@ link_disconnect_action_cancel (NMDevice *self)
g_source_remove (priv->carrier_defer_id);
_LOGD (LOGD_DEVICE, "link disconnected (canceling
deferred action) (id=%u)", priv->carrier_defer_id);
priv->carrier_defer_id = 0;
+
+ /* Don't let the DHCP requests that were lost while
the carrier was down
+ * contribute to the DHCP timeout -- restart the
transaction. */
+ update_dynamic_ip_setup (self);
}
}
link_disconnect_action_cancel() doesn't seem the right place to do
this, because then the name of the function is misleading, and it gets
called from dispose() -- at which you don't want to renew the DHCP
lease (well, technically, you wouldn't because the dhcp client is
already cleared).
Can you not move the call to nm_device_set_carrier()?
Also, in commit 348452f1e06e9bde9f84b90db4f5620ee672389a, it seems
wrong that update_dynamic_ip_setup() clears ip6_saved_properties.
How about restoring update_for_ip_ifname_change() which does:
update_for_ip_ifname_change()
{
g_hash_table_remove_all (priv->ip6_saved_properties);
update_dynamic_ip_setup (self);
}
Thomas
Attachment:
signature.asc
Description: This is a digitally signed message part