diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-11-18 13:01:34 +0100 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-11-18 13:01:34 +0100 |
commit | 0daa42d9fd9b331878cc74e54751432641121e82 (patch) | |
tree | ae3a2ee655fa481a2ad4061a746c456e5806f349 /src | |
parent | a11f7c5a0cf3ffa816e433b2c844e0c9abf2ab03 (diff) |
update netlinklib0.2.5
Diffstat (limited to 'src')
-rw-r--r-- | src/main.rs | 15 | ||||
-rw-r--r-- | src/util.rs | 6 |
2 files changed, 12 insertions, 9 deletions
diff --git a/src/main.rs b/src/main.rs index 5a9ae42..e3b0629 100644 --- a/src/main.rs +++ b/src/main.rs @@ -15,7 +15,7 @@ use std::time::Duration; use dhcproto::v4::{DhcpOption, Flags, Message, MessageType, Opcode, OptionCode}; use dhcproto::{Decodable, Decoder, Encodable, Encoder}; -use rsdsl_netlinklib::blocking::link; +use rsdsl_netlinklib::blocking::Connection; use socket2::{Domain, Socket, Type}; use sysinfo::{ProcessExt, Signal, System, SystemExt}; @@ -42,8 +42,10 @@ fn run_supervised(link: String, subnet_id: u8) -> ! { } fn run(link: String, subnet_id: u8) -> Result<()> { + let conn = Connection::new()?; + println!("[info] wait for up {}", link); - link::wait_up(link.clone())?; + conn.link_wait_up(link.clone())?; println!("[info] init {}", link); @@ -112,7 +114,7 @@ fn run(link: String, subnet_id: u8) -> Result<()> { let remote = remote.as_socket_ipv4().unwrap(); - match handle_request(&sock, lease_mgr.clone(), buf, link.clone()) { + match handle_request(&conn, &sock, lease_mgr.clone(), buf, link.clone()) { Ok(_) => {} Err(e) => println!("[info] pkt from {} on {}: {}", remote, link, e), } @@ -120,6 +122,7 @@ fn run(link: String, subnet_id: u8) -> Result<()> { } fn handle_request<T: LeaseManager>( + conn: &Connection, sock: &Socket, lease_mgr: Arc<Mutex<T>>, buf: &[u8], @@ -159,7 +162,7 @@ fn handle_request<T: LeaseManager>( .persistent_free_address(client_id, hostname) .ok_or(Error::PoolExhausted)?; - let own_addr = local_ip(link.clone())?; + let own_addr = local_ip(conn, link.clone())?; let mut resp = Message::default(); let opts = resp @@ -233,7 +236,7 @@ fn handle_request<T: LeaseManager>( }; if !lease_mgr.request(requested_addr, client_id, hostname)? { - let own_addr = local_ip(link.clone())?; + let own_addr = local_ip(conn, link.clone())?; let mut resp = Message::default(); let opts = resp @@ -271,7 +274,7 @@ fn handle_request<T: LeaseManager>( } } else { let lease_time = lease_mgr.lease_time(); - let own_addr = local_ip(link.clone())?; + let own_addr = local_ip(conn, link.clone())?; let mut resp = Message::default(); let opts = resp diff --git a/src/util.rs b/src/util.rs index 974c273..26ac950 100644 --- a/src/util.rs +++ b/src/util.rs @@ -4,7 +4,7 @@ use std::ffi::{c_char, c_int}; use std::io; use std::net::{IpAddr, Ipv4Addr}; -use rsdsl_netlinklib::blocking::addr; +use rsdsl_netlinklib::blocking::Connection; /// Helper macro to execute a system call that returns an `io::Result`. macro_rules! syscall { @@ -27,8 +27,8 @@ pub fn format_client_id(client_id: &[u8]) -> Result<String> { .ok_or(Error::EmptyClientId) } -pub fn local_ip(link: String) -> Result<Ipv4Addr> { - addr::get(link.clone())? +pub fn local_ip(conn: &Connection, link: String) -> Result<Ipv4Addr> { + conn.address_get(link.clone())? .into_iter() .filter_map(|addr| { if let IpAddr::V4(v4) = addr { |