diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-11-22 14:39:46 +0100 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-11-22 14:39:46 +0100 |
commit | 2e5b39e2faba96d403b88cb946cfd7511bc17b90 (patch) | |
tree | 2eea85772357822b1fdb56bc546d12abe21701ab | |
parent | 0f94a6118ce463192ef0bedfa11ed942c8d5686d (diff) |
refactor Dhcp6c::rr parameters
-rw-r--r-- | src/client.rs | 16 | ||||
-rw-r--r-- | src/main.rs | 10 |
2 files changed, 14 insertions, 12 deletions
diff --git a/src/client.rs b/src/client.rs index fdf8b32..ea7e1ff 100644 --- a/src/client.rs +++ b/src/client.rs @@ -23,7 +23,7 @@ pub enum Packet { Solicit, Advertise, Request, - Reply(Duration, Duration, Duration), + Reply(Lease, bool), Renew, Rebind, } @@ -152,7 +152,7 @@ impl Dhcp6c { match packet { Packet::Solicit | Packet::Request | Packet::Renew | Packet::Rebind => {} // illegal Packet::Advertise => self.ra(), - Packet::Reply(t1, t2, valid_lifetime) => self.rr(t1, t2, valid_lifetime), + Packet::Reply(lease, no_binding) => self.rr(lease, no_binding), } } @@ -337,7 +337,7 @@ impl Dhcp6c { } } - fn rr(&mut self, t1: Duration, t2: Duration, valid_lifetime: Duration) { + fn rr(&mut self, lease: Lease, no_binding: bool) { match self.state { Dhcp6cState::Starting | Dhcp6cState::Opened => {} // illegal Dhcp6cState::Soliciting @@ -349,13 +349,11 @@ impl Dhcp6c { .send(true) .expect("upper status channel is closed"); - self.lease = Some(Lease { - timestamp: Instant::now(), - t1, - t2, - valid_lifetime, - }); + // TODO: t1, t2 = 0 or inf + // TODO: req if status nobinding + // TODO: lft = 0 + self.lease = Some(lease); self.state = Dhcp6cState::Opened; } } diff --git a/src/main.rs b/src/main.rs index 707384e..29ec36b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -326,9 +326,13 @@ fn handle(dhcp6: &mut Dhcp6, dhcp6c: &mut Dhcp6c, buf: &[u8]) -> Result<()> { }); dhcp6c.from_recv(Packet::Reply( - Duration::from_secs(ia_pd.t1.into()), - Duration::from_secs(ia_pd.t2.into()), - Duration::from_secs(ia_prefix.valid_lifetime.into()), + Lease { + timestamp: Instant::now(), + t1: Duration::from_secs(ia_pd.t1.into()), + t2: Duration::from_secs(ia_pd.t2.into()), + valid_lifetime: Duration::from_secs(ia_prefix.valid_lifetime.into()), + }, + false, )); } _ => println!("[warn] <- unimplemented message type {:?}", msg.msg_type()), |