aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2023-11-22 14:39:46 +0100
committerHimbeerserverDE <himbeerserverde@gmail.com>2023-11-22 14:39:46 +0100
commit2e5b39e2faba96d403b88cb946cfd7511bc17b90 (patch)
tree2eea85772357822b1fdb56bc546d12abe21701ab
parent0f94a6118ce463192ef0bedfa11ed942c8d5686d (diff)
refactor Dhcp6c::rr parameters
-rw-r--r--src/client.rs16
-rw-r--r--src/main.rs10
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()),