|
|
|
@ -1450,13 +1450,12 @@ static void call_destroy(struct call *c) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* XXX use enum format */
|
|
|
|
|
static int call_stream_address4(GString *o, struct peer *p, int format) {
|
|
|
|
|
static int call_stream_address4(GString *o, struct peer *p, enum stream_address_format format) {
|
|
|
|
|
struct callstream *cs = p->up;
|
|
|
|
|
u_int32_t ip4;
|
|
|
|
|
struct callmaster *m = cs->call->callmaster;
|
|
|
|
|
|
|
|
|
|
if (format == 2)
|
|
|
|
|
if (format == SAF_NG)
|
|
|
|
|
g_string_append(o, "IP4 ");
|
|
|
|
|
|
|
|
|
|
ip4 = p->rtps[0].peer.ip46.s6_addr32[3];
|
|
|
|
@ -1470,11 +1469,11 @@ static int call_stream_address4(GString *o, struct peer *p, int format) {
|
|
|
|
|
return AF_INET;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int call_stream_address6(GString *o, struct peer *p, int format) {
|
|
|
|
|
static int call_stream_address6(GString *o, struct peer *p, enum stream_address_format format) {
|
|
|
|
|
char ips[64];
|
|
|
|
|
struct callmaster *m = p->up->call->callmaster;
|
|
|
|
|
|
|
|
|
|
if (format == 2)
|
|
|
|
|
if (format == SAF_NG)
|
|
|
|
|
g_string_append(o, "IP6 ");
|
|
|
|
|
|
|
|
|
|
if (IN6_IS_ADDR_UNSPECIFIED(&p->rtps[0].peer.ip46))
|
|
|
|
@ -1491,7 +1490,7 @@ static int call_stream_address6(GString *o, struct peer *p, int format) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int call_stream_address(GString *o, struct peer *p, int format) {
|
|
|
|
|
int call_stream_address(GString *o, struct peer *p, enum stream_address_format format) {
|
|
|
|
|
struct callmaster *m;
|
|
|
|
|
struct peer *other;
|
|
|
|
|
|
|
|
|
@ -1510,7 +1509,7 @@ int call_stream_address(GString *o, struct peer *p, int format) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static str *streams_print(GQueue *s, unsigned int num, unsigned int off, const char *prefix, int format) {
|
|
|
|
|
static str *streams_print(GQueue *s, unsigned int num, unsigned int off, const char *prefix, enum stream_address_format format) {
|
|
|
|
|
GString *o;
|
|
|
|
|
int i;
|
|
|
|
|
GList *l;
|
|
|
|
@ -1526,7 +1525,7 @@ static str *streams_print(GQueue *s, unsigned int num, unsigned int off, const c
|
|
|
|
|
goto out;
|
|
|
|
|
|
|
|
|
|
t = s->head->data;
|
|
|
|
|
if (format == 0)
|
|
|
|
|
if (format == SAF_TCP)
|
|
|
|
|
call_stream_address(o, &t->peers[off], format);
|
|
|
|
|
|
|
|
|
|
for (i = 0, l = s->head; i < num && l; i++, l = l->next) {
|
|
|
|
@ -1535,7 +1534,7 @@ static str *streams_print(GQueue *s, unsigned int num, unsigned int off, const c
|
|
|
|
|
g_string_append_printf(o, (format == 1) ? "%u " : " %u", x->localport);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (format == 1) {
|
|
|
|
|
if (format == SAF_UDP) {
|
|
|
|
|
af = call_stream_address(o, &t->peers[off], format);
|
|
|
|
|
g_string_append_printf(o, " %c", (af == AF_INET) ? '4' : '6');
|
|
|
|
|
}
|
|
|
|
@ -1679,7 +1678,7 @@ str *call_update_udp(char **out, struct callmaster *m) {
|
|
|
|
|
num = call_streams(c, &q, &fromtag, 0);
|
|
|
|
|
g_queue_clear(&q);
|
|
|
|
|
|
|
|
|
|
ret = streams_print(c->callstreams, 1, (num >= 0) ? 0 : 1, out[RE_UDP_COOKIE], 1);
|
|
|
|
|
ret = streams_print(c->callstreams, 1, (num >= 0) ? 0 : 1, out[RE_UDP_COOKIE], SAF_UDP);
|
|
|
|
|
mutex_unlock(&c->lock);
|
|
|
|
|
|
|
|
|
|
if (redis_update)
|
|
|
|
@ -1738,7 +1737,7 @@ str *call_lookup_udp(char **out, struct callmaster *m) {
|
|
|
|
|
num = call_streams(c, &q, &totag, 1);
|
|
|
|
|
g_queue_clear(&q);
|
|
|
|
|
|
|
|
|
|
ret = streams_print(c->callstreams, 1, (num >= 0) ? 1 : 0, out[RE_UDP_COOKIE], 1);
|
|
|
|
|
ret = streams_print(c->callstreams, 1, (num >= 0) ? 1 : 0, out[RE_UDP_COOKIE], SAF_UDP);
|
|
|
|
|
mutex_unlock(&c->lock);
|
|
|
|
|
|
|
|
|
|
if (redis_update)
|
|
|
|
@ -1773,7 +1772,7 @@ str *call_request(char **out, struct callmaster *m) {
|
|
|
|
|
streams_parse(out[RE_TCP_RL_STREAMS], m, &s);
|
|
|
|
|
num = call_streams(c, &s, g_hash_table_lookup(c->infohash, "fromtag"), 0);
|
|
|
|
|
streams_free(&s);
|
|
|
|
|
ret = streams_print(c->callstreams, abs(num), (num >= 0) ? 0 : 1, NULL, 0);
|
|
|
|
|
ret = streams_print(c->callstreams, abs(num), (num >= 0) ? 0 : 1, NULL, SAF_TCP);
|
|
|
|
|
mutex_unlock(&c->lock);
|
|
|
|
|
|
|
|
|
|
if (redis_update)
|
|
|
|
@ -1808,7 +1807,7 @@ str *call_lookup(char **out, struct callmaster *m) {
|
|
|
|
|
streams_parse(out[RE_TCP_RL_STREAMS], m, &s);
|
|
|
|
|
num = call_streams(c, &s, g_hash_table_lookup(c->infohash, "totag"), 1);
|
|
|
|
|
streams_free(&s);
|
|
|
|
|
ret = streams_print(c->callstreams, abs(num), (num >= 0) ? 1 : 0, NULL, 0);
|
|
|
|
|
ret = streams_print(c->callstreams, abs(num), (num >= 0) ? 1 : 0, NULL, SAF_TCP);
|
|
|
|
|
mutex_unlock(&c->lock);
|
|
|
|
|
|
|
|
|
|
if (redis_update)
|
|
|
|
|