ManagementServer: add support for ScheduleReboot and DelayReboot parameters

This commit is contained in:
Amin Ben Ramdhane 2021-05-25 10:40:30 +01:00
parent 9290c10b63
commit e228177d2e
2 changed files with 78 additions and 2 deletions

View file

@ -2314,7 +2314,22 @@
"protocols": [
"cwmp"
],
"datatype": "dateTime"
"datatype": "dateTime",
"mapping": [
{
"type": "uci",
"uci": {
"file": "cwmp",
"section": {
"type": "cpe",
"name": "cpe"
},
"option": {
"name": "schedule_reboot"
}
}
}
]
},
"DelayReboot": {
"type": "int",
@ -2329,7 +2344,22 @@
"min": -1
}
],
"unit": "seconds"
"unit": "seconds",
"mapping": [
{
"type": "uci",
"uci": {
"file": "cwmp",
"section": {
"type": "cpe",
"name": "cpe"
},
"option": {
"name": "delay_reboot"
}
}
}
]
},
"PeriodicInformEnable": {
"type": "boolean",

View file

@ -86,6 +86,50 @@ static int set_management_server_passwd(char *refparam, struct dmctx *ctx, void
return 0;
}
/*#Device.ManagementServer.ScheduleReboot!UCI:cwmp/cpe,cpe/schedule_reboot*/
static int get_management_server_schedule_reboot(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{
dmuci_get_option_value_string("cwmp", "cpe", "schedule_reboot", value);
return 0;
}
static int set_management_server_schedule_reboot(char *refparam, struct dmctx *ctx, void *data, char *instance, char *value, int action)
{
switch (action) {
case VALUECHECK:
if (dm_validate_dateTime(value))
return FAULT_9007;
break;
case VALUESET:
dmuci_set_value("cwmp", "cpe", "schedule_reboot", value);
bbf_set_end_session_flag(ctx, BBF_END_SESSION_RELOAD);
break;
}
return 0;
}
/*#Device.ManagementServer.DelayReboot!UCI:cwmp/cpe,cpe/delay_reboot*/
static int get_management_server_delay_reboot(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{
*value = dmuci_get_option_value_fallback_def("cwmp", "cpe", "delay_reboot", "-1");
return 0;
}
static int set_management_server_delay_reboot(char *refparam, struct dmctx *ctx, void *data, char *instance, char *value, int action)
{
switch (action) {
case VALUECHECK:
if (dm_validate_int(value, RANGE_ARGS{{"-1",NULL}}, 1))
return FAULT_9007;
break;
case VALUESET:
dmuci_set_value("cwmp", "cpe", "delay_reboot", value);
bbf_set_end_session_flag(ctx, BBF_END_SESSION_RELOAD);
break;
}
return 0;
}
/*#Device.ManagementServer.ParameterKey!UCI:cwmp/acs,acs/ParameterKey*/
static int get_management_server_key(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{
@ -542,6 +586,8 @@ DMLEAF tManagementServerParams[] = {
{"URL", &DMWRITE, DMT_STRING, get_management_server_url, set_management_server_url, BBFDM_CWMP},
{"Username", &DMWRITE, DMT_STRING, get_management_server_username, set_management_server_username, BBFDM_CWMP},
{"Password", &DMWRITE, DMT_STRING, get_empty, set_management_server_passwd, BBFDM_CWMP},
{"ScheduleReboot", &DMWRITE, DMT_TIME, get_management_server_schedule_reboot, set_management_server_schedule_reboot, BBFDM_CWMP},
{"DelayReboot", &DMWRITE, DMT_INT, get_management_server_delay_reboot, set_management_server_delay_reboot, BBFDM_CWMP},
{"PeriodicInformEnable", &DMWRITE, DMT_BOOL, get_management_server_periodic_inform_enable, set_management_server_periodic_inform_enable, BBFDM_CWMP},
{"PeriodicInformInterval", &DMWRITE, DMT_UNINT, get_management_server_periodic_inform_interval, set_management_server_periodic_inform_interval, BBFDM_CWMP},
{"PeriodicInformTime", &DMWRITE, DMT_TIME, get_management_server_periodic_inform_time, set_management_server_periodic_inform_time, BBFDM_CWMP},