diff --git a/libbbfdm-api/legacy/dmbbf.c b/libbbfdm-api/legacy/dmbbf.c index 3ff2b911..59de9a62 100644 --- a/libbbfdm-api/legacy/dmbbf.c +++ b/libbbfdm-api/legacy/dmbbf.c @@ -2483,14 +2483,14 @@ static int mparam_get_references_db(DMPARAM_ARGS) if (node->is_instanceobj == 0) return 0; + char full_param[MAX_DM_PATH] = {0}; + char *value = dmstrdup(""); + + snprintf(full_param, sizeof(full_param), "%s%s", node->current_object, leaf->parameter); + + (leaf->getvalue)(full_param, dmctx, data, instance, &value); + if (leaf->dm_flags & DM_FLAG_LINKER) { - char full_param[MAX_DM_PATH] = {0}; - char *value = dmstrdup(""); - - snprintf(full_param, sizeof(full_param), "%s%s", node->current_object, leaf->parameter); - - (leaf->getvalue)(full_param, dmctx, data, instance, &value); - add_path((struct list_head *)dmctx->addobj_instance, full_param, value); } diff --git a/libbbfdm-ubus/bbfdm-ubus.c b/libbbfdm-ubus/bbfdm-ubus.c index 36b98d68..71654169 100644 --- a/libbbfdm-ubus/bbfdm-ubus.c +++ b/libbbfdm-ubus/bbfdm-ubus.c @@ -1117,6 +1117,28 @@ int bbfdm_refresh_references(unsigned int dm_type, const char *srv_obj_name) bbf_init(&bbf_ctx); int res = bbfdm_cmd_exec(&bbf_ctx, BBF_REFERENCES_DB); + + if (G_SERVICE_BOOTSTRAP == true) { + G_SERVICE_BOOTSTRAP = false; + + if (bbf_ctx.modified_uci_head != NULL) { + struct dm_modified_uci *m; + list_for_each_entry(m, bbf_ctx.modified_uci_head, list) { + char *p = NULL; + + if (DM_STRNCMP(m->uci_file, "/etc/bbfdm/dmmap/", 17) != 0) + continue; + + p = m->uci_file + 17; + if (DM_STRLEN(p) == 0) + continue; + + BBF_INFO("Commit dmmap file: %s at INIT on refresh_reference", p); + dmuci_commit_package_bbfdm(p); + } + } + } + bbf_cleanup(&bbf_ctx); return res; diff --git a/libbbfdm-ubus/common.h b/libbbfdm-ubus/common.h index 5057f6b7..42915b56 100644 --- a/libbbfdm-ubus/common.h +++ b/libbbfdm-ubus/common.h @@ -28,6 +28,7 @@ extern DMOBJ *DEAMON_DM_ROOT_OBJ; extern DM_MAP_OBJ *INTERNAL_ROOT_TREE; +extern bool G_SERVICE_BOOTSTRAP; bool validate_msglen(bbfdm_data_t *data); diff --git a/libbbfdm-ubus/get_helper.c b/libbbfdm-ubus/get_helper.c index 01fa9f67..17c41fb7 100644 --- a/libbbfdm-ubus/get_helper.c +++ b/libbbfdm-ubus/get_helper.c @@ -19,6 +19,7 @@ DMOBJ *DEAMON_DM_ROOT_OBJ = NULL; DM_MAP_OBJ *INTERNAL_ROOT_TREE = NULL; +bool G_SERVICE_BOOTSTRAP = true; int bbfdm_cmd_exec(struct dmctx *bbf_ctx, int cmd) {