unify TCP_SOCKET into ETCP_SOCKET with is_tcp flag; add local+remote addr to member detail links with arrow display
This commit is contained in:
1 parent
477b4dfc98
commit
544c77efff
19 files changed
+197
-228
No files matched your search
@@ -247,7 +247,7 @@ static int bridge_collect_invite_addrs(struct InviteAddrC* out, int max_cnt) {
|
||||
}
|
||||
s = s->next;
|
||||
}
|
||||
{ struct TCP_SOCKET* ts = g_cc.inst->tcp_sockets;
|
||||
{ struct ETCP_SOCKET* ts = g_cc.inst->tcp_sockets;
|
||||
while (ts) {
|
||||
struct sockaddr_storage* sa = ts->interface_addr.ss_family ? &ts->interface_addr : &ts->local_addr;
|
||||
if (sa && sa->ss_family == AF_INET && cnt < max_cnt) {
|
||||
@@ -1012,50 +1012,32 @@ char* utun_bridge_get_member_links_json(uint64_t node_id) {
|
||||
int first = 1;
|
||||
for (struct ETCP_LINK* lk = conn->links; lk; lk = lk->next) {
|
||||
if (pos >= (int)sizeof(buf) - 100) break;
|
||||
const struct sockaddr_storage* sa = &lk->remote_addr;
|
||||
char ip[INET6_ADDRSTRLEN] = "";
|
||||
int fm = 0;
|
||||
uint16_t po = 0;
|
||||
|
||||
if (sa->ss_family == AF_INET) {
|
||||
struct sockaddr_in* sin = (struct sockaddr_in*)sa;
|
||||
inet_ntop(AF_INET, &sin->sin_addr, ip, sizeof(ip));
|
||||
fm = 4; po = ntohs(sin->sin_port);
|
||||
} else if (sa->ss_family == AF_INET6) {
|
||||
struct sockaddr_in6* sin6 = (struct sockaddr_in6*)sa;
|
||||
inet_ntop(AF_INET6, &sin6->sin6_addr, ip, sizeof(ip));
|
||||
fm = 6; po = ntohs(sin6->sin6_port);
|
||||
} else continue;
|
||||
char la[INET6_ADDRSTRLEN] = ""; int lf = 0; uint16_t lp = 0;
|
||||
if (lk->conn) {
|
||||
const struct sockaddr_storage* lsa = &lk->conn->local_addr;
|
||||
if (lsa->ss_family == AF_INET) {
|
||||
inet_ntop(AF_INET, &((struct sockaddr_in*)lsa)->sin_addr, la, sizeof(la)); lf = 4; lp = ntohs(((struct sockaddr_in*)lsa)->sin_port);
|
||||
} else if (lsa->ss_family == AF_INET6) {
|
||||
inet_ntop(AF_INET6, &((struct sockaddr_in6*)lsa)->sin6_addr, la, sizeof(la)); lf = 6; lp = ntohs(((struct sockaddr_in6*)lsa)->sin6_port);
|
||||
}
|
||||
}
|
||||
|
||||
char ra[INET6_ADDRSTRLEN] = ""; int rf = 0; uint16_t rp = 0;
|
||||
int st = lk->link_state, ls = lk->link_status;
|
||||
if (lk->is_tcp && lk->tcp_link && stcp_link_is_ready(lk->tcp_link)) { st = 3; ls = 1; }
|
||||
const struct sockaddr_storage* rsa = &lk->remote_addr;
|
||||
|
||||
if (rsa->ss_family == AF_INET) {
|
||||
inet_ntop(AF_INET, &((struct sockaddr_in*)rsa)->sin_addr, ra, sizeof(ra)); rf = 4; rp = ntohs(((struct sockaddr_in*)rsa)->sin_port);
|
||||
} else if (rsa->ss_family == AF_INET6) {
|
||||
inet_ntop(AF_INET6, &((struct sockaddr_in6*)rsa)->sin6_addr, ra, sizeof(ra)); rf = 6; rp = ntohs(((struct sockaddr_in6*)rsa)->sin6_port);
|
||||
}
|
||||
|
||||
if (!ip[0]) continue;
|
||||
const char* sep = first ? "" : ","; first = 0;
|
||||
pos += snprintf(buf + pos, sizeof(buf) - (size_t)pos,
|
||||
"%s{\"fm\":%d,\"ad\":\"%s\",\"po\":%d,\"st\":%d,\"ls\":%d,\"is\":%d}",
|
||||
sep, fm, ip, (int)po, lk->link_state, lk->link_status, lk->is_server);
|
||||
}
|
||||
for (struct ETCP_LINK* lk2 = conn->links; lk2; lk2 = lk2->next) {
|
||||
if (!lk2->is_tcp || !lk2->tcp_link) continue;
|
||||
if (pos >= (int)sizeof(buf) - 100) break;
|
||||
struct stcp_link* tcp = lk2->tcp_link;
|
||||
const struct sockaddr_storage* sa = stcp_link_get_remote_addr(tcp);
|
||||
if (!sa) continue;
|
||||
char ip[INET6_ADDRSTRLEN] = "";
|
||||
int fm = 0; uint16_t po = 0;
|
||||
if (sa->ss_family == AF_INET) {
|
||||
struct sockaddr_in* sin = (struct sockaddr_in*)sa;
|
||||
inet_ntop(AF_INET, &sin->sin_addr, ip, sizeof(ip));
|
||||
fm = 4; po = ntohs(sin->sin_port);
|
||||
} else if (sa->ss_family == AF_INET6) {
|
||||
struct sockaddr_in6* sin6 = (struct sockaddr_in6*)sa;
|
||||
inet_ntop(AF_INET6, &sin6->sin6_addr, ip, sizeof(ip));
|
||||
fm = 6; po = ntohs(sin6->sin6_port);
|
||||
} else continue;
|
||||
if (!ip[0]) continue;
|
||||
int ready = stcp_link_is_ready(tcp);
|
||||
const char* sep = first ? "" : ","; first = 0;
|
||||
pos += snprintf(buf + pos, sizeof(buf) - (size_t)pos,
|
||||
"%s{\"fm\":%d,\"ad\":\"%s\",\"po\":%d,\"st\":%d,\"ls\":%d,\"is\":%d}",
|
||||
sep, fm, ip, (int)po, ready ? 3 : 1, ready ? 1 : 0, lk2->is_server);
|
||||
"%s{\"lf\":%d,\"la\":\"%s\",\"lp\":%d,\"rf\":%d,\"ra\":\"%s\",\"rp\":%d,\"st\":%d,\"ls\":%d,\"is\":%d}",
|
||||
sep, lf, la, (int)lp, rf, ra, (int)rp, st, ls, lk->is_server);
|
||||
}
|
||||
if (pos < (int)sizeof(buf))
|
||||
pos += snprintf(buf + pos, sizeof(buf) - (size_t)pos, "]}");
|
||||
@@ -1108,7 +1090,7 @@ char* utun_bridge_get_local_sockets_json(void) {
|
||||
bridge_log(BLEV_INFO, "getLocalSockets: tcp_sockets=%p etcp_sockets=%p conns=%d links=%d",
|
||||
(void*)inst->tcp_sockets, (void*)inst->etcp_sockets, active_conns, active_links);
|
||||
/* TCP sockets */
|
||||
{ struct TCP_SOCKET* ts = inst->tcp_sockets;
|
||||
{ struct ETCP_SOCKET* ts = inst->tcp_sockets;
|
||||
while (ts) {
|
||||
char ip_str[INET6_ADDRSTRLEN] = ""; int port = 0;
|
||||
const struct sockaddr_storage* addr = ts->interface_addr.ss_family ? &ts->interface_addr : &ts->local_addr;
|
||||
|
||||
Reference in new issue
Block a user