Added packet capture diagnostics

This commit is contained in:
suvendhu 2023-10-16 16:44:32 +05:30
parent cdbab055a1
commit ade480d2b0
4 changed files with 38 additions and 2 deletions

View file

@ -35,6 +35,18 @@ struct diagnostic_input {
#define IPLAYER_CAPACITY_DIAG_CMD "Device.IP.Diagnostics.IPLayerCapacity()"
#define NSLOOKUP_DIAG_CMD "Device.DNS.Diagnostics.NSLookupDiagnostics()"
#define WIFINEIBORING_DIAG_CMD "Device.WiFi.NeighboringWiFiDiagnostic()"
#define PACKET_CAPTURE_DIAG_CMD "Device.PacketCaptureDiagnostics()"
struct diagnostic_input packet_capture[] = {
{ "Interface", "Device.PacketCaptureDiagnostics.Interface", NULL },
{ "Format", "Device.PacketCaptureDiagnostics.Format", NULL },
{ "Duration", "Device.PacketCaptureDiagnostics.Duration", NULL },
{ "PacketCount", "Device.PacketCaptureDiagnostics.PacketCount", NULL },
{ "FileTarget", "Device.PacketCaptureDiagnostics.FileTarget", NULL },
{ "FilterExpression", "Device.PacketCaptureDiagnostics.FilterExpression", NULL },
{ "Username", "Device.PacketCaptureDiagnostics.Username", NULL },
{ "Password", "Device.PacketCaptureDiagnostics.Password", NULL },
};
struct diagnostic_input iplayer_capacity[] = {
{ "Interface", "Device.IP.Diagnostics.IPLayerCapacityMetrics.Interface", NULL },
@ -191,6 +203,11 @@ void set_diagnostic_state_end_session_flag(char *parameter_name, char *value)
cwmp_set_end_session(END_SESSION_NEIGBORING_WIFI_DIAGNOSTIC);
return;
}
if (strcmp(parameter_name, "Device.PacketCaptureDiagnostics.DiagnosticsState") == 0) {
cwmp_set_end_session(END_SESSION_PACKETCAPTURE_DIAGNOSTIC);
return;
}
}
static bool set_specific_diagnostic_object_parameter_structure_value(struct diagnostic_input (*diagnostics_array)[], int number_inputs, char *parameter, char *value)
@ -218,7 +235,9 @@ bool set_diagnostic_parameter_structure_value(char *parameter_name, char *value)
set_specific_diagnostic_object_parameter_structure_value(&traceroute_diagnostics, ARRAY_SIZE(traceroute_diagnostics), parameter_name, value) ||
set_specific_diagnostic_object_parameter_structure_value(&udpecho_diagnostics, ARRAY_SIZE(udpecho_diagnostics), parameter_name, value) ||
set_specific_diagnostic_object_parameter_structure_value(&serverselection_diagnostics, ARRAY_SIZE(serverselection_diagnostics), parameter_name, value) ||
set_specific_diagnostic_object_parameter_structure_value(&iplayer_capacity, ARRAY_SIZE(iplayer_capacity), parameter_name, value);
set_specific_diagnostic_object_parameter_structure_value(&iplayer_capacity, ARRAY_SIZE(iplayer_capacity), parameter_name, value) ||
set_specific_diagnostic_object_parameter_structure_value(&packet_capture, ARRAY_SIZE(packet_capture), parameter_name, value);
}
static int cwmp_diagnostics_operate(char *command, char *command_key, struct diagnostic_input diagnostics[], int number_inputs)
@ -261,6 +280,16 @@ int cwmp_wifi_neighboring__diagnostics(void)
return 0;
}
int cwmp_packet_capture_diagnostics(void)
{
if (cwmp_diagnostics_operate(PACKET_CAPTURE_DIAG_CMD, "cwmp_pack_capture_diag", packet_capture, ARRAY_SIZE(packet_capture)) == -1)
return -1;
CWMP_LOG(INFO, "packet capture diagnostic is successfully executed");
cwmp_main->diag_session = true;
return 0;
}
int cwmp_ip_layer_capacity_diagnostics(void)
{
if (cwmp_diagnostics_operate(IPLAYER_CAPACITY_DIAG_CMD, "cwmp_ip_layer_diag", iplayer_capacity, ARRAY_SIZE(iplayer_capacity)) == -1)

View file

@ -26,5 +26,6 @@ int cwmp_traceroute_diagnostics(void);
int cwmp_udp_echo_diagnostics(void);
int cwmp_serverselection_diagnostics(void);
int cwmp_ip_layer_capacity_diagnostics(void);
int cwmp_packet_capture_diagnostics(void);
#endif

View file

@ -710,6 +710,11 @@ int run_session_end_func(void)
cwmp_ip_layer_capacity_diagnostics();
}
if (end_session_flag & END_SESSION_PACKETCAPTURE_DIAGNOSTIC) {
CWMP_LOG(INFO, "Executing packet capture diagnostic: end session request");
cwmp_packet_capture_diagnostics();
}
if (cwmp_main->diag_session) {
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;

View file

@ -77,7 +77,8 @@ enum end_session_enum
END_SESSION_SCHEDULE_DOWNLOAD = 1 << 18,
END_SESSION_UPLOAD = 1 << 19,
END_SESSION_SCHEDULE_INFORM = 1 << 20,
END_SESSION_CDU = 1 << 21
END_SESSION_CDU = 1 << 21,
END_SESSION_PACKETCAPTURE_DIAGNOSTIC = 1 << 22,
};
enum enum_session_status