Ticket refs #2673: TR069: No '4 value change' sent in case of active passive notification

This commit is contained in:
Omar Kallel 2020-05-28 14:36:55 +01:00
parent 3f4a97c1af
commit 2bf36bbbda
4 changed files with 13 additions and 9 deletions

View file

@ -384,12 +384,14 @@ int dm_entry_apply(struct dmctx *ctx, int cmd, char *arg1, char *arg2)
return fault;
}
int dm_entry_load_enabled_notify(unsigned int dm_type, unsigned int amd_version, int instance_mode)
int dm_entry_load_enabled_notify(unsigned int dm_type, unsigned int amd_version, int instance_mode, void (*add_list_value_change)(char *param_name, char *param_data, char *param_type), void (*send_active_value_change)(void))
{
struct dmctx dmctx = {0};
dm_ctx_init(&dmctx, dm_type, amd_version, instance_mode);
dmctx.in_param = "";
dmctx.add_list_value_change = add_list_value_change;
dmctx.send_active_value_change = send_active_value_change;
free_all_list_enabled_lwnotify();
dm_entry_enabled_notify_check_value_change(&dmctx);

View file

@ -30,7 +30,7 @@ int dm_ctx_init(struct dmctx *ctx, unsigned int dm_type, unsigned int amd_versio
int dm_ctx_init_sub(struct dmctx *ctx, unsigned int dm_type, unsigned int amd_version, unsigned int instance_mode);
int dm_entry_param_method(struct dmctx *ctx, int cmd, char *inparam, char *arg1, char *arg2);
int dm_entry_apply(struct dmctx *ctx, int cmd, char *arg1, char *arg2);
int dm_entry_load_enabled_notify(unsigned int dm_type, unsigned int amd_version, int instance_mode);
int dm_entry_load_enabled_notify(unsigned int dm_type, unsigned int amd_version, int instance_mode, void (*add_list_value_change)(char *param_name, char *param_data, char *param_type), void (*send_active_value_change)(void));
int dm_entry_reload_enabled_notify(unsigned int dm_type, unsigned int amd_version, int instance_mode);
int adm_entry_get_linker_param(struct dmctx *ctx, char *param, char *linker, char **value);
int adm_entry_get_linker_value(struct dmctx *ctx, char *param, char **value);

View file

@ -1877,13 +1877,15 @@ static int enabled_notify_check_value_change_param(DMPARAM_ARGS)
return FAULT_9005;
}
(get_cmd)(refparam, dmctx, data, instance, &value);
#if 0
if (strcmp(value, dmctx->in_value) != 0) {
add_list_value_change(refparam, value, DMT_TYPE[type]);
if(dmctx->in_notification[0] =='2')
send_active_value_change();
if (dmctx->add_list_value_change) {
dmctx->add_list_value_change(refparam, value, DMT_TYPE[type]);
}
if(dmctx->in_notification[0] =='2' && dmctx->send_active_value_change) {
dmctx->send_active_value_change();
}
}
#endif
dmfree(refparam);
return 0;
}

View file

@ -219,6 +219,8 @@ struct dmctx
int (*method_obj)(DMOBJECT_ARGS);
int (*checkobj)(DMOBJECT_ARGS);
int (*checkleaf)(DMOBJECT_ARGS);
void (*add_list_value_change)(char *param_name, char *param_data, char *param_type);
void (*send_active_value_change)(void);
struct list_head list_parameter;
struct list_head set_list_tmp;
struct list_head list_fault_param;
@ -592,8 +594,6 @@ void free_all_list_enabled_lwnotify();
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);
int free_dm_browse_node_dynamic_object_tree(DMNODE *parent_node, DMOBJ *entryobj);
void add_list_value_change(char *param_name, char *param_data, char *param_type);
void send_active_value_change(void);
#ifdef BBF_TR064
void dm_upnp_apply_config(void);
void add_list_upnp_param_track(struct dmctx *dmctx, struct list_head *pchead, char *param, char *key, char *value, unsigned int isobj);