chore(deps): bump dependencies to latest and fix build failure with

`neli`
This commit is contained in:
Datong Sun 2025-08-22 08:02:44 -07:00
parent 869c79422f
commit 6a424fd43c
3 changed files with 402 additions and 190 deletions

528
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -127,7 +127,7 @@ pub fn build_tcp_packet(
ip_buf.freeze() ip_buf.freeze()
} }
pub fn parse_ip_packet(buf: &Bytes) -> Option<(IPPacket, tcp::TcpPacket)> { pub fn parse_ip_packet(buf: &Bytes) -> Option<(IPPacket<'_>, tcp::TcpPacket<'_>)> {
if buf[0] >> 4 == 4 { if buf[0] >> 4 == 4 {
let v4 = ipv4::Ipv4Packet::new(buf).unwrap(); let v4 = ipv4::Ipv4Packet::new(buf).unwrap();
if v4.get_next_level_protocol() != ip::IpNextHeaderProtocols::Tcp { if v4.get_next_level_protocol() != ip::IpNextHeaderProtocols::Tcp {

View File

@ -1,13 +1,14 @@
use neli::{ use neli::{
consts::{ consts::{
nl::{NlmF, NlmFFlags}, nl::NlmF,
rtnl::{Ifa, IfaFFlags, RtAddrFamily, Rtm}, rtnl::{Ifa, IfaF, RtAddrFamily, RtScope, Rtm},
socket::NlFamily, socket::NlFamily,
}, },
nl::{NlPayload, Nlmsghdr}, nl::{NlPayload, NlmsghdrBuilder},
rtnl::{Ifaddrmsg, Rtattr}, rtnl::{IfaddrmsgBuilder, RtattrBuilder},
socket::NlSocketHandle, socket::synchronous::NlSocketHandle,
types::RtBuffer, types::RtBuffer,
utils::Groups,
}; };
use std::net::{Ipv6Addr, SocketAddr}; use std::net::{Ipv6Addr, SocketAddr};
use tokio::net::UdpSocket; use tokio::net::UdpSocket;
@ -35,26 +36,37 @@ pub fn new_udp_reuseport(local_addr: SocketAddr) -> UdpSocket {
pub fn assign_ipv6_address(device_name: &str, local: Ipv6Addr, peer: Ipv6Addr) { pub fn assign_ipv6_address(device_name: &str, local: Ipv6Addr, peer: Ipv6Addr) {
let index = nix::net::if_::if_nametoindex(device_name).unwrap(); let index = nix::net::if_::if_nametoindex(device_name).unwrap();
let mut rtnl = NlSocketHandle::connect(NlFamily::Route, None, &[]).unwrap(); let rtnl = NlSocketHandle::connect(NlFamily::Route, None, Groups::empty()).unwrap();
let mut rtattrs = RtBuffer::new(); let mut rtattrs = RtBuffer::new();
rtattrs.push(Rtattr::new(None, Ifa::Local, &local.octets()[..]).unwrap()); rtattrs.push(
rtattrs.push(Rtattr::new(None, Ifa::Address, &peer.octets()[..]).unwrap()); RtattrBuilder::default()
.rta_type(Ifa::Local)
let ifaddrmsg = Ifaddrmsg { .rta_payload(&local.octets()[..])
ifa_family: RtAddrFamily::Inet6, .build()
ifa_prefixlen: 128, .unwrap(),
ifa_flags: IfaFFlags::empty(),
ifa_scope: 0,
ifa_index: index as i32,
rtattrs,
};
let nl_header = Nlmsghdr::new(
None,
Rtm::Newaddr,
NlmFFlags::new(&[NlmF::Request]),
None,
None,
NlPayload::Payload(ifaddrmsg),
); );
rtnl.send(nl_header).unwrap(); rtattrs.push(
RtattrBuilder::default()
.rta_type(Ifa::Address)
.rta_payload(&peer.octets()[..])
.build()
.unwrap(),
);
let ifaddrmsg = IfaddrmsgBuilder::default()
.ifa_family(RtAddrFamily::Inet6)
.ifa_prefixlen(128)
.ifa_flags(IfaF::empty())
.ifa_scope(RtScope::Universe)
.ifa_index(index)
.rtattrs(rtattrs)
.build()
.unwrap();
let nl_header = NlmsghdrBuilder::default()
.nl_type(Rtm::Newaddr)
.nl_flags(NlmF::REQUEST)
.nl_payload(NlPayload::Payload(ifaddrmsg))
.build()
.unwrap();
rtnl.send(&nl_header).unwrap();
} }