From 4a6f6f829006e481eeb20bcb121f7938d12c60ec Mon Sep 17 00:00:00 2001
From: Amin Ben Romdhane <amin.benromdhane@iopsys.eu>
Date: Tue, 11 Jun 2024 16:10:58 +0200
Subject: [PATCH] Data Model: Align with new reference APIs

---
 bbf_plugin/atm.c |  8 +++-----
 bbf_plugin/dsl.c |  2 +-
 bbf_plugin/ptm.c | 20 ++++++++------------
 3 files changed, 12 insertions(+), 18 deletions(-)

diff --git a/bbf_plugin/atm.c b/bbf_plugin/atm.c
index 33bb5f6..a63be61 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 fbd0d09..bd1b7fe 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 c5f094f..3e99535 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:
-- 
GitLab