Файлы: route_node.* route_node_lmdb.* route_bgp.* -> topo_node.* topo_node_lmdb.* topo_bgp.* Структуры: - ROUTE_BGP -> TOPO_BGP, ROUTE_BGP_CONN_ITEM -> TOPO_BGP_CONN_ITEM - NODEINFO -> TOPO_NODE, NODEINFO_Q -> TOPO_NODEQ, NODEINFO_PATH -> TOPO_NODEPATH - NODEINFO_ROUTES -> TOPO_NODESUBNETS, NODE_CONNECTIVITY -> TOPO_CONNECTIVITY - wire: NODEINFO_MSG -> TOPOMSG_NODE, NODEINFO_IPV4_* -> TOPOMSG_*4 и т.д. - memory: NI_IPV4_* -> TOPO_*4, NI_IPV6_* -> TOPO_*6 - ROUTE_SUBCMD_* -> TOPO_SUBCMD_*, ETCP_ID_ROUTE_ENTRY -> ETCP_ID_TOPO_ENTRY Функции: - route_bgp_* -> topo_bgp_* - nodeinfo_* -> topo_node_* - route_node_* -> topo_node_* - route_node_lmdb_* -> topo_node_lmdb_* Смысл: отделение механизма формирования топологии узлов от IP-роутинга.
Added #ifdef __cplusplus / extern "C" { ... } / #endif to ~65 headers in src/ and lib/, enabling the C library to be linked into C++ code (chatgui). Fixed packet_dump.h (added missing header guard) and etcp_bbr.h (#pragma once guard).
- proxy/icmp_proxy.c: define struct icmp/ip + ICMP constants for _WIN32 - lwip_tcp_priv.h: use #include <winsock2.h> instead of #define htonl/htons - lwip_tcp.h/c: rename poll field to pollfn (avoid WSAPoll macro conflict) - tests: guard Unix-only headers with #ifndef _WIN32, skip fork/socketpair tests
- get_default_route_netif_index(): UDP connect trick + getifaddrs to find default route iface - etcp_socket_add(): auto-detect netif_index when not specified in config - queue_new() API: explicit index_offset/index_size params instead of implicit from hash_size - radix: cleanup types (uint8_t*), replace bzero/bcmp with memset/memcmp, remove kernel ifdefs - route6_lib: new IPv6 routing library + get_node_v6_routes()