summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--src/dhcp-manager/nm-dhcp-client.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/dhcp-manager/nm-dhcp-client.c b/src/dhcp-manager/nm-dhcp-client.c
index 16c6dd7..f6fec0a 100644
--- a/src/dhcp-manager/nm-dhcp-client.c
+++ b/src/dhcp-manager/nm-dhcp-client.c
@@ -570,8 +570,20 @@ nm_dhcp_client_new_options (NMDHCPClient *self,
g_hash_table_remove_all (priv->options);
g_hash_table_foreach (options, copy_option, priv->options);
- if (old_state == new_state)
- return;
+ if (old_state == new_state) {
+ /* dhclient will stay in the same state (or, really, provide the same
+ * reason) for operations like RENEW and REBIND. We need to ensure
+ * that triggers various DHCP lease change code, so we need to pass
+ * along same-state transitions for these states.
+ */
+ if ( new_state != DHC_BOUND4
+ && new_state != DHC_RENEW4
+ && new_state != DHC_REBIND4
+ && new_state != DHC_BOUND6
+ && new_state != DHC_RENEW6
+ && new_state != DHC_REBIND6)
+ return;
+ }
/* Handle changed device state */
if (state_is_bound (new_state)) {