From 0b0e8a9bdcdb2dcb7893902be75c6f9421edaaa0 Mon Sep 17 00:00:00 2001 From: Omar Kallel Date: Sun, 4 Oct 2020 09:47:13 +0100 Subject: [PATCH] Extract end_session_flag from bbf to icwmp --- dmbbfcommon.c | 8 ++------ dmbbfcommon.h | 3 +-- dmentry.c | 3 ++- dmtree/tr143/diagnostics.c | 12 ++++++------ dmtree/tr181/dns.c | 2 +- dmtree/tr181/managementserver.c | 32 ++++++++++++++++---------------- libbbf_api/dmbbf.c | 13 ++----------- libbbf_api/dmbbf.h | 29 ++++++++++++++--------------- 8 files changed, 44 insertions(+), 58 deletions(-) diff --git a/dmbbfcommon.c b/dmbbfcommon.c index a8fdc0c4..845a90f1 100644 --- a/dmbbfcommon.c +++ b/dmbbfcommon.c @@ -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) - end_session_flag = *end_session_flag_ptr; - end_session_flag_ptr = &end_session_flag; - - end_session_flag |= flag; + ctx->end_session_flag |= flag; } int set_bbfdatamodel_type(int bbf_type) diff --git a/dmbbfcommon.h b/dmbbfcommon.h index 9179e45a..919709da 100644 --- a/dmbbfcommon.h +++ b/dmbbfcommon.h @@ -12,7 +12,6 @@ #include #include "dmentry.h" -extern int end_session_flag; extern unsigned int upnp_in_user_mask; 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); 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); void bbf_apply_end_session(void); void dmbbf_update_enabled_notify_file(unsigned int dm_type, unsigned int amd_version, int instance_mode); diff --git a/dmentry.c b/dmentry.c index 1f97a0d5..dfa236d0 100644 --- a/dmentry.c +++ b/dmentry.c @@ -9,7 +9,7 @@ * Author Imen Bhiri * Author Feten Besbes * Author Amin Ben Ramdhane - * + * Author Omar Kallel */ #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; ctx->dm_entryobj = tEntry181Obj; #endif + ctx->end_session_flag = 0; return 0; } diff --git a/dmtree/tr143/diagnostics.c b/dmtree/tr143/diagnostics.c index 9b3113ef..a601f1b0 100644 --- a/dmtree/tr143/diagnostics.c +++ b/dmtree/tr143/diagnostics.c @@ -41,7 +41,7 @@ static int set_ip_ping_diagnostics_state(char *refparam, struct dmctx *ctx, void if (strcmp(value, "Requested") == 0) { IPPING_STOP 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; } @@ -264,7 +264,7 @@ static int set_IPDiagnosticsTraceRoute_DiagnosticsState(char *refparam, struct d if (strcmp(value, "Requested") == 0) { TRACEROUTE_STOP 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; } @@ -496,7 +496,7 @@ static int set_IPDiagnosticsDownloadDiagnostics_DiagnosticsState(char *refparam, if (strcmp(value, "Requested") == 0) { DOWNLOAD_DIAGNOSTIC_STOP 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; } @@ -829,7 +829,7 @@ static int set_IPDiagnosticsUploadDiagnostics_DiagnosticsState(char *refparam, s if (strcmp(value, "Requested") == 0) { UPLOAD_DIAGNOSTIC_STOP 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; } @@ -1178,7 +1178,7 @@ static int set_IPDiagnosticsUDPEchoDiagnostics_DiagnosticsState(char *refparam, if (strcmp(value, "Requested") == 0) { UDPECHO_STOP; 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; } @@ -1425,7 +1425,7 @@ static int set_IPDiagnosticsServerSelectionDiagnostics_DiagnosticsState(char *re if (strcmp(value, "Requested") == 0) { SERVERSELECTION_STOP 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; } diff --git a/dmtree/tr181/dns.c b/dmtree/tr181/dns.c index 3ccce92a..da352f49 100644 --- a/dmtree/tr181/dns.c +++ b/dmtree/tr181/dns.c @@ -805,7 +805,7 @@ static int set_nslookupdiagnostics_diagnostics_state(char *refparam, struct dmct if (strcmp(value, "Requested") == 0) { NSLOOKUP_STOP 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; } diff --git a/dmtree/tr181/managementserver.c b/dmtree/tr181/managementserver.c index ca72bfba..9a930aca 100644 --- a/dmtree/tr181/managementserver.c +++ b/dmtree/tr181/managementserver.c @@ -41,7 +41,7 @@ static int set_management_server_url(char *refparam, struct dmctx *ctx, void *da case VALUESET: dmuci_set_value("cwmp", "acs", "dhcp_discovery", "disable"); 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; } return 0; @@ -63,7 +63,7 @@ static int set_management_server_username(char *refparam, struct dmctx *ctx, voi return 0; case VALUESET: 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; @@ -79,7 +79,7 @@ static int set_management_server_passwd(char *refparam, struct dmctx *ctx, void return 0; case VALUESET: 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; @@ -111,7 +111,7 @@ static int set_management_server_periodic_inform_enable(char *refparam, struct d case VALUESET: string_to_bool(value, &b); 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; @@ -133,7 +133,7 @@ static int set_management_server_periodic_inform_interval(char *refparam, struct return 0; case VALUESET: 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; @@ -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); snprintf(buf, sizeof(buf), "%ld", mktime(&tm)); 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; @@ -210,7 +210,7 @@ static int set_management_server_connection_request_username(char *refparam, str return 0; case VALUESET: 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; @@ -226,7 +226,7 @@ static int set_management_server_connection_request_passwd(char *refparam, struc return 0; case VALUESET: 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; @@ -248,7 +248,7 @@ static int set_upgrades_managed(char *refparam, struct dmctx *ctx, void *data, c return 0; case VALUESET: 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; @@ -284,7 +284,7 @@ static int set_lwn_protocol_used(char *refparam, struct dmctx *ctx, void *data, dmuci_set_value("cwmp", "lwn", "enable", "1"); else 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; @@ -306,7 +306,7 @@ static int set_lwn_host(char *refparam, struct dmctx *ctx, void *data, char *ins return 0; case VALUESET: 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; @@ -328,7 +328,7 @@ static int set_lwn_port(char *refparam, struct dmctx *ctx, void *data, char *ins return 0; case VALUESET: 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; @@ -357,7 +357,7 @@ static int set_management_server_http_compression(char *refparam, struct dmctx * case VALUESET: if (strcasecmp(value, "gzip") == 0 || strcasecmp(value, "deflate") == 0 || strncasecmp(value, "disable", 7) == 0) { 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; } @@ -380,7 +380,7 @@ static int set_management_server_retry_min_wait_interval(char *refparam, struct return 0; case VALUESET: 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; @@ -402,7 +402,7 @@ static int set_management_server_retry_interval_multiplier(char *refparam, struc return 0; case VALUESET: 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; @@ -432,7 +432,7 @@ static int set_instance_mode(char *refparam, struct dmctx *ctx, void *data, char return 0; case VALUESET: 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; diff --git a/libbbf_api/dmbbf.c b/libbbf_api/dmbbf.c index 4476ca8d..251a6faf 100644 --- a/libbbf_api/dmbbf.c +++ b/libbbf_api/dmbbf.c @@ -97,7 +97,6 @@ LIST_HEAD(list_upnp_changed_version); LIST_HEAD(list_enabled_notify); -int* end_session_flag_ptr = NULL; int ip_version = 4; char dm_delim = DMDELIM_CWMP; 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); } else if (dmctx->setaction == VALUESET) { 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; } @@ -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); } else if (dmctx->setaction == VALUESET) { 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); return 0; @@ -3252,14 +3251,6 @@ static int enabled_tracked_param_check_param(DMPARAM_ARGS) #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, ...) { static char pathbuf[512] = ""; diff --git a/libbbf_api/dmbbf.h b/libbbf_api/dmbbf.h index 4a44e385..091b3fb7 100644 --- a/libbbf_api/dmbbf.h +++ b/libbbf_api/dmbbf.h @@ -251,6 +251,7 @@ struct dmctx char all_instances[512]; char *inst_buf[16]; char *instance_wildchar; + unsigned int end_session_flag; }; @@ -432,19 +433,19 @@ enum instance_mode { INSTANCE_MODE_ALIAS }; -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 bbf_end_session_enum { + BBF_END_SESSION_REBOOT = 1, + BBF_END_SESSION_EXTERNAL_ACTION = 1<<1, + BBF_END_SESSION_RELOAD = 1<<2, + BBF_END_SESSION_FACTORY_RESET = 1<<3, + BBF_END_SESSION_IPPING_DIAGNOSTIC = 1<<4, + BBF_END_SESSION_DOWNLOAD_DIAGNOSTIC = 1<<5, + BBF_END_SESSION_UPLOAD_DIAGNOSTIC = 1<<6, + BBF_END_SESSION_X_FACTORY_RESET_SOFT = 1<<7, + BBF_END_SESSION_NSLOOKUP_DIAGNOSTIC = 1<<8, + BBF_END_SESSION_TRACEROUTE_DIAGNOSTIC = 1<<9, + BBF_END_SESSION_UDPECHO_DIAGNOSTIC = 1<<10, + BBF_END_SESSION_SERVERSELECTION_DIAGNOSTIC = 1<<11 }; enum dm_browse_enum { @@ -536,7 +537,6 @@ extern struct list_head list_upnp_changed_onalarm; extern struct list_head list_upnp_changed_version; #endif -extern int* end_session_flag_ptr; extern int ip_version; extern char dm_delim; 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 *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); -void bbf_api_cwmp_set_end_session (unsigned int flag); char *dm_print_path(char *fpath, ...); 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);