diff --git a/bbf_plugin/atm.c b/bbf_plugin/atm.c index 33bb5f61334d6bb137e593362ce398466a099762..a63be61c885bf29b71068625ea8629f19a218ec1 100644 --- a/bbf_plugin/atm.c +++ b/bbf_plugin/atm.c @@ -237,13 +237,11 @@ static int get_atm_lower_layer(char *refparam, struct dmctx *ctx, void *data, ch snprintf(atm_file, sizeof(atm_file), "/sys/class/net/atm%ld", DM_STRTOL(instance) - 1); if (folder_exists(atm_file)) - adm_entry_get_reference_param(ctx, "Device.DSL.Channel.*.Name", instance, value); + _bbfdm_get_references(ctx, "Device.DSL.Channel.", "Name", instance, value); + // Store LowerLayers value dmuci_set_value_by_section(((struct dm_data *)data)->config_section, "LowerLayers", *value); - } else { - if (!adm_entry_object_exists(ctx, *value)) - *value = ""; } return 0; @@ -253,7 +251,7 @@ static int set_atm_lower_layer(char *refparam, struct dmctx *ctx, void *data, ch { struct dm_reference reference = {0}; - bbf_get_reference_args(value, &reference); + bbfdm_get_reference_linker(ctx, value, &reference); switch (action) { case VALUECHECK: diff --git a/bbf_plugin/dsl.c b/bbf_plugin/dsl.c index fbd0d099e86a23fe34d11dfe363213358d416405..bd1b7fede22f2f891b0963dedc1c939cf54fc208 100644 --- a/bbf_plugin/dsl.c +++ b/bbf_plugin/dsl.c @@ -876,7 +876,7 @@ static int get_DSLChannel_Name(char *refparam, struct dmctx *ctx, void *data, ch static int get_DSLChannel_LowerLayers(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) { char *id = dmjson_get_value(((struct dm_data *)data)->json_object, 1, "id"); - adm_entry_get_reference_param(ctx, "Device.DSL.Line.*.Name", id, value); + _bbfdm_get_references(ctx, "Device.DSL.Line.", "Name", id, value); return 0; } diff --git a/bbf_plugin/ptm.c b/bbf_plugin/ptm.c index c5f094fc0c06fd1161c22e28da1e620f775b4f44..3e995351e02777e2ba7adad670328ca1852a7653 100644 --- a/bbf_plugin/ptm.c +++ b/bbf_plugin/ptm.c @@ -164,26 +164,22 @@ static int get_ptm_lower_layer(char *refparam, struct dmctx *ctx, void *data, ch dmuci_get_value_by_section_string(((struct dm_data *)data)->dmmap_section, "LowerLayers", value); if ((*value)[0] == '\0') { + char buf[1024] = {0}; char ptm_file[128] = {0}; - adm_entry_get_reference_param(ctx, "Device.FAST.Line.*.Status", "Up", value); - if (DM_STRLEN(*value)) - return 0; + bbfdm_get_references(ctx, MATCH_FIRST, "Device.FAST.Line.", "Status", "Up", buf, sizeof(buf)); snprintf(ptm_file, sizeof(ptm_file), "/sys/class/net/ptm%ld", DM_STRTOL(instance) - 1); if (folder_exists(ptm_file)) { - adm_entry_get_reference_param(ctx, "Device.DSL.Channel.*.Name", "1", value); - if (DM_STRLEN(*value)) - return 0; + bbfdm_get_references(ctx, MATCH_FIRST, "Device.DSL.Channel.", "Name", "1", buf, sizeof(buf)); } - adm_entry_get_reference_param(ctx, "Device.FAST.Line.*.Name", "1", value); + bbfdm_get_references(ctx, MATCH_FIRST, "Device.FAST.Line.", "Name", "1", buf, sizeof(buf)); + + *value = dmstrdup(buf); // Store LowerLayers value - dmuci_set_value_by_section(((struct dm_data *)data)->dmmap_section, "LowerLayers", *value); - } else { - if (!adm_entry_object_exists(ctx, *value)) - *value = ""; + dmuci_set_value_by_section(((struct dm_data *)data)->dmmap_section, "LowerLayers", buf); } return 0; @@ -193,7 +189,7 @@ static int set_ptm_lower_layer(char *refparam, struct dmctx *ctx, void *data, ch { struct dm_reference reference = {0}; - bbf_get_reference_args(value, &reference); + bbfdm_get_reference_linker(ctx, value, &reference); switch (action) { case VALUECHECK: