diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-11-24 23:43:52 +0100 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-11-24 23:44:36 +0100 |
commit | 13206cc05afb0aebaef3b6c3aeab7debac47d063 (patch) | |
tree | 883abeba741c60e9946a46fb1571673d77c7c533 | |
parent | e51b0b5b0a7c09c03aa989de14a61ad70cda4dc7 (diff) |
include prefix (length) hints in solicit packets0.3.7
Exception: Ignoring an expired on-disk lease on startup
-rw-r--r-- | Cargo.lock | 2 | ||||
-rw-r--r-- | Cargo.toml | 2 | ||||
-rw-r--r-- | src/main.rs | 14 |
3 files changed, 13 insertions, 5 deletions
@@ -384,7 +384,7 @@ dependencies = [ [[package]] name = "rsdsl_dhcp6" -version = "0.3.6" +version = "0.3.7" dependencies = [ "dhcproto", "rand", @@ -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 |