Browse Source

MT#61352 consolidate opmode with ng_command

There is enough overlap between the two enums that it doesn't make sense
to carry along both. Unify.

Change-Id: I9de8fbdb8d78a2002d8c1b62cea57188c937d61d
pull/1884/head
Richard Fuchs 1 year ago
parent
commit
643547377f
17 changed files with 496 additions and 176 deletions
  1. +8
    -8
      daemon/call.c
  2. +17
    -17
      daemon/call_interfaces.c
  3. +2
    -7
      daemon/cdr.c
  4. +36
    -33
      daemon/control_ng.c
  5. +1
    -1
      daemon/graphite.c
  6. +1
    -1
      daemon/janus.c
  7. +8
    -8
      daemon/recording.c
  8. +3
    -3
      daemon/sdp.c
  9. +5
    -5
      daemon/statistics.c
  10. +4
    -4
      include/call.h
  11. +2
    -2
      include/call_interfaces.h
  12. +2
    -2
      include/cdr.h
  13. +36
    -64
      include/control_ng.h
  14. +1
    -1
      include/counter_stats_fields.inc
  15. +3
    -3
      include/recording.h
  16. +1
    -1
      include/sampled_stats_fields.inc
  17. +366
    -16
      t/test-stats.c

+ 8
- 8
daemon/call.c View File

@ -1470,7 +1470,7 @@ static void __ice_offer(const sdp_ng_flags *flags, struct call_media *this,
if (flags->trickle_ice)
MEDIA_SET(this, TRICKLE_ICE);
}
else if (flags->opmode == OP_REQUEST) {
else if (flags->opmode == OP_SUBSCRIBE_REQ) {
// leave source media (`other`) alone
switch (flags->ice_lite_option) {
case ICE_LITE_OFF:
@ -1497,7 +1497,7 @@ static void __ice_offer(const sdp_ng_flags *flags, struct call_media *this,
else if (!MEDIA_ISSET(this, INITIALIZED) || ice_restart) {
if (MEDIA_ISSET(this, ICE_LITE_SELF))
MEDIA_CLEAR(this, ICE_CONTROLLING);
else if (flags->opmode == OP_OFFER || flags->opmode == OP_REQUEST)
else if (flags->opmode == OP_OFFER || flags->opmode == OP_SUBSCRIBE_REQ)
MEDIA_SET(this, ICE_CONTROLLING);
else
MEDIA_CLEAR(this, ICE_CONTROLLING);
@ -1594,7 +1594,7 @@ static void __generate_crypto(const sdp_ng_flags *flags, struct call_media *this
/* preferred crypto suites for the offerer - generated answer */
const str_q *offered_order = &flags->sdes_offerer_pref;
bool is_offer = (flags->opmode == OP_OFFER || flags->opmode == OP_REQUEST);
bool is_offer = (flags->opmode == OP_OFFER || flags->opmode == OP_SUBSCRIBE_REQ);
if (!this->protocol || !this->protocol->srtp || MEDIA_ISSET(this, PASSTHRU)) {
crypto_params_sdes_queue_clear(cpq);
@ -2245,7 +2245,7 @@ static void __update_media_id(struct call_media *media, struct call_media *other
if (flags->opmode == OP_OFFER ||
flags->opmode == OP_PUBLISH ||
flags->opmode == OP_REQUEST ||
flags->opmode == OP_SUBSCRIBE_REQ ||
IS_OP_OTHER(flags->opmode))
{
if (!other_media->media_id.s) {
@ -2583,7 +2583,7 @@ void codecs_offer_answer(struct call_media *media, struct call_media *other_medi
/* called with call->master_lock held in W */
static void __update_init_subscribers(struct call_media *media, struct stream_params *sp,
sdp_ng_flags *flags, enum call_opmode opmode)
sdp_ng_flags *flags, enum ng_opmode opmode)
{
if (!media)
return;
@ -2628,7 +2628,7 @@ static void __update_init_subscribers(struct call_media *media, struct stream_pa
}
/* called with call->master_lock held in W */
void update_init_subscribers(struct call_monologue *ml, enum call_opmode opmode) {
void update_init_subscribers(struct call_monologue *ml, enum ng_opmode opmode) {
for (unsigned int i = 0; i < ml->medias->len; i++)
{
struct call_media *media = ml->medias->pdata[i];
@ -2757,7 +2757,7 @@ static void __update_media_label(struct call_media *media, struct call_media *ot
if (!media)
return;
if (flags->siprec && flags->opmode == OP_REQUEST) {
if (flags->siprec && flags->opmode == OP_SUBSCRIBE_REQ) {
if (!media->label.len) {
char buf[64];
snprintf(buf, sizeof(buf), "%u", other_media->unique_id);
@ -4311,7 +4311,7 @@ call_t *call_get(const str *callid) {
}
/* returns call with master_lock held in W, or possibly NULL iff opmode == OP_ANSWER */
call_t *call_get_opmode(const str *callid, enum call_opmode opmode) {
call_t *call_get_opmode(const str *callid, enum ng_opmode opmode) {
if (opmode == OP_OFFER)
return call_get_or_create(callid, false);
return call_get(callid);


+ 17
- 17
daemon/call_interfaces.c View File

@ -167,7 +167,7 @@ static void updated_created_from(call_t *c, const char *addr, const endpoint_t *
}
}
static str *call_update_lookup_udp(char **out, enum call_opmode opmode, const char* addr,
static str *call_update_lookup_udp(char **out, enum ng_opmode opmode, const char* addr,
const endpoint_t *sin)
{
call_t *c;
@ -324,7 +324,7 @@ INLINE void call_unlock_release_update(call_t **c) {
static str *call_request_lookup_tcp(char **out, enum call_opmode opmode) {
static str *call_request_lookup_tcp(char **out, enum ng_opmode opmode) {
call_t *c;
struct call_monologue *monologues[2];
g_auto(sdp_streams_q) s = TYPED_GQUEUE_INIT;
@ -1275,7 +1275,7 @@ void call_ng_flags_flags(str *s, unsigned int idx, helper_arg arg) {
#ifdef WITH_TRANSCODING
/* transcoding */
{
if (out->opmode == OP_OFFER || out->opmode == OP_REQUEST || out->opmode == OP_PUBLISH) {
if (out->opmode == OP_OFFER || out->opmode == OP_SUBSCRIBE_REQ || out->opmode == OP_PUBLISH) {
if (call_ng_flags_prefix(s, "transcode-", call_ng_flags_esc_str_list,
&out->codec_transcode))
return;
@ -1307,7 +1307,7 @@ void call_ng_flags_flags(str *s, unsigned int idx, helper_arg arg) {
}
}
void call_ng_flags_init(sdp_ng_flags *out, enum call_opmode opmode) {
void call_ng_flags_init(sdp_ng_flags *out, enum ng_opmode opmode) {
ZERO(*out);
out->opmode = opmode;
@ -1350,7 +1350,7 @@ void call_ng_codec_flags(const ng_parser_t *parser, str *key, parser_arg value,
return;
}
#ifdef WITH_TRANSCODING
if (out->opmode == OP_OFFER || out->opmode == OP_REQUEST || out->opmode == OP_PUBLISH
if (out->opmode == OP_OFFER || out->opmode == OP_SUBSCRIBE_REQ || out->opmode == OP_PUBLISH
|| out->opmode == OP_PLAY_MEDIA)
{
switch (__csh_lookup(key)) {
@ -2085,7 +2085,7 @@ void call_ng_main_flags(const ng_parser_t *parser, str *key, parser_arg value, h
}
}
static void call_ng_process_flags(sdp_ng_flags *out, ng_command_ctx_t *ctx, enum call_opmode opmode) {
static void call_ng_process_flags(sdp_ng_flags *out, ng_command_ctx_t *ctx, enum ng_opmode opmode) {
const ng_parser_t *parser = ctx->parser_ctx.parser;
call_ng_flags_init(out, opmode);
ctx->opmode = opmode;
@ -2186,7 +2186,7 @@ void save_last_sdp(struct call_monologue *ml, str *sdp, sdp_sessions_q *parsed,
}
static enum basic_errors call_ng_basic_checks(sdp_ng_flags *flags, enum call_opmode opmode)
static enum basic_errors call_ng_basic_checks(sdp_ng_flags *flags, enum ng_opmode opmode)
{
if (!flags->sdp.s)
return NG_ERROR_NO_SDP_BODY;
@ -2222,7 +2222,7 @@ static const char *call_offer_get_call(call_t **callp, sdp_ng_flags *flags) {
return NULL;
}
static const char *call_offer_answer_ng(ng_command_ctx_t *ctx, enum call_opmode opmode, const char* addr,
static const char *call_offer_answer_ng(ng_command_ctx_t *ctx, enum ng_opmode opmode, const char* addr,
const endpoint_t *sin)
{
const char *errstr;
@ -2923,7 +2923,7 @@ const char *call_list_ng(ng_command_ctx_t *ctx) {
static const char *call_recording_common_ng(ng_command_ctx_t *ctx,
enum call_opmode opmode,
enum ng_opmode opmode,
void (*fn)(ng_command_ctx_t *, call_t *call))
{
g_auto(sdp_ng_flags) flags;
@ -3008,7 +3008,7 @@ const char *call_stop_recording_ng(ng_command_ctx_t *ctx) {
static const char *media_block_match1(call_t *call, struct call_monologue **monologue,
sdp_ng_flags *flags, enum call_opmode opmode)
sdp_ng_flags *flags, enum ng_opmode opmode)
{
if (flags->label.s) {
*monologue = t_hash_table_lookup(call->labels, &flags->label);
@ -3053,7 +3053,7 @@ found:
return NULL;
}
static const char *media_block_match(call_t **call, struct call_monologue **monologue,
sdp_ng_flags *flags, ng_command_ctx_t *ctx, enum call_opmode opmode)
sdp_ng_flags *flags, ng_command_ctx_t *ctx, enum ng_opmode opmode)
{
*call = NULL;
*monologue = NULL;
@ -3089,7 +3089,7 @@ void add_media_to_sub_list(subscription_q *q, struct call_media *media, struct c
t_queue_push_tail(q, ms);
}
static const char *media_block_match_mult(call_t **call, subscription_q *medias,
sdp_ng_flags *flags, ng_command_ctx_t *ctx, enum call_opmode opmode)
sdp_ng_flags *flags, ng_command_ctx_t *ctx, enum ng_opmode opmode)
{
call_ng_process_flags(flags, ctx, opmode);
@ -3829,7 +3829,7 @@ const char *call_subscribe_request_ng(ng_command_ctx_t *ctx) {
const ng_parser_t *parser = ctx->parser_ctx.parser;
/* get source monologue */
err = media_block_match_mult(&call, &srms, &flags, ctx, OP_REQUEST);
err = media_block_match_mult(&call, &srms, &flags, ctx, OP_SUBSCRIBE_REQ);
if (err)
return err;
@ -3935,11 +3935,11 @@ const char *call_subscribe_answer_ng(ng_command_ctx_t *ctx) {
g_auto(sdp_streams_q) streams = TYPED_GQUEUE_INIT;
g_autoptr(call_t) call = NULL;
call_ng_process_flags(&flags, ctx, OP_REQ_ANSWER);
call_ng_process_flags(&flags, ctx, OP_SUBSCRIBE_ANS);
if (!flags.call_id.s)
return "No call-id in message";
call = call_get_opmode(&flags.call_id, OP_REQ_ANSWER);
call = call_get_opmode(&flags.call_id, OP_SUBSCRIBE_ANS);
if (!call)
return "Unknown call-ID";
@ -3976,11 +3976,11 @@ const char *call_unsubscribe_ng(ng_command_ctx_t *ctx) {
g_auto(sdp_ng_flags) flags;
g_autoptr(call_t) call = NULL;
call_ng_process_flags(&flags, ctx, OP_REQ_ANSWER);
call_ng_process_flags(&flags, ctx, OP_SUBSCRIBE_ANS);
if (!flags.call_id.s)
return "No call-id in message";
call = call_get_opmode(&flags.call_id, OP_REQ_ANSWER);
call = call_get_opmode(&flags.call_id, OP_SUBSCRIBE_ANS);
if (!call)
return "Unknown call-ID";


+ 2
- 7
daemon/cdr.c View File

@ -21,16 +21,11 @@ static const char * const __tag_type_texts[] = {
[FROM_TAG] = "FROM_TAG",
[TO_TAG] = "TO_TAG",
};
static const char *const __opmode_texts[] = {
[OP_OFFER] = "offer",
[OP_ANSWER] = "answer",
};
const char * get_tag_type_text(enum tag_type t) {
return get_enum_array_text(__tag_type_texts, t, "UNKNOWN");
}
const char *get_opmode_text(enum call_opmode m) {
return get_enum_array_text(__opmode_texts, m, "other");
const char *get_opmode_text(enum ng_opmode m) {
return get_enum_array_text(ng_command_strings, m, "other");
}
static const char * get_term_reason_text(enum termination_reason t) {


+ 36
- 33
daemon/control_ng.c View File

@ -37,30 +37,33 @@ const char magic_load_limit_strings[__LOAD_LIMIT_MAX][64] = {
[LOAD_LIMIT_LOAD] = "Load limit exceeded",
[LOAD_LIMIT_BW] = "Bandwidth limit exceeded",
};
const char *ng_command_strings[NGC_COUNT] = {
const char *ng_command_strings[OP_COUNT] = {
"ping", "offer", "answer", "delete", "query", "list",
"start recording", "stop recording", "pause recording",
"start forwarding", "stop forwarding", "block DTMF",
"unblock DTMF", "block media", "unblock media", "play media", "stop media",
"play DTMF", "statistics", "silence media", "unsilence media",
"block silence media", "unblock silence media",
"publish", "subscribe request",
"subscribe answer", "unsubscribe",
};
const char *ng_command_strings_esc[NGC_COUNT] = {
const char *ng_command_strings_esc[OP_COUNT] = {
"ping", "offer", "answer", "delete", "query", "list",
"start_recording", "stop_recording", "pause_recording",
"start_forwarding", "stop_forwarding", "block_DTMF",
"unblock_DTMF", "block_media", "unblock_media", "play_media", "stop_media",
"play_DTMF", "statistics", "silence_media", "unsilence_media",
"block_silence_media", "unblock_silence_media",
"publish", "subscribe_request",
"subscribe_answer", "unsubscribe",
};
const char *ng_command_strings_short[NGC_COUNT] = {
const char *ng_command_strings_short[OP_COUNT] = {
"Ping", "Offer", "Answer", "Delete", "Query", "List",
"StartRec", "StopRec", "PauseRec",
"StartFwd", "StopFwd", "BlkDTMF",
"UnblkDTMF", "BlkMedia", "UnblkMedia", "PlayMedia", "StopMedia",
"PlayDTMF", "Stats", "SlnMedia", "UnslnMedia",
"BlkSlnMedia", "UnblkSlnMedia",
"Pub", "SubReq", "SubAns", "Unsub",
};
@ -535,9 +538,9 @@ static GString *create_homer_msg(str *cookie, str *data) {
return msg;
}
static bool should_trace_msg(enum ng_command command) {
static bool should_trace_msg(enum ng_opmode command) {
switch (command) {
case NGC_PING:
case OP_PING:
return false;
default:
return true;
@ -627,7 +630,7 @@ struct control_ng_stats* get_control_ng_stats(const sockaddr_t *addr) {
cur->proxy = *addr;
ilogs(control, LOG_DEBUG,"Adding a proxy for control ng stats:%s", sockaddr_print_buf(addr));
for (int i = 0; i < NGC_COUNT; i++) {
for (int i = 0; i < OP_COUNT; i++) {
struct ng_command_stats *c = &cur->cmd[i];
mutex_init(&c->lock);
}
@ -667,7 +670,7 @@ static void control_ng_process_payload(ng_ctx *hctx, str *reply, str *data, cons
GString *log_str;
struct timeval cmd_start, cmd_stop, cmd_process_time = {0};
struct control_ng_stats* cur = get_control_ng_stats(&sin->address);
enum ng_command command = -1;
enum ng_opmode command = -1;
ng_command_ctx_t command_ctx = {0};
const ng_parser_t *parser = &ng_parser_native;
@ -740,103 +743,103 @@ static void control_ng_process_payload(ng_ctx *hctx, str *reply, str *data, cons
switch (__csh_lookup(&cmd)) {
case CSH_LOOKUP("ping"):
resultstr = "pong";
command = NGC_PING;
command = OP_PING;
break;
case CSH_LOOKUP("offer"):
errstr = call_offer_ng(&command_ctx, addr, sin);
command = NGC_OFFER;
command = OP_OFFER;
break;
case CSH_LOOKUP("answer"):
errstr = call_answer_ng(&command_ctx);
command = NGC_ANSWER;
command = OP_ANSWER;
break;
case CSH_LOOKUP("delete"):
errstr = call_delete_ng(&command_ctx);
command = NGC_DELETE;
command = OP_DELETE;
break;
case CSH_LOOKUP("query"):
errstr = call_query_ng(&command_ctx);
command = NGC_QUERY;
command = OP_QUERY;
break;
case CSH_LOOKUP("list"):
errstr = call_list_ng(&command_ctx);
command = NGC_LIST;
command = OP_LIST;
break;
case CSH_LOOKUP("start recording"):
errstr = call_start_recording_ng(&command_ctx);
command = NGC_START_RECORDING;
command = OP_START_RECORDING;
break;
case CSH_LOOKUP("stop recording"):
errstr = call_stop_recording_ng(&command_ctx);
command = NGC_STOP_RECORDING;
command = OP_STOP_RECORDING;
break;
case CSH_LOOKUP("pause recording"):
errstr = call_pause_recording_ng(&command_ctx);
command = NGC_PAUSE_RECORDING;
command = OP_PAUSE_RECORDING;
break;
case CSH_LOOKUP("start forwarding"):
errstr = call_start_forwarding_ng(&command_ctx);
command = NGC_START_FORWARDING;
command = OP_START_FORWARDING;
break;
case CSH_LOOKUP("stop forwarding"):
errstr = call_stop_forwarding_ng(&command_ctx);
command = NGC_STOP_FORWARDING;
command = OP_STOP_FORWARDING;
break;
case CSH_LOOKUP("block DTMF"):
errstr = call_block_dtmf_ng(&command_ctx);
command = NGC_BLOCK_DTMF;
command = OP_BLOCK_DTMF;
break;
case CSH_LOOKUP("unblock DTMF"):
errstr = call_unblock_dtmf_ng(&command_ctx);
command = NGC_UNBLOCK_DTMF;
command = OP_UNBLOCK_DTMF;
break;
case CSH_LOOKUP("block media"):
errstr = call_block_media_ng(&command_ctx);
command = NGC_BLOCK_MEDIA;
command = OP_BLOCK_MEDIA;
break;
case CSH_LOOKUP("unblock media"):
errstr = call_unblock_media_ng(&command_ctx);
command = NGC_UNBLOCK_MEDIA;
command = OP_UNBLOCK_MEDIA;
break;
case CSH_LOOKUP("silence media"):
errstr = call_silence_media_ng(&command_ctx);
command = NGC_SILENCE_MEDIA;
command = OP_SILENCE_MEDIA;
break;
case CSH_LOOKUP("unsilence media"):
errstr = call_unsilence_media_ng(&command_ctx);
command = NGC_UNSILENCE_MEDIA;
command = OP_UNSILENCE_MEDIA;
break;
case CSH_LOOKUP("play media"):
errstr = call_play_media_ng(&command_ctx);
command = NGC_PLAY_MEDIA;
command = OP_PLAY_MEDIA;
break;
case CSH_LOOKUP("stop media"):
errstr = call_stop_media_ng(&command_ctx);
command = NGC_STOP_MEDIA;
command = OP_STOP_MEDIA;
break;
case CSH_LOOKUP("play DTMF"):
errstr = call_play_dtmf_ng(&command_ctx);
command = NGC_PLAY_DTMF;
command = OP_PLAY_DTMF;
break;
case CSH_LOOKUP("statistics"):
errstr = statistics_ng(&command_ctx);
command = NGC_STATISTICS;
command = OP_STATISTICS;
break;
case CSH_LOOKUP("publish"):
errstr = call_publish_ng(&command_ctx, addr, sin);
command = NGC_PUBLISH;
command = OP_PUBLISH;
break;
case CSH_LOOKUP("subscribe request"):
errstr = call_subscribe_request_ng(&command_ctx);
command = NGC_SUBSCRIBE_REQ;
command = OP_SUBSCRIBE_REQ;
break;
case CSH_LOOKUP("subscribe answer"):
errstr = call_subscribe_answer_ng(&command_ctx);
command = NGC_SUBSCRIBE_ANS;
command = OP_SUBSCRIBE_ANS;
break;
case CSH_LOOKUP("unsubscribe"):
errstr = call_unsubscribe_ng(&command_ctx);
command = NGC_UNSUBSCRIBE;
command = OP_UNSUBSCRIBE;
break;
default:
errstr = "Unrecognized command";
@ -850,7 +853,7 @@ static void control_ng_process_payload(ng_ctx *hctx, str *reply, str *data, cons
//print command duration
timeval_from_us(&cmd_process_time, timeval_diff(&cmd_stop, &cmd_start));
if (command >= 0 && command < NGC_COUNT) {
if (command >= 0 && command < OP_COUNT) {
mutex_lock(&cur->cmd[command].lock);
cur->cmd[command].count++;
timeval_add(&cur->cmd[command].time, &cur->cmd[command].time, &cmd_process_time);


+ 1
- 1
daemon/graphite.c View File

@ -111,7 +111,7 @@ GString *print_graphite_data(void) {
g_string_append(graph_str, graphite_prefix); \
g_string_append_printf(graph_str, fmt " %llu\n", ##__VA_ARGS__, (unsigned long long)rtpe_now.tv_sec)
for (int i = 0; i < NGC_COUNT; i++) {
for (int i = 0; i < OP_COUNT; i++) {
GPF("%s_time_min %.6f", ng_command_strings_esc[i],
(double) atomic64_get_na(&rtpe_sampled_graphite_min_max_sampled.min.ng_command_times[i]) / 1000000.0);
GPF("%s_time_max %.6f", ng_command_strings_esc[i],


+ 1
- 1
daemon/janus.c View File

@ -625,7 +625,7 @@ static const char *janus_videoroom_join(struct websocket_message *wm, struct jan
call_get_or_create_monologue);
g_auto(sdp_ng_flags) flags;
call_ng_flags_init(&flags, OP_REQUEST);
call_ng_flags_init(&flags, OP_SUBSCRIBE_REQ);
flags.generate_mid = 1;
flags.rtcp_mirror = 1;


+ 8
- 8
daemon/recording.c View File

@ -46,22 +46,22 @@ static int vappend_meta_chunk(struct recording *recording, const char *buf, unsi
static int create_spool_dir_all(const char *spoolpath);
static void init_all(call_t *call);
static void sdp_after_all(struct recording *recording, const str *str, struct call_monologue *ml,
enum call_opmode opmode);
enum ng_opmode opmode);
static void dump_packet_all(struct media_packet *mp, const str *s);
static void finish_all(call_t *call, bool discard);
// pcap methods
static int rec_pcap_create_spool_dir(const char *dirpath);
static void rec_pcap_init(call_t *);
static void sdp_after_pcap(struct recording *, const str *str, struct call_monologue *, enum call_opmode opmode);
static void sdp_after_pcap(struct recording *, const str *str, struct call_monologue *, enum ng_opmode opmode);
static void dump_packet_pcap(struct media_packet *mp, const str *s);
static void finish_pcap(call_t *, bool discard);
static void response_pcap(struct recording *, const ng_parser_t *, parser_arg);
// proc methods
static void proc_init(call_t *);
static void sdp_before_proc(struct recording *, const str *, struct call_monologue *, enum call_opmode);
static void sdp_after_proc(struct recording *, const str *sdp, struct call_monologue *, enum call_opmode opmode);
static void sdp_before_proc(struct recording *, const str *, struct call_monologue *, enum ng_opmode);
static void sdp_after_proc(struct recording *, const str *sdp, struct call_monologue *, enum ng_opmode opmode);
static void meta_chunk_proc(struct recording *, const char *, const str *);
static void update_flags_proc(call_t *call, bool streams);
static void finish_proc(call_t *, bool discard);
@ -527,7 +527,7 @@ static char *meta_setup_file(struct recording *recording, const str *meta_prefix
* Write out a block of SDP to the metadata file.
*/
static void sdp_after_pcap(struct recording *recording, const str *s, struct call_monologue *ml,
enum call_opmode opmode)
enum ng_opmode opmode)
{
if (!recording)
return;
@ -878,7 +878,7 @@ static void proc_init(call_t *call) {
}
static void sdp_before_proc(struct recording *recording, const str *sdp, struct call_monologue *ml,
enum call_opmode opmode)
enum ng_opmode opmode)
{
if (!recording)
return;
@ -888,7 +888,7 @@ static void sdp_before_proc(struct recording *recording, const str *sdp, struct
}
static void sdp_after_proc(struct recording *recording, const str *sdp, struct call_monologue *ml,
enum call_opmode opmode)
enum ng_opmode opmode)
{
if (!recording)
return;
@ -1081,7 +1081,7 @@ static void init_all(call_t *call) {
}
static void sdp_after_all(struct recording *recording, const str *s, struct call_monologue *ml,
enum call_opmode opmode)
enum ng_opmode opmode)
{
sdp_after_pcap(recording, s, ml, opmode);
sdp_after_proc(recording, s, ml, opmode);


+ 3
- 3
daemon/sdp.c View File

@ -2628,7 +2628,7 @@ static struct packet_stream *print_rtcp(GString *s, struct call_media *media, pa
if (MEDIA_ISSET(media, RTCP_MUX) &&
(flags->opmode == OP_ANSWER ||
flags->opmode == OP_PUBLISH ||
((flags->opmode == OP_OFFER || flags->opmode == OP_REQUEST) && flags->rtcp_mux_require) ||
((flags->opmode == OP_OFFER || flags->opmode == OP_SUBSCRIBE_REQ) && flags->rtcp_mux_require) ||
IS_OP_OTHER(flags->opmode)))
{
insert_rtcp_attr(s, ps, flags, media);
@ -2872,7 +2872,7 @@ static void sdp_out_add_bandwidth(GString *out, struct call_monologue *monologue
* 0 value is supported (e.g. b=RR:0 and b=RS:0), to be able to disable rtcp */
struct media_subscription *ms = call_ml_get_top_ms(monologue);
/* don't add session level bandwidth for subscribe requests */
if (!ms || !ms->monologue || flags->opmode == OP_REQUEST)
if (!ms || !ms->monologue || flags->opmode == OP_SUBSCRIBE_REQ)
return;
if (ms->monologue->sdp_session_bandwidth.as >= 0)
g_string_append_printf(out, "b=AS:%ld\r\n", ms->monologue->sdp_session_bandwidth.as);
@ -2978,7 +2978,7 @@ static void sdp_out_handle_osrtp1(GString *out, struct call_media *media,
if (MEDIA_ISSET(media, LEGACY_OSRTP) && !MEDIA_ISSET(media, LEGACY_OSRTP_REV))
/* generate rejected m= line for accepted legacy OSRTP */
sdp_out_add_osrtp_media(out, media, prtp, NULL);
else if(flags->osrtp_offer_legacy && (flags->opmode == OP_OFFER || flags->opmode == OP_REQUEST)) {
else if(flags->osrtp_offer_legacy && (flags->opmode == OP_OFFER || flags->opmode == OP_SUBSCRIBE_REQ)) {
const struct transport_protocol *proto = media->protocol;
media->protocol = prtp;


+ 5
- 5
daemon/statistics.c View File

@ -480,7 +480,7 @@ stats_metric_q *statistics_gather_metrics(struct interface_sampled_rate_stats *i
METRIC("minmanagedsessions", "Min managed sessions", UINT64F, UINT64F, min_sess_iv);
METRIC("maxmanagedsessions", "Max managed sessions", UINT64F, UINT64F, max_sess_iv);
for (int i = 0; i < NGC_COUNT; i++) {
for (int i = 0; i < OP_COUNT; i++) {
double min = (double) atomic64_get_na(&rtpe_sampled_graphite_min_max_sampled.min.ng_command_times[i]) / 1000000.0;
double max = (double) atomic64_get_na(&rtpe_sampled_graphite_min_max_sampled.max.ng_command_times[i]) / 1000000.0;
double avg = (double) atomic64_get_na(&rtpe_sampled_graphite_avg.avg.ng_command_times[i]) / 1000000.0;
@ -494,7 +494,7 @@ stats_metric_q *statistics_gather_metrics(struct interface_sampled_rate_stats *i
METRICsva(avg_label, "%.6f", avg);
}
for (int i = 0; i < NGC_COUNT; i++) {
for (int i = 0; i < OP_COUNT; i++) {
uint64_t min = atomic64_get_na(&rtpe_rate_graphite_min_max_avg_sampled.min.ng_commands[i]);
uint64_t max = atomic64_get_na(&rtpe_rate_graphite_min_max_avg_sampled.max.ng_commands[i]);
uint64_t avg = atomic64_get_na(&rtpe_rate_graphite_min_max_avg_sampled.avg.ng_commands[i]);
@ -574,7 +574,7 @@ stats_metric_q *statistics_gather_metrics(struct interface_sampled_rate_stats *i
GString *tmp = g_string_new("");
g_string_append_printf(tmp, " %20s ", "Proxy");
for (int i = 0; i < NGC_COUNT; i++)
for (int i = 0; i < OP_COUNT; i++)
g_string_append_printf(tmp, "| %10s ", ng_command_strings_short[i]);
HEADERl("%s", tmp->str);
g_string_free(tmp, TRUE);
@ -595,7 +595,7 @@ stats_metric_q *statistics_gather_metrics(struct interface_sampled_rate_stats *i
tmp = g_string_new("");
METRICsva("proxy", "\"%s\"", sockaddr_print_buf(&cur->proxy));
g_string_append_printf(tmp, " %20s ", sockaddr_print_buf(&cur->proxy));
for (int i = 0; i < NGC_COUNT; i++) {
for (int i = 0; i < OP_COUNT; i++) {
mutex_lock(&cur->cmd[i].lock);
g_string_append_printf(tmp, "| %10u ", cur->cmd[i].count);
@ -638,7 +638,7 @@ stats_metric_q *statistics_gather_metrics(struct interface_sampled_rate_stats *i
HEADER("]", "");
for (int i = 0; i < NGC_COUNT; i++) {
for (int i = 0; i < OP_COUNT; i++) {
char *mn = g_strdup_printf("total%scount", ng_command_strings_short[i]);
char *lw = g_ascii_strdown(mn, -1);
METRICs(lw, "%u", total.cmd[i].count);


+ 4
- 4
include/call.h View File

@ -59,7 +59,7 @@ enum message_type {
SIP_REPLY,
};
#define IS_OP_OTHER(opmode) \
#define IS_OP_OTHER(opmode) \
((opmode == OP_DELETE || opmode == OP_QUERY) \
|| (opmode == OP_LIST || opmode == OP_PING) \
|| (opmode == OP_STATISTICS || opmode == OP_PLAY_DTMF) \
@ -73,7 +73,7 @@ enum message_type {
|| (opmode == OP_STOP_RECORDING || opmode == OP_PAUSE_RECORDING) \
|| (opmode == OP_OTHER))
#define IS_OP_DIRECTIONAL(opmode) \
#define IS_OP_DIRECTIONAL(opmode) \
((opmode == OP_BLOCK_DTMF || opmode == OP_BLOCK_MEDIA) \
|| (opmode == OP_UNBLOCK_DTMF || opmode == OP_UNBLOCK_MEDIA) \
|| (opmode == OP_START_FORWARDING || opmode == OP_STOP_FORWARDING))
@ -818,7 +818,7 @@ void media_subscriptions_clear(subscription_q *q);
G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(subscription_q, media_subscriptions_clear)
call_t *call_get_or_create(const str *callid, bool exclusive);
call_t *call_get_opmode(const str *callid, enum call_opmode opmode);
call_t *call_get_opmode(const str *callid, enum ng_opmode opmode);
void call_make_own_foreign(call_t *c, bool foreign);
int call_get_mono_dialogue(struct call_monologue *monologues[2], call_t *call,
const str *fromtag,
@ -852,7 +852,7 @@ void call_media_unkernelize(struct call_media *media, const char *reason);
void dialogue_unconfirm(struct call_monologue *ml, const char *);
void __monologue_unconfirm(struct call_monologue *monologue, const char *);
void __media_unconfirm(struct call_media *media, const char *);
void update_init_subscribers(struct call_monologue *ml, enum call_opmode opmode);
void update_init_subscribers(struct call_monologue *ml, enum ng_opmode opmode);
int call_stream_address(GString *, struct packet_stream *ps, enum stream_address_format format,
const struct local_intf *ifa, bool keep_unspec);


+ 2
- 2
include/call_interfaces.h View File

@ -34,7 +34,7 @@ struct sockaddr_in6;
X(sdes_only) /* individual crypto suites which are only accepted */
struct sdp_ng_flags {
enum call_opmode opmode;
enum ng_opmode opmode;
enum message_type message_type;
unsigned int code;
str call_id;
@ -306,7 +306,7 @@ const char *call_unsubscribe_ng(ng_command_ctx_t *);
void add_media_to_sub_list(subscription_q *q, struct call_media *media, struct call_monologue *ml);
void save_last_sdp(struct call_monologue *ml, str *sdp, sdp_sessions_q *parsed, sdp_streams_q *streams);
void call_ng_flags_init(sdp_ng_flags *out, enum call_opmode opmode);
void call_ng_flags_init(sdp_ng_flags *out, enum ng_opmode opmode);
void call_ng_free_flags(sdp_ng_flags *flags);
void call_unlock_release(call_t *c);


+ 2
- 2
include/cdr.h View File

@ -5,10 +5,10 @@
#include "types.h"
enum tag_type;
enum call_opmode;
enum ng_opmode;
const char *get_tag_type_text(enum tag_type t);
const char *get_opmode_text(enum call_opmode);
const char *get_opmode_text(enum ng_opmode);
void cdr_update_entry(call_t * c);
#endif /* CDR_H_ */

+ 36
- 64
include/control_ng.h View File

@ -1,34 +1,37 @@
#ifndef _CONTROL_NG_H_
#define _CONTROL_NG_H_
enum ng_command {
NGC_PING = 0,
NGC_OFFER,
NGC_ANSWER,
NGC_DELETE,
NGC_QUERY,
NGC_LIST,
NGC_START_RECORDING,
NGC_STOP_RECORDING,
NGC_PAUSE_RECORDING,
NGC_START_FORWARDING,
NGC_STOP_FORWARDING,
NGC_BLOCK_DTMF,
NGC_UNBLOCK_DTMF,
NGC_BLOCK_MEDIA,
NGC_UNBLOCK_MEDIA,
NGC_PLAY_MEDIA,
NGC_STOP_MEDIA,
NGC_PLAY_DTMF,
NGC_STATISTICS,
NGC_SILENCE_MEDIA,
NGC_UNSILENCE_MEDIA,
NGC_PUBLISH,
NGC_SUBSCRIBE_REQ,
NGC_SUBSCRIBE_ANS,
NGC_UNSUBSCRIBE,
NGC_COUNT // last, number of elements
enum ng_opmode {
OP_PING = 0,
OP_OFFER,
OP_ANSWER,
OP_DELETE,
OP_QUERY,
OP_LIST,
OP_START_RECORDING,
OP_STOP_RECORDING,
OP_PAUSE_RECORDING,
OP_START_FORWARDING,
OP_STOP_FORWARDING,
OP_BLOCK_DTMF,
OP_UNBLOCK_DTMF,
OP_BLOCK_MEDIA,
OP_UNBLOCK_MEDIA,
OP_PLAY_MEDIA,
OP_STOP_MEDIA,
OP_PLAY_DTMF,
OP_STATISTICS,
OP_SILENCE_MEDIA,
OP_UNSILENCE_MEDIA,
OP_BLOCK_SILENCE_MEDIA,
OP_UNBLOCK_SILENCE_MEDIA,
OP_PUBLISH,
OP_SUBSCRIBE_REQ,
OP_SUBSCRIBE_ANS,
OP_UNSUBSCRIBE,
OP_COUNT, // last, number of elements
OP_OTHER = OP_COUNT // alias to above
};
#include "obj.h"
@ -47,7 +50,7 @@ struct ng_command_stats {
struct control_ng_stats {
sockaddr_t proxy;
struct ng_command_stats cmd[NGC_COUNT];
struct ng_command_stats cmd[OP_COUNT];
int errors;
};
@ -68,37 +71,6 @@ struct ng_buffer {
};
enum call_opmode {
OP_OFFER = 0,
OP_ANSWER = 1,
OP_REQUEST,
OP_REQ_ANSWER,
OP_PUBLISH,
OP_DELETE,
OP_QUERY,
OP_LIST,
OP_PING,
OP_STATISTICS,
OP_PLAY_DTMF,
OP_BLOCK_DTMF,
OP_UNBLOCK_DTMF,
OP_BLOCK_MEDIA,
OP_UNBLOCK_MEDIA,
OP_SILENCE_MEDIA,
OP_UNSILENCE_MEDIA,
OP_BLOCK_SILENCE_MEDIA,
OP_UNBLOCK_SILENCE_MEDIA,
OP_PLAY_MEDIA,
OP_STOP_MEDIA,
OP_START_FORWARDING,
OP_STOP_FORWARDING,
OP_UNSUBSCRIBE,
OP_START_RECORDING,
OP_STOP_RECORDING,
OP_PAUSE_RECORDING,
OP_OTHER,
};
typedef union {
str_q *q;
str_case_ht *sct;
@ -165,7 +137,7 @@ struct ng_command_ctx {
parser_arg req;
parser_arg resp;
sdp_ng_flags *flags;
enum call_opmode opmode;
enum ng_opmode opmode;
};
@ -173,9 +145,9 @@ extern const ng_parser_t ng_parser_native;
extern const ng_parser_t ng_parser_json;
extern const char *ng_command_strings[NGC_COUNT];
extern const char *ng_command_strings_esc[NGC_COUNT];
extern const char *ng_command_strings_short[NGC_COUNT];
extern const char *ng_command_strings[OP_COUNT];
extern const char *ng_command_strings_esc[OP_COUNT];
extern const char *ng_command_strings_short[OP_COUNT];
struct control_ng *control_ng_new(const endpoint_t *);
struct control_ng *control_ng_tcp_new(const endpoint_t *);


+ 1
- 1
include/counter_stats_fields.inc View File

@ -2,7 +2,7 @@
F(packets_user)
F(bytes_user)
F(errors_user)
FA(ng_commands, NGC_COUNT)
FA(ng_commands, OP_COUNT)
F(timeout_sess)
F(managed_sess)
F(foreign_sess)


+ 3
- 3
include/recording.h View File

@ -19,7 +19,7 @@
struct packet_stream;
struct media_packet;
enum call_opmode;
enum ng_opmode;
struct rtpengine_target_info;
struct call_monologue;
struct call_media;
@ -62,9 +62,9 @@ struct recording_method {
int (*create_spool_dir)(const char *);
void (*init_struct)(call_t *);
void (*sdp_before)(struct recording *, const str *, struct call_monologue *, enum call_opmode);
void (*sdp_before)(struct recording *, const str *, struct call_monologue *, enum ng_opmode);
void (*sdp_after)(struct recording *, const str *, struct call_monologue *,
enum call_opmode);
enum ng_opmode);
void (*meta_chunk)(struct recording *, const char *, const str *);
void (*update_flags)(call_t *call, bool streams);


+ 1
- 1
include/sampled_stats_fields.inc View File

@ -1,4 +1,4 @@
FA(ng_command_times, NGC_COUNT)
FA(ng_command_times, OP_COUNT)
F(mos)
F(jitter)
F(rtt_e2e)


+ 366
- 16
t/test-stats.c View File

@ -234,6 +234,20 @@ int main(void) {
"unsilence_medias_ps_max 0 150\n"
"unsilence_medias_ps_avg 0 150\n"
"unsilence_media_count 0 150\n"
"block_silence_media_time_min 0.000000 150\n"
"block_silence_media_time_max 0.000000 150\n"
"block_silence_media_time_avg 0.000000 150\n"
"block_silence_medias_ps_min 0 150\n"
"block_silence_medias_ps_max 0 150\n"
"block_silence_medias_ps_avg 0 150\n"
"block_silence_media_count 0 150\n"
"unblock_silence_media_time_min 0.000000 150\n"
"unblock_silence_media_time_max 0.000000 150\n"
"unblock_silence_media_time_avg 0.000000 150\n"
"unblock_silence_medias_ps_min 0 150\n"
"unblock_silence_medias_ps_max 0 150\n"
"unblock_silence_medias_ps_avg 0 150\n"
"unblock_silence_media_count 0 150\n"
"publish_time_min 0.000000 150\n"
"publish_time_max 0.000000 150\n"
"publish_time_avg 0.000000 150\n"
@ -672,6 +686,22 @@ int main(void) {
"0.000000\n"
"avgunsilence mediadelay\n"
"0.000000\n"
"Min/Max/Avg block silence media processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minblock silence mediadelay\n"
"0.000000\n"
"maxblock silence mediadelay\n"
"0.000000\n"
"avgblock silence mediadelay\n"
"0.000000\n"
"Min/Max/Avg unblock silence media processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minunblock silence mediadelay\n"
"0.000000\n"
"maxunblock silence mediadelay\n"
"0.000000\n"
"avgunblock silence mediadelay\n"
"0.000000\n"
"Min/Max/Avg publish processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minpublishdelay\n"
@ -872,6 +902,22 @@ int main(void) {
"0\n"
"avgunsilence mediarequestrate\n"
"0\n"
"Min/Max/Avg block silence media requests per second\n"
"0/0/0 per sec\n"
"minblock silence mediarequestrate\n"
"0\n"
"maxblock silence mediarequestrate\n"
"0\n"
"avgblock silence mediarequestrate\n"
"0\n"
"Min/Max/Avg unblock silence media requests per second\n"
"0/0/0 per sec\n"
"minunblock silence mediarequestrate\n"
"0\n"
"maxunblock silence mediarequestrate\n"
"0\n"
"avgunblock silence mediarequestrate\n"
"0\n"
"Min/Max/Avg publish requests per second\n"
"0/0/0 per sec\n"
"minpublishrequestrate\n"
@ -1067,7 +1113,7 @@ int main(void) {
"{\n"
"proxies\n"
"[\n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | Pub | SubReq | SubAns | Unsub \n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | BlkSlnMedia | UnblkSlnMedia | Pub | SubReq | SubAns | Unsub \n"
"\n"
"]\n"
"totalpingcount\n"
@ -1112,6 +1158,10 @@ int main(void) {
"0\n"
"totalunslnmediacount\n"
"0\n"
"totalblkslnmediacount\n"
"0\n"
"totalunblkslnmediacount\n"
"0\n"
"totalpubcount\n"
"0\n"
"totalsubreqcount\n"
@ -1132,11 +1182,11 @@ int main(void) {
"]\n"
"}\n");
RTPE_STATS_INC(ng_commands[NGC_OFFER]);
RTPE_STATS_SAMPLE(ng_command_times[NGC_OFFER], 2500000LL);
RTPE_STATS_INC(ng_commands[OP_OFFER]);
RTPE_STATS_SAMPLE(ng_command_times[OP_OFFER], 2500000LL);
RTPE_STATS_INC(ng_commands[NGC_OFFER]);
RTPE_STATS_SAMPLE(ng_command_times[NGC_OFFER], 3200000LL);
RTPE_STATS_INC(ng_commands[OP_OFFER]);
RTPE_STATS_SAMPLE(ng_command_times[OP_OFFER], 3200000LL);
graph_str = print_graphite_data();
assert_g_string_eq(graph_str,
@ -1287,6 +1337,20 @@ int main(void) {
"unsilence_medias_ps_max 0 150\n"
"unsilence_medias_ps_avg 0 150\n"
"unsilence_media_count 0 150\n"
"block_silence_media_time_min 0.000000 150\n"
"block_silence_media_time_max 0.000000 150\n"
"block_silence_media_time_avg 0.000000 150\n"
"block_silence_medias_ps_min 0 150\n"
"block_silence_medias_ps_max 0 150\n"
"block_silence_medias_ps_avg 0 150\n"
"block_silence_media_count 0 150\n"
"unblock_silence_media_time_min 0.000000 150\n"
"unblock_silence_media_time_max 0.000000 150\n"
"unblock_silence_media_time_avg 0.000000 150\n"
"unblock_silence_medias_ps_min 0 150\n"
"unblock_silence_medias_ps_max 0 150\n"
"unblock_silence_medias_ps_avg 0 150\n"
"unblock_silence_media_count 0 150\n"
"publish_time_min 0.000000 150\n"
"publish_time_max 0.000000 150\n"
"publish_time_avg 0.000000 150\n"
@ -1725,6 +1789,22 @@ int main(void) {
"0.000000\n"
"avgunsilence mediadelay\n"
"0.000000\n"
"Min/Max/Avg block silence media processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minblock silence mediadelay\n"
"0.000000\n"
"maxblock silence mediadelay\n"
"0.000000\n"
"avgblock silence mediadelay\n"
"0.000000\n"
"Min/Max/Avg unblock silence media processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minunblock silence mediadelay\n"
"0.000000\n"
"maxunblock silence mediadelay\n"
"0.000000\n"
"avgunblock silence mediadelay\n"
"0.000000\n"
"Min/Max/Avg publish processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minpublishdelay\n"
@ -1925,6 +2005,22 @@ int main(void) {
"0\n"
"avgunsilence mediarequestrate\n"
"0\n"
"Min/Max/Avg block silence media requests per second\n"
"0/0/0 per sec\n"
"minblock silence mediarequestrate\n"
"0\n"
"maxblock silence mediarequestrate\n"
"0\n"
"avgblock silence mediarequestrate\n"
"0\n"
"Min/Max/Avg unblock silence media requests per second\n"
"0/0/0 per sec\n"
"minunblock silence mediarequestrate\n"
"0\n"
"maxunblock silence mediarequestrate\n"
"0\n"
"avgunblock silence mediarequestrate\n"
"0\n"
"Min/Max/Avg publish requests per second\n"
"0/0/0 per sec\n"
"minpublishrequestrate\n"
@ -2120,7 +2216,7 @@ int main(void) {
"{\n"
"proxies\n"
"[\n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | Pub | SubReq | SubAns | Unsub \n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | BlkSlnMedia | UnblkSlnMedia | Pub | SubReq | SubAns | Unsub \n"
"\n"
"]\n"
"totalpingcount\n"
@ -2165,6 +2261,10 @@ int main(void) {
"0\n"
"totalunslnmediacount\n"
"0\n"
"totalblkslnmediacount\n"
"0\n"
"totalunblkslnmediacount\n"
"0\n"
"totalpubcount\n"
"0\n"
"totalsubreqcount\n"
@ -2185,8 +2285,8 @@ int main(void) {
"]\n"
"}\n");
RTPE_STATS_INC(ng_commands[NGC_ANSWER]);
RTPE_STATS_SAMPLE(ng_command_times[NGC_ANSWER], 3200000LL);
RTPE_STATS_INC(ng_commands[OP_ANSWER]);
RTPE_STATS_SAMPLE(ng_command_times[OP_ANSWER], 3200000LL);
graph_str = print_graphite_data();
assert_g_string_eq(graph_str,
@ -2337,6 +2437,20 @@ int main(void) {
"unsilence_medias_ps_max 0 150\n"
"unsilence_medias_ps_avg 0 150\n"
"unsilence_media_count 0 150\n"
"block_silence_media_time_min 0.000000 150\n"
"block_silence_media_time_max 0.000000 150\n"
"block_silence_media_time_avg 0.000000 150\n"
"block_silence_medias_ps_min 0 150\n"
"block_silence_medias_ps_max 0 150\n"
"block_silence_medias_ps_avg 0 150\n"
"block_silence_media_count 0 150\n"
"unblock_silence_media_time_min 0.000000 150\n"
"unblock_silence_media_time_max 0.000000 150\n"
"unblock_silence_media_time_avg 0.000000 150\n"
"unblock_silence_medias_ps_min 0 150\n"
"unblock_silence_medias_ps_max 0 150\n"
"unblock_silence_medias_ps_avg 0 150\n"
"unblock_silence_media_count 0 150\n"
"publish_time_min 0.000000 150\n"
"publish_time_max 0.000000 150\n"
"publish_time_avg 0.000000 150\n"
@ -2775,6 +2889,22 @@ int main(void) {
"0.000000\n"
"avgunsilence mediadelay\n"
"0.000000\n"
"Min/Max/Avg block silence media processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minblock silence mediadelay\n"
"0.000000\n"
"maxblock silence mediadelay\n"
"0.000000\n"
"avgblock silence mediadelay\n"
"0.000000\n"
"Min/Max/Avg unblock silence media processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minunblock silence mediadelay\n"
"0.000000\n"
"maxunblock silence mediadelay\n"
"0.000000\n"
"avgunblock silence mediadelay\n"
"0.000000\n"
"Min/Max/Avg publish processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minpublishdelay\n"
@ -2975,6 +3105,22 @@ int main(void) {
"0\n"
"avgunsilence mediarequestrate\n"
"0\n"
"Min/Max/Avg block silence media requests per second\n"
"0/0/0 per sec\n"
"minblock silence mediarequestrate\n"
"0\n"
"maxblock silence mediarequestrate\n"
"0\n"
"avgblock silence mediarequestrate\n"
"0\n"
"Min/Max/Avg unblock silence media requests per second\n"
"0/0/0 per sec\n"
"minunblock silence mediarequestrate\n"
"0\n"
"maxunblock silence mediarequestrate\n"
"0\n"
"avgunblock silence mediarequestrate\n"
"0\n"
"Min/Max/Avg publish requests per second\n"
"0/0/0 per sec\n"
"minpublishrequestrate\n"
@ -3170,7 +3316,7 @@ int main(void) {
"{\n"
"proxies\n"
"[\n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | Pub | SubReq | SubAns | Unsub \n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | BlkSlnMedia | UnblkSlnMedia | Pub | SubReq | SubAns | Unsub \n"
"\n"
"]\n"
"totalpingcount\n"
@ -3215,6 +3361,10 @@ int main(void) {
"0\n"
"totalunslnmediacount\n"
"0\n"
"totalblkslnmediacount\n"
"0\n"
"totalunblkslnmediacount\n"
"0\n"
"totalpubcount\n"
"0\n"
"totalsubreqcount\n"
@ -3241,9 +3391,9 @@ int main(void) {
stats_counters_calc_rate(rtpe_stats, 150000000, &rtpe_stats_intv, &rtpe_stats_rate);
stats_rate_min_max(&rtpe_rate_graphite_min_max, &rtpe_stats_rate);
RTPE_STATS_ADD(ng_commands[NGC_OFFER], 100);
RTPE_STATS_ADD(ng_commands[OP_OFFER], 100);
rtpe_now.tv_sec += 2;
RTPE_STATS_ADD(ng_commands[NGC_OFFER], 20);
RTPE_STATS_ADD(ng_commands[OP_OFFER], 20);
call_timer();
stats_counters_calc_rate(rtpe_stats, 2000000, &rtpe_stats_intv, &rtpe_stats_rate);
@ -3251,7 +3401,7 @@ int main(void) {
// timer run time interval increased
rtpe_now.tv_sec += 5;
RTPE_STATS_ADD(ng_commands[NGC_OFFER], 200);
RTPE_STATS_ADD(ng_commands[OP_OFFER], 200);
call_timer();
stats_counters_calc_rate(rtpe_stats, 5000000, &rtpe_stats_intv, &rtpe_stats_rate);
@ -3406,6 +3556,20 @@ int main(void) {
"unsilence_medias_ps_max 0 157\n"
"unsilence_medias_ps_avg 0 157\n"
"unsilence_media_count 0 157\n"
"block_silence_media_time_min 0.000000 157\n"
"block_silence_media_time_max 0.000000 157\n"
"block_silence_media_time_avg 0.000000 157\n"
"block_silence_medias_ps_min 0 157\n"
"block_silence_medias_ps_max 0 157\n"
"block_silence_medias_ps_avg 0 157\n"
"block_silence_media_count 0 157\n"
"unblock_silence_media_time_min 0.000000 157\n"
"unblock_silence_media_time_max 0.000000 157\n"
"unblock_silence_media_time_avg 0.000000 157\n"
"unblock_silence_medias_ps_min 0 157\n"
"unblock_silence_medias_ps_max 0 157\n"
"unblock_silence_medias_ps_avg 0 157\n"
"unblock_silence_media_count 0 157\n"
"publish_time_min 0.000000 157\n"
"publish_time_max 0.000000 157\n"
"publish_time_avg 0.000000 157\n"
@ -3844,6 +4008,22 @@ int main(void) {
"0.000000\n"
"avgunsilence mediadelay\n"
"0.000000\n"
"Min/Max/Avg block silence media processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minblock silence mediadelay\n"
"0.000000\n"
"maxblock silence mediadelay\n"
"0.000000\n"
"avgblock silence mediadelay\n"
"0.000000\n"
"Min/Max/Avg unblock silence media processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minunblock silence mediadelay\n"
"0.000000\n"
"maxunblock silence mediadelay\n"
"0.000000\n"
"avgunblock silence mediadelay\n"
"0.000000\n"
"Min/Max/Avg publish processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minpublishdelay\n"
@ -4044,6 +4224,22 @@ int main(void) {
"0\n"
"avgunsilence mediarequestrate\n"
"0\n"
"Min/Max/Avg block silence media requests per second\n"
"0/0/0 per sec\n"
"minblock silence mediarequestrate\n"
"0\n"
"maxblock silence mediarequestrate\n"
"0\n"
"avgblock silence mediarequestrate\n"
"0\n"
"Min/Max/Avg unblock silence media requests per second\n"
"0/0/0 per sec\n"
"minunblock silence mediarequestrate\n"
"0\n"
"maxunblock silence mediarequestrate\n"
"0\n"
"avgunblock silence mediarequestrate\n"
"0\n"
"Min/Max/Avg publish requests per second\n"
"0/0/0 per sec\n"
"minpublishrequestrate\n"
@ -4239,7 +4435,7 @@ int main(void) {
"{\n"
"proxies\n"
"[\n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | Pub | SubReq | SubAns | Unsub \n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | BlkSlnMedia | UnblkSlnMedia | Pub | SubReq | SubAns | Unsub \n"
"\n"
"]\n"
"totalpingcount\n"
@ -4284,6 +4480,10 @@ int main(void) {
"0\n"
"totalunslnmediacount\n"
"0\n"
"totalblkslnmediacount\n"
"0\n"
"totalunblkslnmediacount\n"
"0\n"
"totalpubcount\n"
"0\n"
"totalsubreqcount\n"
@ -4464,6 +4664,20 @@ int main(void) {
"unsilence_medias_ps_max 0 157\n"
"unsilence_medias_ps_avg 0 157\n"
"unsilence_media_count 0 157\n"
"block_silence_media_time_min 0.000000 157\n"
"block_silence_media_time_max 0.000000 157\n"
"block_silence_media_time_avg 0.000000 157\n"
"block_silence_medias_ps_min 0 157\n"
"block_silence_medias_ps_max 0 157\n"
"block_silence_medias_ps_avg 0 157\n"
"block_silence_media_count 0 157\n"
"unblock_silence_media_time_min 0.000000 157\n"
"unblock_silence_media_time_max 0.000000 157\n"
"unblock_silence_media_time_avg 0.000000 157\n"
"unblock_silence_medias_ps_min 0 157\n"
"unblock_silence_medias_ps_max 0 157\n"
"unblock_silence_medias_ps_avg 0 157\n"
"unblock_silence_media_count 0 157\n"
"publish_time_min 0.000000 157\n"
"publish_time_max 0.000000 157\n"
"publish_time_avg 0.000000 157\n"
@ -4902,6 +5116,22 @@ int main(void) {
"0.000000\n"
"avgunsilence mediadelay\n"
"0.000000\n"
"Min/Max/Avg block silence media processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minblock silence mediadelay\n"
"0.000000\n"
"maxblock silence mediadelay\n"
"0.000000\n"
"avgblock silence mediadelay\n"
"0.000000\n"
"Min/Max/Avg unblock silence media processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minunblock silence mediadelay\n"
"0.000000\n"
"maxunblock silence mediadelay\n"
"0.000000\n"
"avgunblock silence mediadelay\n"
"0.000000\n"
"Min/Max/Avg publish processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minpublishdelay\n"
@ -5102,6 +5332,22 @@ int main(void) {
"0\n"
"avgunsilence mediarequestrate\n"
"0\n"
"Min/Max/Avg block silence media requests per second\n"
"0/0/0 per sec\n"
"minblock silence mediarequestrate\n"
"0\n"
"maxblock silence mediarequestrate\n"
"0\n"
"avgblock silence mediarequestrate\n"
"0\n"
"Min/Max/Avg unblock silence media requests per second\n"
"0/0/0 per sec\n"
"minunblock silence mediarequestrate\n"
"0\n"
"maxunblock silence mediarequestrate\n"
"0\n"
"avgunblock silence mediarequestrate\n"
"0\n"
"Min/Max/Avg publish requests per second\n"
"0/0/0 per sec\n"
"minpublishrequestrate\n"
@ -5297,7 +5543,7 @@ int main(void) {
"{\n"
"proxies\n"
"[\n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | Pub | SubReq | SubAns | Unsub \n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | BlkSlnMedia | UnblkSlnMedia | Pub | SubReq | SubAns | Unsub \n"
"\n"
"]\n"
"totalpingcount\n"
@ -5342,6 +5588,10 @@ int main(void) {
"0\n"
"totalunslnmediacount\n"
"0\n"
"totalblkslnmediacount\n"
"0\n"
"totalunblkslnmediacount\n"
"0\n"
"totalpubcount\n"
"0\n"
"totalsubreqcount\n"
@ -5517,6 +5767,20 @@ int main(void) {
"unsilence_medias_ps_max 0 200\n"
"unsilence_medias_ps_avg 0 200\n"
"unsilence_media_count 0 200\n"
"block_silence_media_time_min 0.000000 200\n"
"block_silence_media_time_max 0.000000 200\n"
"block_silence_media_time_avg 0.000000 200\n"
"block_silence_medias_ps_min 0 200\n"
"block_silence_medias_ps_max 0 200\n"
"block_silence_medias_ps_avg 0 200\n"
"block_silence_media_count 0 200\n"
"unblock_silence_media_time_min 0.000000 200\n"
"unblock_silence_media_time_max 0.000000 200\n"
"unblock_silence_media_time_avg 0.000000 200\n"
"unblock_silence_medias_ps_min 0 200\n"
"unblock_silence_medias_ps_max 0 200\n"
"unblock_silence_medias_ps_avg 0 200\n"
"unblock_silence_media_count 0 200\n"
"publish_time_min 0.000000 200\n"
"publish_time_max 0.000000 200\n"
"publish_time_avg 0.000000 200\n"
@ -5955,6 +6219,22 @@ int main(void) {
"0.000000\n"
"avgunsilence mediadelay\n"
"0.000000\n"
"Min/Max/Avg block silence media processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minblock silence mediadelay\n"
"0.000000\n"
"maxblock silence mediadelay\n"
"0.000000\n"
"avgblock silence mediadelay\n"
"0.000000\n"
"Min/Max/Avg unblock silence media processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minunblock silence mediadelay\n"
"0.000000\n"
"maxunblock silence mediadelay\n"
"0.000000\n"
"avgunblock silence mediadelay\n"
"0.000000\n"
"Min/Max/Avg publish processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minpublishdelay\n"
@ -6155,6 +6435,22 @@ int main(void) {
"0\n"
"avgunsilence mediarequestrate\n"
"0\n"
"Min/Max/Avg block silence media requests per second\n"
"0/0/0 per sec\n"
"minblock silence mediarequestrate\n"
"0\n"
"maxblock silence mediarequestrate\n"
"0\n"
"avgblock silence mediarequestrate\n"
"0\n"
"Min/Max/Avg unblock silence media requests per second\n"
"0/0/0 per sec\n"
"minunblock silence mediarequestrate\n"
"0\n"
"maxunblock silence mediarequestrate\n"
"0\n"
"avgunblock silence mediarequestrate\n"
"0\n"
"Min/Max/Avg publish requests per second\n"
"0/0/0 per sec\n"
"minpublishrequestrate\n"
@ -6350,7 +6646,7 @@ int main(void) {
"{\n"
"proxies\n"
"[\n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | Pub | SubReq | SubAns | Unsub \n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | BlkSlnMedia | UnblkSlnMedia | Pub | SubReq | SubAns | Unsub \n"
"\n"
"]\n"
"totalpingcount\n"
@ -6395,6 +6691,10 @@ int main(void) {
"0\n"
"totalunslnmediacount\n"
"0\n"
"totalblkslnmediacount\n"
"0\n"
"totalunblkslnmediacount\n"
"0\n"
"totalpubcount\n"
"0\n"
"totalsubreqcount\n"
@ -6572,6 +6872,20 @@ int main(void) {
"unsilence_medias_ps_max 0 200\n"
"unsilence_medias_ps_avg 0 200\n"
"unsilence_media_count 0 200\n"
"block_silence_media_time_min 0.000000 200\n"
"block_silence_media_time_max 0.000000 200\n"
"block_silence_media_time_avg 0.000000 200\n"
"block_silence_medias_ps_min 0 200\n"
"block_silence_medias_ps_max 0 200\n"
"block_silence_medias_ps_avg 0 200\n"
"block_silence_media_count 0 200\n"
"unblock_silence_media_time_min 0.000000 200\n"
"unblock_silence_media_time_max 0.000000 200\n"
"unblock_silence_media_time_avg 0.000000 200\n"
"unblock_silence_medias_ps_min 0 200\n"
"unblock_silence_medias_ps_max 0 200\n"
"unblock_silence_medias_ps_avg 0 200\n"
"unblock_silence_media_count 0 200\n"
"publish_time_min 0.000000 200\n"
"publish_time_max 0.000000 200\n"
"publish_time_avg 0.000000 200\n"
@ -7010,6 +7324,22 @@ int main(void) {
"0.000000\n"
"avgunsilence mediadelay\n"
"0.000000\n"
"Min/Max/Avg block silence media processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minblock silence mediadelay\n"
"0.000000\n"
"maxblock silence mediadelay\n"
"0.000000\n"
"avgblock silence mediadelay\n"
"0.000000\n"
"Min/Max/Avg unblock silence media processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minunblock silence mediadelay\n"
"0.000000\n"
"maxunblock silence mediadelay\n"
"0.000000\n"
"avgunblock silence mediadelay\n"
"0.000000\n"
"Min/Max/Avg publish processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minpublishdelay\n"
@ -7210,6 +7540,22 @@ int main(void) {
"0\n"
"avgunsilence mediarequestrate\n"
"0\n"
"Min/Max/Avg block silence media requests per second\n"
"0/0/0 per sec\n"
"minblock silence mediarequestrate\n"
"0\n"
"maxblock silence mediarequestrate\n"
"0\n"
"avgblock silence mediarequestrate\n"
"0\n"
"Min/Max/Avg unblock silence media requests per second\n"
"0/0/0 per sec\n"
"minunblock silence mediarequestrate\n"
"0\n"
"maxunblock silence mediarequestrate\n"
"0\n"
"avgunblock silence mediarequestrate\n"
"0\n"
"Min/Max/Avg publish requests per second\n"
"0/0/0 per sec\n"
"minpublishrequestrate\n"
@ -7405,7 +7751,7 @@ int main(void) {
"{\n"
"proxies\n"
"[\n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | Pub | SubReq | SubAns | Unsub \n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | BlkSlnMedia | UnblkSlnMedia | Pub | SubReq | SubAns | Unsub \n"
"\n"
"]\n"
"totalpingcount\n"
@ -7450,6 +7796,10 @@ int main(void) {
"0\n"
"totalunslnmediacount\n"
"0\n"
"totalblkslnmediacount\n"
"0\n"
"totalunblkslnmediacount\n"
"0\n"
"totalpubcount\n"
"0\n"
"totalsubreqcount\n"


Loading…
Cancel
Save