aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2023-11-24 23:43:52 +0100
committerHimbeerserverDE <himbeerserverde@gmail.com>2023-11-24 23:44:36 +0100
commit13206cc05afb0aebaef3b6c3aeab7debac47d063 (patch)
tree883abeba741c60e9946a46fb1571673d77c7c533
parente51b0b5b0a7c09c03aa989de14a61ad70cda4dc7 (diff)
include prefix (length) hints in solicit packets0.3.7
Exception: Ignoring an expired on-disk lease on startup
-rw-r--r--Cargo.lock2
-rw-r--r--Cargo.toml2
-rw-r--r--src/main.rs14
3 files changed, 13 insertions, 5 deletions
diff --git a/Cargo.lock b/Cargo.lock
index cc5f39f..4f4ebac 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -384,7 +384,7 @@ dependencies = [
[[package]]
name = "rsdsl_dhcp6"
-version = "0.3.6"
+version = "0.3.7"
dependencies = [
"dhcproto",
"rand",
diff --git a/Cargo.toml b/Cargo.toml
index 196790f..55866d4 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "rsdsl_dhcp6"
-version = "0.3.6"
+version = "0.3.7"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
diff --git a/src/main.rs b/src/main.rs
index 326ecc4..44f9519 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -427,6 +427,9 @@ async fn do_send_dhcp6(dhcp6: &mut Dhcp6, sock: &UdpSocket, packet: Packet) -> R
match packet {
Packet::Solicit => {
+ let prefix_len_hint = dhcp6.lease.as_ref().map(|pd_config| pd_config.len);
+ let prefix_hint = dhcp6.lease.as_ref().map(|pd_config| pd_config.prefix);
+
let mut solicit = Message::new_with_id(MessageType::Solicit, dhcp6.xid);
let opts = solicit.opts_mut();
@@ -448,8 +451,8 @@ async fn do_send_dhcp6(dhcp6: &mut Dhcp6, sock: &UdpSocket, packet: Packet) -> R
opts: vec![DhcpOption::IAPrefix(IAPrefix {
preferred_lifetime: 0,
valid_lifetime: 0,
- prefix_len: 56,
- prefix_ip: Ipv6Addr::UNSPECIFIED,
+ prefix_len: prefix_len_hint.unwrap_or(56),
+ prefix_ip: prefix_hint.unwrap_or(Ipv6Addr::UNSPECIFIED),
opts: Default::default(),
})]
.into_iter()
@@ -461,7 +464,12 @@ async fn do_send_dhcp6(dhcp6: &mut Dhcp6, sock: &UdpSocket, packet: Packet) -> R
send_to_exact(sock, &buf, ALL_DHCPV6_SERVERS).await?;
- println!("[info] -> solicit");
+ println!(
+ "[info] -> solicit hint {:?}",
+ prefix_hint
+ .zip(prefix_len_hint)
+ .map(|hint| format!("{}/{}", hint.0, hint.1))
+ );
}
Packet::Request => {
let DhcpOption::IAPrefix(ia_prefix) = dhcp6