diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-03-04 16:54:21 +0100 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-03-04 16:54:21 +0100 |
commit | a9702c9e75166c430ceabf680c009d4c0ea6b2ca (patch) | |
tree | 5f2252a48b05fcc050a59e1a796346b0990763f4 | |
parent | 7aedab0f11ea811b3ef48b462eb77dea35848800 (diff) |
move own_address to util module
-rw-r--r-- | src/main.rs | 15 | ||||
-rw-r--r-- | src/util.rs | 7 |
2 files changed, 12 insertions, 10 deletions
diff --git a/src/main.rs b/src/main.rs index aec087a..51fe032 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,9 +1,9 @@ use dhcp4d::error::{Error, Result}; use dhcp4d::lease::{Lease, LeaseDummyManager, LeaseManager}; -use dhcp4d::util::format_client_id; +use dhcp4d::util::{format_client_id, local_ip}; use std::mem::MaybeUninit; -use std::net::{IpAddr, Ipv4Addr, SocketAddr, SocketAddrV4}; +use std::net::{IpAddr, SocketAddr, SocketAddrV4}; use std::sync::{Arc, Mutex}; use std::thread; @@ -85,7 +85,7 @@ fn handle_request( let lease = obtain_lease(lease_mgr.clone(), client_id).ok_or(Error::PoolExhausted)?; - let own_addr = own_address(sock); + let own_addr = local_ip(sock); let lease_mgr = lease_mgr.lock().unwrap(); let mut resp = Message::default(); @@ -144,7 +144,7 @@ fn handle_request( }; if !lease_mgr.request(*requested_addr, client_id) { - let own_addr = own_address(sock); + let own_addr = local_ip(sock); let mut resp = Message::default(); let opts = resp @@ -176,7 +176,7 @@ fn handle_request( } } else { let lease_time = lease_mgr.lease_time(); - let own_addr = own_address(sock); + let own_addr = local_ip(sock); let mut resp = Message::default(); let opts = resp @@ -247,8 +247,3 @@ fn handle_request( fn obtain_lease<T: LeaseManager>(lease_mgr: Arc<Mutex<T>>, client_id: &[u8]) -> Option<Lease> { lease_mgr.lock().unwrap().persistent_free_address(client_id) } - -fn own_address(sock: &Socket) -> Ipv4Addr { - let local_addr = sock.local_addr().unwrap().as_socket_ipv4().unwrap(); - *local_addr.ip() -} diff --git a/src/util.rs b/src/util.rs index d2143f8..81e4fce 100644 --- a/src/util.rs +++ b/src/util.rs @@ -1,4 +1,6 @@ use crate::error::{Error, Result}; +use socket2::Socket; +use std::net::Ipv4Addr; pub fn format_client_id(client_id: &[u8]) -> Result<String> { client_id @@ -7,3 +9,8 @@ pub fn format_client_id(client_id: &[u8]) -> Result<String> { .reduce(|acc, octet| acc + ":" + &octet) .ok_or(Error::EmptyClientId) } + +pub fn local_ip(sock: &Socket) -> Ipv4Addr { + let local_addr = sock.local_addr().unwrap().as_socket_ipv4().unwrap(); + *local_addr.ip() +} |