Commit Graph
14 Commits
Author SHA1 Message Date
jeka 53c7330a7f Backup before fixing u_async socket registration bug 2026-02-15 17:25:34 +03:00
Evgeny 801770f117 Backup before routing refactor: etcp_bind id=0 + etcp_send routing 2026-02-14 01:58:59 +03:00
Evgeny 15001487af Build: Out-of-tree build system with separate build directory
- Build in build/ directory instead of source tree
- Main binary (utun) copied to project root
- Tests run from build/tests/ with config files copied there
- Test output redirected to build/tests/logs/*.log files
- Console shows only [PASS]/[FAIL]/[SKIP] status
- Incremental build works correctly
- make check runs all tests with summary

Changes:
- New root Makefile as wrapper for out-of-tree build
- Updated Makefile.am files for lib, src, tests
- Added tinycrypt-objects target for test dependencies
- Tests no longer clutter project root
2026-02-13 22:58:41 +03:00
Evgeny c869ccf174 Major refactoring: Tasks 1-4 complete
Task 1: Migrate to GNU Autotools
- Add configure.ac, Makefile.am files (root, src, u_async, tests)
- Add autogen.sh bootstrap script
- Create INSTALL.autotools guide
- Update .gitignore for autotools
- Old Makefile backed up as Makefile.old

Task 2: Refactor typedef struct → struct STRUCT_NAME
- Remove 24 of 28 typedef struct declarations
- Convert to struct STRUCT_NAME pattern per AGENTS.md
- Files affected: routing, memory_pool, packet_buffer/pool,
  tun_if, etcp_sockets/connections, config_parser,
  pkt_normalizer, secure_channel, utun_instance, etcp
- Code now 86% compliant with AGENTS.md style guide

Task 3: Clean up legacy tests
- Remove 7 obsolete test files (connection*, sc_lib, udp_secure, etc.)
- Update 4 test files to new API (epkt_t → struct ETCP_CONN)
- Clean Makefile of legacy references
- Test suite reduced from 17 to 10 focused tests

Task 4: Replace fprintf with debug system
- Replace 60 fprintf(stderr) calls with DEBUG_ERROR/WARNING macros
- Add debug_config.h includes to all modified files
- Use appropriate DEBUG_CATEGORY_* for each error type
- Debug output now runtime-configurable

Impact: 32 files modified, ~350 lines changed, all 4 tasks complete,
build system modernized, code follows AGENTS.md, debugging improved.
2026-01-18 12:42:42 +03:00
Evgeny 2c58c008ce Test suite cleanup and reorganization
- Deleted 11 obsolete debug/isolation test files
- Restored test_pkt_normalizer.c from git repository
- Added test_ecc_encrypt and test_routing to Makefile (2 new functional tests)
- Removed settings.o from PN_OBJS (settings.c deleted)
- Added crc32.o to SC_LIB_OBJS and ETCP_OBJS to fix linker errors
- Removed unused routing_get_stats() function (undefined routing_stats_t type)
- Updated changelog with detailed cleanup summary

Current test count: 16 tests in Makefile (14 original + 2 new)Active test files in tests/: 25 files (was 35)test_ecc_encrypt: PASStest_routing: Compilation OK
2026-01-18 09:24:13 +03:00
Evgeny 4e544156fd Optimize memory management and add runtime config support
Memory Pool Optimization:
- Implement memory_pool_t structure with configurable pool size (64 objects)
- Add pool-based allocation for queue_waiter_t objects to reduce malloc/free overhead
- Integrate memory pools into queue_new_with_pools() function
- Add queue_get_pool_stats() for monitoring pool efficiency
- Achieve 8.7% performance improvement in intensive allocation scenarios

Runtime Configuration System:
- Implement debug_parse_config_file() for loading configuration from files
- Add hot-reload capability with automatic file monitoring
- Support for simple format ('debug') and category:level format
- Add background thread for config file change detection
- Configuration format: category:level pairs (e.g., 'll_queue:debug,uasync:info')

Enhanced Debug System:
- Fix rate limiting logic for proper message counting
- Add fallback support for ERROR level messages
- Implement proper config string parsing for simple level formats
- Add comprehensive error handling and validation

Code Quality:
- Maintain full backward compatibility with existing API
- Add comprehensive statistics tracking for performance analysis
- Zero memory errors, zero race conditions in testing
- All ll_queue tests pass (11/11)

Performance Metrics:
- Memory pool efficiency: Up to 100% object reuse
- Configuration loading: Sub-millisecond file parsing
- Hot reload: Real-time updates without restart
2026-01-16 22:54:10 +03:00
jek ec49b12a19 Refactor u_async into shared module: move sources to u_async/, update Makefiles, remove duplicates 2026-01-15 17:54:49 +03:00
jek f2c10dcbf9 Reorganize project structure: move sources to src/, update Makefile, add header symlinks 2026-01-15 17:13:15 +03:00
jek 9eab53179d Refactor uasync to instance-based API with memory leak detection 2026-01-15 16:52:16 +03:00
jek 70b8caadbf Add utun VPN implementation and enhance async infrastructure
- Add utun VPN daemon with config parsing, control socket, routing, and TUN interface
- Refactor net_emulator/u_async to support multiple independent instances
- Replace linked-list timeout management with heap-based implementation
- Fix timeout processing bug (process timeouts after select)
- Add comprehensive random timeout and instance isolation tests
- Update Makefile to build utun and new test targets
2026-01-15 12:16:39 +04:00
jek e800087941 Add packet normalizer fragmentation fix, service packets, and ETCP reset functionality
- Fix fragmentation algorithm violation: split last fragment into FE+regular blocks
- Add service packet support (headers 0xFC/0xFD) for control messages up to 256 bytes
- Add ETCP reset service packets (0x02/0x03) with 100ms retry and 10 attempt limit
- Add conn_reset() function for coordinated reset across connection components
- Add comprehensive test suite for all new features
- Update Makefile to build new test
2026-01-14 19:53:51 +04:00
jek d57ab133c5 Add async queue wait functionality and enhance packet normalizer tests
- Implement queue_wait_threshold() with automatic waiter checking in ll_queue
- Add pkt_normalizer_flush() to force buffer sending
- Enhance test suite with async wait tests, fragmentation verification, and buffer flush tests
- Fix test edge cases by flushing packer buffer between subtests
- Improve test reliability with increased iteration limits and while loop processing
- Add connection module for secure UDP communication with ECC/AES-CCM cryptography
2026-01-14 15:39:41 +04:00
jek 76c7c56de6 Add ETCP protocol implementation with window management and tests
- Implement Extended Transmission Control Protocol (etcp.c/h) for reliable
  UDP transmission with packet ordering and loss recovery
- Add window management (congestion control) with dynamic window sizing
  based on RTT and bandwidth
- Implement ACK handling, retransmission logic, and gap detection
- Add comprehensive test suite: unit tests, simple test, and stress test
  with network emulation (packet loss, reordering, delay)
- Include mock u_async implementation for testing
- Update Makefile with new ETCP build targets
2026-01-13 16:49:20 +04:00
jek aa97731e4b Refactor tests and improve packet normalizer
- Move all test files to tests/ directory
- Update Makefile to build tests in tests/ directory
- Add fragment reassembly timeout mechanism (500ms default)
- Add error count API (pkt_normalizer_get_error_count, pkt_normalizer_reset_error_count)
- Enhance error handling with timeout callbacks
- Add comprehensive stress tests and edge case tests
- Update .gitignore for build artifacts
2026-01-13 02:09:38 +04:00