add support for Udp interface

This commit is contained in:
Seb Kuzminsky 2025-12-01 14:20:31 -07:00
parent d9f6b53fa6
commit b5c94b562e

View file

@ -6,6 +6,7 @@ use serde::{Deserialize, Serialize};
// RETICULUM INCLUDES // RETICULUM INCLUDES
use reticulum::iface::tcp_client::TcpClient; use reticulum::iface::tcp_client::TcpClient;
use reticulum::iface::tcp_server::TcpServer; use reticulum::iface::tcp_server::TcpServer;
use reticulum::iface::udp::UdpInterface;
use reticulum::transport::{Transport, TransportConfig}; use reticulum::transport::{Transport, TransportConfig};
#[derive(Serialize, Deserialize, Debug, Clone)] #[derive(Serialize, Deserialize, Debug, Clone)]
@ -18,10 +19,17 @@ struct TcpClientConfig {
bind_addr: String, bind_addr: String,
} }
#[derive(Serialize, Deserialize, Debug, Clone)]
struct UdpConfig {
bind_addr: String,
forward_addr: Option<String>,
}
#[derive(Serialize, Deserialize, Debug, Clone)] #[derive(Serialize, Deserialize, Debug, Clone)]
enum InterfaceConfig { enum InterfaceConfig {
TcpServer(TcpServerConfig), TcpServer(TcpServerConfig),
TcpClient(TcpClientConfig), TcpClient(TcpClientConfig),
Udp(UdpConfig),
} }
#[derive(Serialize, Deserialize, Debug, Clone)] #[derive(Serialize, Deserialize, Debug, Clone)]
@ -70,6 +78,12 @@ async fn main() {
.await .await
.spawn(TcpClient::new(cfg.bind_addr), TcpClient::spawn); .spawn(TcpClient::new(cfg.bind_addr), TcpClient::spawn);
} }
InterfaceConfig::Udp(cfg) => {
let _ = transport.iface_manager().lock().await.spawn(
UdpInterface::new(cfg.bind_addr, cfg.forward_addr),
UdpInterface::spawn,
);
}
} }
} }