aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2023-03-04 16:54:21 +0100
committerHimbeerserverDE <himbeerserverde@gmail.com>2023-03-04 16:54:21 +0100
commita9702c9e75166c430ceabf680c009d4c0ea6b2ca (patch)
tree5f2252a48b05fcc050a59e1a796346b0990763f4
parent7aedab0f11ea811b3ef48b462eb77dea35848800 (diff)
move own_address to util module
-rw-r--r--src/main.rs15
-rw-r--r--src/util.rs7
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()
+}