From 56ac8740b79e291eabe6427d722921533b3a9837 Mon Sep 17 00:00:00 2001 From: diogo464 Date: Sun, 15 Feb 2026 22:05:57 +0000 Subject: updated dependencies --- src/lib.rs | 97 ++++++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 59 insertions(+), 38 deletions(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index c47d618..8ba36eb 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -3,18 +3,18 @@ mod key; mod setup; mod view; -use std::borrow::Cow; +use std::{ + borrow::Cow, + net::{Ipv4Addr, Ipv6Addr}, +}; use futures::{StreamExt, TryStreamExt}; use genetlink::{GenetlinkError, GenetlinkHandle}; use netlink_packet_core::{NetlinkMessage, NetlinkPayload, NLM_F_ACK, NLM_F_DUMP, NLM_F_REQUEST}; use netlink_packet_generic::GenlMessage; -use netlink_packet_route::{ - link::{InfoKind, LinkAttribute, LinkInfo}, - route::RouteScope, -}; -use netlink_packet_wireguard::{nlas::WgDeviceAttrs, Wireguard, WireguardCmd}; -use rtnetlink::Handle; +use netlink_packet_route::{link::LinkAttribute, route::RouteScope}; +use netlink_packet_wireguard::{WireguardAttribute, WireguardCmd, WireguardMessage}; +use rtnetlink::{Handle, LinkMessageBuilder, LinkSetRequest, LinkWireguard, RouteMessageBuilder}; pub use conf::*; pub use key::*; @@ -149,9 +149,9 @@ impl WireGuard { } pub async fn view_device(&mut self, device_name: &str) -> Result { - let genlmsg: GenlMessage = GenlMessage::from_payload(Wireguard { + let genlmsg: GenlMessage = GenlMessage::from_payload(WireguardMessage { cmd: WireguardCmd::GetDevice, - nlas: vec![WgDeviceAttrs::IfName(device_name.to_string())], + attributes: vec![WireguardAttribute::IfName(device_name.to_string())], }); let mut nlmsg = NetlinkMessage::from(genlmsg); nlmsg.header.flags = NLM_F_REQUEST | NLM_F_DUMP; @@ -213,7 +213,7 @@ impl WireGuard { } let message = descriptor.into_wireguard(device_name.to_string()); - let genlmsg: GenlMessage = GenlMessage::from_payload(message); + let genlmsg: GenlMessage = GenlMessage::from_payload(message); let mut nlmsg = NetlinkMessage::from(genlmsg); nlmsg.header.flags = NLM_F_REQUEST | NLM_F_ACK; @@ -225,16 +225,12 @@ impl WireGuard { } async fn link_create(&self, name: &str) -> Result<()> { - let mut msg = self.rt_handle.link().add().replace(); - msg.message_mut() - .attributes - .push(LinkAttribute::LinkInfo(vec![LinkInfo::Kind( - InfoKind::Wireguard, - )])); - msg.message_mut() - .attributes - .push(LinkAttribute::IfName(name.to_string())); - msg.execute().await?; + self.rt_handle + .link() + .add(LinkMessageBuilder::::new(name).build()) + .replace() + .execute() + .await?; Ok(()) } @@ -245,13 +241,31 @@ impl WireGuard { async fn link_up(&self, ifindex: u32) -> Result<()> { tracing::trace!("Bringing up interface {}", ifindex); - self.rt_handle.link().set(ifindex).up().execute().await?; + self.rt_handle + .link() + .set( + LinkMessageBuilder::::default() + .index(ifindex) + .up() + .build(), + ) + .execute() + .await?; Ok(()) } async fn link_down(&self, ifindex: u32) -> Result<()> { tracing::trace!("Bringing down interface {}", ifindex); - self.rt_handle.link().set(ifindex).down().execute().await?; + self.rt_handle + .link() + .set( + LinkMessageBuilder::::default() + .index(ifindex) + .down() + .build(), + ) + .execute() + .await?; Ok(()) } @@ -314,30 +328,37 @@ impl WireGuard { #[allow(unused)] async fn route_add(&self, ifindex: u32, net: ipnet::IpNet) -> Result<()> { tracing::trace!("Adding route {} to {}", net, ifindex); - let request = self - .rt_handle - .route() - .add() - .scope(RouteScope::Link) - .output_interface(ifindex) - .replace(); match net.addr() { std::net::IpAddr::V4(ip) => { - request - .v4() - .destination_prefix(ip, net.prefix_len()) + self.rt_handle + .route() + .add( + RouteMessageBuilder::::default() + .scope(RouteScope::Link) + .output_interface(ifindex) + .destination_prefix(ip, net.prefix_len()) + .build(), + ) + .replace() .execute() - .await + .await?; } std::net::IpAddr::V6(ip) => { - request - .v6() - .destination_prefix(ip, net.prefix_len()) + self.rt_handle + .route() + .add( + RouteMessageBuilder::::default() + .scope(RouteScope::Link) + .output_interface(ifindex) + .destination_prefix(ip, net.prefix_len()) + .build(), + ) + .replace() .execute() - .await + .await?; } - }?; + }; Ok(()) } -- cgit