mirror of
https://github.com/dndx/phantun.git
synced 2025-08-28 02:47:27 +08:00
chore(deps): bump dependencies to latest and fix build failure with
`neli`
This commit is contained in:
parent
869c79422f
commit
6a424fd43c
528
Cargo.lock
generated
528
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -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 {
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user