Register multicast protocol and core lifecycle
This commit is contained in:
1 parent
b02ad6f4cf
commit
5aa28a11d6
3 files changed
+11
-2
No files matched your search
@@ -38,14 +38,14 @@ extern "C" {
|
||||
// (raw-пространство) — помечены «(raw)»; их значения занимают raw-реестр.
|
||||
//
|
||||
// raw: 0x00 DATA, 0x01 TOPO_ENTRY, 0x02 NAT_DETECTION, 0x03 SVC_ROUTE,
|
||||
// 0x04 NTP_TIME, 0x05 BROADCAST, 0x06 RADIO, 0x07 STREAM, 0x12 NCD_CONTROL,
|
||||
// 0x04 NTP_TIME, 0x05 BROADCAST, 0x06 RADIO, 0x07 STREAM, 0x08 MULTICAST, 0x12 NCD_CONTROL,
|
||||
// 0x13 GROUP_INVITE, 0x20 DB_SYNC, 0x30 CHAT_SYNC, 0x31 MEMBER_SYNC
|
||||
// router: 0x00 DATA, 0x02 NAT, 0x04 TCP_PROXY_SERVER, 0x05 UDP_PROXY,
|
||||
// 0x06 ICMP_PROXY, 0x07 MEDIA_DELIVERY, 0x08 TCP_PROXY_CLIENT,
|
||||
// 0x11 CONN_MGR, 0x32 ADMIN_KEY, 0x33 JOIN, 0x34 DM,
|
||||
// 0x35 DM_MAILBOX, 0x36 CALL, 0x37 FILE_TRANSFER, 0x38 DM_MEDIA, 0x39 MEMBER_FILES,
|
||||
// 0x3A GROUP_AVATAR, 0x3B NAT_DETECTION, 0x3C STREAM,
|
||||
// 0x3D CALL_VIDEO_CONTROL, 0x3E CALL_VIDEO, 0x3F CALL_AUDIO, 0x40 RADIO_CALL
|
||||
// 0x3D CALL_VIDEO_CONTROL, 0x3E CALL_VIDEO, 0x3F CALL_AUDIO, 0x40 RADIO_CALL, 0x41 MULTICAST_REPORT
|
||||
//
|
||||
// !!! Новый ID: впиши его в нужный реестр выше и убедись, что значение
|
||||
// не занято в том же пространстве.
|
||||
@@ -60,6 +60,8 @@ extern "C" {
|
||||
#define ETCP_ID_BROADCAST 0x05 // broadcast-сообщения между пирами
|
||||
#define ETCP_ID_RADIO 0x06 // рация (PTT мультикаст голоса) между пирами
|
||||
#define ETCP_ID_STREAM 0x07 // прямой stream INFO/выдачи/DATA
|
||||
#define ETCP_ID_MULTICAST 0x08 // адресный мультикаст с разделением по маршрутам группы
|
||||
#define ETCP_RT_ID_MULTICAST_REPORT 0x41 // отчёты о переполнении multicast FIFO
|
||||
#define ETCP_RT_ID_STREAM 0x3C // stream REVERSE_REQ/CLOSED и помощь суперузлов через группу
|
||||
|
||||
// === Router-сервисы (etcp_router_bind/etcp_route_send) ===
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include "chat/chat_local.h"
|
||||
#include "stream/stream.h"
|
||||
#include "etcp_router.h"
|
||||
#include "multicast.h"
|
||||
#include "config_parser.h"
|
||||
#include "config_updater.h"
|
||||
#include "tun_if.h"
|
||||
@@ -251,6 +252,9 @@ static int instance_init_common(struct UTUN_INSTANCE* instance, struct UASYNC* u
|
||||
DEBUG_ERROR(DEBUG_CATEGORY_ETCP, "Failed to initialize etcp_router");
|
||||
return -1;
|
||||
}
|
||||
if (multicast_init(instance) != 0) {
|
||||
DEBUG_ERROR(DEBUG_CATEGORY_ETCP, "Failed to initialize multicast"); return -1;
|
||||
}
|
||||
|
||||
/* NAT управляет пробами через router; binding создаётся после его инициализации. */
|
||||
if (instance->topo_groups) {
|
||||
@@ -452,6 +456,7 @@ static void instance_destroy(struct UTUN_INSTANCE* instance, int owns_config) {
|
||||
}
|
||||
broadcast_destroy_instance(instance);
|
||||
radio_destroy_instance(instance);
|
||||
multicast_destroy(instance);
|
||||
DEBUG_INFO(DEBUG_CATEGORY_SYS, "[DESTROY] F done — BGP + broadcast + radio");
|
||||
|
||||
/* Phase F2: NAT transport — отвязываем и закрываем nat_tun ДО разборки
|
||||
|
||||
@@ -54,6 +54,7 @@ struct radio_instance; /* radio/radio.c */
|
||||
struct radio_call_context; /* radio/radio_call.c */
|
||||
struct radio_headless; /* radio/radio_headless.c */
|
||||
struct stream_service; /* stream/stream.c — подписки и публикация данных */
|
||||
struct multicast_ctx; /* routing_layer/multicast.c — общие FIFO и отчёты потерь */
|
||||
struct uasync_s;
|
||||
struct ROUTE_TABLE;
|
||||
struct ETCP_CONN;
|
||||
@@ -223,6 +224,7 @@ struct UTUN_INSTANCE {
|
||||
// etcp_router bindings и seq-connections (per-instance service routing)
|
||||
struct ETCP_ROUTER_BINDINGS router_bindings;
|
||||
struct ll_queue* router_conns;
|
||||
struct multicast_ctx* multicast; // принадлежит ядру, общий для всех topo-групп
|
||||
uint64_t router_loop_drops; // пакеты, вернувшиеся в уже посещённый узел
|
||||
uint64_t router_path_errors; // некорректный или переполненный список пройденных узлов
|
||||
struct CONN_MGR* conn_mgr; // заимствован у UTUN-группы; NULL при остановленном UTUN
|
||||
|
||||
Reference in new issue
Block a user