Align code to cancel diagnostics

This commit is contained in:
Suvendhu Hansa 2024-03-27 16:58:59 +05:30
parent 1a5ed79a01
commit e63d09f97d
8 changed files with 97 additions and 91 deletions

View file

@ -491,7 +491,7 @@ static void load_download(mxml_node_t *tree)
list_add(&(download_request->list), ilist->prev);
if (download_request->scheduled_time != 0)
count_download_queue++;
cwmp_set_end_session(END_SESSION_DOWNLOAD, true);
cwmp_set_end_session(END_SESSION_DOWNLOAD);
}
static void load_schedule_download(mxml_node_t *tree)
@ -540,7 +540,7 @@ static void load_schedule_download(mxml_node_t *tree)
list_add(&(download_request->list), ilist->prev);
if (download_request->timewindowstruct[0].windowstart != 0)
count_download_queue++;
cwmp_set_end_session(END_SESSION_SCHEDULE_DOWNLOAD, true);
cwmp_set_end_session(END_SESSION_SCHEDULE_DOWNLOAD);
}
static void load_upload(mxml_node_t *tree)
@ -578,7 +578,7 @@ static void load_upload(mxml_node_t *tree)
list_add(&(upload_request->list), ilist->prev);
if (upload_request->scheduled_time != 0)
count_upload_queue++;
cwmp_set_end_session(END_SESSION_UPLOAD, true);
cwmp_set_end_session(END_SESSION_UPLOAD);
}
static void load_change_du_state(mxml_node_t *tree)
@ -600,7 +600,7 @@ static void load_change_du_state(mxml_node_t *tree)
load_xml_node_data(BKP_CDU, tree, &bkp_xml_cdu);
list_add_tail(&(change_du_state_request->list_operation), &(list_change_du_state));
cwmp_set_end_session(END_SESSION_CDU, true);
cwmp_set_end_session(END_SESSION_CDU);
}
void load_du_state_change_complete(mxml_node_t *tree)

View file

@ -152,75 +152,77 @@ struct diagnostic_input nslookup_diagnostics[] = {
{ "Timeout", "Device.DNS.Diagnostics.NSLookupDiagnostics.Timeout", NULL }
};
static unsigned int get_diagnostic_flag(const char *parameter_name)
{
if (CWMP_STRLEN(parameter_name) == 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;
}
if (strcmp(parameter_name, "Device.PacketCaptureDiagnostics.DiagnosticsState") == 0) {
return END_SESSION_PACKETCAPTURE_DIAGNOSTIC;
}
if (strcmp(parameter_name, "Device.SelfTestDiagnostics.DiagnosticsState") == 0) {
return END_SESSION_SELFTEST_DIAGNOSTIC;
}
return 0;
}
void set_diagnostic_state_end_session_flag(char *parameter_name, char *value)
{
bool flag;
unsigned int flag = 0;
if (CWMP_STRLEN(parameter_name) == 0 || CWMP_STRLEN(value) == 0)
return;
flag = get_diagnostic_flag(parameter_name);
if (flag == 0)
return;
if (strcmp(value, "Requested") == 0) {
flag = true;
cwmp_set_end_session(flag);
} else if (strcmp(value, "Canceled") == 0) {
flag = false;
} else {
return;
cwmp_clear_end_session(flag);
}
if (strcmp(parameter_name, "Device.IP.Diagnostics.DownloadDiagnostics.DiagnosticsState") == 0) {
cwmp_set_end_session(END_SESSION_DOWNLOAD_DIAGNOSTIC, flag);
return;
}
if (strcmp(parameter_name, "Device.IP.Diagnostics.UploadDiagnostics.DiagnosticsState") == 0) {
cwmp_set_end_session(END_SESSION_UPLOAD_DIAGNOSTIC, flag);
return;
}
if (strcmp(parameter_name, "Device.IP.Diagnostics.IPPing.DiagnosticsState") == 0) {
cwmp_set_end_session(END_SESSION_IPPING_DIAGNOSTIC, flag);
return;
}
if (strcmp(parameter_name, "Device.IP.Diagnostics.ServerSelectionDiagnostics.DiagnosticsState") == 0) {
cwmp_set_end_session(END_SESSION_SERVERSELECTION_DIAGNOSTIC, flag);
return;
}
if (strcmp(parameter_name, "Device.IP.Diagnostics.TraceRoute.DiagnosticsState") == 0) {
cwmp_set_end_session(END_SESSION_TRACEROUTE_DIAGNOSTIC, flag);
return;
}
if (strcmp(parameter_name, "Device.IP.Diagnostics.UDPEchoDiagnostics.DiagnosticsState") == 0) {
cwmp_set_end_session(END_SESSION_UDPECHO_DIAGNOSTIC, flag);
return;
}
if (strcmp(parameter_name, "Device.DNS.Diagnostics.NSLookupDiagnostics.DiagnosticsState") == 0) {
cwmp_set_end_session(END_SESSION_NSLOOKUP_DIAGNOSTIC, flag);
return;
}
if (strcmp(parameter_name, "Device.IP.Diagnostics.IPLayerCapacityMetrics.DiagnosticsState") == 0) {
cwmp_set_end_session(END_SESSION_IPLAYERCAPACITY_DIAGNOSTIC, flag);
return;
}
if (strcmp(parameter_name, "Device.WiFi.NeighboringWiFiDiagnostic.DiagnosticsState") == 0) {
cwmp_set_end_session(END_SESSION_NEIGBORING_WIFI_DIAGNOSTIC, flag);
return;
}
if (strcmp(parameter_name, "Device.PacketCaptureDiagnostics.DiagnosticsState") == 0) {
cwmp_set_end_session(END_SESSION_PACKETCAPTURE_DIAGNOSTIC, flag);
return;
}
if (strcmp(parameter_name, "Device.SelfTestDiagnostics.DiagnosticsState") == 0) {
cwmp_set_end_session(END_SESSION_SELFTEST_DIAGNOSTIC, flag);
return;
}
}
static bool set_specific_diagnostic_object_parameter_structure_value(struct diagnostic_input (*diagnostics_array)[], int number_inputs, char *parameter, char *value)

View file

@ -33,7 +33,7 @@ void cwmp_delay_reboot(struct uloop_timeout *timeout __attribute__((unused)))
{
set_uci_path_value(NULL, "cwmp.cpe.delay_reboot", "-1");
if (cwmp_main->session->session_status.last_status == SESSION_RUNNING) {
cwmp_set_end_session(END_SESSION_REBOOT, true);
cwmp_set_end_session(END_SESSION_REBOOT);
} else {
cwmp_reboot("delay_reboot");
exit(EXIT_SUCCESS);

View file

@ -1090,7 +1090,7 @@ int cwmp_handle_rpc_cpe_set_parameter_values(struct rpc *rpc)
goto fault;
}
cwmp_set_end_session(END_SESSION_RESTART_SERVICES | END_SESSION_SET_NOTIFICATION_UPDATE | END_SESSION_RELOAD, true);
cwmp_set_end_session(END_SESSION_RESTART_SERVICES | END_SESSION_SET_NOTIFICATION_UPDATE | END_SESSION_RELOAD);
return 0;
fault:
@ -1160,7 +1160,7 @@ int cwmp_handle_rpc_cpe_set_parameter_attributes(struct rpc *rpc)
goto fault;
}
cwmp_set_end_session(END_SESSION_SET_NOTIFICATION_UPDATE | END_SESSION_RESTART_SERVICES | END_SESSION_INIT_NOTIFY, true);
cwmp_set_end_session(END_SESSION_SET_NOTIFICATION_UPDATE | END_SESSION_RESTART_SERVICES | END_SESSION_INIT_NOTIFY);
return 0;
fault:
@ -1252,7 +1252,7 @@ int cwmp_handle_rpc_cpe_add_object(struct rpc *rpc)
FREE(object_name);
FREE(parameter_key);
FREE(res.instance);
cwmp_set_end_session(END_SESSION_RESTART_SERVICES, true);
cwmp_set_end_session(END_SESSION_RESTART_SERVICES);
return 0;
fault:
@ -1336,7 +1336,7 @@ int cwmp_handle_rpc_cpe_delete_object(struct rpc *rpc)
FREE(object_name);
FREE(parameter_key);
FREE(res.instance);
cwmp_set_end_session(END_SESSION_RESTART_SERVICES, true);
cwmp_set_end_session(END_SESSION_RESTART_SERVICES);
return 0;
fault:
@ -1421,7 +1421,7 @@ int cwmp_handle_rpc_cpe_factory_reset(struct rpc *rpc)
goto fault;
}
cwmp_set_end_session(END_SESSION_FACTORY_RESET, true);
cwmp_set_end_session(END_SESSION_FACTORY_RESET);
return 0;
@ -1446,7 +1446,7 @@ int cwmp_handle_rpc_cpe_x_factory_reset_soft(struct rpc *rpc)
if (!b)
goto fault;
cwmp_set_end_session(END_SESSION_X_FACTORY_RESET_SOFT, true);
cwmp_set_end_session(END_SESSION_X_FACTORY_RESET_SOFT);
return 0;
@ -1583,7 +1583,7 @@ int cwmp_handle_rpc_cpe_reboot(struct rpc *rpc)
goto fault;
}
cwmp_set_end_session(END_SESSION_REBOOT, true);
cwmp_set_end_session(END_SESSION_REBOOT);
FREE(command_key);
return 0;
@ -1669,7 +1669,7 @@ int cwmp_handle_rpc_cpe_schedule_inform(struct rpc *rpc)
bkp_session_save();
FREE(command_key);
cwmp_set_end_session(END_SESSION_SCHEDULE_INFORM, true);
cwmp_set_end_session(END_SESSION_SCHEDULE_INFORM);
return 0;
fault:
@ -1749,7 +1749,7 @@ int cwmp_handle_rpc_cpe_change_du_state(struct rpc *rpc)
change_du_state->id = cwmp_main->cdu_id;
bkp_session_insert_change_du_state(change_du_state);
bkp_session_save();
cwmp_set_end_session(END_SESSION_CDU, true);
cwmp_set_end_session(END_SESSION_CDU);
return 0;
fault:
@ -1885,7 +1885,7 @@ int cwmp_handle_rpc_cpe_download(struct rpc *rpc)
} else {
CWMP_LOG(INFO, "Download will start at the end of session");
}
cwmp_set_end_session(END_SESSION_DOWNLOAD, true);
cwmp_set_end_session(END_SESSION_DOWNLOAD);
}
return 0;
@ -2044,7 +2044,7 @@ int cwmp_handle_rpc_cpe_schedule_download(struct rpc *rpc)
error = FAULT_CPE_INTERNAL_ERROR;
goto fault;
}
cwmp_set_end_session(END_SESSION_SCHEDULE_DOWNLOAD, true);
cwmp_set_end_session(END_SESSION_SCHEDULE_DOWNLOAD);
return 0;
fault:
@ -2180,7 +2180,7 @@ int cwmp_handle_rpc_cpe_upload(struct rpc *rpc)
} else {
CWMP_LOG(INFO, "Upload will start at the end of session");
}
cwmp_set_end_session(END_SESSION_UPLOAD, true);
cwmp_set_end_session(END_SESSION_UPLOAD);
}
return 0;

View file

@ -634,13 +634,14 @@ struct rpc *cwmp_add_session_rpc_acs_head(int type)
return rpc_acs;
}
void cwmp_set_end_session(unsigned int flag, bool set)
void cwmp_set_end_session(unsigned int flag)
{
if (set) {
end_session_flag |= flag;
} else {
}
void cwmp_clear_end_session(unsigned int flag)
{
end_session_flag &= ~(flag);
}
}
int run_session_end_func(void)

View file

@ -90,7 +90,8 @@ enum enum_session_status
extern unsigned int end_session_flag;
void cwmp_set_end_session(unsigned int flag, bool set);
void cwmp_set_end_session(unsigned int flag);
void cwmp_clear_end_session(unsigned int flag);
struct rpc *build_sessin_rcp_cpe(int type);
struct rpc *cwmp_add_session_rpc_acs(int type);
struct rpc *cwmp_add_session_rpc_acs_head(int type);

View file

@ -71,7 +71,7 @@ static int reload_cmd(struct blob_buf *b)
{
CWMP_LOG(INFO, "triggered ubus reload");
if (cwmp_main->session->session_status.last_status == SESSION_RUNNING) {
cwmp_set_end_session(END_SESSION_RELOAD, true);
cwmp_set_end_session(END_SESSION_RELOAD);
blobmsg_add_u32(b, "status", 0);
blobmsg_add_string(b, "info", "Session running, reload at the end of the session");
} else {

View file

@ -99,12 +99,14 @@ if [[ $res != *"9009"* ]]; then
fi
log "ADD METHOD: Correct Path"
res=$(./icwmpd -c add Device.IP.Interface. 2>&1)
if [[ $res != *"Device.IP.Interface."* ]]; then
res=$(./icwmpd -c add Device.DHCPv4.Relay.Forwarding. 2>&1)
if [[ $res != *"Device.DHCPv4.Relay.Forwarding."* ]]; then
log "Error: Add Method with correct path doesn't work correctly"
exit 1
fi
del_path=$(echo "${res}" | cut -d' ' -f 2)
log "ADD METHOD: Wrong Path"
res=$(./icwmpd -c add Device.DeviceInfo.VendorLogFil 2>&1)
if [[ $res != *"9005"* ]]; then
@ -119,16 +121,16 @@ if [[ $res != *"9005"* ]]; then
exit 1
fi
log "DELETE METHOD: Correct Path && one instance"
res=$(./icwmpd -c del Device.IP.Interface.2. 2>&1)
if [[ $res != *"Deleted Device.IP.Interface.2."* ]]; then
log "DELETE METHOD: Correct Path ${del_path} && one instance"
res=$(./icwmpd -c del "${del_path}" 2>&1)
if [[ $res != *"Deleted ${del_path}"* ]]; then
log "Error: Delete Method with correct path && one instance doesn't work correctly"
exit 1
fi
log "DELETE METHOD: Correct Path && all instance"
res=$(./icwmpd -c del Device.IP.Interface. 2>&1)
if [[ $res != *"Deleted Device.IP.Interface."* ]]; then
res=$(./icwmpd -c del Device.DHCPv4.Relay.Forwarding. 2>&1)
if [[ $res != *"Deleted Device.DHCPv4.Relay.Forwarding."* ]]; then
log "Error: Delete Method with correct path && all instances doesn't work correctly"
exit 1
fi