|
|
|
@ -759,7 +759,8 @@ char* utun_bridge_get_member_detail_json(const char* channel_id, uint64_t node_i |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
const char* pn; |
|
|
|
const char* pn; |
|
|
|
switch (proto) { case 1: pn = "UDP"; break; case 2: pn = "TCP"; break; default: pn = "UDP/TCP"; break; } |
|
|
|
if (proto & 0x04) pn = "TCP+REALITY"; |
|
|
|
|
|
|
|
else switch (proto) { case 1: pn = "UDP"; break; case 2: pn = "TCP"; break; default: pn = "UDP/TCP"; break; } |
|
|
|
pos += (size_t)snprintf(buf + pos, sizeof(buf) - pos, |
|
|
|
pos += (size_t)snprintf(buf + pos, sizeof(buf) - pos, |
|
|
|
"%s{\"fm\":%d,\"pt\":\"%s\",\"ad\":\"%s\",\"po\":%d,\"si\":%d,\"at\":%d,\"rt\":%d}", |
|
|
|
"%s{\"fm\":%d,\"pt\":\"%s\",\"ad\":\"%s\",\"po\":%d,\"si\":%d,\"at\":%d,\"rt\":%d}", |
|
|
|
af ? "" : ",", family, pn, addr_str[0] ? addr_str : "?", port, sid, at, rtt); |
|
|
|
af ? "" : ",", family, pn, addr_str[0] ? addr_str : "?", port, sid, at, rtt); |
|
|
|
@ -897,7 +898,7 @@ char* utun_bridge_get_member_links_json(uint64_t node_id) { |
|
|
|
const char* sn = lk->conn ? lk->conn->name : ""; |
|
|
|
const char* sn = lk->conn ? lk->conn->name : ""; |
|
|
|
pos += snprintf(buf + pos, sizeof(buf) - (size_t)pos, |
|
|
|
pos += snprintf(buf + pos, sizeof(buf) - (size_t)pos, |
|
|
|
"%s{\"id\":%d,\"pt\":\"%s\",\"lf\":%d,\"la\":\"%s\",\"lp\":%d,\"rf\":%d,\"ra\":\"%s\",\"rp\":%d,\"st\":%d,\"ls\":%d,\"is\":%d,\"sn\":\"%s\"}", |
|
|
|
"%s{\"id\":%d,\"pt\":\"%s\",\"lf\":%d,\"la\":\"%s\",\"lp\":%d,\"rf\":%d,\"ra\":\"%s\",\"rp\":%d,\"st\":%d,\"ls\":%d,\"is\":%d,\"sn\":\"%s\"}", |
|
|
|
sep, lk->local_link_id, lk->is_tcp ? "TCP" : "UDP", lf, la, (int)lp, rf, ra, (int)rp, st, ls, lk->is_server, sn); |
|
|
|
sep, lk->local_link_id, lk->reality_set ? "TCP+REALITY" : (lk->is_tcp ? "TCP" : "UDP"), lf, la, (int)lp, rf, ra, (int)rp, st, ls, lk->is_server, sn); |
|
|
|
} |
|
|
|
} |
|
|
|
if (pos < (int)sizeof(buf)) |
|
|
|
if (pos < (int)sizeof(buf)) |
|
|
|
pos += snprintf(buf + pos, sizeof(buf) - (size_t)pos, "]}"); |
|
|
|
pos += snprintf(buf + pos, sizeof(buf) - (size_t)pos, "]}"); |
|
|
|
@ -998,14 +999,15 @@ char* utun_bridge_get_local_sockets_json(void) { |
|
|
|
int lu, ld; SOCK_COUNT_LINKS(s, lu, ld); |
|
|
|
int lu, ld; SOCK_COUNT_LINKS(s, lu, ld); |
|
|
|
int state = 2; /* bound and listening */ |
|
|
|
int state = 2; /* bound and listening */ |
|
|
|
const char* sep = first ? "" : ","; first = 0; |
|
|
|
const char* sep = first ? "" : ","; first = 0; |
|
|
|
|
|
|
|
const char* pn = s->reality_enabled ? "TCP+REALITY" : "TCP"; |
|
|
|
size_t needed = snprintf(NULL, 0, |
|
|
|
size_t needed = snprintf(NULL, 0, |
|
|
|
"%s{\"si\":%u,\"nm\":\"%s\",\"ad\":\"%s\",\"po\":%d,\"pt\":\"TCP\",\"st\":%d,\"lu\":%d,\"ld\":%d}", |
|
|
|
"%s{\"si\":%u,\"nm\":\"%s\",\"ad\":\"%s\",\"po\":%d,\"pt\":\"%s\",\"st\":%d,\"lu\":%d,\"ld\":%d}", |
|
|
|
sep, s->sock_id, s->name, ip_str, port, state, lu, ld); |
|
|
|
sep, s->sock_id, s->name, ip_str, port, pn, state, lu, ld); |
|
|
|
while (pos + needed + 2 > cap) { char* tmp = u_realloc(json, cap * 2); if (!tmp) break; json = tmp; cap *= 2; } |
|
|
|
while (pos + needed + 2 > cap) { char* tmp = u_realloc(json, cap * 2); if (!tmp) break; json = tmp; cap *= 2; } |
|
|
|
if (pos + needed + 2 <= cap) |
|
|
|
if (pos + needed + 2 <= cap) |
|
|
|
pos += (size_t)snprintf(json + pos, cap - pos, |
|
|
|
pos += (size_t)snprintf(json + pos, cap - pos, |
|
|
|
"%s{\"si\":%u,\"nm\":\"%s\",\"ad\":\"%s\",\"po\":%d,\"pt\":\"TCP\",\"st\":%d,\"lu\":%d,\"ld\":%d}", |
|
|
|
"%s{\"si\":%u,\"nm\":\"%s\",\"ad\":\"%s\",\"po\":%d,\"pt\":\"%s\",\"st\":%d,\"lu\":%d,\"ld\":%d}", |
|
|
|
sep, s->sock_id, s->name, ip_str, port, state, lu, ld); |
|
|
|
sep, s->sock_id, s->name, ip_str, port, pn, state, lu, ld); |
|
|
|
s = s->next; |
|
|
|
s = s->next; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|