Extract end_session_flag from bbf to icwmp

This commit is contained in:
Omar Kallel 2020-10-04 09:47:13 +01:00
parent 128e5b0900
commit 3bd148f3c4
8 changed files with 44 additions and 58 deletions

View file

@ -55,13 +55,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)

View file

@ -12,7 +12,6 @@
#include <libbbf_api/dmcommon.h>
#include "dmentry.h"
extern int end_session_flag;
extern unsigned int upnp_in_user_mask;
extern struct list_head list_execute_end_session;
@ -33,7 +32,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);

View file

@ -9,7 +9,7 @@
* Author Imen Bhiri <imen.bhiri@pivasoftware.com>
* Author Feten Besbes <feten.besbes@pivasoftware.com>
* Author Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
*
* Author Omar Kallel <omar.kallel@pivasoftware.com>
*/
#include "dmentry.h"
@ -155,6 +155,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;
}

View file

@ -56,7 +56,7 @@ static int set_ip_ping_diagnostics_state(char *refparam, struct dmctx *ctx, void
if (!curr_section)
dmuci_add_state_section("cwmp", "ippingdiagnostic", &curr_section, &tmp);
dmuci_set_varstate_value("cwmp", "@ippingdiagnostic[0]", "DiagnosticState", value);
cwmp_set_end_session(END_SESSION_IPPING_DIAGNOSTIC);
bbf_set_end_session_flag(ctx, BBF_END_SESSION_IPPING_DIAGNOSTIC);
}
return 0;
}
@ -337,7 +337,7 @@ static int set_IPDiagnosticsTraceRoute_DiagnosticsState(char *refparam, struct d
if (!curr_section)
dmuci_add_state_section("cwmp", "traceroutediagnostic", &curr_section, &tmp);
dmuci_set_varstate_value("cwmp", "@traceroutediagnostic[0]", "DiagnosticState", value);
cwmp_set_end_session(END_SESSION_TRACEROUTE_DIAGNOSTIC);
bbf_set_end_session_flag(ctx, BBF_END_SESSION_TRACEROUTE_DIAGNOSTIC);
}
return 0;
}
@ -633,7 +633,7 @@ static int set_IPDiagnosticsDownloadDiagnostics_DiagnosticsState(char *refparam,
if (!curr_section)
dmuci_add_state_section("cwmp", "downloaddiagnostic", &curr_section, &tmp);
dmuci_set_varstate_value("cwmp", "@downloaddiagnostic[0]", "DiagnosticState", value);
cwmp_set_end_session(END_SESSION_DOWNLOAD_DIAGNOSTIC);
bbf_set_end_session_flag(ctx, BBF_END_SESSION_DOWNLOAD_DIAGNOSTIC);
}
return 0;
}
@ -1024,7 +1024,7 @@ static int set_IPDiagnosticsUploadDiagnostics_DiagnosticsState(char *refparam, s
if (!curr_section)
dmuci_add_state_section("cwmp", "uploaddiagnostic", &curr_section, &tmp);
dmuci_set_varstate_value("cwmp", "@uploaddiagnostic[0]", "DiagnosticState", value);
cwmp_set_end_session(END_SESSION_UPLOAD_DIAGNOSTIC);
bbf_set_end_session_flag(ctx, BBF_END_SESSION_UPLOAD_DIAGNOSTIC);
}
return 0;
}
@ -1436,7 +1436,7 @@ static int set_IPDiagnosticsUDPEchoDiagnostics_DiagnosticsState(char *refparam,
if (!curr_section)
dmuci_add_state_section("cwmp", "udpechodiagnostic", &curr_section, &tmp);
dmuci_set_varstate_value("cwmp", "@udpechodiagnostic[0]", "DiagnosticState", value);
cwmp_set_end_session(END_SESSION_UDPECHO_DIAGNOSTIC);
bbf_set_end_session_flag(ctx, BBF_END_SESSION_UDPECHO_DIAGNOSTIC);
}
return 0;
}
@ -1753,7 +1753,7 @@ static int set_IPDiagnosticsServerSelectionDiagnostics_DiagnosticsState(char *re
if (!curr_section)
dmuci_add_state_section("cwmp", "serverselectiondiagnostic", &curr_section, &tmp);
dmuci_set_varstate_value("cwmp", "@serverselectiondiagnostic[0]", "DiagnosticState", value);
cwmp_set_end_session(END_SESSION_SERVERSELECTION_DIAGNOSTIC);
bbf_set_end_session_flag(ctx, BBF_END_SESSION_SERVERSELECTION_DIAGNOSTIC);
}
return 0;
}

View file

@ -820,7 +820,7 @@ static int set_nslookupdiagnostics_diagnostics_state(char *refparam, struct dmct
if (!curr_section)
dmuci_add_state_section("cwmp", "nslookupdiagnostic", &curr_section, &tmp);
dmuci_set_varstate_value("cwmp", "@nslookupdiagnostic[0]", "DiagnosticState", value);
cwmp_set_end_session(END_SESSION_NSLOOKUP_DIAGNOSTIC);
bbf_set_end_session_flag(ctx, BBF_END_SESSION_NSLOOKUP_DIAGNOSTIC);
}
return 0;
}

View file

@ -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;

View file

@ -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] = "";

View file

@ -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);