mirror of
https://dev.iopsys.eu/bbf/icwmp.git
synced 2025-12-10 07:44:41 +01:00
Align code to cancel diagnostics
This commit is contained in:
parent
1a5ed79a01
commit
e63d09f97d
8 changed files with 97 additions and 91 deletions
|
|
@ -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)
|
||||
|
|
|
|||
120
src/diagnostic.c
120
src/diagnostic.c
|
|
@ -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;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
static bool set_specific_diagnostic_object_parameter_structure_value(struct diagnostic_input (*diagnostics_array)[], int number_inputs, char *parameter, char *value)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
24
src/rpc.c
24
src/rpc.c
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
end_session_flag &= ~(flag);
|
||||
}
|
||||
end_session_flag |= flag;
|
||||
}
|
||||
|
||||
void cwmp_clear_end_session(unsigned int flag)
|
||||
{
|
||||
end_session_flag &= ~(flag);
|
||||
}
|
||||
|
||||
int run_session_end_func(void)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue