atm0s_sdn_virtual_socket/
lib.rs1use std::{
2 net::{SocketAddr, SocketAddrV4},
3 sync::Arc,
4};
5
6use atm0s_sdn_identity::NodeId;
7use atm0s_sdn_router::RouterTable;
8use behavior::VirtualSocketBehavior;
9
10pub(crate) const VIRTUAL_SOCKET_SERVICE_ID: u8 = 6;
11
12mod behavior;
13mod handler;
14#[cfg(feature = "quinn")]
15mod quinn_utils;
16mod vnet;
17
18#[cfg(feature = "quinn")]
19pub use quinn;
20#[cfg(feature = "quinn")]
21pub use quinn_utils::{make_insecure_quinn_client, make_insecure_quinn_server};
22pub use vnet::{udp_socket::VirtualUdpSocket, VirtualNet, VirtualNetError, VirtualSocketPkt};
23
24pub fn create_vnet(node_id: NodeId, router: Arc<dyn RouterTable>) -> (VirtualSocketBehavior, vnet::VirtualNet) {
25 let (net, interal) = vnet::VirtualNet::new(node_id, router);
26 let behavior = VirtualSocketBehavior::new(interal);
27 (behavior, net)
28}
29
30pub fn vnet_addr_v4(node_id: NodeId, port: u16) -> SocketAddrV4 {
31 SocketAddrV4::new(node_id.into(), port)
32}
33
34pub fn vnet_addr(node_id: NodeId, port: u16) -> SocketAddr {
35 SocketAddr::V4(vnet_addr_v4(node_id, port))
36}