Extract end_session_flag from bbf to icwmp

This commit is contained in:
Omar Kallel 2020-10-04 09:47:13 +01:00 committed by Amin Ben Ramdhane
parent 3505476fa7
commit 0b0e8a9bdc
8 changed files with 44 additions and 58 deletions

View file

@ -46,13 +46,9 @@ void apply_end_session()
} }
} }
void cwmp_set_end_session (unsigned int flag) void bbf_set_end_session_flag (struct dmctx *ctx, unsigned int flag)
{ {
if (end_session_flag_ptr != NULL) ctx->end_session_flag |= flag;
end_session_flag = *end_session_flag_ptr;
end_session_flag_ptr = &end_session_flag;
end_session_flag |= flag;
} }
int set_bbfdatamodel_type(int bbf_type) int set_bbfdatamodel_type(int bbf_type)

View file

@ -12,7 +12,6 @@
#include <libbbf_api/dmcommon.h> #include <libbbf_api/dmcommon.h>
#include "dmentry.h" #include "dmentry.h"
extern int end_session_flag;
extern unsigned int upnp_in_user_mask; extern unsigned int upnp_in_user_mask;
extern struct list_head list_execute_end_session; extern struct list_head list_execute_end_session;
@ -32,7 +31,7 @@ void dm_update_enabled_notify(struct dm_enabled_notify *p, char *new_value);
void apply_end_session(void); void apply_end_session(void);
int dm_add_end_session(struct dmctx *ctx, void(*function)(struct execute_end_session *), int action, void *data); int dm_add_end_session(struct dmctx *ctx, void(*function)(struct execute_end_session *), int action, void *data);
void cwmp_set_end_session (unsigned int flag); void bbf_set_end_session_flag (struct dmctx *ctx, unsigned int flag);
int bbfdmuci_lookup_ptr(struct uci_context *ctx, struct uci_ptr *ptr, char *package, char *section, char *option, char *value); int bbfdmuci_lookup_ptr(struct uci_context *ctx, struct uci_ptr *ptr, char *package, char *section, char *option, char *value);
void bbf_apply_end_session(void); void bbf_apply_end_session(void);
void dmbbf_update_enabled_notify_file(unsigned int dm_type, unsigned int amd_version, int instance_mode); void dmbbf_update_enabled_notify_file(unsigned int dm_type, unsigned int amd_version, int instance_mode);

View file

@ -9,7 +9,7 @@
* Author Imen Bhiri <imen.bhiri@pivasoftware.com> * Author Imen Bhiri <imen.bhiri@pivasoftware.com>
* Author Feten Besbes <feten.besbes@pivasoftware.com> * Author Feten Besbes <feten.besbes@pivasoftware.com>
* Author Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com> * Author Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
* * Author Omar Kallel <omar.kallel@pivasoftware.com>
*/ */
#include "dmentry.h" #include "dmentry.h"
@ -152,6 +152,7 @@ static int dm_ctx_init_custom(struct dmctx *ctx, unsigned int dm_type, unsigned
dm_delim = DMDELIM_CWMP; dm_delim = DMDELIM_CWMP;
ctx->dm_entryobj = tEntry181Obj; ctx->dm_entryobj = tEntry181Obj;
#endif #endif
ctx->end_session_flag = 0;
return 0; return 0;
} }

View file

@ -41,7 +41,7 @@ static int set_ip_ping_diagnostics_state(char *refparam, struct dmctx *ctx, void
if (strcmp(value, "Requested") == 0) { if (strcmp(value, "Requested") == 0) {
IPPING_STOP IPPING_STOP
set_diagnostics_option("ipping", "DiagnosticState", value); set_diagnostics_option("ipping", "DiagnosticState", value);
cwmp_set_end_session(END_SESSION_IPPING_DIAGNOSTIC); bbf_set_end_session_flag(ctx, BBF_END_SESSION_IPPING_DIAGNOSTIC);
} }
return 0; return 0;
} }
@ -264,7 +264,7 @@ static int set_IPDiagnosticsTraceRoute_DiagnosticsState(char *refparam, struct d
if (strcmp(value, "Requested") == 0) { if (strcmp(value, "Requested") == 0) {
TRACEROUTE_STOP TRACEROUTE_STOP
set_diagnostics_option("traceroute", "DiagnosticState", value); set_diagnostics_option("traceroute", "DiagnosticState", value);
cwmp_set_end_session(END_SESSION_TRACEROUTE_DIAGNOSTIC); bbf_set_end_session_flag(ctx, BBF_END_SESSION_TRACEROUTE_DIAGNOSTIC);
} }
return 0; return 0;
} }
@ -496,7 +496,7 @@ static int set_IPDiagnosticsDownloadDiagnostics_DiagnosticsState(char *refparam,
if (strcmp(value, "Requested") == 0) { if (strcmp(value, "Requested") == 0) {
DOWNLOAD_DIAGNOSTIC_STOP DOWNLOAD_DIAGNOSTIC_STOP
set_diagnostics_option("download", "DiagnosticState", value); set_diagnostics_option("download", "DiagnosticState", value);
cwmp_set_end_session(END_SESSION_DOWNLOAD_DIAGNOSTIC); bbf_set_end_session_flag(ctx, BBF_END_SESSION_DOWNLOAD_DIAGNOSTIC);
} }
return 0; return 0;
} }
@ -829,7 +829,7 @@ static int set_IPDiagnosticsUploadDiagnostics_DiagnosticsState(char *refparam, s
if (strcmp(value, "Requested") == 0) { if (strcmp(value, "Requested") == 0) {
UPLOAD_DIAGNOSTIC_STOP UPLOAD_DIAGNOSTIC_STOP
set_diagnostics_option("upload", "DiagnosticState", value); set_diagnostics_option("upload", "DiagnosticState", value);
cwmp_set_end_session(END_SESSION_UPLOAD_DIAGNOSTIC); bbf_set_end_session_flag(ctx, BBF_END_SESSION_UPLOAD_DIAGNOSTIC);
} }
return 0; return 0;
} }
@ -1178,7 +1178,7 @@ static int set_IPDiagnosticsUDPEchoDiagnostics_DiagnosticsState(char *refparam,
if (strcmp(value, "Requested") == 0) { if (strcmp(value, "Requested") == 0) {
UDPECHO_STOP; UDPECHO_STOP;
set_diagnostics_option("udpechodiag", "DiagnosticState", value); set_diagnostics_option("udpechodiag", "DiagnosticState", value);
cwmp_set_end_session(END_SESSION_UDPECHO_DIAGNOSTIC); bbf_set_end_session_flag(ctx, BBF_END_SESSION_UDPECHO_DIAGNOSTIC);
} }
return 0; return 0;
} }
@ -1425,7 +1425,7 @@ static int set_IPDiagnosticsServerSelectionDiagnostics_DiagnosticsState(char *re
if (strcmp(value, "Requested") == 0) { if (strcmp(value, "Requested") == 0) {
SERVERSELECTION_STOP SERVERSELECTION_STOP
set_diagnostics_option("serverselection", "DiagnosticState", value); set_diagnostics_option("serverselection", "DiagnosticState", value);
cwmp_set_end_session(END_SESSION_SERVERSELECTION_DIAGNOSTIC); bbf_set_end_session_flag(ctx, BBF_END_SESSION_SERVERSELECTION_DIAGNOSTIC);
} }
return 0; return 0;
} }

View file

@ -805,7 +805,7 @@ static int set_nslookupdiagnostics_diagnostics_state(char *refparam, struct dmct
if (strcmp(value, "Requested") == 0) { if (strcmp(value, "Requested") == 0) {
NSLOOKUP_STOP NSLOOKUP_STOP
set_diagnostics_option("nslookup", "DiagnosticState", value); set_diagnostics_option("nslookup", "DiagnosticState", value);
cwmp_set_end_session(END_SESSION_NSLOOKUP_DIAGNOSTIC); bbf_set_end_session_flag(ctx, BBF_END_SESSION_NSLOOKUP_DIAGNOSTIC);
} }
return 0; return 0;
} }

View file

@ -41,7 +41,7 @@ static int set_management_server_url(char *refparam, struct dmctx *ctx, void *da
case VALUESET: case VALUESET:
dmuci_set_value("cwmp", "acs", "dhcp_discovery", "disable"); dmuci_set_value("cwmp", "acs", "dhcp_discovery", "disable");
dmuci_set_value("cwmp", "acs", "url", value); dmuci_set_value("cwmp", "acs", "url", value);
cwmp_set_end_session(END_SESSION_RELOAD); bbf_set_end_session_flag(ctx, BBF_END_SESSION_RELOAD);
break; break;
} }
return 0; return 0;
@ -63,7 +63,7 @@ static int set_management_server_username(char *refparam, struct dmctx *ctx, voi
return 0; return 0;
case VALUESET: case VALUESET:
dmuci_set_value("cwmp", "acs", "userid", value); dmuci_set_value("cwmp", "acs", "userid", value);
cwmp_set_end_session(END_SESSION_RELOAD); bbf_set_end_session_flag(ctx, BBF_END_SESSION_RELOAD);
return 0; return 0;
} }
return 0; return 0;
@ -79,7 +79,7 @@ static int set_management_server_passwd(char *refparam, struct dmctx *ctx, void
return 0; return 0;
case VALUESET: case VALUESET:
dmuci_set_value("cwmp", "acs", "passwd", value); dmuci_set_value("cwmp", "acs", "passwd", value);
cwmp_set_end_session(END_SESSION_RELOAD); bbf_set_end_session_flag(ctx, BBF_END_SESSION_RELOAD);
return 0; return 0;
} }
return 0; return 0;
@ -111,7 +111,7 @@ static int set_management_server_periodic_inform_enable(char *refparam, struct d
case VALUESET: case VALUESET:
string_to_bool(value, &b); string_to_bool(value, &b);
dmuci_set_value("cwmp", "acs", "periodic_inform_enable", b ? "1" : "0"); dmuci_set_value("cwmp", "acs", "periodic_inform_enable", b ? "1" : "0");
cwmp_set_end_session(END_SESSION_RELOAD); bbf_set_end_session_flag(ctx, BBF_END_SESSION_RELOAD);
return 0; return 0;
} }
return 0; return 0;
@ -133,7 +133,7 @@ static int set_management_server_periodic_inform_interval(char *refparam, struct
return 0; return 0;
case VALUESET: case VALUESET:
dmuci_set_value("cwmp", "acs", "periodic_inform_interval", value); dmuci_set_value("cwmp", "acs", "periodic_inform_interval", value);
cwmp_set_end_session(END_SESSION_RELOAD); bbf_set_end_session_flag(ctx, BBF_END_SESSION_RELOAD);
return 0; return 0;
} }
return 0; return 0;
@ -170,7 +170,7 @@ static int set_management_server_periodic_inform_time(char *refparam, struct dmc
strptime(value, "%Y-%m-%dT%H:%M:%SZ", &tm); strptime(value, "%Y-%m-%dT%H:%M:%SZ", &tm);
snprintf(buf, sizeof(buf), "%ld", mktime(&tm)); snprintf(buf, sizeof(buf), "%ld", mktime(&tm));
dmuci_set_value("cwmp", "acs", "periodic_inform_time", buf); dmuci_set_value("cwmp", "acs", "periodic_inform_time", buf);
cwmp_set_end_session(END_SESSION_RELOAD); bbf_set_end_session_flag(ctx, BBF_END_SESSION_RELOAD);
return 0; return 0;
} }
return 0; return 0;
@ -210,7 +210,7 @@ static int set_management_server_connection_request_username(char *refparam, str
return 0; return 0;
case VALUESET: case VALUESET:
dmuci_set_value("cwmp", "cpe", "userid", value); dmuci_set_value("cwmp", "cpe", "userid", value);
cwmp_set_end_session(END_SESSION_RELOAD); bbf_set_end_session_flag(ctx, BBF_END_SESSION_RELOAD);
return 0; return 0;
} }
return 0; return 0;
@ -226,7 +226,7 @@ static int set_management_server_connection_request_passwd(char *refparam, struc
return 0; return 0;
case VALUESET: case VALUESET:
dmuci_set_value("cwmp", "cpe", "passwd", value); dmuci_set_value("cwmp", "cpe", "passwd", value);
cwmp_set_end_session(END_SESSION_RELOAD); bbf_set_end_session_flag(ctx, BBF_END_SESSION_RELOAD);
return 0; return 0;
} }
return 0; return 0;
@ -248,7 +248,7 @@ static int set_upgrades_managed(char *refparam, struct dmctx *ctx, void *data, c
return 0; return 0;
case VALUESET: case VALUESET:
dmuci_set_value("cwmp", "cpe", "upgrades_managed", value); dmuci_set_value("cwmp", "cpe", "upgrades_managed", value);
cwmp_set_end_session(END_SESSION_RELOAD); bbf_set_end_session_flag(ctx, BBF_END_SESSION_RELOAD);
return 0; return 0;
} }
return 0; return 0;
@ -284,7 +284,7 @@ static int set_lwn_protocol_used(char *refparam, struct dmctx *ctx, void *data,
dmuci_set_value("cwmp", "lwn", "enable", "1"); dmuci_set_value("cwmp", "lwn", "enable", "1");
else else
dmuci_set_value("cwmp", "lwn", "enable", "0"); dmuci_set_value("cwmp", "lwn", "enable", "0");
cwmp_set_end_session(END_SESSION_RELOAD); bbf_set_end_session_flag(ctx, BBF_END_SESSION_RELOAD);
return 0; return 0;
} }
return 0; return 0;
@ -306,7 +306,7 @@ static int set_lwn_host(char *refparam, struct dmctx *ctx, void *data, char *ins
return 0; return 0;
case VALUESET: case VALUESET:
dmuci_set_value("cwmp", "lwn", "hostname", value); dmuci_set_value("cwmp", "lwn", "hostname", value);
cwmp_set_end_session(END_SESSION_RELOAD); bbf_set_end_session_flag(ctx, BBF_END_SESSION_RELOAD);
return 0; return 0;
} }
return 0; return 0;
@ -328,7 +328,7 @@ static int set_lwn_port(char *refparam, struct dmctx *ctx, void *data, char *ins
return 0; return 0;
case VALUESET: case VALUESET:
dmuci_set_value("cwmp", "lwn", "port", value); dmuci_set_value("cwmp", "lwn", "port", value);
cwmp_set_end_session(END_SESSION_RELOAD); bbf_set_end_session_flag(ctx, BBF_END_SESSION_RELOAD);
return 0; return 0;
} }
return 0; return 0;
@ -357,7 +357,7 @@ static int set_management_server_http_compression(char *refparam, struct dmctx *
case VALUESET: case VALUESET:
if (strcasecmp(value, "gzip") == 0 || strcasecmp(value, "deflate") == 0 || strncasecmp(value, "disable", 7) == 0) { if (strcasecmp(value, "gzip") == 0 || strcasecmp(value, "deflate") == 0 || strncasecmp(value, "disable", 7) == 0) {
dmuci_set_value("cwmp", "acs", "compression", value); dmuci_set_value("cwmp", "acs", "compression", value);
cwmp_set_end_session(END_SESSION_RELOAD); bbf_set_end_session_flag(ctx, BBF_END_SESSION_RELOAD);
} }
return 0; return 0;
} }
@ -380,7 +380,7 @@ static int set_management_server_retry_min_wait_interval(char *refparam, struct
return 0; return 0;
case VALUESET: case VALUESET:
dmuci_set_value("cwmp", "acs", "retry_min_wait_interval", value); dmuci_set_value("cwmp", "acs", "retry_min_wait_interval", value);
cwmp_set_end_session(END_SESSION_RELOAD); bbf_set_end_session_flag(ctx, BBF_END_SESSION_RELOAD);
return 0; return 0;
} }
return 0; return 0;
@ -402,7 +402,7 @@ static int set_management_server_retry_interval_multiplier(char *refparam, struc
return 0; return 0;
case VALUESET: case VALUESET:
dmuci_set_value("cwmp", "acs", "retry_interval_multiplier", value); dmuci_set_value("cwmp", "acs", "retry_interval_multiplier", value);
cwmp_set_end_session(END_SESSION_RELOAD); bbf_set_end_session_flag(ctx, BBF_END_SESSION_RELOAD);
return 0; return 0;
} }
return 0; return 0;
@ -432,7 +432,7 @@ static int set_instance_mode(char *refparam, struct dmctx *ctx, void *data, char
return 0; return 0;
case VALUESET: case VALUESET:
dmuci_set_value("cwmp", "cpe", "instance_mode", value); dmuci_set_value("cwmp", "cpe", "instance_mode", value);
cwmp_set_end_session(END_SESSION_RELOAD); bbf_set_end_session_flag(ctx, BBF_END_SESSION_RELOAD);
return 0; return 0;
} }
return 0; return 0;

View file

@ -97,7 +97,6 @@ LIST_HEAD(list_upnp_changed_version);
LIST_HEAD(list_enabled_notify); LIST_HEAD(list_enabled_notify);
int* end_session_flag_ptr = NULL;
int ip_version = 4; int ip_version = 4;
char dm_delim = DMDELIM_CWMP; char dm_delim = DMDELIM_CWMP;
char dmroot[64] = "Device"; char dmroot[64] = "Device";
@ -1879,7 +1878,7 @@ static int mobj_set_notification_in_obj(DMOBJECT_ARGS)
add_set_list_tmp(dmctx, dmctx->in_param, dmctx->in_notification, 0); add_set_list_tmp(dmctx, dmctx->in_param, dmctx->in_notification, 0);
} else if (dmctx->setaction == VALUESET) { } else if (dmctx->setaction == VALUESET) {
set_parameter_notification(dmctx, dmctx->in_param, dmctx->in_notification); set_parameter_notification(dmctx, dmctx->in_param, dmctx->in_notification);
bbf_api_cwmp_set_end_session(END_SESSION_RELOAD); dmctx->end_session_flag |= BBF_END_SESSION_RELOAD;
} }
return 0; return 0;
} }
@ -1906,7 +1905,7 @@ static int mparam_set_notification_in_param(DMPARAM_ARGS)
add_set_list_tmp(dmctx, dmctx->in_param, dmctx->in_notification, 0); add_set_list_tmp(dmctx, dmctx->in_param, dmctx->in_notification, 0);
} else if (dmctx->setaction == VALUESET) { } else if (dmctx->setaction == VALUESET) {
set_parameter_notification(dmctx, dmctx->in_param, dmctx->in_notification); set_parameter_notification(dmctx, dmctx->in_param, dmctx->in_notification);
bbf_api_cwmp_set_end_session(END_SESSION_RELOAD); dmctx->end_session_flag |= BBF_END_SESSION_RELOAD;
} }
dmfree(refparam); dmfree(refparam);
return 0; return 0;
@ -3252,14 +3251,6 @@ static int enabled_tracked_param_check_param(DMPARAM_ARGS)
#endif #endif
/********************/ /********************/
void bbf_api_cwmp_set_end_session (unsigned int flag)
{
if(end_session_flag_ptr == NULL)
end_session_flag_ptr = (int*)dmmalloc(sizeof(int));
*end_session_flag_ptr |= flag;
}
char *dm_print_path(char *fpath, ...) char *dm_print_path(char *fpath, ...)
{ {
static char pathbuf[512] = ""; static char pathbuf[512] = "";

View file

@ -251,6 +251,7 @@ struct dmctx
char all_instances[512]; char all_instances[512];
char *inst_buf[16]; char *inst_buf[16];
char *instance_wildchar; char *instance_wildchar;
unsigned int end_session_flag;
}; };
@ -432,19 +433,19 @@ enum instance_mode {
INSTANCE_MODE_ALIAS INSTANCE_MODE_ALIAS
}; };
enum end_session_enum { enum bbf_end_session_enum {
END_SESSION_REBOOT = 1, BBF_END_SESSION_REBOOT = 1,
END_SESSION_EXTERNAL_ACTION = 1<<1, BBF_END_SESSION_EXTERNAL_ACTION = 1<<1,
END_SESSION_RELOAD = 1<<2, BBF_END_SESSION_RELOAD = 1<<2,
END_SESSION_FACTORY_RESET = 1<<3, BBF_END_SESSION_FACTORY_RESET = 1<<3,
END_SESSION_IPPING_DIAGNOSTIC = 1<<4, BBF_END_SESSION_IPPING_DIAGNOSTIC = 1<<4,
END_SESSION_DOWNLOAD_DIAGNOSTIC = 1<<5, BBF_END_SESSION_DOWNLOAD_DIAGNOSTIC = 1<<5,
END_SESSION_UPLOAD_DIAGNOSTIC = 1<<6, BBF_END_SESSION_UPLOAD_DIAGNOSTIC = 1<<6,
END_SESSION_X_FACTORY_RESET_SOFT = 1<<7, BBF_END_SESSION_X_FACTORY_RESET_SOFT = 1<<7,
END_SESSION_NSLOOKUP_DIAGNOSTIC = 1<<8, BBF_END_SESSION_NSLOOKUP_DIAGNOSTIC = 1<<8,
END_SESSION_TRACEROUTE_DIAGNOSTIC = 1<<9, BBF_END_SESSION_TRACEROUTE_DIAGNOSTIC = 1<<9,
END_SESSION_UDPECHO_DIAGNOSTIC = 1<<10, BBF_END_SESSION_UDPECHO_DIAGNOSTIC = 1<<10,
END_SESSION_SERVERSELECTION_DIAGNOSTIC = 1<<11 BBF_END_SESSION_SERVERSELECTION_DIAGNOSTIC = 1<<11
}; };
enum dm_browse_enum { enum dm_browse_enum {
@ -536,7 +537,6 @@ extern struct list_head list_upnp_changed_onalarm;
extern struct list_head list_upnp_changed_version; extern struct list_head list_upnp_changed_version;
#endif #endif
extern int* end_session_flag_ptr;
extern int ip_version; extern int ip_version;
extern char dm_delim; extern char dm_delim;
extern char dmroot[64]; extern char dmroot[64];
@ -593,7 +593,6 @@ char *get_last_instance_lev2_bbfdm_dmmap_opt(char* dmmap_package, char *section,
char *get_last_instance_lev2_bbfdm(char *package, char *section, char* dmmap_package, char *opt_inst, char *opt_check, char *value_check); char *get_last_instance_lev2_bbfdm(char *package, char *section, char* dmmap_package, char *opt_inst, char *opt_check, char *value_check);
char *handle_update_instance(int instance_ranck, struct dmctx *ctx, char **last_inst, char * (*up_instance)(int action, char **last_inst, void *argv[]), int argc, ...); char *handle_update_instance(int instance_ranck, struct dmctx *ctx, char **last_inst, char * (*up_instance)(int action, char **last_inst, void *argv[]), int argc, ...);
int dm_add_end_session(struct dmctx *ctx, void(*function)(struct execute_end_session *), int action, void *data); int dm_add_end_session(struct dmctx *ctx, void(*function)(struct execute_end_session *), int action, void *data);
void bbf_api_cwmp_set_end_session (unsigned int flag);
char *dm_print_path(char *fpath, ...); char *dm_print_path(char *fpath, ...);
int dm_link_inst_obj(struct dmctx *dmctx, DMNODE *parent_node, void *data, char *instance); int dm_link_inst_obj(struct dmctx *dmctx, DMNODE *parent_node, void *data, char *instance);
void dm_check_dynamic_obj(struct dmctx *dmctx, DMNODE *parent_node, DMOBJ *entryobj, char *full_obj, char *obj, DMOBJ **root_entry, int *obj_found); void dm_check_dynamic_obj(struct dmctx *dmctx, DMNODE *parent_node, DMOBJ *entryobj, char *full_obj, char *obj, DMOBJ **root_entry, int *obj_found);