|
|
@ -9,6 +9,7 @@ use mio::{Events, Interest, Poll, Token}; |
|
|
use smoltcp::iface::{Config, Interface, SocketHandle, SocketSet}; |
|
|
use smoltcp::iface::{Config, Interface, SocketHandle, SocketSet}; |
|
|
use smoltcp::phy::{Device, Medium, RxToken, TunTapInterface, TxToken}; |
|
|
use smoltcp::phy::{Device, Medium, RxToken, TunTapInterface, TxToken}; |
|
|
use smoltcp::socket::tcp::State; |
|
|
use smoltcp::socket::tcp::State; |
|
|
|
|
|
use smoltcp::socket::udp::UdpMetadata; |
|
|
use smoltcp::socket::{tcp, udp}; |
|
|
use smoltcp::socket::{tcp, udp}; |
|
|
use smoltcp::time::Instant; |
|
|
use smoltcp::time::Instant; |
|
|
use smoltcp::wire::{IpCidr, IpProtocol, Ipv4Packet, Ipv6Packet, TcpPacket, UdpPacket}; |
|
|
use smoltcp::wire::{IpCidr, IpProtocol, Ipv4Packet, Ipv6Packet, TcpPacket, UdpPacket}; |
|
|
@ -291,7 +292,7 @@ impl<'a> TunToProxy<'a> { |
|
|
let mut virt = VirtualTunDevice::new(tun.capabilities()); |
|
|
let mut virt = VirtualTunDevice::new(tun.capabilities()); |
|
|
let gateway4: Ipv4Addr = Ipv4Addr::from_str("0.0.0.1")?; |
|
|
let gateway4: Ipv4Addr = Ipv4Addr::from_str("0.0.0.1")?; |
|
|
let gateway6: Ipv6Addr = Ipv6Addr::from_str("::1")?; |
|
|
let gateway6: Ipv6Addr = Ipv6Addr::from_str("::1")?; |
|
|
let mut iface = Interface::new(config, &mut virt); |
|
|
let mut iface = Interface::new(config, &mut virt, Instant::now()); |
|
|
iface.update_ip_addrs(|ip_addrs| { |
|
|
iface.update_ip_addrs(|ip_addrs| { |
|
|
ip_addrs.push(IpCidr::new(gateway4.into(), 0)).unwrap(); |
|
|
ip_addrs.push(IpCidr::new(gateway4.into(), 0)).unwrap(); |
|
|
ip_addrs.push(IpCidr::new(gateway6.into(), 0)).unwrap() |
|
|
ip_addrs.push(IpCidr::new(gateway6.into(), 0)).unwrap() |
|
|
@ -576,7 +577,10 @@ impl<'a> TunToProxy<'a> { |
|
|
let dst = SocketAddr::try_from(dst)?; |
|
|
let dst = SocketAddr::try_from(dst)?; |
|
|
socket.bind(dst)?; |
|
|
socket.bind(dst)?; |
|
|
socket |
|
|
socket |
|
|
.send_slice(response.as_slice(), resolved_conn.src.into()) |
|
|
.send_slice( |
|
|
|
|
|
response.as_slice(), |
|
|
|
|
|
UdpMetadata::from(resolved_conn.src), |
|
|
|
|
|
) |
|
|
.expect("failed to send DNS response"); |
|
|
.expect("failed to send DNS response"); |
|
|
let handle = self.sockets.add(socket); |
|
|
let handle = self.sockets.add(socket); |
|
|
self.expect_smoltcp_send()?; |
|
|
self.expect_smoltcp_send()?; |
|
|
|