|
|
|
@ -29,26 +29,26 @@ struct global_stats_counter rtpe_stats_intv; // calculated once per sec by `ca
|
|
|
|
|
// check not to multiple decrement or increment
|
|
|
|
|
void statistics_update_ip46_inc_dec(struct call* c, int op) {
|
|
|
|
|
// already incremented
|
|
|
|
|
if (op == CMC_INCREMENT && c->is_call_media_counted) {
|
|
|
|
|
if (op == CMC_INCREMENT && CALL_ISSET(c, MEDIA_COUNTED)) {
|
|
|
|
|
return ;
|
|
|
|
|
|
|
|
|
|
// already decremented
|
|
|
|
|
} else if (op == CMC_DECREMENT && !c->is_call_media_counted) {
|
|
|
|
|
} else if (op == CMC_DECREMENT && !CALL_ISSET(c, MEDIA_COUNTED)) {
|
|
|
|
|
return ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// offer is ipv4 only
|
|
|
|
|
if (c->is_ipv4_media_offer && !c->is_ipv6_media_offer) {
|
|
|
|
|
if (CALL_ISSET(c, IPV4_OFFER) && !CALL_ISSET(c, IPV6_OFFER)) {
|
|
|
|
|
// answer is ipv4 only
|
|
|
|
|
if (c->is_ipv4_media_answer && !c->is_ipv6_media_answer) {
|
|
|
|
|
if (CALL_ISSET(c, IPV4_ANSWER) && !CALL_ISSET(c, IPV6_ANSWER)) {
|
|
|
|
|
RTPE_GAUGE_ADD(ipv4_sessions, op == CMC_INCREMENT ? 1 : -1);
|
|
|
|
|
|
|
|
|
|
// answer is ipv6 only
|
|
|
|
|
} else if (!c->is_ipv4_media_answer && c->is_ipv6_media_answer) {
|
|
|
|
|
} else if (!CALL_ISSET(c, IPV4_ANSWER) && CALL_ISSET(c, IPV6_ANSWER)) {
|
|
|
|
|
RTPE_GAUGE_ADD(mixed_sessions, op == CMC_INCREMENT ? 1 : -1);
|
|
|
|
|
|
|
|
|
|
// answer is both ipv4 and ipv6
|
|
|
|
|
} else if (c->is_ipv4_media_answer && c->is_ipv6_media_answer) {
|
|
|
|
|
} else if (CALL_ISSET(c, IPV4_ANSWER) && CALL_ISSET(c, IPV6_ANSWER)) {
|
|
|
|
|
RTPE_GAUGE_ADD(ipv4_sessions, op == CMC_INCREMENT ? 1 : -1);
|
|
|
|
|
|
|
|
|
|
// answer is neither ipv4 nor ipv6
|
|
|
|
@ -57,17 +57,17 @@ void statistics_update_ip46_inc_dec(struct call* c, int op) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// offer is ipv6 only
|
|
|
|
|
} else if (!c->is_ipv4_media_offer && c->is_ipv6_media_offer) {
|
|
|
|
|
} else if (!CALL_ISSET(c, IPV4_OFFER) && CALL_ISSET(c, IPV6_OFFER)) {
|
|
|
|
|
// answer is ipv4 only
|
|
|
|
|
if (c->is_ipv4_media_answer && !c->is_ipv6_media_answer) {
|
|
|
|
|
if (CALL_ISSET(c, IPV4_ANSWER) && !CALL_ISSET(c, IPV6_ANSWER)) {
|
|
|
|
|
RTPE_GAUGE_ADD(mixed_sessions, op == CMC_INCREMENT ? 1 : -1);
|
|
|
|
|
|
|
|
|
|
// answer is ipv6 only
|
|
|
|
|
} else if (!c->is_ipv4_media_answer && c->is_ipv6_media_answer) {
|
|
|
|
|
} else if (!CALL_ISSET(c, IPV4_ANSWER) && CALL_ISSET(c, IPV6_ANSWER)) {
|
|
|
|
|
RTPE_GAUGE_ADD(ipv6_sessions, op == CMC_INCREMENT ? 1 : -1);
|
|
|
|
|
|
|
|
|
|
// answer is both ipv4 and ipv6
|
|
|
|
|
} else if (c->is_ipv4_media_answer && c->is_ipv6_media_answer) {
|
|
|
|
|
} else if (CALL_ISSET(c, IPV4_ANSWER) && CALL_ISSET(c, IPV6_ANSWER)) {
|
|
|
|
|
RTPE_GAUGE_ADD(ipv6_sessions, op == CMC_INCREMENT ? 1 : -1);
|
|
|
|
|
|
|
|
|
|
// answer is neither ipv4 nor ipv6
|
|
|
|
@ -76,17 +76,17 @@ void statistics_update_ip46_inc_dec(struct call* c, int op) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// offer is both ipv4 and ipv6
|
|
|
|
|
} else if (c->is_ipv4_media_offer && c->is_ipv6_media_offer) {
|
|
|
|
|
} else if (CALL_ISSET(c, IPV4_OFFER) && CALL_ISSET(c, IPV6_OFFER)) {
|
|
|
|
|
// answer is ipv4 only
|
|
|
|
|
if (c->is_ipv4_media_answer && !c->is_ipv6_media_answer) {
|
|
|
|
|
if (CALL_ISSET(c, IPV4_ANSWER) && !CALL_ISSET(c, IPV6_ANSWER)) {
|
|
|
|
|
RTPE_GAUGE_ADD(ipv4_sessions, op == CMC_INCREMENT ? 1 : -1);
|
|
|
|
|
|
|
|
|
|
// answer is ipv6 only
|
|
|
|
|
} else if (!c->is_ipv4_media_answer && c->is_ipv6_media_answer) {
|
|
|
|
|
} else if (!CALL_ISSET(c, IPV4_ANSWER) && CALL_ISSET(c, IPV6_ANSWER)) {
|
|
|
|
|
RTPE_GAUGE_ADD(ipv6_sessions, op == CMC_INCREMENT ? 1 : -1);
|
|
|
|
|
|
|
|
|
|
// answer is both ipv4 and ipv6
|
|
|
|
|
} else if (c->is_ipv4_media_answer && c->is_ipv6_media_answer) {
|
|
|
|
|
} else if (CALL_ISSET(c, IPV4_ANSWER) && CALL_ISSET(c, IPV6_ANSWER)) {
|
|
|
|
|
RTPE_GAUGE_ADD(mixed_sessions, op == CMC_INCREMENT ? 1 : -1);
|
|
|
|
|
|
|
|
|
|
// answer is neither ipv4 nor ipv6
|
|
|
|
@ -100,7 +100,7 @@ void statistics_update_ip46_inc_dec(struct call* c, int op) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// mark if incremented or decremented
|
|
|
|
|
c->is_call_media_counted = (op == CMC_INCREMENT) ? 1 : 0;
|
|
|
|
|
bf_set_clear(&c->call_flags, CALL_FLAG_MEDIA_COUNTED, op == CMC_INCREMENT);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void statistics_update_foreignown_dec(struct call* c) {
|
|
|
|
|