mirror of
https://dev.iopsys.eu/bbf/icwmp.git
synced 2026-03-08 10:17:44 +01:00
Use the ubus mehtod 'usp.raw init_notify' to update dm_enabled_notify file && get inform parameters from a string array
This commit is contained in:
parent
2ef548e60e
commit
c579c9b4e9
12 changed files with 95 additions and 55 deletions
|
|
@ -14,9 +14,9 @@ icwmpd_SOURCES = \
|
|||
../netlink.c \
|
||||
../time.c \
|
||||
../ubus.c \
|
||||
../datamodel_interface.c \
|
||||
../xml.c \
|
||||
../diagnostic.c \
|
||||
../datamodel_interface.c \
|
||||
../zlib.c
|
||||
|
||||
icwmpd_CFLAGS = \
|
||||
|
|
|
|||
2
config.c
2
config.c
|
|
@ -1327,7 +1327,6 @@ int cwmp_init(int argc, char** argv,struct cwmp *cwmp)
|
|||
return error;
|
||||
|
||||
cwmp_get_deviceid(cwmp);
|
||||
//dm_entry_load_enabled_notify(DM_CWMP, cwmp->conf.amd_version, cwmp->conf.instance_mode, add_list_value_change, send_active_value_change);
|
||||
return CWMP_OK;
|
||||
}
|
||||
|
||||
|
|
@ -1341,6 +1340,5 @@ int cwmp_config_reload(struct cwmp *cwmp)
|
|||
if ((error = global_conf_init(&(cwmp->conf))))
|
||||
return error;
|
||||
|
||||
dm_entry_reload_enabled_notify(DM_CWMP, cwmp->conf.amd_version, cwmp->conf.instance_mode);
|
||||
return CWMP_OK;
|
||||
}
|
||||
|
|
|
|||
6
cwmp.c
6
cwmp.c
|
|
@ -27,6 +27,7 @@
|
|||
#include "config.h"
|
||||
#include "jshn.h"
|
||||
#include <libubus.h>
|
||||
#include "datamodel_interface.h"
|
||||
|
||||
struct cwmp cwmp_main = {0};
|
||||
char *commandKey = NULL;
|
||||
|
|
@ -192,9 +193,8 @@ void cwmp_schedule_session (struct cwmp *cwmp)
|
|||
if(!event_exist_in_list(cwmp, EVENT_IDX_4VALUE_CHANGE))
|
||||
is_notify = check_value_change();
|
||||
}
|
||||
|
||||
if(is_notify>0 || access(DM_ENABLED_NOTIFY, F_OK ) < 0)
|
||||
dmbbf_update_enabled_notify_file(DM_CWMP, cwmp->conf.amd_version, cwmp->conf.instance_mode);
|
||||
cwmp_update_enabled_notify_file(cwmp->conf.amd_version, cwmp->conf.instance_mode);
|
||||
cwmp_prepare_value_change(cwmp);
|
||||
free_dm_parameter_all_fromlist(&list_value_change);
|
||||
if ((error = cwmp_move_session_to_session_send (cwmp, session))) {
|
||||
|
|
@ -594,7 +594,7 @@ int run_session_end_func ()
|
|||
|
||||
if (end_session_flag & END_SESSION_SET_NOTIFICATION_UPDATE) {
|
||||
CWMP_LOG (INFO,"SetParameterAttributes end session: update enabled notify file");
|
||||
dmbbf_update_enabled_notify_file(DM_CWMP, cwmp_main.conf.amd_version, cwmp_main.conf.instance_mode);
|
||||
cwmp_update_enabled_notify_file(cwmp_main.conf.amd_version, cwmp_main.conf.instance_mode);
|
||||
}
|
||||
dm_entry_restart_services();
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ char* cwmp_get_parameter_values(char *parameter_name, json_object **parameters)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
char* cwmp_set_parameter_value(char* parameter_name, char* value, char* parameter_key)
|
||||
char* cwmp_set_parameter_value(char* parameter_name, char* value, char* parameter_key, int* flag)
|
||||
{
|
||||
json_object *set_res;
|
||||
int e = cwmp_ubus_call("usp.raw", "set", CWMP_UBUS_ARGS{{"path", {.str_val=parameter_name}, UBUS_String},{"value", {.str_val=value}, UBUS_String}, {"key", {.str_val=parameter_key}, UBUS_String}}, 3, &set_res);
|
||||
|
|
@ -43,6 +43,9 @@ char* cwmp_set_parameter_value(char* parameter_name, char* value, char* paramete
|
|||
json_object_object_get_ex(param_obj, "fault", &fault);
|
||||
return (char*)json_object_get_string(fault);
|
||||
}
|
||||
json_object *flag_obj = NULL;
|
||||
json_object_object_get_ex(set_res, "flag", &flag_obj);
|
||||
*flag = flag_obj?atoi((char*)json_object_get_string(flag_obj)):0;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
@ -68,7 +71,7 @@ char* cwmp_add_object(char* object_name, char* key, char **instance)
|
|||
return (char*)json_object_get_string(fault);
|
||||
json_object *instance_obj = NULL;
|
||||
json_object_object_get_ex(param_obj, "instance", &instance_obj);
|
||||
*instance = json_object_get_string(instance_obj);
|
||||
*instance = (char *)json_object_get_string(instance_obj);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
@ -150,3 +153,8 @@ char* cwmp_set_parameter_attributes(char* parameter_name, char* notification)
|
|||
return (char*)json_object_get_string(fault_code);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void cwmp_update_enabled_notify_file(unsigned int amd_version, int instance_mode)
|
||||
{
|
||||
cwmp_ubus_call("usp.raw", "init_notify", CWMP_UBUS_ARGS{{"instance_mode", {.int_val=instance_mode}, UBUS_Integer}, {"amd_version", {.int_val=amd_version}, UBUS_Integer}}, 2, NULL);
|
||||
}
|
||||
|
|
|
|||
22
event.c
22
event.c
|
|
@ -34,6 +34,7 @@
|
|||
#include <libbbfdm/dmentry.h>
|
||||
#include <libbbfdm/deviceinfo.h>
|
||||
#endif
|
||||
#include "datamodel_interface.h"
|
||||
|
||||
LIST_HEAD(list_value_change);
|
||||
LIST_HEAD(list_lw_value_change);
|
||||
|
|
@ -63,14 +64,14 @@ const struct EVENT_CONST_STRUCT EVENT_CONST [] = {
|
|||
void cwmp_save_event_container (struct cwmp *cwmp,struct event_container *event_container)
|
||||
{
|
||||
struct list_head *ilist;
|
||||
struct dm_parameter *dm_parameter;
|
||||
struct cwmp_dm_parameter *dm_parameter;
|
||||
mxml_node_t *b;
|
||||
|
||||
if (EVENT_CONST[event_container->code].RETRY & EVENT_RETRY_AFTER_REBOOT) {
|
||||
b = bkp_session_insert_event(event_container->code, event_container->command_key, event_container->id, "queue");
|
||||
|
||||
list_for_each(ilist,&(event_container->head_dm_parameter)) {
|
||||
dm_parameter = list_entry(ilist, struct dm_parameter, list);
|
||||
dm_parameter = list_entry(ilist, struct cwmp_dm_parameter, list);
|
||||
bkp_session_insert_parameter(b, dm_parameter->name);
|
||||
}
|
||||
bkp_session_save();
|
||||
|
|
@ -127,11 +128,11 @@ struct event_container *cwmp_add_event_container (struct cwmp *cwmp, int event_c
|
|||
|
||||
void add_dm_parameter_tolist(struct list_head *head, char *param_name, char *param_data, char *param_type)
|
||||
{
|
||||
struct dm_parameter *dm_parameter;
|
||||
struct cwmp_dm_parameter *dm_parameter;
|
||||
struct list_head *ilist;
|
||||
int cmp;
|
||||
list_for_each (ilist, head) {
|
||||
dm_parameter = list_entry(ilist, struct dm_parameter, list);
|
||||
dm_parameter = list_entry(ilist, struct cwmp_dm_parameter, list);
|
||||
cmp = strcmp(dm_parameter->name, param_name);
|
||||
if (cmp == 0) {
|
||||
if (param_data && strcmp(dm_parameter->data, param_data) != 0)
|
||||
|
|
@ -144,14 +145,14 @@ void add_dm_parameter_tolist(struct list_head *head, char *param_name, char *par
|
|||
break;
|
||||
}
|
||||
}
|
||||
dm_parameter = calloc(1, sizeof(struct dm_parameter));
|
||||
dm_parameter = calloc(1, sizeof(struct cwmp_dm_parameter));
|
||||
_list_add(&dm_parameter->list, ilist->prev, ilist);
|
||||
if (param_name) dm_parameter->name = strdup(param_name);
|
||||
if (param_data) dm_parameter->data = strdup(param_data);
|
||||
if (param_type) dm_parameter->type = param_type ? param_type : "xsd:string";
|
||||
}
|
||||
|
||||
void delete_dm_parameter_fromlist(struct dm_parameter *dm_parameter)
|
||||
void delete_dm_parameter_fromlist(struct cwmp_dm_parameter *dm_parameter)
|
||||
{
|
||||
list_del(&dm_parameter->list);
|
||||
free(dm_parameter->name);
|
||||
|
|
@ -161,9 +162,9 @@ void delete_dm_parameter_fromlist(struct dm_parameter *dm_parameter)
|
|||
|
||||
void free_dm_parameter_all_fromlist(struct list_head *list)
|
||||
{
|
||||
struct dm_parameter *dm_parameter;
|
||||
struct cwmp_dm_parameter *dm_parameter;
|
||||
while (list->next!=list) {
|
||||
dm_parameter = list_entry(list->next, struct dm_parameter, list);
|
||||
dm_parameter = list_entry(list->next, struct cwmp_dm_parameter, list);
|
||||
delete_dm_parameter_fromlist(dm_parameter);
|
||||
}
|
||||
}
|
||||
|
|
@ -275,7 +276,7 @@ void cwmp_lwnotification()
|
|||
|
||||
int check_value_change(void)
|
||||
{
|
||||
int fault, iscopy;
|
||||
int fault;
|
||||
FILE *fp;
|
||||
char buf[512];
|
||||
char *parameter, *notification = NULL, *value = NULL, *jval = NULL;
|
||||
|
|
@ -642,7 +643,6 @@ void *thread_periodic_check_notify (void *v)
|
|||
static bool periodic_enable;
|
||||
static struct timespec periodic_timeout = {0, 0};
|
||||
time_t current_time;
|
||||
long int delta_time;
|
||||
int is_notify;
|
||||
|
||||
periodic_interval = cwmp->conf.periodic_notify_interval;
|
||||
|
|
@ -657,7 +657,7 @@ void *thread_periodic_check_notify (void *v)
|
|||
pthread_mutex_lock(&(cwmp->mutex_session_send));
|
||||
is_notify = check_value_change();
|
||||
if (is_notify > 0)
|
||||
dmbbf_update_enabled_notify_file(DM_CWMP, cwmp->conf.amd_version, cwmp->conf.instance_mode);
|
||||
cwmp_update_enabled_notify_file(cwmp->conf.amd_version, cwmp->conf.instance_mode);
|
||||
pthread_mutex_unlock(&(cwmp->mutex_session_send));
|
||||
if (is_notify & NOTIF_ACTIVE)
|
||||
send_active_value_change();
|
||||
|
|
|
|||
6
http.c
6
http.c
|
|
@ -42,6 +42,12 @@ static struct http_client http_c;
|
|||
|
||||
static CURL *curl;
|
||||
|
||||
#ifdef DUMMY_MODE
|
||||
char *fc_cookies = "./ext/tmp/icwmp_cookies";
|
||||
#else
|
||||
char *fc_cookies = "/tmp/icwmp_cookies";
|
||||
#endif
|
||||
|
||||
int http_client_init(struct cwmp *cwmp)
|
||||
{
|
||||
char *dhcp_dis = NULL;
|
||||
|
|
|
|||
|
|
@ -5,11 +5,13 @@
|
|||
#include <string.h>
|
||||
#include "ubus.h"
|
||||
#include "jshn.h"
|
||||
|
||||
char* cwmp_get_parameter_values(char *parameter_name, json_object **parameters);
|
||||
char* cwmp_set_parameter_value(char* parameter_name, char* value, char* parameter_key);
|
||||
char* cwmp_set_parameter_value(char* parameter_name, char* value, char* parameter_key, int* flag);
|
||||
char* cwmp_add_object(char* object_name, char* key, char **instance);
|
||||
char* cwmp_delete_object(char* object_name, char* key);
|
||||
char* cwmp_get_parameter_names(char* object_name, bool next_level, json_object **parameters);
|
||||
char* cwmp_get_parameter_attributes(char* parameter_name, json_object **parameters);
|
||||
char* cwmp_set_parameter_attributes(char* parameter_name, char* notification);
|
||||
void cwmp_update_enabled_notify_file(unsigned int amd_version, int instance_mode);
|
||||
#endif /* SRC_DATAMODELIFACE_H_ */
|
||||
|
|
|
|||
|
|
@ -16,12 +16,7 @@
|
|||
#include <cwmp.h>
|
||||
#include <curl/curl.h>
|
||||
|
||||
|
||||
#ifdef DUMMY_MODE
|
||||
static char *fc_cookies = "./ext/tmp/icwmp_cookies";
|
||||
#else
|
||||
static char *fc_cookies = "/tmp/icwmp_cookies";
|
||||
#endif
|
||||
extern char *fc_cookies;
|
||||
|
||||
#define HTTP_TIMEOUT 30
|
||||
|
||||
|
|
|
|||
|
|
@ -126,6 +126,12 @@ struct cwmp_param_value {
|
|||
char *value;
|
||||
};
|
||||
|
||||
struct cwmp_dm_parameter {
|
||||
struct list_head list;
|
||||
char *name;
|
||||
char *data;
|
||||
char *type;
|
||||
};
|
||||
struct rpc_cpe_method {
|
||||
const char *name;
|
||||
int (*handler)(struct session *session, struct rpc *rpc);
|
||||
|
|
@ -272,7 +278,6 @@ extern int count_download_queue;
|
|||
extern const struct rpc_cpe_method rpc_cpe_methods[__RPC_CPE_MAX];
|
||||
extern const struct rpc_acs_method rpc_acs_methods[__RPC_ACS_MAX];
|
||||
|
||||
|
||||
void xml_exit(void);
|
||||
|
||||
int cwmp_handle_rpc_cpe_get_rpc_methods(struct session *session, struct rpc *rpc);
|
||||
|
|
|
|||
2
jshn.c
2
jshn.c
|
|
@ -35,7 +35,7 @@ static int jshn_message_parse(char **policy, int size, char **tb, char *msg)
|
|||
}
|
||||
for (i=0; i<size; i++)
|
||||
{
|
||||
obj = json_object_object_get(jshn_obj, policy[i]);
|
||||
json_object_object_get_ex(jshn_obj, policy[i], &obj);
|
||||
if (obj == NULL || json_object_get_type(obj) != json_type_string)
|
||||
continue;
|
||||
tb[i] = (char *)json_object_get_string(obj);
|
||||
|
|
|
|||
7
ubus.c
7
ubus.c
|
|
@ -360,8 +360,9 @@ int cwmp_ubus_call(const char *obj, const char *method, const struct cwmp_ubus_a
|
|||
for (i = 0; i < u_args_size; i++) {
|
||||
if (u_args[i].type == UBUS_String)
|
||||
blobmsg_add_string(&b, u_args[i].key, u_args[i].val.str_val);
|
||||
else if (u_args[i].type == UBUS_Integer)
|
||||
else if (u_args[i].type == UBUS_Integer) {
|
||||
blobmsg_add_u32(&b, u_args[i].key, u_args[i].val.int_val);
|
||||
}
|
||||
else if (u_args[i].type == UBUS_Array_Obj || u_args[i].type == UBUS_Array_Str){
|
||||
void *a, *t;
|
||||
int j;
|
||||
|
|
@ -392,8 +393,8 @@ int cwmp_ubus_call(const char *obj, const char *method, const struct cwmp_ubus_a
|
|||
rc = ubus_invoke(ubus_ctx, id, method, b.head, receive_ubus_call_result_data, NULL, 1000);
|
||||
else
|
||||
rc = -1;
|
||||
|
||||
*json_ret = json_res;
|
||||
if (json_ret)
|
||||
*json_ret = json_res;
|
||||
|
||||
if (ubus_ctx) {
|
||||
ubus_free(ubus_ctx);
|
||||
|
|
|
|||
73
xml.c
73
xml.c
|
|
@ -135,6 +135,17 @@ const struct rpc_acs_method rpc_acs_methods[] = {
|
|||
[RPC_ACS_DU_STATE_CHANGE_COMPLETE] = {"DUStateChangeComplete", cwmp_rpc_acs_prepare_du_state_change_complete, NULL, cwmp_rpc_acs_destroy_data_du_state_change_complete}
|
||||
|
||||
};
|
||||
|
||||
char* forced_inform_parameters[] = {
|
||||
"Device.RootDataModelVersion",
|
||||
"Device.DeviceInfo.HardwareVersion",
|
||||
"Device.DeviceInfo.SoftwareVersion",
|
||||
"Device.DeviceInfo.ProvisioningCode",
|
||||
"Device.ManagementServer.ParameterKey",
|
||||
"Device.ManagementServer.ConnectionRequestURL",
|
||||
"Device.ManagementServer.AliasBasedAddressing"
|
||||
};
|
||||
|
||||
int cwmp_launch_du_install(char *url, char *uuid, char *user, char *pass, char *env, char **package_version, char **package_name, char **package_uuid, char **package_env, struct opresult **pchange_du_state_complete);
|
||||
int cwmp_launch_du_update(char *uuid, char *url, char *version, char *user, char *pass, char **package_version, char **package_name, char **package_uuid, char **package_env, struct opresult **pchange_du_state_complete);
|
||||
int cwmp_launch_du_uninstall(char *package_name, char *package_env, struct opresult **pchange_du_state_complete);
|
||||
|
|
@ -604,10 +615,9 @@ error:
|
|||
return -1;
|
||||
}
|
||||
|
||||
static int xml_prepare_parameters_inform(struct dmctx *dmctx, struct dm_parameter *dm_parameter, mxml_node_t *parameter_list, int *size)
|
||||
static int xml_prepare_parameters_inform(struct cwmp_dm_parameter *dm_parameter, mxml_node_t *parameter_list, int *size)
|
||||
{
|
||||
mxml_node_t *node, *b;
|
||||
|
||||
b = mxmlFindElementOpaque(parameter_list, parameter_list, dm_parameter->name, MXML_DESCEND);
|
||||
if (b && dm_parameter->data != NULL) {
|
||||
node = b->parent->parent;
|
||||
|
|
@ -626,7 +636,8 @@ static int xml_prepare_parameters_inform(struct dmctx *dmctx, struct dm_paramete
|
|||
}
|
||||
else if (!b && dm_parameter->data == NULL)
|
||||
{
|
||||
dm_entry_param_method(dmctx, CMD_GET_VALUE, dm_parameter->name, NULL, NULL);
|
||||
json_object *parameters = NULL;
|
||||
cwmp_get_parameter_values(dm_parameter->name, ¶meters);
|
||||
return 0;
|
||||
}
|
||||
node = mxmlNewElement (parameter_list, "ParameterValueStruct");
|
||||
|
|
@ -769,15 +780,12 @@ char* xml_get_cwmp_version (int version)
|
|||
|
||||
int cwmp_rpc_acs_prepare_message_inform (struct cwmp *cwmp, struct session *session, struct rpc *this)
|
||||
{
|
||||
struct dm_parameter *dm_parameter;
|
||||
struct cwmp_dm_parameter *dm_parameter, cwmp_dm_param = {0};
|
||||
struct event_container *event_container;
|
||||
mxml_node_t *tree, *b, *node, *parameter_list;
|
||||
char *c = NULL;
|
||||
int size = 0;
|
||||
struct list_head *ilist,*jlist;
|
||||
struct dmctx dmctx = {0};
|
||||
|
||||
cwmp_dm_ctx_init(cwmp, &dmctx);
|
||||
|
||||
if (session == NULL || this == NULL)
|
||||
return -1;
|
||||
|
|
@ -833,8 +841,8 @@ int cwmp_rpc_acs_prepare_message_inform (struct cwmp *cwmp, struct session *sess
|
|||
event_container = list_entry(ilist, struct event_container, list);
|
||||
list_for_each(jlist, &(event_container->head_dm_parameter))
|
||||
{
|
||||
dm_parameter = list_entry(jlist, struct dm_parameter, list);
|
||||
if (xml_prepare_parameters_inform(&dmctx, dm_parameter, parameter_list, &size))
|
||||
dm_parameter = list_entry(jlist, struct cwmp_dm_parameter, list);
|
||||
if (xml_prepare_parameters_inform(dm_parameter, parameter_list, &size))
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
|
|
@ -859,16 +867,29 @@ int cwmp_rpc_acs_prepare_message_inform (struct cwmp *cwmp, struct session *sess
|
|||
b = mxmlNewOpaque(b, cwmp->deviceid.serialnumber ? cwmp->deviceid.serialnumber : "");
|
||||
if (!b) goto error;
|
||||
|
||||
dm_entry_param_method(&dmctx, CMD_INFORM, NULL, NULL, NULL);
|
||||
|
||||
while (dmctx.list_parameter.next != &dmctx.list_parameter) {
|
||||
dm_parameter = list_entry(dmctx.list_parameter.next, struct dm_parameter, list);
|
||||
if (xml_prepare_parameters_inform(&dmctx, dm_parameter, parameter_list, &size))
|
||||
goto error;
|
||||
|
||||
del_list_parameter(dm_parameter);
|
||||
}
|
||||
|
||||
json_object *parameters = NULL, *param_obj = NULL, *param_name = NULL, *param_value = NULL, *param_type = NULL;
|
||||
size_t inform_parameters_nbre = sizeof(forced_inform_parameters)/sizeof(forced_inform_parameters[0]);
|
||||
int i;
|
||||
for (i=0; i<inform_parameters_nbre; i++) {
|
||||
cwmp_get_parameter_values(forced_inform_parameters[i], ¶meters);
|
||||
if(parameters == NULL)
|
||||
continue;
|
||||
foreach_jsonobj_in_array(param_obj, parameters) {
|
||||
param_obj = json_object_array_get_idx(parameters, 0);
|
||||
json_object_object_get_ex(param_obj, "parameter", ¶m_name);
|
||||
json_object_object_get_ex(param_obj, "value", ¶m_value);
|
||||
json_object_object_get_ex(param_obj, "type", ¶m_type);
|
||||
cwmp_dm_param.name = strdup(param_name?(char*)json_object_get_string(param_name):"");
|
||||
cwmp_dm_param.data = strdup(param_value?(char*)json_object_get_string(param_value):"");
|
||||
cwmp_dm_param.type = strdup(param_type?(char*)json_object_get_string(param_type):"");
|
||||
if (xml_prepare_parameters_inform(&cwmp_dm_param, parameter_list, &size))
|
||||
goto error;
|
||||
FREE(cwmp_dm_param.name);
|
||||
FREE(cwmp_dm_param.data);
|
||||
FREE(cwmp_dm_param.type);
|
||||
}
|
||||
FREE(parameters);
|
||||
}
|
||||
if (asprintf(&c, "cwmp:ParameterValueStruct[%d]", size) == -1)
|
||||
goto error;
|
||||
|
||||
|
|
@ -882,7 +903,7 @@ int cwmp_rpc_acs_prepare_message_inform (struct cwmp *cwmp, struct session *sess
|
|||
return 0;
|
||||
|
||||
error:
|
||||
|
||||
CWMP_LOG(ERROR,"Unable Prepare Message Inform",CWMP_BKP_FILE);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
@ -1628,11 +1649,13 @@ int cwmp_handle_rpc_cpe_set_parameter_values(struct session *session, struct rpc
|
|||
struct cwmp_param_value *param_value;
|
||||
|
||||
list_for_each_entry(param_value, &list_param_value, list) {
|
||||
char *err = cwmp_set_parameter_value(param_value->param, param_value->value, parameter_key);
|
||||
int flag = 0;
|
||||
char *err = cwmp_set_parameter_value(param_value->param, param_value->value, parameter_key, &flag);
|
||||
if (err) {
|
||||
cwmp_add_list_fault_param(parameter_name, atoi(err), rpc->list_set_value_fault);
|
||||
cwmp_add_list_fault_param(param_value->param, atoi(err), rpc->list_set_value_fault);
|
||||
fault_code = FAULT_CPE_INVALID_ARGUMENTS;
|
||||
}
|
||||
cwmp_set_end_session(flag);
|
||||
}
|
||||
|
||||
cwmp_free_all_list_param_value(&list_param_value);
|
||||
|
|
@ -1744,10 +1767,12 @@ int cwmp_handle_rpc_cpe_set_parameter_attributes(struct session *session, struct
|
|||
}
|
||||
|
||||
b = mxmlFindElement(session->tree_out, session->tree_out, "soap_env:Body", NULL, NULL, MXML_DESCEND);
|
||||
if (!b) goto fault;
|
||||
if (!b)
|
||||
goto fault;
|
||||
|
||||
b = mxmlNewElement(b, "cwmp:SetParameterAttributesResponse");
|
||||
if (!b) goto fault;
|
||||
if (!b)
|
||||
goto fault;
|
||||
|
||||
cwmp_set_end_session(END_SESSION_SET_NOTIFICATION_UPDATE);
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue