Skip to main content

arcbox_proxy/
lib.rs

1//! Proxy egress and inbound relay for the ArcBox datapath.
2//!
3//! Transport-agnostic building blocks that turn classified guest/host frames
4//! into real network I/O, with no VM/VirtIO/device dependency:
5//!
6//! - [`socks5`] — all SOCKS5 (RFC 1928): the shared address codec, the CONNECT
7//!   tunnel client ([`socks5::connect_via_socks5`]), and the UDP-ASSOCIATE client
8//!   ([`socks5::Socks5UdpAssociation`]), connecting by hostname so Fake-IP
9//!   destinations resolve on the proxy's side.
10//! - [`http_connect`] — the HTTP CONNECT tunnel client.
11//! - [`egress`] — proxies guest UDP/ICMP through real host sockets (bypassing
12//!   kernel routing / VPN interference), optionally via the SOCKS5 proxy, and
13//!   dispatches inbound datagrams through the [`inbound_relay`].
14//! - [`inbound_relay`] — host → guest port forwarding by injecting crafted L2
15//!   frames, plus the listener manager and `InboundCommand` channel.
16//!
17//! Extracted from `arcbox-net` so a host-level proxy can reuse the same egress
18//! and relay machinery as the VM datapath.
19
20pub mod egress;
21pub mod http_connect;
22pub mod inbound_relay;
23pub mod socks5;