- Fixed incorrect init_connections() call in test_etcp_simple_traffic.c (was calling server_instance instead of client_instance) - Fixed double free in timeout_heap_pop() when handling deleted elements - Enhanced NULL pointer safety in uasync_print_resources() by removing complex heap manipulation - Added debug logging to timeout_heap_pop() for better error tracking Test results: test_etcp_simple_traffic now passes without double free errors
73 lines
2.1 KiB
C
Executable File
73 lines
2.1 KiB
C
Executable File
#ifndef UTUN_INSTANCE_H
|
|
#define UTUN_INSTANCE_H
|
|
|
|
#include <stdint.h>
|
|
#include <stdbool.h>
|
|
#include <stdio.h>
|
|
#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
|