mirror of
https://dev.iopsys.eu/bbf/icwmp.git
synced 2025-12-10 07:44:41 +01:00
Added support of tr471 diagnostics
This commit is contained in:
parent
d92ef77e28
commit
fd9ca76bf0
4 changed files with 46 additions and 2 deletions
|
|
@ -33,6 +33,7 @@ struct diagnostic_input {
|
||||||
#define UDPECHO_NUMBER_INPUTS 9
|
#define UDPECHO_NUMBER_INPUTS 9
|
||||||
#define NSLKUP_NUMBER_INPUTS 5
|
#define NSLKUP_NUMBER_INPUTS 5
|
||||||
#define WIFINEIGHB_NUMBER_INPUTS 0
|
#define WIFINEIGHB_NUMBER_INPUTS 0
|
||||||
|
#define IPLAYER_CAPACITY_INPUTS 22
|
||||||
|
|
||||||
#define IP_DIAGNOSTICS_OBJECT "Device.IP.Diagnostics."
|
#define IP_DIAGNOSTICS_OBJECT "Device.IP.Diagnostics."
|
||||||
#define DNS_DIAGNOSTICS_OBJECT "Device.DNS.Diagnostics."
|
#define DNS_DIAGNOSTICS_OBJECT "Device.DNS.Diagnostics."
|
||||||
|
|
@ -46,6 +47,32 @@ struct diagnostic_input {
|
||||||
#define UDPECHO_DIAG_ACT_NAME "UDPEchoDiagnostics()"
|
#define UDPECHO_DIAG_ACT_NAME "UDPEchoDiagnostics()"
|
||||||
#define NSLOOKUP_DIAG_ACT_NAME "NSLookupDiagnostics()"
|
#define NSLOOKUP_DIAG_ACT_NAME "NSLookupDiagnostics()"
|
||||||
#define WIFINEIBORING_DIAG_ACT_NAME "NeighboringWiFiDiagnostic()"
|
#define WIFINEIBORING_DIAG_ACT_NAME "NeighboringWiFiDiagnostic()"
|
||||||
|
#define IPLAYER_CAPACITY_ACT_NAME "IPLayerCapacity()"
|
||||||
|
|
||||||
|
struct diagnostic_input iplayer_capacity_array[IPLAYER_CAPACITY_INPUTS] = {
|
||||||
|
{ "Interface", "Device.IP.Diagnostics.IPLayerCapacityMetrics.Interface", NULL },
|
||||||
|
{ "Role", "Device.IP.Diagnostics.IPLayerCapacityMetrics.Role", NULL },
|
||||||
|
{ "Host", "Device.IP.Diagnostics.IPLayerCapacityMetrics.Host", NULL },
|
||||||
|
{ "Port", "Device.IP.Diagnostics.IPLayerCapacityMetrics.Port", NULL },
|
||||||
|
{ "JumboFramesPermitted", "Device.IP.Diagnostics.IPLayerCapacityMetrics.JumboFramesPermitted", NULL },
|
||||||
|
{ "DSCP", "Device.IP.Diagnostics.IPLayerCapacityMetrics.DSCP", NULL },
|
||||||
|
{ "ProtocolVersion", "Device.IP.Diagnostics.IPLayerCapacityMetrics.ProtocolVersion", NULL },
|
||||||
|
{ "UDPPayloadContent", "Device.IP.Diagnostics.IPLayerCapacityMetrics.UDPPayloadContent", NULL },
|
||||||
|
{ "TestType", "Device.IP.Diagnostics.IPLayerCapacityMetrics.TestType", NULL },
|
||||||
|
{ "IPDVEnable", "Device.IP.Diagnostics.IPLayerCapacityMetrics.IPDVEnable", NULL },
|
||||||
|
{ "StartSendingRateIndex", "Device.IP.Diagnostics.IPLayerCapacityMetrics.StartSendingRateIndex", NULL },
|
||||||
|
{ "NumberTestSubIntervals", "Device.IP.Diagnostics.IPLayerCapacityMetrics.NumberTestSubIntervals", NULL },
|
||||||
|
{ "NumberFirstModeTestSubIntervals", "Device.IP.Diagnostics.IPLayerCapacityMetrics.NumberFirstModeTestSubIntervals", NULL },
|
||||||
|
{ "TestSubInterval", "Device.IP.Diagnostics.IPLayerCapacityMetrics.TestSubInterval", NULL },
|
||||||
|
{ "StatusFeedbackInterval", "Device.IP.Diagnostics.IPLayerCapacityMetrics.StatusFeedbackInterval", NULL },
|
||||||
|
{ "SeqErrThresh", "Device.IP.Diagnostics.IPLayerCapacityMetrics.SeqErrThresh", NULL },
|
||||||
|
{ "ReordDupIgnoreEnable", "Device.IP.Diagnostics.IPLayerCapacityMetrics.ReordDupIgnoreEnable", NULL },
|
||||||
|
{ "LowerThresh", "Device.IP.Diagnostics.IPLayerCapacityMetrics.LowerThresh", NULL },
|
||||||
|
{ "UpperThresh", "Device.IP.Diagnostics.IPLayerCapacityMetrics.UpperThresh", NULL },
|
||||||
|
{ "HighSpeedDelta", "Device.IP.Diagnostics.IPLayerCapacityMetrics.HighSpeedDelta", NULL },
|
||||||
|
{ "SlowAdjThresh", "Device.IP.Diagnostics.IPLayerCapacityMetrics.SlowAdjThresh", NULL },
|
||||||
|
{ "RateAdjAlgorithm", "Device.IP.Diagnostics.IPLayerCapacityMetrics.RateAdjAlgorithm", NULL },
|
||||||
|
};
|
||||||
|
|
||||||
struct diagnostic_input download_diagnostics_array[DOWNLOAD_NUMBER_INPUTS] = {
|
struct diagnostic_input download_diagnostics_array[DOWNLOAD_NUMBER_INPUTS] = {
|
||||||
{ "Interface", "Device.IP.Diagnostics.DownloadDiagnostics.Interface", NULL },
|
{ "Interface", "Device.IP.Diagnostics.DownloadDiagnostics.Interface", NULL },
|
||||||
|
|
@ -145,7 +172,7 @@ bool set_diagnostic_parameter_structure_value(char *parameter_name, char *value)
|
||||||
return set_specific_diagnostic_object_parameter_structure_value(&download_diagnostics_array, DOWNLOAD_NUMBER_INPUTS, parameter_name, value) || set_specific_diagnostic_object_parameter_structure_value(&upload_diagnostics_array, UPLOAD_NUMBER_INPUTS, parameter_name, value) ||
|
return set_specific_diagnostic_object_parameter_structure_value(&download_diagnostics_array, DOWNLOAD_NUMBER_INPUTS, parameter_name, value) || set_specific_diagnostic_object_parameter_structure_value(&upload_diagnostics_array, UPLOAD_NUMBER_INPUTS, parameter_name, value) ||
|
||||||
set_specific_diagnostic_object_parameter_structure_value(&ipping_diagnostics_array, IPPING_NUMBER_INPUTS, parameter_name, value) || set_specific_diagnostic_object_parameter_structure_value(&nslookup_diagnostics_array, NSLKUP_NUMBER_INPUTS, parameter_name, value) ||
|
set_specific_diagnostic_object_parameter_structure_value(&ipping_diagnostics_array, IPPING_NUMBER_INPUTS, parameter_name, value) || set_specific_diagnostic_object_parameter_structure_value(&nslookup_diagnostics_array, NSLKUP_NUMBER_INPUTS, parameter_name, value) ||
|
||||||
set_specific_diagnostic_object_parameter_structure_value(&traceroute_diagnostics_array, TRACEROUTE_NUMBER_INPUTS, parameter_name, value) || set_specific_diagnostic_object_parameter_structure_value(&udpecho_diagnostics_array, UDPECHO_NUMBER_INPUTS, parameter_name, value) ||
|
set_specific_diagnostic_object_parameter_structure_value(&traceroute_diagnostics_array, TRACEROUTE_NUMBER_INPUTS, parameter_name, value) || set_specific_diagnostic_object_parameter_structure_value(&udpecho_diagnostics_array, UDPECHO_NUMBER_INPUTS, parameter_name, value) ||
|
||||||
set_specific_diagnostic_object_parameter_structure_value(&seserverselection_diagnostics_array, SESERVERSELECT_NUMBER_INPUTS, parameter_name, value);
|
set_specific_diagnostic_object_parameter_structure_value(&seserverselection_diagnostics_array, SESERVERSELECT_NUMBER_INPUTS, parameter_name, value) || set_specific_diagnostic_object_parameter_structure_value(&iplayer_capacity_array, IPLAYER_CAPACITY_INPUTS, parameter_name, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void empty_ubus_callback(struct ubus_request *req __attribute__((unused)), int type __attribute__((unused)), struct blob_attr *msg __attribute__((unused))) {}
|
void empty_ubus_callback(struct ubus_request *req __attribute__((unused)), int type __attribute__((unused)), struct blob_attr *msg __attribute__((unused))) {}
|
||||||
|
|
@ -188,6 +215,16 @@ int cwmp_wifi_neighboring__diagnostics()
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int cwmp_ip_layer_capacity_diagnostics()
|
||||||
|
{
|
||||||
|
if (cwmp_diagnostics_operate(IP_DIAGNOSTICS_OBJECT, IPLAYER_CAPACITY_ACT_NAME, iplayer_capacity_array, IPLAYER_CAPACITY_INPUTS) == -1)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
CWMP_LOG(INFO, "IP layer capacity diagnostic is successfully executed");
|
||||||
|
cwmp_main->diag_session = true;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int cwmp_download_diagnostics()
|
int cwmp_download_diagnostics()
|
||||||
{
|
{
|
||||||
if (cwmp_diagnostics_operate(IP_DIAGNOSTICS_OBJECT, DOWNLOAD_DIAG_ACT_NAME, download_diagnostics_array, DOWNLOAD_NUMBER_INPUTS) == -1)
|
if (cwmp_diagnostics_operate(IP_DIAGNOSTICS_OBJECT, DOWNLOAD_DIAG_ACT_NAME, download_diagnostics_array, DOWNLOAD_NUMBER_INPUTS) == -1)
|
||||||
|
|
|
||||||
|
|
@ -24,5 +24,6 @@ int cwmp_nslookup_diagnostics();
|
||||||
int cwmp_traceroute_diagnostics();
|
int cwmp_traceroute_diagnostics();
|
||||||
int cwmp_udp_echo_diagnostics();
|
int cwmp_udp_echo_diagnostics();
|
||||||
int cwmp_serverselection_diagnostics();
|
int cwmp_serverselection_diagnostics();
|
||||||
|
int cwmp_ip_layer_capacity_diagnostics();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -673,6 +673,11 @@ int run_session_end_func(void)
|
||||||
cwmp_wifi_neighboring__diagnostics();
|
cwmp_wifi_neighboring__diagnostics();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (end_session_flag & END_SESSION_IPLAYERCAPACITY_DIAGNOSTIC) {
|
||||||
|
CWMP_LOG(INFO, "Executing IP layer capacity diagnostic: end session request");
|
||||||
|
cwmp_ip_layer_capacity_diagnostics();
|
||||||
|
}
|
||||||
|
|
||||||
if (cwmp_main->diag_session) {
|
if (cwmp_main->diag_session) {
|
||||||
struct session_timer_event *periodic_inform_event = calloc(1, sizeof(struct session_timer_event));
|
struct session_timer_event *periodic_inform_event = calloc(1, sizeof(struct session_timer_event));
|
||||||
periodic_inform_event->session_timer_evt.cb = cwmp_schedule_session_with_event;
|
periodic_inform_event->session_timer_evt.cb = cwmp_schedule_session_with_event;
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,8 @@ enum end_session_enum
|
||||||
END_SESSION_SCHEDULE_DOWNLOAD = 1 << 17,
|
END_SESSION_SCHEDULE_DOWNLOAD = 1 << 17,
|
||||||
END_SESSION_UPLOAD = 1 << 18,
|
END_SESSION_UPLOAD = 1 << 18,
|
||||||
END_SESSION_SCHEDULE_INFORM = 1 << 19,
|
END_SESSION_SCHEDULE_INFORM = 1 << 19,
|
||||||
END_SESSION_CDU = 1 << 20
|
END_SESSION_CDU = 1 << 20,
|
||||||
|
END_SESSION_IPLAYERCAPACITY_DIAGNOSTIC = 1 << 21
|
||||||
};
|
};
|
||||||
|
|
||||||
enum enum_session_status
|
enum enum_session_status
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue