Extract end_session_flag from bbf to icwmp

This commit is contained in:
Omar Kallel 2020-10-03 22:32:35 +01:00 committed by Amin Ben Ramdhane
parent bc7a4695ff
commit aaa92cbda4
3 changed files with 29 additions and 0 deletions

8
cwmp.c
View file

@ -29,6 +29,14 @@
struct cwmp cwmp_main = {0};
char *commandKey = NULL;
#ifndef TR098
unsigned int end_session_flag = 0;
void cwmp_set_end_session(unsigned int flag)
{
end_session_flag |= flag;
}
#endif
int cwmp_dm_ctx_init(struct cwmp *cwmp, struct dmctx *ctx)
{
if(cwmp->conf.supported_amd_version == 0)

View file

@ -27,6 +27,7 @@
#include <libbbfdm/dmentry.h>
#include <libbbfdm/dmbbfcommon.h>
#include <libbbfdm/dmdiagnostics.h>
extern unsigned int end_session_flag;
#endif
#define MAX_EVENTS 64
@ -115,6 +116,21 @@ enum event_type_enum {
EVENT_TYPE_MULTIPLE = 0x1
};
enum end_session_enum {
END_SESSION_REBOOT = 1,
END_SESSION_EXTERNAL_ACTION = 1<<1,
END_SESSION_RELOAD = 1<<2,
END_SESSION_FACTORY_RESET = 1<<3,
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,
END_SESSION_NSLOOKUP_DIAGNOSTIC = 1<<8,
END_SESSION_TRACEROUTE_DIAGNOSTIC = 1<<9,
END_SESSION_UDPECHO_DIAGNOSTIC = 1<<10,
END_SESSION_SERVERSELECTION_DIAGNOSTIC = 1<<11
};
enum event_idx_enum {
EVENT_IDX_0BOOTSTRAP,
EVENT_IDX_1BOOT,
@ -322,4 +338,7 @@ int cwmp_init(int argc, char** argv,struct cwmp *cwmp);
int cwmp_exit(void);
void add_list_value_change(char *param_name, char *param_data, char *param_type);
void send_active_value_change(void);
#ifndef TR098
void cwmp_set_end_session(unsigned int flag);
#endif
#endif /* _CWMP_H__ */

2
xml.c
View file

@ -1562,6 +1562,7 @@ int cwmp_handle_rpc_cpe_set_parameter_values(struct session *session, struct rpc
}
if (parameter_name && parameter_value) {
int e = dm_entry_param_method(&dmctx, CMD_SET_VALUE, parameter_name, parameter_value, NULL);
cwmp_set_end_session(dmctx.end_session_flag);
if (e) {
fault_code = FAULT_CPE_INVALID_ARGUMENTS;
}
@ -1684,6 +1685,7 @@ int cwmp_handle_rpc_cpe_set_parameter_attributes(struct session *session, struct
}
if (attr_notification_update && parameter_name && parameter_notification) {
int e = dm_entry_param_method(&dmctx, CMD_SET_NOTIFICATION, parameter_name, parameter_notification, attr_notification_update);
cwmp_set_end_session(dmctx.end_session_flag);
if (e) {
fault_code = cwmp_get_fault_code(e);
goto fault;