diff options
-rw-r--r-- | src/client.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/client.rs b/src/client.rs index e920c63..30e616c 100644 --- a/src/client.rs +++ b/src/client.rs @@ -371,8 +371,6 @@ impl Dhcp6c { lease.t2 = lease.valid_lifetime / 2; } - // TODO: lft = 0 - if no_binding { self.restart_timer.reset(); self.restart_counter = self.max_request; @@ -383,6 +381,13 @@ impl Dhcp6c { self.restart_counter -= 1; self.state = Dhcp6cState::Requesting; + } else if lease.valid_lifetime.as_secs() == 0 { + self.restart_timer.reset(); + + self.output_tx + .send(Packet::Solicit) + .expect("output channel is closed"); + self.state = Dhcp6cState::Soliciting; } else { self.upper_status_tx .send(true) |