From 1b51a78b886ff1099128537437658ba7c140100f Mon Sep 17 00:00:00 2001
From: Amin Ben Romdhane <amin.benromdhane@iopsys.eu>
Date: Fri, 7 Jun 2024 10:01:59 +0200
Subject: [PATCH] Align Device.QoS.QueueStats.{i}. to use dm_data

---
 bbf_plugin/qos_bbf.c | 35 +++++++++++++++++++----------------
 1 file changed, 19 insertions(+), 16 deletions(-)

diff --git a/bbf_plugin/qos_bbf.c b/bbf_plugin/qos_bbf.c
index 2dfc286..67fc0aa 100644
--- a/bbf_plugin/qos_bbf.c
+++ b/bbf_plugin/qos_bbf.c
@@ -78,7 +78,7 @@ static int browseQoSClassificationInst(struct dmctx *dmctx, DMNODE *parent_node,
 
 		inst = handle_instance(dmctx, parent_node, curr_data->dmmap_section, "classify_instance", "classify_alias");
 
-		if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)curr_data, inst) == DM_STOP)
+		if (DM_LINK_INST_OBJ(dmctx, parent_node, curr_data, inst) == DM_STOP)
 			break;
 	}
 	free_dmmap_config_dup_list(&dup_list);
@@ -96,7 +96,7 @@ static int browseQoSPolicerInst(struct dmctx *dmctx, DMNODE *parent_node, void *
 
 		inst = handle_instance(dmctx, parent_node, curr_data->dmmap_section, "policer_instance", "policeralias");
 
-		if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)curr_data, inst) == DM_STOP)
+		if (DM_LINK_INST_OBJ(dmctx, parent_node, curr_data, inst) == DM_STOP)
 			break;
 	}
 	free_dmmap_config_dup_list(&dup_list);
@@ -117,7 +117,7 @@ static int browseQoSQueueInst(struct dmctx *dmctx, DMNODE *parent_node, void *pr
 
 		inst = handle_instance(dmctx, parent_node, curr_data->dmmap_section, "queueinstance", "queuealias");
 
-		if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)curr_data, inst) == DM_STOP)
+		if (DM_LINK_INST_OBJ(dmctx, parent_node, curr_data, inst) == DM_STOP)
 			break;
 	}
 	free_dmmap_config_dup_list(&dup_list);
@@ -126,14 +126,17 @@ static int browseQoSQueueInst(struct dmctx *dmctx, DMNODE *parent_node, void *pr
 
 static int browseQoSQueueStatsInst(struct dmctx *dmctx, DMNODE *parent_node, void *prev_data, char *prev_instance)
 {
+	struct dm_data curr_data = {0};
 	struct uci_section *s = NULL;
 	char *inst = NULL;
 
 	uci_path_foreach_sections(bbfdm, "dmmap_qstats", "queue_stats", s) {
 
+		curr_data.config_section = s;
+
 		inst = handle_instance(dmctx, parent_node, s, "q_instance", "q_alias");
 
-		if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)s, inst) == DM_STOP)
+		if (DM_LINK_INST_OBJ(dmctx, parent_node, &curr_data, inst) == DM_STOP)
 			break;
 	}
 	return 0;
@@ -150,7 +153,7 @@ static int browseQoSShaperInst(struct dmctx *dmctx, DMNODE *parent_node, void *p
 
 		inst = handle_instance(dmctx, parent_node, curr_data->dmmap_section, "shaperinstance", "shaperalias");
 
-		if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)curr_data, inst) == DM_STOP)
+		if (DM_LINK_INST_OBJ(dmctx, parent_node, curr_data, inst) == DM_STOP)
 			break;
 	}
 	free_dmmap_config_dup_list(&dup_list);
@@ -325,7 +328,7 @@ static int delObjQoSQueueStats(char *refparam, struct dmctx *ctx, void *data, ch
 
 	switch (del_action) {
 		case DEL_INST:
-			dmuci_delete_by_section((struct uci_section *)data, NULL, NULL);
+			dmuci_delete_by_section(((struct dm_data *)data)->config_section, NULL, NULL);
 			break;
 		case DEL_ALL:
 			uci_path_foreach_sections_safe(bbfdm, "dmmap_qstats", "queue_stats", stmp, s) {
@@ -1695,7 +1698,7 @@ static int set_QoSQueue_ShapingBurstSize(char *refparam, struct dmctx *ctx, void
 
 static int get_QoSQueueStats_Enable(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
 {
-	*value = dmuci_get_value_by_section_fallback_def((struct uci_section *)data, "enabled", "0");
+	*value = dmuci_get_value_by_section_fallback_def(((struct dm_data *)data)->config_section, "enabled", "0");
 	return 0;
 }
 
@@ -1710,7 +1713,7 @@ static int set_QoSQueueStats_Enable(char *refparam, struct dmctx *ctx, void *dat
 			break;
 		case VALUESET:
 			string_to_bool(value, &b);
-			dmuci_set_value_by_section((struct uci_section *)data, "enabled", b ? "1" : "0");
+			dmuci_set_value_by_section(((struct dm_data *)data)->config_section, "enabled", b ? "1" : "0");
 			break;
 	}
 	return 0;
@@ -1726,19 +1729,19 @@ static int get_QoSQueueStats_Status(char *refparam, struct dmctx *ctx, void *dat
 
 static int get_QoSQueueStats_Alias(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
 {
-	return bbf_get_alias(ctx, (struct uci_section *)data, "alias", instance, value);
+	return bbf_get_alias(ctx, ((struct dm_data *)data)->config_section, "alias", instance, value);
 }
 
 static int set_QoSQueueStats_Alias(char *refparam, struct dmctx *ctx, void *data, char *instance, char *value, int action)
 {
-	return bbf_set_alias(ctx, (struct uci_section *)data, "alias", instance, value);
+	return bbf_set_alias(ctx, ((struct dm_data *)data)->config_section, "alias", instance, value);
 }
 
 static int get_QoSQueueStats_Queue(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
 {
 	char *queue_link = NULL;
 
-	dmuci_get_value_by_section_string((struct uci_section *)data, "queue", &queue_link);
+	dmuci_get_value_by_section_string(((struct dm_data *)data)->config_section, "queue", &queue_link);
 	_bbfdm_get_references(ctx, "Device.QoS.Queue.", "Alias", queue_link, value);
 	return 0;
 }
@@ -1760,7 +1763,7 @@ static int set_QoSQueueStats_Queue(char *refparam, struct dmctx *ctx, void *data
 
 			break;
 		case VALUESET:
-			dmuci_set_value_by_section((struct uci_section *)data, "queue", reference.value);
+			dmuci_set_value_by_section(((struct dm_data *)data)->config_section, "queue", reference.value);
 			break;
 	}
 	return 0;
@@ -1771,7 +1774,7 @@ static int get_QoSQueueStats_Interface(char *refparam, struct dmctx *ctx, void *
 	char *linker = NULL;
 	char buf[4096] = {0};
 
-	dmuci_get_value_by_section_string((struct uci_section *)data, "interface", &linker);
+	dmuci_get_value_by_section_string(((struct dm_data *)data)->config_section, "interface", &linker);
 	if (DM_STRLEN(linker) == 0)
 		return 0;
 
@@ -1804,7 +1807,7 @@ static int set_QoSQueueStats_Interface(char *refparam, struct dmctx *ctx, void *
 
 			break;
 		case VALUESET:
-			dmuci_set_value_by_section((struct uci_section *)data, "interface", reference.value);
+			dmuci_set_value_by_section(((struct dm_data *)data)->config_section, "interface", reference.value);
 			break;
 	}
 	return 0;
@@ -1815,8 +1818,8 @@ static int get_QoSQueueStats_value(void *data, char *option, char **value)
 	char *queue_link = NULL, *intf_link = NULL;
 
 	*value = "0";
-	dmuci_get_value_by_section_string((struct uci_section *)data, "queue", &queue_link);
-	dmuci_get_value_by_section_string((struct uci_section *)data, "interface", &intf_link);
+	dmuci_get_value_by_section_string(((struct dm_data *)data)->config_section, "queue", &queue_link);
+	dmuci_get_value_by_section_string(((struct dm_data *)data)->config_section, "interface", &intf_link);
 
 	if (queue_link && *queue_link && intf_link && *intf_link) {
 		json_object *res = NULL;
-- 
GitLab