diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-11-22 14:57:21 +0100 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-11-22 14:57:21 +0100 |
commit | c7ef69d553293776e0ae4ccfccc0c878bc2ded42 (patch) | |
tree | 150f9e2be0b6b6b2ccaecadd4c7c5eba5cf05497 | |
parent | 257741aa3addbb14fa4fa532ac03f1ca4438ad3e (diff) |
deal with valid_lifetime = 0 in reply
-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) |