diff --git a/daemon/cli.c b/daemon/cli.c index 5083a3c04..71e32620a 100644 --- a/daemon/cli.c +++ b/daemon/cli.c @@ -27,6 +27,7 @@ #include "main.h" #include "media_socket.h" #include "rtplib.h" +#include "ssrc.h" #include "rtpengine_config.h" @@ -627,19 +628,33 @@ static void cli_incoming_list_callid(str *instr, struct streambuf *replybuffer) now = ml->terminated; timeval_subtract(&tim_result_duration, &now, &ml->started); - streambuf_printf(replybuffer, "--- Tag '" STR_FORMAT "' type: %s, callduration " - "%ld.%06ld , in dialogue with '" STR_FORMAT "'\n", - STR_FMT(&ml->tag), get_tag_type_text(ml->tagtype), - tim_result_duration.tv_sec, - tim_result_duration.tv_usec, - ml->active_dialogue ? ml->active_dialogue->tag.len : 6, - ml->active_dialogue ? ml->active_dialogue->tag.s : "(none)"); + + streambuf_printf(replybuffer, "--- Tag '" STR_FORMAT "', type: %s, label '" STR_FORMAT "', " + "branch '" STR_FORMAT "', " + "callduration " + "%ld.%06ld, in dialogue with '" STR_FORMAT "'\n", + STR_FMT(&ml->tag), get_tag_type_text(ml->tagtype), + STR_FMT(ml->label.s ? &ml->label : &STR_EMPTY), + STR_FMT(&ml->viabranch), + tim_result_duration.tv_sec, + tim_result_duration.tv_usec, + ml->active_dialogue ? ml->active_dialogue->tag.len : 6, + ml->active_dialogue ? ml->active_dialogue->tag.s : "(none)"); for (k = ml->medias.head; k; k = k->next) { md = k->data; const struct rtp_payload_type *rtp_pt = __rtp_stats_codec(md); + streambuf_printf(replybuffer, "------ Media #%u (" STR_FORMAT " over %s) using ", + md->index, + STR_FMT(&md->type), + md->protocol ? md->protocol->name : "(unknown)"); + if (!rtp_pt) + streambuf_printf(replybuffer, "unknown codec\n"); + else + streambuf_printf(replybuffer, STR_FORMAT "\n", STR_FMT(&rtp_pt->encoding_with_params)); + for (o = md->streams.head; o; o = o->next) { ps = o->data; @@ -649,50 +664,25 @@ static void cli_incoming_list_callid(str *instr, struct streambuf *replybuffer) local_addr = ps->selected_sfd ? sockaddr_print_buf(&ps->selected_sfd->socket.local.address) : "0.0.0.0"; -#if (RE_HAS_MEASUREDELAY) - if (!PS_ISSET(ps, RTP) && PS_ISSET(ps, RTCP)) { - streambuf_printf(replybuffer, "------ Media #%u, %15s:%-5hu <> %15s:%-5hu%s, " - "" UINT64F " p, " UINT64F " b, " UINT64F " e, " UINT64F " last_packet\n", - md->index, - local_addr, (unsigned int) (ps->sfd ? ps->sfd->fd.localport : 0), - sockaddr_print_buf(&ps->endpoint.ip46), ps->endpoint.port, - (!PS_ISSET(ps, RTP) && PS_ISSET(ps, RTCP)) ? " (RTCP)" : "", - atomic64_get(&ps->stats.packets), - atomic64_get(&ps->stats.bytes), - atomic64_get(&ps->stats.errors), atomic64_get(&ps->last_packet)); - } - else { - streambuf_printf(replybuffer, "------ Media #%u, %15s:%-5hu <> %15s:%-5hu%s, " - "" UINT64F " p, " UINT64F " b, " UINT64F " e, " UINT64F " last_packet, " - STR_FORMAT ", %.9f delay_min, %.9f delay_avg, %.9f delay_max\n", - md->index, local_addr, - (unsigned int) (ps->sfd ? ps->sfd->fd.localport : 0), - sockaddr_print_buf(&ps->endpoint.ip46), ps->endpoint.port, - (!PS_ISSET(ps, RTP) - && PS_ISSET(ps, RTCP)) ? " (RTCP)" : "", - atomic64_get(&ps->stats.packets), atomic64_get(&ps->stats.bytes), - atomic64_get(&ps->stats.errors), atomic64_get(&ps->last_packet), - rtp_pt ? (int) rtp_pt->encoding_with_params. - len : (int) strlen("unknown codec"), - rtp_pt ? rtp_pt->encoding_with_params.s : "unknown codec", + streambuf_printf(replybuffer, "-------- Port %15s:%-5u <> %15s:%-5u%s, SSRC %" PRIx32 ", " + "" UINT64F " p, " UINT64F " b, " UINT64F " e, " UINT64F " ts", + local_addr, + (unsigned int) (ps->selected_sfd ? ps->selected_sfd->socket.local.port : 0), + sockaddr_print_buf(&ps->endpoint.address), + ps->endpoint.port, + (!PS_ISSET(ps, RTP) && PS_ISSET(ps, RTCP)) ? " (RTCP)" : "", + ps->ssrc_in ? ps->ssrc_in->parent->h.ssrc : 0, + atomic64_get(&ps->stats.packets), + atomic64_get(&ps->stats.bytes), atomic64_get(&ps->stats.errors), + atomic64_get(&ps->last_packet)); +#if RE_HAS_MEASUREDELAY + if (PS_ISSET(ps, RTP) || !PS_ISSET(ps, RTCP)) + streambuf_printf(replybuffer, ", %.9f delay_min, %.9f delay_avg, %.9f delay_max", (double) ps->stats.delay_min / 1000000, (double) ps->stats.delay_avg / 1000000, (double) ps->stats.delay_max / 1000000); - } -#else - streambuf_printf(replybuffer, "------ Media #%u, %15s:%-5u <> %15s:%-5u%s, " - "" UINT64F " p, " UINT64F " b, " UINT64F " e, " UINT64F " last_packet, " - STR_FORMAT "\n", md->index, local_addr, - (unsigned int) (ps->selected_sfd ? ps->selected_sfd->socket.local.port : 0), - sockaddr_print_buf(&ps->endpoint.address), ps->endpoint.port, (!PS_ISSET(ps, RTP) - && PS_ISSET(ps, - RTCP)) - ? " (RTCP)" : "", atomic64_get(&ps->stats.packets), - atomic64_get(&ps->stats.bytes), atomic64_get(&ps->stats.errors), - atomic64_get(&ps->last_packet), - rtp_pt ? (int) rtp_pt->encoding_with_params.len : (int) strlen("unknown codec"), - rtp_pt ? rtp_pt->encoding_with_params.s : "unknown codec"); #endif + streambuf_printf(replybuffer, "\n"); } } }