mirror of
https://dev.iopsys.eu/bbf/icwmp.git
synced 2026-01-28 01:27:16 +01:00
Ticket #10128: icwmp: Diagnostics handling improvements
This commit is contained in:
parent
08604a791d
commit
9a72ca34c3
4 changed files with 54 additions and 13 deletions
|
|
@ -18,6 +18,7 @@
|
|||
#include "ubus_utils.h"
|
||||
#include "log.h"
|
||||
#include "event.h"
|
||||
#include "session.h"
|
||||
|
||||
struct diagnostic_input {
|
||||
char *input_name;
|
||||
|
|
@ -152,6 +153,41 @@ struct diagnostic_input nslookup_diagnostics_array[NSLKUP_NUMBER_INPUTS] = { //
|
|||
{ "Timeout", "Device.DNS.Diagnostics.NSLookupDiagnostics.Timeout", NULL }
|
||||
};
|
||||
|
||||
int get_diagnostic_state_flag(char *parameter_name, char *value)
|
||||
{
|
||||
if (strcmp(value, "Requested") != 0)
|
||||
return 0;
|
||||
|
||||
if (strcmp(parameter_name, "Device.IP.Diagnostics.DownloadDiagnostics.DiagnosticsState") == 0)
|
||||
return END_SESSION_DOWNLOAD_DIAGNOSTIC;
|
||||
|
||||
if (strcmp(parameter_name, "Device.IP.Diagnostics.UploadDiagnostics.DiagnosticsState") == 0)
|
||||
return END_SESSION_UPLOAD_DIAGNOSTIC;
|
||||
|
||||
if (strcmp(parameter_name, "Device.IP.Diagnostics.IPPing.DiagnosticsState") == 0)
|
||||
return END_SESSION_IPPING_DIAGNOSTIC;
|
||||
|
||||
if (strcmp(parameter_name, "Device.IP.Diagnostics.ServerSelectionDiagnostics.DiagnosticsState") == 0)
|
||||
return END_SESSION_SERVERSELECTION_DIAGNOSTIC;
|
||||
|
||||
if (strcmp(parameter_name, "Device.IP.Diagnostics.TraceRoute.DiagnosticsState") == 0)
|
||||
return END_SESSION_TRACEROUTE_DIAGNOSTIC;
|
||||
|
||||
if (strcmp(parameter_name, "Device.IP.Diagnostics.UDPEchoDiagnostics.DiagnosticsState") == 0)
|
||||
return END_SESSION_UDPECHO_DIAGNOSTIC;
|
||||
|
||||
if (strcmp(parameter_name, "Device.DNS.Diagnostics.NSLookupDiagnostics.DiagnosticsState") == 0)
|
||||
return END_SESSION_NSLOOKUP_DIAGNOSTIC;
|
||||
|
||||
if (strcmp(parameter_name, "Device.IP.Diagnostics.IPLayerCapacityMetrics.DiagnosticsState") == 0)
|
||||
return END_SESSION_IPLAYERCAPACITY_DIAGNOSTIC;
|
||||
|
||||
if (strcmp(parameter_name, "Device.WiFi.NeighboringWiFiDiagnostic.DiagnosticsState") == 0)
|
||||
return END_SESSION_NEIGBORING_WIFI_DIAGNOSTIC;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static bool set_specific_diagnostic_object_parameter_structure_value(struct diagnostic_input (*diagnostics_array)[], int number_inputs, char *parameter, char *value)
|
||||
{
|
||||
int i;
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
#define __DIAGNOSTIC__H
|
||||
|
||||
bool set_diagnostic_parameter_structure_value(char *parameter_name, char *value);
|
||||
int get_diagnostic_state_flag(char *parameter_name, char *value);
|
||||
|
||||
int cwmp_wifi_neighboring__diagnostics();
|
||||
int cwmp_download_diagnostics();
|
||||
|
|
|
|||
|
|
@ -1024,6 +1024,8 @@ int cwmp_handle_rpc_cpe_set_parameter_values(struct rpc *rpc)
|
|||
list_for_each_entry (param_value, &list_set_param_value, list) {
|
||||
set_interface_reset_request(param_value->name, param_value->value);
|
||||
set_diagnostic_parameter_structure_value(param_value->name, param_value->value);
|
||||
int diag_flag = get_diagnostic_state_flag(param_value->name, param_value->value);
|
||||
cwmp_set_end_session(diag_flag);
|
||||
}
|
||||
|
||||
cwmp_free_all_xml_data_list(&xml_list_set_param_value);
|
||||
|
|
|
|||
|
|
@ -58,24 +58,26 @@ enum end_session_enum
|
|||
END_SESSION_EXTERNAL_ACTION = 1 << 1,
|
||||
END_SESSION_RELOAD = 1 << 2,
|
||||
END_SESSION_FACTORY_RESET = 1 << 3,
|
||||
END_SESSION_IPPING_DIAGNOSTIC = 1 << 4,
|
||||
END_SESSION_DOWNLOAD_DIAGNOSTIC = 1 << 5,
|
||||
END_SESSION_UPLOAD_DIAGNOSTIC = 1 << 6,
|
||||
END_SESSION_X_FACTORY_RESET_SOFT = 1 << 7,
|
||||
END_SESSION_X_FACTORY_RESET_SOFT = 1 << 4,
|
||||
|
||||
END_SESSION_IPPING_DIAGNOSTIC = 1 << 5,
|
||||
END_SESSION_DOWNLOAD_DIAGNOSTIC = 1 << 6,
|
||||
END_SESSION_UPLOAD_DIAGNOSTIC = 1 << 7,
|
||||
END_SESSION_NSLOOKUP_DIAGNOSTIC = 1 << 8,
|
||||
END_SESSION_TRACEROUTE_DIAGNOSTIC = 1 << 9,
|
||||
END_SESSION_UDPECHO_DIAGNOSTIC = 1 << 10,
|
||||
END_SESSION_SERVERSELECTION_DIAGNOSTIC = 1 << 11,
|
||||
END_SESSION_NEIGBORING_WIFI_DIAGNOSTIC = 1<<12,
|
||||
END_SESSION_SET_NOTIFICATION_UPDATE = 1 << 13,
|
||||
END_SESSION_RESTART_SERVICES = 1 << 14,
|
||||
END_SESSION_INIT_NOTIFY = 1 << 15,
|
||||
END_SESSION_DOWNLOAD = 1 << 16,
|
||||
END_SESSION_SCHEDULE_DOWNLOAD = 1 << 17,
|
||||
END_SESSION_UPLOAD = 1 << 18,
|
||||
END_SESSION_SCHEDULE_INFORM = 1 << 19,
|
||||
END_SESSION_CDU = 1 << 20,
|
||||
END_SESSION_IPLAYERCAPACITY_DIAGNOSTIC = 1 << 21
|
||||
END_SESSION_IPLAYERCAPACITY_DIAGNOSTIC = 1 << 13,
|
||||
|
||||
END_SESSION_SET_NOTIFICATION_UPDATE = 1 << 14,
|
||||
END_SESSION_RESTART_SERVICES = 1 << 15,
|
||||
END_SESSION_INIT_NOTIFY = 1 << 16,
|
||||
END_SESSION_DOWNLOAD = 1 << 17,
|
||||
END_SESSION_SCHEDULE_DOWNLOAD = 1 << 18,
|
||||
END_SESSION_UPLOAD = 1 << 19,
|
||||
END_SESSION_SCHEDULE_INFORM = 1 << 20,
|
||||
END_SESSION_CDU = 1 << 21
|
||||
};
|
||||
|
||||
enum enum_session_status
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue