From 8632ab09348c57b9a45caa836902cbdee78cbdd9 Mon Sep 17 00:00:00 2001
From: Jakob Olsson <jakob.olsson@iopsys.eu>
Date: Tue, 13 Jun 2023 13:23:19 +0200
Subject: [PATCH] fix backhaul bss config TLV on SIGHUP

---
 src/cntlr.c | 23 +++++++++++++++++------
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/src/cntlr.c b/src/cntlr.c
index ee04438c..4fa2428a 100644
--- a/src/cntlr.c
+++ b/src/cntlr.c
@@ -1521,20 +1521,31 @@ bool cntlr_check_config_diff(struct controller *c, uint8_t diff)
 		/* send the policy config cmdu to the marked agent */
 		list_for_each_entry(n, &c->nodelist, list) {
 			struct cmdu_buff *cmdu;
-			int num_bk = 1;
-			uint8_t bk_id[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
-			struct radio_policy *rp = NULL;
+			int num_bk = 0;
+			uint8_t bk_id[16 * 6] = {0};
 			uint8_t radio_id[MAX_NUM_RADIO * 6] = {0};
+			struct netif_radio *r = NULL;
 			int num_radio = 0;
 
 			if ((diff & CONFIG_DIFF_AGENT_POLICY) && !n->np->is_policy_diff)
 				continue;
 
-			list_for_each_entry(rp, &n->np->radiolist, list) {
+			list_for_each_entry(r, &n->radiolist, list) {
+				struct netif_iface *iface = NULL;
+
 				memcpy(&radio_id[num_radio * 6],
-					rp->macaddr,
-					6);
+				       r->radio_el->macaddr, 6);
 				num_radio++;
+
+				list_for_each_entry(iface, &r->iflist, list) {
+					if (!iface->bss->is_bbss)
+						continue;
+
+					memcpy(&bk_id[num_bk * 6],
+					       iface->bss->bssid, 6);
+					num_bk++;
+				}
+
 			}
 
 			cmdu = cntlr_gen_policy_config_req(c, n->alid,
-- 
GitLab