mirror of
https://github.com/edera-dev/krata.git
synced 2025-08-05 14:11:32 +00:00
network: cleanup NAT code and start on IPv6 support
This commit is contained in:
@ -3,11 +3,11 @@ use async_trait::async_trait;
|
||||
use log::warn;
|
||||
|
||||
use tokio::sync::mpsc::channel;
|
||||
use tokio::sync::mpsc::Sender;
|
||||
|
||||
use crate::nat::NatHandlerContext;
|
||||
use crate::proxynat::udp::ProxyUdpHandler;
|
||||
|
||||
use crate::nat::{NatHandler, NatHandlerFactory, NatKey, NatKeyProtocol};
|
||||
use crate::nat::{NatHandler, NatHandlerFactory, NatKeyProtocol};
|
||||
|
||||
use self::icmp::ProxyIcmpHandler;
|
||||
|
||||
@ -30,18 +30,13 @@ impl ProxyNatHandlerFactory {
|
||||
|
||||
#[async_trait]
|
||||
impl NatHandlerFactory for ProxyNatHandlerFactory {
|
||||
async fn nat(
|
||||
&self,
|
||||
key: NatKey,
|
||||
tx_sender: Sender<Vec<u8>>,
|
||||
reclaim_sender: Sender<NatKey>,
|
||||
) -> Option<Box<dyn NatHandler>> {
|
||||
match key.protocol {
|
||||
async fn nat(&self, context: NatHandlerContext) -> Option<Box<dyn NatHandler>> {
|
||||
match context.key.protocol {
|
||||
NatKeyProtocol::Udp => {
|
||||
let (rx_sender, rx_receiver) = channel::<Vec<u8>>(4);
|
||||
let mut handler = ProxyUdpHandler::new(key, rx_sender);
|
||||
let mut handler = ProxyUdpHandler::new(rx_sender);
|
||||
|
||||
if let Err(error) = handler.spawn(rx_receiver, tx_sender, reclaim_sender).await {
|
||||
if let Err(error) = handler.spawn(context, rx_receiver).await {
|
||||
warn!("unable to spawn udp proxy handler: {}", error);
|
||||
None
|
||||
} else {
|
||||
@ -51,9 +46,9 @@ impl NatHandlerFactory for ProxyNatHandlerFactory {
|
||||
|
||||
NatKeyProtocol::Icmp => {
|
||||
let (rx_sender, rx_receiver) = channel::<Vec<u8>>(4);
|
||||
let mut handler = ProxyIcmpHandler::new(key, rx_sender);
|
||||
let mut handler = ProxyIcmpHandler::new(rx_sender);
|
||||
|
||||
if let Err(error) = handler.spawn(rx_receiver, tx_sender, reclaim_sender).await {
|
||||
if let Err(error) = handler.spawn(context, rx_receiver).await {
|
||||
warn!("unable to spawn icmp proxy handler: {}", error);
|
||||
None
|
||||
} else {
|
||||
|
Reference in New Issue
Block a user