Evgeny
2d516bf16e
fix route_bgp etcp_send leaks and etcp_socket_remove infinite loop on link->conn==NULL
5 months ago
Evgeny
6c2aeb69a1
fix INIT bounds checks and eim_nat port uint16_t wrap
5 months ago
Evgeny
d6c6ca9eb3
fix route_bgp/route_ping: old paths queue leak, etcp_send fail leak, nat_check_arg leak on cancel
5 months ago
Evgeny
5aa9bdbd64
fix pkt_normalizer: null deref on alloc fail, mtu underflow, unchecked pn_buf_renew in loop
5 months ago
Evgeny
194c8398c1
fix ETCP: dgram leak on inflight pool exhaustion, cancel dangling timers on link close/new
5 months ago
Evgeny
4d5afe5ae9
fix uasync: posted_tasks delivery on Linux, create cleanup leaks, atomic array expand
5 months ago
Evgeny
06b94d37e8
add audit findings document (51 issues across 12 modules)
5 months ago
Evgeny
1a4b0a9de6
fix stale pointer after realloc in uasync socket/event handlers
5 months ago
Evgeny
f18037ece2
add 16-bit seq to TCP proxy DATA for loss/duplicate detection
5 months ago
Evgeny
b829ff7001
fix use-after-free in tests: swap queue_entry_free/queue_dgram_free order, fix dangling timer handles and stack args; add ETCP MTU bounds, assembly overflow check, etcp_update_mtu
5 months ago
Evgeny
60cebb2535
fix TCP data stall: feed transport_to_uip on ETCP recv, tcp_poll interval 0→2 for close detection
5 months ago
Evgeny
3258a64df4
add periodic cleanup timers for ICMP pending requests and UDP flows
5 months ago
Evgeny
cec736a4b0
redesign TCP close: closing_tun/closing_rem flags, poll-driven cleanup, proper half-close
5 months ago
Evgeny
238fb0eb23
fix remote_proxy: cleanup socket on EOF/error/connect-fail to prevent infinite callback loop
5 months ago
Evgeny
f1bd65f450
fix lwIP TCP checksums on LE: remove htons from pseudo-header sum, add htons to return values
5 months ago
Evgeny
f85f2f20fb
fix tcp_pseudo_checksum: add ntohs() to correctly extract 16-bit IP halfwords from NBO on LE
5 months ago
Evgeny
b1e50c2838
fix tcp_proxy_ensure_outbound_listen: pass network byte order port to tcp_bind
5 months ago
Evgeny
76e916f94d
add transparent outbound TCP proxying: dynamic listen on unknown ports, fwd to exit
5 months ago
Evgeny
01cf7f67b6
fix TCP close: properly close lwIP pcb on both sides, fix use-after-free, add poll close path
5 months ago
Evgeny
c396b91fde
fix missing IP checksum in icmp/udp deliver_reply, fix udp output_queue->input_queue
5 months ago
Evgeny
889f6d5c3a
fix icmp_proxy: write reply to input_queue (not output_queue) to reach TUN device
5 months ago
Evgeny
13d469d866
add orig_src_ip to ICMP proxy protocol, fix deliver_reply dst_ip (was wrong tun_ip_addr)
5 months ago
Evgeny
67d57c9751
add etcp_router INFO logs for ICMP_PROXY reply path (send+deliver)
5 months ago
Evgeny
02c7153822
add icmp_proxy diagnostic logging on all reply path stages
5 months ago
Evgeny
07540b7ff8
fix icmp: use SOCK_RAW for FreeBSD compat, add socket diagnostic logging
5 months ago
Evgeny
d00996243d
fix lwip_tcp_priv.h: use #ifndef _WIN32 for arpa/inet.h (FreeBSD compat)
5 months ago
Evgeny
edeb83ce89
replace fake ICMP echo reply with test_loopback flag, honest error when no raw socket
5 months ago
Evgeny
d3b6057f82
add framed read for raw fd (2-byte len prefix), TCP_NODELAY, fix test half-close ordering
5 months ago
Evgeny
d0af315ff6
fix uasync set_timeout(0) ordering, dummynet shaper initial delay, add tests
...
- uasync_set_timeout(0): use FIFO immediate_queue instead of timeout_heap
to guarantee execution AFTER all currently-expired heap timers
- uasync_cancel_timeout: search immediate_queue for timeout=0 timers
- dummynet: start initial shaper with bandwidth-based delay instead of 0
(prevents queue from never filling up when packets arrive sequentially)
- test_dummynet: rename get_time_us -> now_us (conflict with u_async.h)
- test_u_async_comprehensive: fix immediate_timeouts, add timeout_ordering test
5 months ago
Evgeny
ad8bc0ae00
fix lwip_tcp port byte order (double-htons), mapping lookup, socket error handling
...
- Fix port encoding: PCB stores ports in host byte order, tcp_create_segment uses htons
- Fix tcp_bind/tcp_connect: ntohs incoming network-order ports
- Fix demux comparisons: use host-order sport/dport statics instead of in-place ntohs
- Fix tcp_output_alloc_header_common: htons for port output
- Add static sport/dport variables (host byte order) to avoid tcphdr corruption
- Fix sock_transport_error_callback: handle EPOLLERR during non-blocking connect
- Fix mapping local_port: store host-order port for find_mapping_by_port
- Fix tcp_proxy_raw_read/tun_input: use IP total length for packet boundaries
- test_tcp_proxy: reduce size to 2KB, fix port, add debug_init, add echo server log
- test_tcp_proxy handshake and basic data flow now working (known: cwnd/poll throughput tuning needed)
5 months ago
Evgeny
c05e1c9991
replace uIP with adapted lwIP TCP stack (lwip_tcp)
...
- Replace uIP (src/uip/) with adapted lwIP 2.1.x TCP module
- Remove original src/lwip/ (replaced by src/lwip_tcp/)
- New src/lwip_tcp/ module: lwip_pbuf, lwip_tcp core/in/out
- Full TCP state machine, sliding window, congestion control
- Fast retransmit/recovery, Van Jacobson RTT estimation
- Nagle algorithm (TF_NODELAY), delayed ACK
- OOSEQ reassembly, TIME-WAIT handling
- Memory: memory_pool for PCB, listen PCB, tcp_seg
- Timers: uasync periodic timer drives fast/slow timers
- Output: callback-based IP packet output (TUN/raw-fd)
- Error codes: LERR_ prefix to avoid conflicts
- pbuf: simplified PBUF_RAM with proper header space reservation
- Integrate into tcp_proxy.c/h with per-pcb callbacks
- Active connection API: struct proxy_conn* instead of int conn_idx
- Makefile: remove uip, add lwip_tcp files
- test_tcp_proxy updated for new API; test_tcp_proxy_remote disabled
- Known: test_tcp_proxy data transfer needs flow tuning (WIP)
5 months ago
Evgeny
a6311a17d0
add UDP/ICMP proxy, refactor tcp_proxy via_node to instance-level
...
- UDP proxy: datagram relay client↔exit over ETCP
- ICMP proxy: echo ping relay client↔exit over ETCP
- Move via_node_id from per-forward-mapping to global tcp_proxy setting
- Support multiple concurrent tcp_proxy instances (no singleton g_tcp_proxy)
- Cap handshake padding to stay within 1472+overhead
- Handle non-TCP packets (UDP/ICMP) in tcp_proxy raw/tun input paths
- Add utun_instance_create_from_str() for test config creation
5 months ago
Evgeny
9b59415f83
add tcp_proxy and remote_proxy sections to sample config
5 months ago
Evgeny
17e95cc2a3
fix remaining pointer-sign warnings in sc_set_peer_public_key callers
5 months ago
Evgeny
68f4ae12c8
fix all compiler warnings: array-bool, pointer-sign, tautological, unsequenced
5 months ago
Evgeny
a0e5446790
migrate NAT and DATA to etcp_router, fix warnings and destroy order
5 months ago
Evgeny
2611a05d81
revert unnecessary return -1 in void-test ASSERT macros; only test_bgp_route_exchange uses ASSERT in int main()
5 months ago
Evgeny
fcb6a59ca9
fix ASSERT macros: return -1 instead of bare return in int main() (FreeBSD -Wreturn-mismatch)
5 months ago
Evgeny
075d97a459
fix .gitignore: stop ignoring test_*.c source files; add missing test_ipv6_sockets, test_tcp_proxy, test_radix, test_route6_lib sources
5 months ago
Evgeny
c24a6367cc
add IPv6 default route interface auto-detection for permanent/temporary IPv6 without netif
...
- get_default_route_netif_index(): UDP connect trick + getifaddrs to find default route iface
- etcp_socket_add(): auto-detect netif_index when not specified in config
- queue_new() API: explicit index_offset/index_size params instead of implicit from hash_size
- radix: cleanup types (uint8_t*), replace bzero/bcmp with memset/memcmp, remove kernel ifdefs
- route6_lib: new IPv6 routing library + get_node_v6_routes()
5 months ago
Charlie Root
e1f051856f
radix
5 months ago
Evgeny
2565e8d008
add uIP TCP/IP stack (minimal — only files needed for tcp_proxy build)
5 months ago
Evgeny
9869cf66f1
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)
5 months ago
Evgeny
5e834b519f
mass_update: log all sessions to files, terminal output only for errors
5 months ago
Evgeny
171e70a810
add inflight data return to normalizer on reinit + configurable inflight min/max limits + test
5 months ago
Evgeny
dea3a39598
fix: reconnect test — cancel timers in conn_reset, add init_timer cancel on link_state=3, add reinit resilience to test
...
- etcp_conn_reset: cancel retrans_timer/ack_resp_timer via uasync_cancel_timeout
before nulling (was leaking timer handles, confirmed by 'Timer leak: diff')
- etcp_connections: cancel link->init_timer explicitly when link_state becomes 3
on both client and server INIT_RESPONSE paths (prevents spurious INIT after
connection is established that could trigger cascading reinits)
- etcp_connections: remove duplicate conn->session_id assignment in new conn path
(session_id is set later via conn_reinit flow)
- pkt_normalizer: resume output queue callback after pn_reset
- Add test_etcp_reconnect with reinit detection — monitors conn->reinit_count
and restarts data transfer if reinit occurs during active phase
- Add etcp_dump.c/h — ETCP connection state dump utility for debugging
5 months ago
Evgeny
0f8df44b2b
build: out-of-tree VPATH build, tests run once with colored timing
...
- Root Makefile: hand-written bootstrap delegating to build/
- Makefile.am: simplified to SUBDIRS + clean-local
- build.sh: delegates to make, autoreconf only
- tests: removed duplicate TESTS run, added colored [PASS]/[FAIL]/[SKIP] with timing
- .gitignore: added /build/ for out-of-tree artifacts
Result: 0 .o files in source dirs, 29/29 tests pass
5 months ago
Evgeny
d0d4199273
etcp: unified send hook via etcp_udp_send, remove loss_rate, add dummynet_filter inline mode, rewrite BGP test
...
- Add etcp_udp_send_fn_t hook typedef, send_hook/send_hook_ctx fields to ETCP_LINK
- Implement etcp_udp_send() wrapper — all UDP sends go through one point
- Remove loss_rate from ETCP_SOCKET, CFG_SERVER, config parser, send path
- Add dummynet_filter: inline send-hook with loss/delay, no proxy socket needed
- Rewrite test_bgp_route_exchange: 3-node chain A(2 links)↔B↔C, 7 phases
with dummynet_filter-based link failure/recovery simulation
- Clean up tests: remove skeleton test_routing_mesh, 6 debug/stale test files
- Refactor test_etcp_simple_traffic and test_pkt_normalizer_etcp (remove debug spam)
- Fix test_etcp_two_instances: remove private field access, fix false PASS on timeout
5 months ago
Evgeny
e7c32d9ac1
1
5 months ago
Evgeny
7d03749522
1
5 months ago