add etcp_router service routing layer + remote TCP proxy (uip+socket via router)
etcp_router: routable service packets with dst/src node_id - etcp_router_bind/unbind: per-instance service handler registry - etcp_route_send: send to node by id via BGP routing - multi-hop forwarding through intermediate nodes - loopback optimization (dst==self dispatches directly) remote_proxy: exit node creating OS sockets on demand - handles CONNECT/DATA/CLOSE via etcp_router - non-blocking socket connect with uasync callbacks - echo back response data to requesting node tcp_proxy: etcp_transport for remote proxy - via_node_id in mapping selects between sock/etcp transport - unified handler for both tcp_proxy and remote_proxy roles - config: forward = port -> ip:port via NODE_HEX [remote_proxy] section tests: test_etcp_router (20 pkts bidirectional), test_remote_proxy (echo)
This commit is contained in:
1 parent
5e834b519f
commit
9869cf66f1
15 files changed
+1997
-6
No files matched your search
@@ -82,6 +82,14 @@ struct CFG_ALLOWED_KEY {
|
||||
struct CFG_ALLOWED_KEY *next;
|
||||
};
|
||||
|
||||
#define MAX_TCP_PROXY_MAPPINGS 32
|
||||
struct tcp_proxy_mapping_config {
|
||||
uint16_t local_port;
|
||||
char remote_ip[64];
|
||||
uint16_t remote_port;
|
||||
uint64_t via_node_id; // 0=локальный прокси, !=0=удаленный прокси через эту ноду
|
||||
};
|
||||
|
||||
struct global_config {
|
||||
char name[16]; // Instance name
|
||||
char my_private_key_hex[MAX_KEY_LEN];
|
||||
@@ -143,6 +151,18 @@ struct global_config {
|
||||
uint16_t external_port;
|
||||
} nat_forwards[MAX_NAT_FORWARDS];
|
||||
int nat_forward_count;
|
||||
|
||||
// TCP proxy configuration ([tcp_proxy] section)
|
||||
int tcp_proxy_enabled;
|
||||
char tcp_proxy_tun_name[16];
|
||||
char tcp_proxy_tun_ip[64];
|
||||
int tcp_proxy_mtu;
|
||||
int tcp_proxy_eim_timeout;
|
||||
struct tcp_proxy_mapping_config tcp_proxy_mappings[MAX_TCP_PROXY_MAPPINGS];
|
||||
int tcp_proxy_mapping_count;
|
||||
|
||||
// Remote proxy (exit node) configuration ([remote_proxy] section)
|
||||
int remote_proxy_enabled;
|
||||
};
|
||||
|
||||
struct utun_config {
|
||||
|
||||
Reference in new issue
Block a user