From 9eecf090a225ac2860bedc686a0c6458a26fad12 Mon Sep 17 00:00:00 2001
From: Jakob Olsson <jakob.olsson@iopsys.eu>
Date: Tue, 11 May 2021 12:45:26 +0200
Subject: [PATCH] map-agent: deprecate bk_ssid and bk_key from wsc ext

---
 src/core/agent.c     |  4 ++++
 src/core/agent.h     |  4 ++--
 src/core/agent_map.c | 10 ++--------
 src/core/config.c    |  8 ++------
 4 files changed, 10 insertions(+), 16 deletions(-)

diff --git a/src/core/agent.c b/src/core/agent.c
index b8992cf9d..885b6df64 100644
--- a/src/core/agent.c
+++ b/src/core/agent.c
@@ -101,6 +101,10 @@ static void agent_sighandler(int sig)
 	signal_pending = sig;
 }
 
+void agent_exec_platform_scripts(char *arg)
+{
+	runCmd("/lib/wifi/multiap %s", arg);
+}
 
 const char *wifi_ifname_to_radio(struct agent *a, char *ifname)
 {
diff --git a/src/core/agent.h b/src/core/agent.h
index ae08dda63..92310b4b6 100644
--- a/src/core/agent.h
+++ b/src/core/agent.h
@@ -352,8 +352,6 @@ struct iop_ext {
 	uint8_t bridge[16];
 	uint8_t proto[8];
 	uint8_t vid;
-	uint8_t bk_ssid[33];
-	uint8_t bk_key[65];
 	uint32_t br_ip;
 };
 
@@ -515,6 +513,8 @@ struct wsc_data *agent_free_wsc_data(struct wsc_data *wsc);
 extern int start_agent(void);
 extern void stop_agent(struct agent *a);
 
+void agent_exec_platform_scripts(char *arg);
+
 extern int wifiagent_steer_sta(struct ubus_context *ctx, char *ifname,
 		unsigned char *sta, int bsscnt, unsigned char *bsss,
 		int optime);
diff --git a/src/core/agent_map.c b/src/core/agent_map.c
index 4cf0f1a79..ee1247532 100644
--- a/src/core/agent_map.c
+++ b/src/core/agent_map.c
@@ -1118,10 +1118,6 @@ int wsc_get_iop_ext(uint8_t *msg, uint16_t msglen, struct iop_ext *exts)
 						memcpy(&exts->vid, p, len);
 					else if (subelem == ATTR_BR_IP)
 						memcpy(&exts->br_ip, p, len);
-					else if (subelem == ATTR_BK_SSID)
-						memcpy(exts->bk_ssid, p, len);
-					else if (subelem == ATTR_BK_KEY)
-						memcpy(exts->bk_key, p, len);
 
 					p += len;
 					attr_len -= len;
@@ -1242,15 +1238,13 @@ int handle_ap_autoconfig_wsc(void *agent, struct cmdu_buff *rx_cmdu)
 	}
 
 	uci_apply_traffic_sep((struct tlv_traffic_sep_policy *)tv[1][0]->data);
-
-	uci_set_wireless_interface_option("mapagent", "wifi-radio", "device",
-			radio->name, "configured", "1");
 	dbg("|%s:%d| radio (%s) was configured! Apply heartbeat for this radio\n",
 				__func__, __LINE__, radio->name);
-	radio->configured = 1;
 	wifi_reorder_interfaces(&a->cfg);
+	agent_exec_platform_scripts("write_credentials");
 	agent_config_reload(&a->cfg);
 	radio->state = ACS_HEARTBEAT;
+
 	//uci_apply_wps_credentials(&a->cfg, radio->band);
 teardown:
 	// TODO: freeing from here risks freeing an updated frame
diff --git a/src/core/config.c b/src/core/config.c
index 776fc9109..656053bc0 100644
--- a/src/core/config.c
+++ b/src/core/config.c
@@ -799,8 +799,6 @@ int uci_apply_m2(struct agent_config *cfg, char *interface_name, char *device,
 	dbg("  - PROTO           : %s\n", exts->proto);
 	dbg("  - VID             : 0x%02x\n", exts->vid);
 	dbg("  - BR_IP           : %s\n", ipaddr_str);
-	dbg("  - BK_SSID         : %s\n", exts->bk_ssid);
-	dbg("  - BK_KEY          : %s\n", exts->bk_key);
 	dbg("  - BAND            : %s\n", band_str);
 
 	// if teardown bit is set, return
@@ -847,6 +845,8 @@ int uci_apply_m2(struct agent_config *cfg, char *interface_name, char *device,
 			interface_name,	"key", network_key);
 	uci_set_wireless_interface_option(UCI_AGENT, UCI_FH_AGENT, "ifname",
 			interface_name,	"encryption", auth_type_str);
+	uci_set_wireless_interface_option(UCI_AGENT, UCI_FH_AGENT, "ifname",
+			interface_name, "multi_ap", multiap_str);
 	if (multi_ap & 0x01) {
 		char disallow_str[2] = {0};
 
@@ -886,10 +886,6 @@ int uci_apply_m2(struct agent_config *cfg, char *interface_name, char *device,
 			interface_name, "device", device);
 	uci_set_wireless_interface_option(UCI_WIRELESS, UCI_WLAN_IFACE, "ifname",
 			interface_name, "multi_ap", multiap_str);
-	uci_set_wireless_interface_option(UCI_WIRELESS, UCI_WLAN_IFACE, "ifname",
-			interface_name, "multi_ap_backhaul_key", exts->bk_key);
-	uci_set_wireless_interface_option(UCI_WIRELESS, UCI_WLAN_IFACE, "ifname",
-			interface_name, "multi_ap_backhaul_ssid", exts->bk_ssid);
 	uci_set_wireless_interface_option(UCI_WIRELESS, UCI_WLAN_IFACE,	"ifname",
 			interface_name, "ieee80211k", "1");
 	uci_set_wireless_interface_option(UCI_WIRELESS, UCI_WLAN_IFACE,	"ifname",
-- 
GitLab