mirror of
https://dev.iopsys.eu/bbf/icwmp.git
synced 2026-01-28 01:27:16 +01:00
Ticket refs #13375: TR069 toggle for soft reset
This commit is contained in:
parent
d6f3213471
commit
dbf00a8c81
5 changed files with 48 additions and 0 deletions
10
cwmp.c
10
cwmp.c
|
|
@ -581,6 +581,16 @@ int run_session_end_func (struct session *session)
|
|||
cwmp_apply_acs_changes();
|
||||
}
|
||||
|
||||
|
||||
if (session->end_session & END_SESSION_X_FACTORY_RESET_SOFT)
|
||||
{
|
||||
CWMP_LOG (INFO,"Executing factory reset soft: end session request");
|
||||
external_init();
|
||||
external_simple("factory_reset_soft", NULL, 0);
|
||||
external_exit();
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
dm_entry_restart_services();
|
||||
|
||||
session->end_session = 0;
|
||||
|
|
|
|||
|
|
@ -100,6 +100,7 @@ enum end_session {
|
|||
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
|
||||
};
|
||||
|
||||
enum cwmp_start {
|
||||
|
|
|
|||
|
|
@ -51,6 +51,7 @@ enum rpc_cpe_methods_idx {
|
|||
RPC_CPE_CHANGE_DU_STATE,
|
||||
RPC_CPE_CANCEL_TRANSFER,
|
||||
RPC_CPE_FAULT,
|
||||
RPC_CPE_X_FACTORY_RESET_SOFT,
|
||||
__RPC_CPE_MAX
|
||||
};
|
||||
|
||||
|
|
@ -281,6 +282,7 @@ int cwmp_handle_rpc_cpe_reboot(struct session *session, struct rpc *rpc);
|
|||
int cwmp_handle_rpc_cpe_download(struct session *session, struct rpc *rpc);
|
||||
int cwmp_handle_rpc_cpe_upload(struct session *session, struct rpc *rpc);
|
||||
int cwmp_handle_rpc_cpe_factory_reset(struct session *session, struct rpc *rpc);
|
||||
int cwmp_handle_rpc_cpe_x_factory_reset_soft(struct session *session, struct rpc *rpc);
|
||||
int cancel_transfer(char * key);
|
||||
int cwmp_handle_rpc_cpe_cancel_transfer(struct session *session, struct rpc *rpc);
|
||||
int cwmp_handle_rpc_cpe_schedule_inform(struct session *session, struct rpc *rpc);
|
||||
|
|
|
|||
|
|
@ -87,6 +87,9 @@ case "$1" in
|
|||
factory_reset)
|
||||
action="factory_reset"
|
||||
;;
|
||||
factory_reset_soft)
|
||||
action="factory_reset_soft"
|
||||
;;
|
||||
reboot)
|
||||
action="reboot"
|
||||
;;
|
||||
|
|
@ -358,6 +361,12 @@ handle_action() {
|
|||
if [ "$action" = "factory_reset" ]; then
|
||||
/sbin/defaultreset
|
||||
fi
|
||||
|
||||
if [ "$action" = "factory_reset_soft" ]; then
|
||||
ubus call juci.system defaultreset '{"soft":"true","wifi":"true","fw_redirect":"true","fw_parental":"true","passwd_user":"true","ice":"true"}'
|
||||
sync
|
||||
reboot
|
||||
fi
|
||||
|
||||
if [ "$action" = "reboot" ]; then
|
||||
sync
|
||||
|
|
@ -452,6 +461,9 @@ handle_action() {
|
|||
factory_reset)
|
||||
action="factory_reset"
|
||||
;;
|
||||
factory_reset_soft)
|
||||
action="factory_reset_soft"
|
||||
;;
|
||||
reboot)
|
||||
action="reboot"
|
||||
;;
|
||||
|
|
|
|||
23
xml.c
23
xml.c
|
|
@ -116,6 +116,7 @@ const struct rpc_cpe_method rpc_cpe_methods[] = {
|
|||
[RPC_CPE_SCHEDULE_INFORM] = {"ScheduleInform", cwmp_handle_rpc_cpe_schedule_inform, AMD_1},
|
||||
[RPC_CPE_SCHEDULE_DOWNLOAD] = {"ScheduleDownload", cwmp_handle_rpc_cpe_schedule_download, AMD_3},
|
||||
[RPC_CPE_CHANGE_DU_STATE] = {"ChangeDUState", cwmp_handle_rpc_cpe_change_du_state, AMD_3},
|
||||
[RPC_CPE_X_FACTORY_RESET_SOFT] = {"X_FactoryResetSoft", cwmp_handle_rpc_cpe_x_factory_reset_soft, AMD_1},
|
||||
[RPC_CPE_FAULT] = {"Fault", cwmp_handle_rpc_cpe_fault, AMD_1}
|
||||
};
|
||||
|
||||
|
|
@ -1906,6 +1907,28 @@ error:
|
|||
return -1;
|
||||
}
|
||||
|
||||
int cwmp_handle_rpc_cpe_x_factory_reset_soft(struct session *session, struct rpc *rpc){
|
||||
mxml_node_t *b;
|
||||
|
||||
b = mxmlFindElement(session->tree_out, session->tree_out, "soap_env:Body", NULL, NULL, MXML_DESCEND);
|
||||
if (!b) goto fault;
|
||||
|
||||
b = mxmlNewElement(b, "cwmp:X_FactoryResetSoftResponse");
|
||||
if (!b) goto fault;
|
||||
|
||||
cwmp_set_end_session(END_SESSION_X_FACTORY_RESET_SOFT);
|
||||
|
||||
return 0;
|
||||
|
||||
fault:
|
||||
if (cwmp_create_fault_message(session, rpc, FAULT_CPE_INTERNAL_ERROR))
|
||||
goto error;
|
||||
return 0;
|
||||
|
||||
error:
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
* [RPC CPE]: CancelTransfer
|
||||
*/
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue