T#8530: Diagnostics: Add supports for missing parameters

This commit is contained in:
Amin Ben Ramdhane 2022-08-23 11:42:57 +00:00
parent 5278cabfc3
commit 95a9418e04
11 changed files with 182 additions and 55 deletions

View file

@ -214,6 +214,12 @@ static int set_ip_ping_DSCP(char *refparam, struct dmctx *ctx, void *data, char
return 0;
}
static int get_IPDiagnosticsIPPing_IPAddressUsed(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{
*value = get_diagnostics_option("ipping", "IPAddressUsed");
return 0;
}
static int get_ip_ping_success_count(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{
*value = get_diagnostics_option_fallback_def("ipping", "SuccessCount", "0");
@ -479,6 +485,12 @@ static int get_IPDiagnosticsTraceRoute_ResponseTime(char *refparam, struct dmctx
return 0;
}
static int get_IPDiagnosticsTraceRoute_IPAddressUsed(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{
*value = get_diagnostics_option("traceroute", "IPAddressUsed");
return 0;
}
static int get_IPDiagnosticsTraceRoute_RouteHopsNumberOfEntries(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{
*value = get_diagnostics_option_fallback_def("traceroute", "NumberOfHops", "0");
@ -688,6 +700,12 @@ static int set_IPDiagnosticsDownloadDiagnostics_NumberOfConnections(char *refpar
return 0;
}
static int get_IPDiagnosticsDownloadDiagnostics_IPAddressUsed(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{
*value = get_diagnostics_option("download", "IPAddressUsed");
return 0;
}
static int get_IPDiagnosticsDownloadDiagnostics_ROMTime(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{
*value = get_diagnostics_option_fallback_def("download", "ROMtime", "0001-01-01T00:00:00.000000Z");
@ -1034,6 +1052,12 @@ static int set_IPDiagnosticsUploadDiagnostics_NumberOfConnections(char *refparam
return 0;
}
static int get_IPDiagnosticsUploadDiagnostics_IPAddressUsed(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{
*value = get_diagnostics_option("upload", "IPAddressUsed");
return 0;
}
static int get_IPDiagnosticsUploadDiagnostics_ROMTime(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{
*value = get_diagnostics_option_fallback_def("upload", "ROMtime", "0001-01-01T00:00:00.000000Z");
@ -1419,6 +1443,12 @@ static int set_IPDiagnosticsUDPEchoDiagnostics_ProtocolVersion(char *refparam, s
return 0;
}
static int get_IPDiagnosticsUDPEchoDiagnostics_IPAddressUsed(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{
*value = get_diagnostics_option("udpechodiag", "IPAddressUsed");
return 0;
}
static int get_IPDiagnosticsUDPEchoDiagnostics_SuccessCount(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{
*value = get_diagnostics_option_fallback_def("udpechodiag", "SuccessCount", "0");
@ -1640,6 +1670,12 @@ static int get_IPDiagnosticsServerSelectionDiagnostics_MaximumResponseTime(char
return 0;
}
static int get_IPDiagnosticsServerSelectionDiagnostics_IPAddressUsed(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{
*value = get_diagnostics_option("serverselection", "IPAddressUsed");
return 0;
}
/*************************************************************
* ENTRY METHOD
**************************************************************/
@ -1747,6 +1783,8 @@ static int operate_IPDiagnostics_IPPing(char *refparam, struct dmctx *ctx, void
// Allocate uci_ctx_bbfdm
dmuci_init_bbfdm();
char *ipping_status = get_diagnostics_option("ipping", "DiagnosticState");
char *ipping_ip_address_used = get_diagnostics_option("ipping", "IPAddressUsed");
char *ipping_success_count = get_diagnostics_option("ipping", "SuccessCount");
char *ipping_failure_count = get_diagnostics_option("ipping", "FailureCount");
char *ipping_average_response_time = get_diagnostics_option("ipping", "AverageResponseTime");
@ -1756,6 +1794,8 @@ static int operate_IPDiagnostics_IPPing(char *refparam, struct dmctx *ctx, void
char *ipping_minimum_response_time_detailed = get_diagnostics_option("ipping", "MinimumResponseTimeDetailed");
char *ipping_maximum_response_time_detailed = get_diagnostics_option("ipping", "MaximumResponseTimeDetailed");
add_list_parameter(ctx, dmstrdup("Status"), ipping_status, DMT_TYPE[DMT_STRING], NULL);
add_list_parameter(ctx, dmstrdup("IPAddressUsed"), ipping_ip_address_used, DMT_TYPE[DMT_STRING], NULL);
add_list_parameter(ctx, dmstrdup("SuccessCount"), ipping_success_count, DMT_TYPE[DMT_UNINT], NULL);
add_list_parameter(ctx, dmstrdup("FailureCount"), ipping_failure_count, DMT_TYPE[DMT_UNINT], NULL);
add_list_parameter(ctx, dmstrdup("AverageResponseTime"), ipping_average_response_time, DMT_TYPE[DMT_UNINT], NULL);
@ -1784,6 +1824,10 @@ static operation_args ip_diagnostics_trace_route_args = {
"Status",
"IPAddressUsed",
"ResponseTime",
"RouteHops.{i}.Host",
"RouteHops.{i}.HostAddress",
"RouteHops.{i}.ErrorCode",
"RouteHops.{i}.RTTimes",
NULL
}
};
@ -1803,6 +1847,7 @@ static int operate_IPDiagnostics_TraceRoute(char *refparam, struct dmctx *ctx, v
char *route_hops_errorcode = NULL;
int i = 1;
init_diagnostics_operation("RouteHops", TRACEROUTE_PATH);
init_diagnostics_operation("traceroute", TRACEROUTE_PATH);
char *host = dmjson_get_value((json_object *)value, 1, "Host");
@ -1834,7 +1879,11 @@ static int operate_IPDiagnostics_TraceRoute(char *refparam, struct dmctx *ctx, v
// Allocate uci_ctx_bbfdm
dmuci_init_bbfdm();
char *status = get_diagnostics_option("traceroute", "DiagnosticState");
char *ip_address_used = get_diagnostics_option("traceroute", "IPAddressUsed");
char *response_time = get_diagnostics_option("traceroute", "ResponseTime");
add_list_parameter(ctx, dmstrdup("Status"), status, DMT_TYPE[DMT_STRING], NULL);
add_list_parameter(ctx, dmstrdup("IPAddressUsed"), ip_address_used, DMT_TYPE[DMT_STRING], NULL);
add_list_parameter(ctx, dmstrdup("ResponseTime"), response_time, DMT_TYPE[DMT_UNINT], NULL);
uci_path_foreach_sections(bbfdm, DMMAP_DIAGNOSTIGS, "RouteHops", s) {
@ -1886,6 +1935,19 @@ static operation_args ip_diagnostics_download_args = {
"PeriodOfFullLoading",
"TCPOpenRequestTime",
"TCPOpenResponseTime",
"PerConnectionResult.{i}.ROMTime",
"PerConnectionResult.{i}.BOMTime",
"PerConnectionResult.{i}.EOMTime",
"PerConnectionResult.{i}.TestBytesReceived",
"PerConnectionResult.{i}.TotalBytesReceived",
"PerConnectionResult.{i}.TotalBytesSent",
"PerConnectionResult.{i}.TCPOpenRequestTime",
"PerConnectionResult.{i}.TCPOpenResponseTime",
"IncrementalResult.{i}.TestBytesReceived",
"IncrementalResult.{i}.TotalBytesReceived",
"IncrementalResult.{i}.TotalBytesSent",
"IncrementalResult.{i}.StartTime",
"IncrementalResult.{i}.EndTime",
NULL
}
};
@ -1921,6 +1983,8 @@ static int operate_IPDiagnostics_DownloadDiagnostics(char *refparam, struct dmct
if (start_upload_download_diagnostic(DOWNLOAD_DIAGNOSTIC) == -1)
return CMD_FAIL;
char *status = get_diagnostics_option("download", "DiagnosticState");
char *ip_address_used = get_diagnostics_option("download", "IPAddressUsed");
char *romtime = get_diagnostics_option("download", "ROMtime");
char *bomtime = get_diagnostics_option("download", "BOMtime");
char *eomtime = get_diagnostics_option("download", "EOMtime");
@ -1934,6 +1998,8 @@ static int operate_IPDiagnostics_DownloadDiagnostics(char *refparam, struct dmct
char *tcp_open_request_time = get_diagnostics_option("download", "TCPOpenRequestTime");
char *tcp_open_response_time = get_diagnostics_option("download", "TCPOpenResponseTime");
add_list_parameter(ctx, dmstrdup("Status"), status, DMT_TYPE[DMT_STRING], NULL);
add_list_parameter(ctx, dmstrdup("IPAddressUsed"), ip_address_used, DMT_TYPE[DMT_STRING], NULL);
add_list_parameter(ctx, dmstrdup("ROMTime"), romtime, DMT_TYPE[DMT_TIME], NULL);
add_list_parameter(ctx, dmstrdup("BOMTime"), bomtime, DMT_TYPE[DMT_TIME], NULL);
add_list_parameter(ctx, dmstrdup("EOMTime"), eomtime, DMT_TYPE[DMT_TIME], NULL);
@ -1980,6 +2046,19 @@ static operation_args ip_diagnostics_upload_args = {
"PeriodOfFullLoading",
"TCPOpenRequestTime",
"TCPOpenResponseTime",
"PerConnectionResult.{i}.ROMTime",
"PerConnectionResult.{i}.BOMTime",
"PerConnectionResult.{i}.EOMTime",
"PerConnectionResult.{i}.TestBytesSent",
"PerConnectionResult.{i}.TotalBytesReceived",
"PerConnectionResult.{i}.TotalBytesSent",
"PerConnectionResult.{i}.TCPOpenRequestTime",
"PerConnectionResult.{i}.TCPOpenResponseTime",
"IncrementalResult.{i}.TestBytesSent",
"IncrementalResult.{i}.TotalBytesReceived",
"IncrementalResult.{i}.TotalBytesSent",
"IncrementalResult.{i}.StartTime",
"IncrementalResult.{i}.EndTime",
NULL
}
};
@ -2021,6 +2100,8 @@ static int operate_IPDiagnostics_UploadDiagnostics(char *refparam, struct dmctx
if (start_upload_download_diagnostic(UPLOAD_DIAGNOSTIC) == -1)
return CMD_FAIL;
char *upload_status = get_diagnostics_option("upload", "DiagnosticState");
char *upload_ip_address_used = get_diagnostics_option("upload", "IPAddressUsed");
char *upload_romtime = get_diagnostics_option("upload", "ROMtime");
char *upload_bomtime = get_diagnostics_option("upload", "BOMtime");
char *upload_eomtime = get_diagnostics_option("upload", "EOMtime");
@ -2034,6 +2115,8 @@ static int operate_IPDiagnostics_UploadDiagnostics(char *refparam, struct dmctx
char *upload_tcp_open_request_time = get_diagnostics_option("upload", "TCPOpenRequestTime");
char *upload_tcp_open_response_time = get_diagnostics_option("upload", "TCPOpenResponseTime");
add_list_parameter(ctx, dmstrdup("Status"), upload_status, DMT_TYPE[DMT_STRING], NULL);
add_list_parameter(ctx, dmstrdup("IPAddressUsed"), upload_ip_address_used, DMT_TYPE[DMT_STRING], NULL);
add_list_parameter(ctx, dmstrdup("ROMTime"), upload_romtime, DMT_TYPE[DMT_TIME], NULL);
add_list_parameter(ctx, dmstrdup("BOMTime"), upload_bomtime, DMT_TYPE[DMT_TIME], NULL);
add_list_parameter(ctx, dmstrdup("EOMTime"), upload_eomtime, DMT_TYPE[DMT_TIME], NULL);
@ -2053,33 +2136,33 @@ static int operate_IPDiagnostics_UploadDiagnostics(char *refparam, struct dmctx
static operation_args ip_diagnostics_udpecho_args = {
.in = (const char *[]) {
"Interface",
"UploadURL",
"Host",
"Port",
"NumberOfRepetitions",
"Timeout",
"DataBlockSize",
"DSCP",
"EthernetPriority",
"TestFileLength",
"TimeBasedTestDuration",
"TimeBasedTestMeasurementInterval",
"TimeBasedTestMeasurementOffset",
"InterTransmissionTime",
"ProtocolVersion",
"NumberOfConnections",
"EnablePerConnectionResults",
"EnableIndividualPacketResults",
NULL
},
.out = (const char *[]) {
"Status",
"IPAddressUsed",
"ROMTime",
"BOMTime",
"EOMTime",
"TestBytesSent",
"TotalBytesReceived",
"TotalBytesSent",
"TestBytesSentUnderFullLoading",
"TotalBytesReceivedUnderFullLoading",
"TotalBytesSentUnderFullLoading",
"PeriodOfFullLoading",
"TCPOpenRequestTime",
"TCPOpenResponseTime",
"SuccessCount",
"FailureCount",
"AverageResponseTime",
"MinimumResponseTime",
"MaximumResponseTime",
"IndividualPacketResult.{i}.PacketSuccess",
"IndividualPacketResult.{i}.PacketSendTime",
"IndividualPacketResult.{i}.PacketReceiveTime",
"IndividualPacketResult.{i}.TestGenSN",
"IndividualPacketResult.{i}.TestRespSN",
"IndividualPacketResult.{i}.TestRespRcvTimeStamp",
"IndividualPacketResult.{i}.TestRespReplyTimeStamp",
"IndividualPacketResult.{i}.TestRespReplyFailureCount",
NULL
}
};
@ -2125,12 +2208,16 @@ static int operate_IPDiagnostics_UDPEchoDiagnostics(char *refparam, struct dmctx
// Allocate uci_ctx_bbfdm
dmuci_init_bbfdm();
char *status = get_diagnostics_option("udpechodiag", "DiagnosticState");
char *ip_address_used = get_diagnostics_option("udpechodiag", "IPAddressUsed");
char *udpecho_success_count = get_diagnostics_option("udpechodiag", "SuccessCount");
char *udpecho_failure_count = get_diagnostics_option("udpechodiag", "FailureCount");
char *udpecho_average_response_time = get_diagnostics_option("udpechodiag", "AverageResponseTime");
char *udpecho_minimum_response_time = get_diagnostics_option("udpechodiag", "MinimumResponseTime");
char *udpecho_maximum_response_time = get_diagnostics_option("udpechodiag", "MaximumResponseTime");
add_list_parameter(ctx, dmstrdup("Status"), status, DMT_TYPE[DMT_STRING], NULL);
add_list_parameter(ctx, dmstrdup("IPAddressUsed"), ip_address_used, DMT_TYPE[DMT_STRING], NULL);
add_list_parameter(ctx, dmstrdup("SuccessCount"), udpecho_success_count, DMT_TYPE[DMT_UNINT], NULL);
add_list_parameter(ctx, dmstrdup("FailureCount"), udpecho_failure_count, DMT_TYPE[DMT_UNINT], NULL);
add_list_parameter(ctx, dmstrdup("AverageResponseTime"), udpecho_average_response_time, DMT_TYPE[DMT_UNINT], NULL);
@ -2158,7 +2245,7 @@ static operation_args ip_diagnostics_server_selection_args = {
"MaximumResponseTime",
"IPAddressUsed",
NULL
}
}
};
static int get_operate_args_IPDiagnostics_ServerSelectionDiagnostics(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
@ -2198,15 +2285,19 @@ static int operate_IPDiagnostics_ServerSelectionDiagnostics(char *refparam, stru
// Allocate uci_ctx_bbfdm
dmuci_init_bbfdm();
char *status = get_diagnostics_option("serverselection", "DiagnosticState");
char *fasthost = get_diagnostics_option("serverselection", "FastestHost");
char *average_response_time = get_diagnostics_option("serverselection", "AverageResponseTime");
char *minimum_response_time = get_diagnostics_option("serverselection", "MinimumResponseTime");
char *maximum_response_time = get_diagnostics_option("serverselection", "MaximumResponseTime");
char *ip_address_used = get_diagnostics_option("serverselection", "IPAddressUsed");
add_list_parameter(ctx, dmstrdup("Status"), status, DMT_TYPE[DMT_STRING], NULL);
add_list_parameter(ctx, dmstrdup("FastestHost"), fasthost, DMT_TYPE[DMT_STRING], NULL);
add_list_parameter(ctx, dmstrdup("AverageResponseTime"), average_response_time, DMT_TYPE[DMT_UNINT], NULL);
add_list_parameter(ctx, dmstrdup("MinimumResponseTime"), minimum_response_time, DMT_TYPE[DMT_UNINT], NULL);
add_list_parameter(ctx, dmstrdup("MaximumResponseTime"), maximum_response_time, DMT_TYPE[DMT_UNINT], NULL);
add_list_parameter(ctx, dmstrdup("IPAddressUsed"), ip_address_used, DMT_TYPE[DMT_STRING], NULL);
return CMD_SUCCESS;
}
@ -2260,6 +2351,7 @@ DMLEAF tIPDiagnosticsIPPingParams[] = {
{"Timeout", &DMWRITE, DMT_UNINT, get_ip_ping_timeout, set_ip_ping_timeout, BBFDM_CWMP},
{"DataBlockSize", &DMWRITE, DMT_UNINT, get_ip_ping_block_size, set_ip_ping_block_size, BBFDM_CWMP},
{"DSCP", &DMWRITE, DMT_UNINT, get_ip_ping_DSCP, set_ip_ping_DSCP, BBFDM_CWMP},
{"IPAddressUsed", &DMREAD, DMT_STRING, get_IPDiagnosticsIPPing_IPAddressUsed, NULL, BBFDM_CWMP},
{"SuccessCount", &DMREAD, DMT_UNINT, get_ip_ping_success_count, NULL, BBFDM_CWMP},
{"FailureCount", &DMREAD, DMT_UNINT, get_ip_ping_failure_count, NULL, BBFDM_CWMP},
{"AverageResponseTime", &DMREAD, DMT_UNINT, get_ip_ping_average_response_time, NULL, BBFDM_CWMP},
@ -2290,6 +2382,7 @@ DMLEAF tIPDiagnosticsTraceRouteParams[] = {
{"DSCP", &DMWRITE, DMT_UNINT, get_IPDiagnosticsTraceRoute_DSCP, set_IPDiagnosticsTraceRoute_DSCP, BBFDM_CWMP},
{"MaxHopCount", &DMWRITE, DMT_UNINT, get_IPDiagnosticsTraceRoute_MaxHopCount, set_IPDiagnosticsTraceRoute_MaxHopCount, BBFDM_CWMP},
{"ResponseTime", &DMREAD, DMT_UNINT, get_IPDiagnosticsTraceRoute_ResponseTime, NULL, BBFDM_CWMP},
{"IPAddressUsed", &DMREAD, DMT_STRING, get_IPDiagnosticsTraceRoute_IPAddressUsed, NULL, BBFDM_CWMP},
{"RouteHopsNumberOfEntries", &DMREAD, DMT_UNINT, get_IPDiagnosticsTraceRoute_RouteHopsNumberOfEntries, NULL, BBFDM_CWMP},
{0}
};
@ -2322,6 +2415,7 @@ DMLEAF tIPDiagnosticsDownloadDiagnosticsParams[] = {
{"EthernetPriority", &DMWRITE, DMT_UNINT, get_IPDiagnosticsDownloadDiagnostics_EthernetPriority, set_IPDiagnosticsDownloadDiagnostics_EthernetPriority, BBFDM_CWMP},
{"ProtocolVersion", &DMWRITE, DMT_STRING, get_IPDiagnosticsDownloadDiagnostics_ProtocolVersion, set_IPDiagnosticsDownloadDiagnostics_ProtocolVersion, BBFDM_CWMP},
{"NumberOfConnections", &DMWRITE, DMT_UNINT, get_IPDiagnosticsDownloadDiagnostics_NumberOfConnections, set_IPDiagnosticsDownloadDiagnostics_NumberOfConnections, BBFDM_CWMP},
{"IPAddressUsed", &DMREAD, DMT_STRING, get_IPDiagnosticsDownloadDiagnostics_IPAddressUsed, NULL, BBFDM_CWMP},
{"ROMTime", &DMREAD, DMT_TIME, get_IPDiagnosticsDownloadDiagnostics_ROMTime, NULL, BBFDM_CWMP},
{"BOMTime", &DMREAD, DMT_TIME, get_IPDiagnosticsDownloadDiagnostics_BOMTime, NULL, BBFDM_CWMP},
{"EOMTime", &DMREAD, DMT_TIME, get_IPDiagnosticsDownloadDiagnostics_EOMTime, NULL, BBFDM_CWMP},
@ -2371,6 +2465,7 @@ DMLEAF tIPDiagnosticsUploadDiagnosticsParams[] = {
{"TestFileLength", &DMWRITE, DMT_UNINT, get_IPDiagnosticsUploadDiagnostics_TestFileLength, set_IPDiagnosticsUploadDiagnostics_TestFileLength, BBFDM_CWMP},
{"ProtocolVersion", &DMWRITE, DMT_STRING, get_IPDiagnosticsUploadDiagnostics_ProtocolVersion, set_IPDiagnosticsUploadDiagnostics_ProtocolVersion, BBFDM_CWMP},
{"NumberOfConnections", &DMWRITE, DMT_UNINT, get_IPDiagnosticsUploadDiagnostics_NumberOfConnections, set_IPDiagnosticsUploadDiagnostics_NumberOfConnections, BBFDM_CWMP},
{"IPAddressUsed", &DMREAD, DMT_STRING, get_IPDiagnosticsUploadDiagnostics_IPAddressUsed, NULL, BBFDM_CWMP},
{"ROMTime", &DMREAD, DMT_TIME, get_IPDiagnosticsUploadDiagnostics_ROMTime, NULL, BBFDM_CWMP},
{"BOMTime", &DMREAD, DMT_TIME, get_IPDiagnosticsUploadDiagnostics_BOMTime, NULL, BBFDM_CWMP},
{"EOMTime", &DMREAD, DMT_TIME, get_IPDiagnosticsUploadDiagnostics_EOMTime, NULL, BBFDM_CWMP},
@ -2415,6 +2510,7 @@ DMLEAF tIPDiagnosticsUDPEchoDiagnosticsParams[] = {
{"DSCP", &DMWRITE, DMT_UNINT, get_IPDiagnosticsUDPEchoDiagnostics_DSCP, set_IPDiagnosticsUDPEchoDiagnostics_DSCP, BBFDM_CWMP},
{"InterTransmissionTime", &DMWRITE, DMT_UNINT, get_IPDiagnosticsUDPEchoDiagnostics_InterTransmissionTime, set_IPDiagnosticsUDPEchoDiagnostics_InterTransmissionTime, BBFDM_CWMP},
{"ProtocolVersion", &DMWRITE, DMT_STRING, get_IPDiagnosticsUDPEchoDiagnostics_ProtocolVersion, set_IPDiagnosticsUDPEchoDiagnostics_ProtocolVersion, BBFDM_CWMP},
{"IPAddressUsed", &DMREAD, DMT_STRING, get_IPDiagnosticsUDPEchoDiagnostics_IPAddressUsed, NULL, BBFDM_CWMP},
{"SuccessCount", &DMREAD, DMT_UNINT, get_IPDiagnosticsUDPEchoDiagnostics_SuccessCount, NULL, BBFDM_CWMP},
{"FailureCount", &DMREAD, DMT_UNINT, get_IPDiagnosticsUDPEchoDiagnostics_FailureCount, NULL, BBFDM_CWMP},
{"AverageResponseTime", &DMREAD, DMT_UNINT, get_IPDiagnosticsUDPEchoDiagnostics_AverageResponseTime, NULL, BBFDM_CWMP},
@ -2437,5 +2533,6 @@ DMLEAF tIPDiagnosticsServerSelectionDiagnosticsParams[] = {
{"MinimumResponseTime", &DMREAD, DMT_UNINT, get_IPDiagnosticsServerSelectionDiagnostics_MinimumResponseTime, NULL, BBFDM_CWMP},
{"AverageResponseTime", &DMREAD, DMT_UNINT, get_IPDiagnosticsServerSelectionDiagnostics_AverageResponseTime, NULL, BBFDM_CWMP},
{"MaximumResponseTime", &DMREAD, DMT_UNINT, get_IPDiagnosticsServerSelectionDiagnostics_MaximumResponseTime, NULL, BBFDM_CWMP},
{"IPAddressUsed", &DMREAD, DMT_STRING, get_IPDiagnosticsServerSelectionDiagnostics_IPAddressUsed, NULL, BBFDM_CWMP},
{0}
};

View file

@ -743,11 +743,13 @@ static operation_args dns_diagnostics_nslookup_args = {
},
.out = (const char *[]) {
"Status",
"AnswerType",
"HostNameReturned",
"IPAddresses",
"DNSServerIP",
"ResponseTime",
"SuccessCount",
"Result.{i}.Status",
"Result.{i}.AnswerType",
"Result.{i}.HostNameReturned",
"Result.{i}.IPAddresses",
"Result.{i}.DNSServerIP",
"Result.{i}.ResponseTime",
NULL
}
};
@ -769,6 +771,7 @@ static int operate_DNSDiagnostics_NSLookupDiagnostics(char *refparam, struct dmc
char *nslookup_response_time[2] = {0};
int i = 1;
init_diagnostics_operation("NSLookupResult", NSLOOKUP_PATH);
init_diagnostics_operation("nslookup", NSLOOKUP_PATH);
char *hostname = dmjson_get_value((json_object *)value, 1, "HostName");
@ -793,7 +796,9 @@ static int operate_DNSDiagnostics_NSLookupDiagnostics(char *refparam, struct dmc
// Allocate uci_ctx_bbfdm
dmuci_init_bbfdm();
char *status = get_diagnostics_option("nslookup", "DiagnosticState");
char *success_count = get_diagnostics_option("nslookup", "SuccessCount");
add_list_parameter(ctx, dmstrdup("Status"), status, DMT_TYPE[DMT_STRING], NULL);
add_list_parameter(ctx, dmstrdup("SuccessCount"), success_count, DMT_TYPE[DMT_UNINT], NULL);
uci_path_foreach_sections(bbfdm, DMMAP_DIAGNOSTIGS, "NSLookupResult", s) {

View file

@ -23,3 +23,24 @@ uci_get_bbf_dmmap() {
val=$($UCI_GET_BBF_DMMAP $1)
echo ${val:-$2}
}
get_ip_addr_used() {
protocol=$1
interface=$2
if [ "$protocol" = "IPv6" ]; then
if [ -n "$interface" ]; then
ip_addr_used=$(ifstatus "$interface" | jsonfilter -e '@["ipv6-address"][0].address')
else
ip_addr_used=$(ip -6 route | grep default | awk -F ' ' '{print $9}')
fi
else
if [ -n "$interface" ]; then
ip_addr_used=$(ifstatus "$interface" | jsonfilter -e '@["ipv4-address"][0].address')
else
ip_addr_used=$(ip route | grep default | awk -F ' ' '{print $9}')
fi
fi
echo ${ip_addr_used}
}

View file

@ -3,7 +3,7 @@
# Author: IMEN Bhiri <imen.bhiri@pivasoftware.com>
# Author: AMIN Ben Ramdhane <amin.benramdhane@pivasoftware.com>
. /usr/share/bbfdm/bbf_uci_api
. /usr/share/bbfdm/bbf_api
CAPTURE_FILE="/tmp/download_dump"
@ -12,8 +12,11 @@ download_launch() {
device=$2
[ "$url" = "" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.download.DiagnosticState=Error_InitConnectionFailed; $UCI_COMMIT_BBF_DMMAP; return; }
interface=$(uci_get_bbf_dmmap dmmap_diagnostics.download.interface)
protocol=$(uci_get_bbf_dmmap dmmap_diagnostics.download.ProtocolVersion Any)
if [ "$protocol" = "IPv4" ]; then proto="--ipv4"; elif [ "$protocol" = "IPv6" ]; then proto="--ipv6"; else proto=""; fi
ip_addr_used=$(get_ip_addr_used $protocol $interface)
$UCI_SET_BBF_DMMAP dmmap_diagnostics.download.IPAddressUsed="$ip_addr_used"
# Disable acceleration on Broadcom devices to capture all packets with tcpdump
[ -e /usr/sbin/fcctl ] && { fcctl disable >/dev/null 2>&1; fcctl flush >/dev/null 2>&1; }

View file

@ -3,7 +3,7 @@
# Author: MOHAMED Kallel <mohamed.kallel@pivasoftware.com>
# Author: AMIN Ben Ramdhane <amin.benramdhane@pivasoftware.com>
. /usr/share/bbfdm/bbf_uci_api
. /usr/share/bbfdm/bbf_api
ipping_error()
{
@ -28,6 +28,8 @@ ipping_launch() {
protocol=$(uci_get_bbf_dmmap dmmap_diagnostics.ipping.ProtocolVersion Any)
[ -n "$interface" ] && device=$(ifstatus "$interface" | jsonfilter -e @.device) && device="-I $device" || device=""
if [ "$protocol" = "IPv4" ]; then proto="-4"; elif [ "$protocol" = "IPv6" ]; then proto="-6"; else proto=""; fi
ip_addr_used=$(get_ip_addr_used $protocol $interface)
$UCI_SET_BBF_DMMAP dmmap_diagnostics.ipping.IPAddressUsed="$ip_addr_used"
[ "$host" = "" ] && return
timeout=$((timeout/1000))
[ "$timeout" = "0" ] && timeout="1"

View file

@ -2,7 +2,7 @@
# Copyright (C) 2022 iopsys Software Solutions AB
# Author: AMIN Ben Ramdhane <amin.benramdhane@pivasoftware.com>
. /usr/share/bbfdm/bbf_uci_api
. /usr/share/bbfdm/bbf_api
LOG_FILE="/tmp/nslookup.log"
@ -16,7 +16,6 @@ nslookup_launch() {
j=0
success_count=0
[ -e "${LOG_FILE}" ] && rm ${LOG_FILE}
delete_all_results
while [ $i -lt "$cnt" ]; do
i=$((i+1))
time1=$(date +%s)
@ -46,7 +45,7 @@ nslookup_launch() {
var=$(echo "$line" | tr -d '\t' | tr -d ' ' | grep "Name:" | awk -F':' '{print $2}')
[ -n "$var" ] && { HostNameReturned=$var; status="Success"; AnswerType="Authoritative"; success_count=$((success_count+1)); continue; }
var=$(echo "$line" | grep "Address " | awk -F':' '{print substr($0, index($0,$2))}' | tr -d '\t' | tr -d ' ')
var=$(echo "$line" | grep "Address: " | awk -F':' '{print substr($0, index($0,$2))}' | tr -d '\t' | tr -d ' ')
[ -n "$var" ] && { [ -z "$address" ] && address="$var" || address="$address,$var"; continue; }
var=$(echo "$line" | tr -d '\t' | tr -d ' ' | grep "ResponseTime:" | awk -F':' '{print $2}')
@ -74,15 +73,7 @@ nslookup_launch() {
$UCI_COMMIT_BBF_DMMAP
}
delete_all_results() {
for j in $($UCI_SHOW_BBF_DMMAP dmmap_diagnostics | grep "dmmap_diagnostics.@NSLookupResult.*=NSLookupResult"); do
$UCI_DELETE_BBF_DMMAP dmmap_diagnostics.@NSLookupResult[-1]
done
$UCI_COMMIT_BBF_DMMAP
}
nslookup_stop_diagnostic() {
delete_all_results
pids=$(pgrep -f nslookup_launch)
if [ -n "$pids" ]; then
kill -9 "$pids" >/dev/null 2>&1

View file

@ -2,7 +2,7 @@
# Copyright (C) 2022 iopsys Software Solutions AB
# Author: AMIN Ben Ramdhane <amin.benramdhane@pivasoftware.com>
. /usr/share/bbfdm/bbf_uci_api
. /usr/share/bbfdm/bbf_api
serverselection_launch() {
hostlist=$(uci_get_bbf_dmmap dmmap_diagnostics.serverselection.HostList)
@ -13,6 +13,8 @@ serverselection_launch() {
protoversion=$(uci_get_bbf_dmmap dmmap_diagnostics.serverselection.ProtocolVersion Any)
protocol=$(uci_get_bbf_dmmap dmmap_diagnostics.serverselection.Protocol ICMP)
if [ "$protoversion" = "IPv4" ]; then proto="-4"; elif [ "$protoversion" = "IPv6" ]; then proto="-6"; else proto=""; fi
ip_addr_used=$(get_ip_addr_used $protoversion $interface)
$UCI_SET_BBF_DMMAP dmmap_diagnostics.serverselection.IPAddressUsed="$ip_addr_used"
[ "$hostlist" = "" ] && return
timeout=$((timeout/1000))
[ "$timeout" = "0" ] && timeout="1"

View file

@ -2,23 +2,24 @@
# Copyright (C) 2022 iopsys Software Solutions AB
# Author: AMIN Ben Ramdhane <amin.benramdhane@pivasoftware.com>
. /usr/share/bbfdm/bbf_uci_api
. /usr/share/bbfdm/bbf_api
traceroute_launch() {
host=$(uci_get_bbf_dmmap dmmap_diagnostics.traceroute.Host)
cnt=$(uci_get_bbf_dmmap dmmap_diagnostics.traceroute.NumberOfTries 3)
dsize=$(uci_get_bbf_dmmap dmmap_diagnostics.traceroute.DataBlockSize 38)
dsize=$(uci_get_bbf_dmmap dmmap_diagnostics.traceroute.DataBlockSize 64)
timeout=$(uci_get_bbf_dmmap dmmap_diagnostics.traceroute.Timeout 5000)
maxhop=$(uci_get_bbf_dmmap dmmap_diagnostics.traceroute.MaxHops 30)
interface=$(uci_get_bbf_dmmap dmmap_diagnostics.traceroute.interface)
protocol=$(uci_get_bbf_dmmap dmmap_diagnostics.traceroute.ProtocolVersion Any)
[ -n "$interface" ] && device=$(ifstatus "$interface" | jsonfilter -e @.device) && device="-i $device" || device=""
if [ "$protocol" = "IPv4" ]; then proto="-4"; elif [ "$protocol" = "IPv6" ]; then proto="-6"; else proto=""; fi
ip_addr_used=$(get_ip_addr_used $protocol $interface)
$UCI_SET_BBF_DMMAP dmmap_diagnostics.traceroute.IPAddressUsed="$ip_addr_used"
[ "$host" = "" ] && return
timeout=$((timeout/1000))
[ "$timeout" = "0" ] && timeout="1"
i=-2
delete_all_route_hops
rm -f /tmp/traceres
traceroute -m $maxhop -w $timeout -q $cnt $proto $device $host $dsize 2>&1 >/tmp/traceres
while read _ host ip time _; do
@ -41,15 +42,7 @@ traceroute_launch() {
$UCI_COMMIT_BBF_DMMAP
}
delete_all_route_hops() {
for j in $($UCI_SHOW_BBF_DMMAP dmmap_diagnostics | grep "dmmap_diagnostics.@RouteHops.*=RouteHops"); do
$UCI_DELETE_BBF_DMMAP dmmap_diagnostics.@RouteHops[-1]
$UCI_COMMIT_BBF_DMMAP
done
}
traceroute_stop() {
delete_all_route_hops
pids=$(pgrep -f traceroute_launch)
if [ -n "$pids" ]; then
kill -9 "$pids" >/dev/null 2>&1

View file

@ -2,7 +2,7 @@
# Copyright (C) 2022 iopsys Software Solutions AB
# Author: AMIN Ben Ramdhane <amin.benramdhane@pivasoftware.com>
. /usr/share/bbfdm/bbf_uci_api
. /usr/share/bbfdm/bbf_api
udpecho_error()
{
@ -27,6 +27,8 @@ udpecho_launch() {
inter_time=$(uci_get_bbf_dmmap dmmap_diagnostics.udpechodiag.InterTransmissionTime 1000)
[ -n "$interface" ] && device=$(ifstatus "$interface" | jsonfilter -e @.device) && device="-i $device" || device=""
if [ "$protocol" = "IPv4" ]; then proto="4"; elif [ "$protocol" = "IPv6" ]; then proto="6"; else proto="4"; fi
ip_addr_used=$(get_ip_addr_used $protocol $interface)
$UCI_SET_BBF_DMMAP dmmap_diagnostics.udpechodiag.IPAddressUsed="$ip_addr_used"
tos=$((dscp<<2))
inter_time=$((inter_time/1000))
[ "$inter_time" = "0" ] && inter_time="1"

View file

@ -3,7 +3,7 @@
# Author: IMEN Bhiri <imen.bhiri@pivasoftware.com>
# Author: AMIN Ben Ramdhane <amin.benramdhane@pivasoftware.com>
. /usr/share/bbfdm/bbf_uci_api
. /usr/share/bbfdm/bbf_api
CAPTURE_FILE="/tmp/upload_dump"
@ -13,8 +13,11 @@ upload_launch() {
size=$3
[ "$url" = "" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.upload.DiagnosticState=Error_InitConnectionFailed; $UCI_COMMIT_BBF_DMMAP; return; }
interface=$(uci_get_bbf_dmmap dmmap_diagnostics.upload.interface)
protocol=$(uci_get_bbf_dmmap dmmap_diagnostics.upload.ProtocolVersion Any)
if [ "$protocol" = "IPv4" ]; then proto="--ipv4"; elif [ "$protocol" = "IPv6" ]; then proto="--ipv6"; else proto=""; fi
ip_addr_used=$(get_ip_addr_used $protocol $interface)
$UCI_SET_BBF_DMMAP dmmap_diagnostics.upload.IPAddressUsed="$ip_addr_used"
# Disable acceleration on Broadcom devices to capture all packets with tcpdump
[ -e /usr/sbin/fcctl ] && { fcctl disable >/dev/null 2>&1; fcctl flush >/dev/null 2>&1; }

View file

@ -1176,14 +1176,22 @@ static void test_api_bbfdm_valid_standard_operate(void **state)
assert_int_equal(fault, CMD_SUCCESS);
list_for_each_entry(n, &ctx->list_parameter, list) {
if (DM_STRCMP(n->name, "SuccessCount") == 0) {
if (DM_STRCMP(n->name, "Status") == 0) {
assert_string_equal(n->data, "Complete");
assert_string_equal(n->type, "xsd:string");
} else if (DM_STRCMP(n->name, "IPAddressUsed") == 0) {
assert_string_equal(n->data, "");
assert_string_equal(n->type, "xsd:string");
} else if (DM_STRCMP(n->name, "SuccessCount") == 0) {
assert_string_equal(n->data, "1");
assert_string_equal(n->type, "xsd:unsignedInt");
} else if (DM_STRCMP(n->name, "FailureCount") == 0) {
assert_string_equal(n->data, "0");
assert_string_equal(n->type, "xsd:unsignedInt");
} else {
assert_string_not_equal(n->data, "0");
assert_string_equal(n->type, "xsd:unsignedInt");
}
assert_string_equal(n->type, "xsd:unsignedInt");
}
}