#ifndef UTUN_INSTANCE_H #define UTUN_INSTANCE_H #include #include #include #include "../lib/memory_pool.h" #include "secure_channel.h" #include "tun_if.h" // Forward declarations struct utun_config; struct uasync_s; struct routing_table; struct ETCP_CONN; struct ETCP_SOCKET; // uTun instance configuration struct UTUN_INSTANCE { // Configuration (moved from utun_state) struct utun_config *config; // TUN interface struct tun_config tun; void *tun_socket_id; // Socket ID from uasync_add_socket // Identification uint64_t node_id; struct SC_MYKEYS my_keys; // Main async context struct UASYNC* ua; // State int running; FILE *log_fp; struct memory_pool* pkt_pool; // Routing struct routing_table *routing_table; // Connections struct ETCP_CONN* connections;// linked-list int connections_count; // Number of connections // Active sockets struct ETCP_SOCKET* etcp_sockets;// linked-list }; // Instance creation flags #define UTUN_CREATE_ALLOW_TUN_FAILURE 0x0001 // Continue if TUN creation fails #define UTUN_CREATE_NO_TUN 0x0002 // Skip TUN initialization entirely #define UTUN_CREATE_TEST_MODE 0x0004 // Enable test hooks and virtual interfaces #define UTUN_CREATE_NO_SOCKET_BIND 0x0008 // Skip socket binding (for test injection) // Functions struct UTUN_INSTANCE* utun_instance_create_ex(struct UASYNC* ua, const char* config_file, const char* log_file, uint32_t flags); // Backward compatibility wrapper static inline struct UTUN_INSTANCE* utun_instance_create(struct UASYNC* ua, const char* config_file, const char* log_file) { return utun_instance_create_ex(ua, config_file, log_file, 0); } void utun_instance_destroy(struct UTUN_INSTANCE* instance); int utun_instance_init(struct UTUN_INSTANCE *instance); void utun_instance_run(struct UTUN_INSTANCE *instance); void utun_instance_stop(struct UTUN_INSTANCE *instance); // Diagnostic function for memory leak analysis void utun_instance_diagnose_leaks(struct UTUN_INSTANCE* instance, const char* phase); #endif // UTUN_INSTANCE_H