auto_socket: модуль авто-управления сокетами при изменении сетевых интерфейсов + fix pre-existing ASAN-багов
- auto_socket.c/h: создание/удаление UDP сокетов автоматически при изменении интерфейсов через netlink/route socket При auto_sockets=yes пропускает ручные [server] сокеты Тип сокета: PUBLIC если публичный IP, иначе NAT Для новых сокетов добавляются линки ко всем активным NCD-соединениям При удалении интерфейса линки убираются, сокет закрывается Platform-agnostic API для использования из Android/chatgui - node_conn_direct.h/c: ncd_add_socket_links / ncd_remove_socket_links — управление линками на конкретном сокете - socket_monitor.h/c: экспорт socket_monitor_update_if_addr для auto_socket - config_parser.h/c: опция auto_sockets в [global] - init_sockets(): пропуск ручных сокетов при auto_sockets=yes - utun_instance: интеграция auto_socket_init/destroy - media_delivery: fix stack-buffer-overflow ack[3] → ack[9] - topo_node: fix heap-use-after-free в topo_group_update_my_nodeinfo — сохранение node_id/ver перед registry_store, использование return value
This commit is contained in:
1 parent
a0ba6dee21
commit
ef637d33a6
15 files changed
+789
-6
No files matched your search
@@ -394,6 +394,10 @@ static int parse_global(const char *key, const char *value, struct global_config
|
||||
global->bbr_max_cwnd = atoi(value);
|
||||
return 0;
|
||||
}
|
||||
if (strcmp(key, "auto_sockets") == 0) {
|
||||
global->auto_sockets = strcasecmp(value, "yes") == 0 || strcmp(value, "1") == 0;
|
||||
return 0;
|
||||
}
|
||||
if (strcmp(key, "debug_level") == 0) {
|
||||
return assign_string(global->debug_level, sizeof(global->debug_level), value);
|
||||
}
|
||||
@@ -407,6 +411,10 @@ static int parse_global(const char *key, const char *value, struct global_config
|
||||
global->db_sync_enabled = atoi(value);
|
||||
return 0;
|
||||
}
|
||||
if (strcmp(key, "chatserver_enabled") == 0) {
|
||||
global->chatserver_enabled = atoi(value);
|
||||
return 0;
|
||||
}
|
||||
if (strcmp(key, "db_sync_ttl") == 0) {
|
||||
global->db_sync_ttl = (uint32_t)atoi(value);
|
||||
return 0;
|
||||
@@ -837,6 +845,7 @@ static struct utun_config* parse_config_internal(FILE *fp, const char *filename)
|
||||
cfg->global.keepalive_interval = 200; // Default 0.2 s
|
||||
cfg->global.keepalive_adaptive = 1; // Default: adaptive enabled
|
||||
cfg->global.bbr_max_cwnd = 1048576; // Default 1MB (was INFLIGHT_LIM_MAX)
|
||||
cfg->global.auto_sockets = 0; // Default: disabled, use manual [server] sockets
|
||||
cfg->global.tcp_recv_buf = 0; // 0 = OS default
|
||||
cfg->global.firewall_rules = NULL;
|
||||
cfg->global.firewall_rule_count = 0;
|
||||
@@ -1121,6 +1130,7 @@ struct utun_config* parse_config_from_buf(const char *buf, size_t len, const cha
|
||||
cfg->global.keepalive_interval = 200;
|
||||
cfg->global.keepalive_adaptive = 1;
|
||||
cfg->global.bbr_max_cwnd = 1048576;
|
||||
cfg->global.auto_sockets = 0;
|
||||
cfg->global.tcp_recv_buf = 0;
|
||||
cfg->global.firewall_rules = NULL;
|
||||
cfg->global.firewall_rule_count = 0;
|
||||
|
||||
Reference in new issue
Block a user