From dccf95613c7d2459aea45b1a8046fb5244d02fbe Mon Sep 17 00:00:00 2001
From: Jakob Olsson <jakob.olsson@iopsys.eu>
Date: Fri, 4 Dec 2020 10:52:21 +0100
Subject: [PATCH] map-controller: change cntlr_gen_8021q_settings arguments

---
 src/core/cntlr_map.c           | 15 +++++++++++++--
 src/core/cntlr_tlv_generator.c | 13 +------------
 src/core/cntlr_tlv_generator.h |  2 +-
 src/core/cntlr_ubus.c          |  4 ++--
 4 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/src/core/cntlr_map.c b/src/core/cntlr_map.c
index d753e5cc..9feb715e 100644
--- a/src/core/cntlr_map.c
+++ b/src/core/cntlr_map.c
@@ -143,6 +143,7 @@ int handle_ap_autoconfig_wsc(void *cntlr, struct cmdu_cstruct *rec_cmdu)
 {
 	trace("%s: --->\n", __func__);
 	struct controller *c = (struct controller *) cntlr;
+	struct agent_policy *a, *found = NULL;
 	struct tlv_default_8021q_settings *p;
 	struct tlv_traffic_sep_policy *p1;
 	struct tlv_ap_radio_identifier *p2;
@@ -154,7 +155,7 @@ int handle_ap_autoconfig_wsc(void *cntlr, struct cmdu_cstruct *rec_cmdu)
 	cmdu = (struct cmdu_cstruct *)calloc(1, sizeof(struct cmdu_cstruct));
 	if (!cmdu) {
 		fprintf(stderr, "failed to malloc cmdu\n");
-		return UBUS_STATUS_UNKNOWN_ERROR;
+		return -1;
 	}
 
 	memcpy(cmdu->origin, rec_cmdu->origin, 6);
@@ -163,7 +164,17 @@ int handle_ap_autoconfig_wsc(void *cntlr, struct cmdu_cstruct *rec_cmdu)
 	strncpy(cmdu->intf_name, rec_cmdu->intf_name,
 			sizeof(cmdu->intf_name) - 1);
 
-	p = cntlr_gen_8021q_settings(c, cmdu, rec_cmdu);
+	list_for_each_entry(a, &c->cfg.policylist, list) {
+		if (!memcmp(rec_cmdu->origin, a->agent_id, 6)) {
+			found = a;
+			break;
+		}
+	}
+
+	if (!found)
+		return -1;
+
+	p = cntlr_gen_8021q_settings(c, a);
 	if (!p)
 		goto fail_cmdu;
 	cmdu->num_tlvs++;
diff --git a/src/core/cntlr_tlv_generator.c b/src/core/cntlr_tlv_generator.c
index f5a9f9f6..2c8b11c5 100644
--- a/src/core/cntlr_tlv_generator.c
+++ b/src/core/cntlr_tlv_generator.c
@@ -59,20 +59,9 @@ uint8_t *extract_tlv_by_type(struct cmdu_cstruct *cmdu, uint8_t tlv_type)
 }
 
 struct tlv_default_8021q_settings *cntlr_gen_8021q_settings(struct controller *c,
-	struct cmdu_cstruct *cmdu, struct cmdu_cstruct *rec_cmdu)
+		struct agent_policy *a)
 {
 	struct tlv_default_8021q_settings *p;
-	struct agent_policy *a, *found = NULL;
-
-	list_for_each_entry(a, &c->cfg.policylist, list) {
-		if (!memcmp(rec_cmdu->origin, a->agent_id, 6)) {
-			found = a;
-			break;
-		}
-	}
-
-	if (!found)
-		return NULL;
 
 	p = (struct tlv_default_8021q_settings *) calloc(1, sizeof(*p));
 	if (!p)
diff --git a/src/core/cntlr_tlv_generator.h b/src/core/cntlr_tlv_generator.h
index 042fc988..d409c491 100644
--- a/src/core/cntlr_tlv_generator.h
+++ b/src/core/cntlr_tlv_generator.h
@@ -11,7 +11,7 @@
 #define CNTLR_TLV_GEN_H
 
 struct tlv_default_8021q_settings *cntlr_gen_8021q_settings(struct controller *c,
-		struct cmdu_cstruct *cmdu, struct cmdu_cstruct *rec_cmdu);
+		struct agent_policy *a);
 struct tlv_traffic_sep_policy *cntlr_gen_traffic_sep_policy(struct controller *c,
 		struct cmdu_cstruct *cmdu);
 struct tlv_wsc *cntlr_gen_wsc(struct controller *c,
diff --git a/src/core/cntlr_ubus.c b/src/core/cntlr_ubus.c
index 1f98a939..87a378d5 100644
--- a/src/core/cntlr_ubus.c
+++ b/src/core/cntlr_ubus.c
@@ -911,9 +911,9 @@ static int cntlr_ap_policy_config(struct ubus_context *ctx, struct ubus_object *
 
 	cmdu_data->tlvs[tlv_index++] = (uint8_t *)p2;
 
-	/* Default 802.1Q setting TLV */
 // #ifdef PROFILE2
-	p3 = cntlr_gen_8021q_settings(c, NULL, cmdu_data);
+	/* Default 802.1Q setting TLV */
+	p3 = cntlr_gen_8021q_settings(c, found);
 	if (!p3)
 		goto fail_cmdu;
 
-- 
GitLab