Voice: Fixes for some rtp statistics exposed to tr104

This commit is contained in:
Grzegorz Sluja 2023-10-27 13:38:12 +02:00
parent 51aa3d5ce4
commit f76afba750
3 changed files with 57 additions and 9 deletions

View file

@ -472,7 +472,14 @@ int init_call_log(void)
token += 1;
end = DM_LSTRSTR(token, ",");
CHECK_RESULT(end);
DM_STRNCPY(cdr.uLossRate, token, end - token + 1);
DM_STRNCPY(cdr.localLossRate, token, end - token + 1);
token = DM_LSTRSTR(token, ",");
CHECK_RESULT(token);
token += 1;
end = DM_LSTRSTR(token, ",");
CHECK_RESULT(end);
DM_STRNCPY(cdr.remoteLossRate, token, end - token + 1);
token = DM_LSTRSTR(token, ",");
CHECK_RESULT(token);
@ -523,12 +530,33 @@ int init_call_log(void)
CHECK_RESULT(end);
DM_STRNCPY(cdr.averageRoundTripDelay, token, end - token + 1);
token = DM_LSTRSTR(token, ",");
CHECK_RESULT(token);
token += 1;
end = DM_LSTRSTR(token, ",");
CHECK_RESULT(end);
DM_STRNCPY(cdr.farEndInterarrivalJitter, token, end - token + 1);
token = DM_LSTRSTR(token, ",");
CHECK_RESULT(token);
token += 1;
end = DM_LSTRSTR(token, ",");
CHECK_RESULT(end);
DM_STRNCPY(cdr.averageFarEndInterarrivalJitter, token, end - token + 1);
token = DM_LSTRSTR(token, ",");
CHECK_RESULT(token);
token += 1;
end = DM_LSTRSTR(token, ",");
CHECK_RESULT(end);
DM_STRNCPY(cdr.receiveInterarrivalJitter, token, end - token + 1);
token = DM_LSTRSTR(token, ",");
CHECK_RESULT(token);
token += 1;
end = DM_LSTRSTR(token, ",");
CHECK_RESULT(end);
DM_STRNCPY(cdr.averageReceiveInterarrivalJitter, token, end - token + 1);
}
// Skip invalid call logs
if (cdr.calling_num[0] == '\0' || cdr.called_num[0] == '\0' ||

View file

@ -54,7 +54,8 @@ struct call_log_entry {
char localJbAbsMax[20];
char remoteJbAbsMax[20];
char jbAvg[20];
char uLossRate[20];
char localLossRate[20];
char remoteLossRate[20];
char discarded[20];
char lost[20];
char rxpkts[20];
@ -62,7 +63,10 @@ struct call_log_entry {
char jitter[20];
char maxJitter[20];
char averageRoundTripDelay[20];
char farEndInterarrivalJitter[20];
char averageFarEndInterarrivalJitter[20];
char receiveInterarrivalJitter[20];
char averageReceiveInterarrivalJitter[20];
};
#define MAX_SUPPORTED_CODECS 8

View file

@ -187,24 +187,31 @@ static int get_ServicesVoiceServiceCallLog_Src_PacketsSent(char *refparam, struc
return 0;
}
static int get_ServicesVoiceServiceCallLog_Src_ReceiveInterarrivalJitter(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{
struct call_log_entry *entry = (struct call_log_entry *)data;
*value = (entry) ? dmstrdup(entry->receiveInterarrivalJitter) : "0";
return 0;
}
static int get_ServicesVoiceServiceCallLog_Src_AverageReceiveInterarrivalJitter(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{
struct call_log_entry *entry = (struct call_log_entry *)data;
*value = (entry) ? dmstrdup(entry->jbAvg) : "0";
*value = (entry) ? dmstrdup(entry->averageReceiveInterarrivalJitter) : "0";
return 0;
}
static int get_ServicesVoiceServiceCallLog_Src_FarEndInterarrivalJitter(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{
struct call_log_entry *entry = (struct call_log_entry *)data;
*value = (entry) ? dmstrdup(entry->jitter) : "0";
*value = (entry) ? dmstrdup(entry->farEndInterarrivalJitter) : "0";
return 0;
}
static int get_ServicesVoiceServiceCallLog_Src_FarEndPacketLossRate(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
static int get_ServicesVoiceServiceCallLog_Src_AverageFarEndInterarrivalJitter(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{
struct call_log_entry *entry = (struct call_log_entry *)data;
*value = (entry) ? dmstrdup(entry->uLossRate) : "0";
*value = (entry) ? dmstrdup(entry->averageFarEndInterarrivalJitter) : "0";
return 0;
}
@ -222,10 +229,17 @@ static int get_ServicesVoiceServiceCallLog_Src_AverageRoundTripDelay(char *refpa
return 0;
}
static int get_ServicesVoiceServiceCallLog_Src_AverageFarEndInterarrivalJitter(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
static int get_ServicesVoiceServiceCallLog_Src__ReceivePacketLossRate(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{
struct call_log_entry *entry = (struct call_log_entry *)data;
*value = (entry) ? dmstrdup(entry->averageFarEndInterarrivalJitter) : "0";
*value = (entry) ? dmstrdup(entry->localLossRate) : "0";
return 0;
}
static int get_ServicesVoiceServiceCallLog_Src_FarEndPacketLossRate(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{
struct call_log_entry *entry = (struct call_log_entry *)data;
*value = (entry) ? dmstrdup(entry->remoteLossRate) : "0";
return 0;
}
@ -337,11 +351,13 @@ DMLEAF tServicesVoiceServiceCallLogSessionSourceRTPParams[] = {
{"PacketsLost", &DMREAD, DMT_UNINT, get_ServicesVoiceServiceCallLog_Src_PacketsLost, NULL, BBFDM_BOTH},
{"PacketsReceived", &DMREAD, DMT_UNLONG, get_ServicesVoiceServiceCallLog_Src_PacketsReceived, NULL, BBFDM_BOTH},
{"PacketsSent", &DMREAD, DMT_UNLONG, get_ServicesVoiceServiceCallLog_Src_PacketsSent, NULL, BBFDM_BOTH},
{"ReceiveInterarrivalJitter", &DMREAD, DMT_INT, get_ServicesVoiceServiceCallLog_Src_ReceiveInterarrivalJitter, NULL, BBFDM_BOTH},
{"AverageReceiveInterarrivalJitter", &DMREAD, DMT_INT, get_ServicesVoiceServiceCallLog_Src_AverageReceiveInterarrivalJitter, NULL, BBFDM_BOTH},
{"FarEndInterarrivalJitter", &DMREAD, DMT_INT, get_ServicesVoiceServiceCallLog_Src_FarEndInterarrivalJitter, NULL, BBFDM_BOTH},
{"AverageFarEndInterarrivalJitter", &DMREAD, DMT_INT, get_ServicesVoiceServiceCallLog_Src_AverageFarEndInterarrivalJitter, NULL, BBFDM_BOTH},
{"FarEndPacketLossRate", &DMREAD, DMT_UNINT, get_ServicesVoiceServiceCallLog_Src_FarEndPacketLossRate, NULL, BBFDM_BOTH},
{"MaxJitter", &DMREAD, DMT_INT, get_ServicesVoiceServiceCallLog_Src_MaxJitter, NULL, BBFDM_BOTH},
{"AverageRoundTripDelay", &DMREAD, DMT_INT, get_ServicesVoiceServiceCallLog_Src_AverageRoundTripDelay, NULL, BBFDM_BOTH},
{"AverageFarEndInterarrivalJitter", &DMREAD, DMT_INT, get_ServicesVoiceServiceCallLog_Src_AverageFarEndInterarrivalJitter, NULL, BBFDM_BOTH},
{"ReceivePacketLossRate", &DMREAD, DMT_UNINT, get_ServicesVoiceServiceCallLog_Src__ReceivePacketLossRate, NULL, BBFDM_BOTH},
{0}
};