From 60bfb9c5160f5e63656c17e2a0b7fe13267f9b72 Mon Sep 17 00:00:00 2001
From: Anjan Chanda <anjan.chanda@iopsys.eu>
Date: Tue, 23 Feb 2021 12:52:11 +0100
Subject: [PATCH] cleanup ap-autoconfig

---
 src/cmdu_output.c |  9 ---------
 src/i1905.c       | 49 +++++++++++++----------------------------------
 2 files changed, 13 insertions(+), 45 deletions(-)

diff --git a/src/cmdu_output.c b/src/cmdu_output.c
index a0f54fd8..78150573 100644
--- a/src/cmdu_output.c
+++ b/src/cmdu_output.c
@@ -762,15 +762,6 @@ int i1905_send_ap_autoconfig_search(struct i1905_private *priv, uint8_t freqband
 		uint16_t mid = 0;
 
 
-		/*
-		if (!strncmp(iface->ifname, ifs->ifname, 16) &&
-				!memcmp(iface->macaddr, ifs->macaddr, 6)) {
-
-			//continue;	//TODO: revisit
-		}
-		*/
-
-
 		frm = cmdu_alloc_simple(CMDU_TYPE_AP_AUTOCONFIGURATION_SEARCH, &mid);
 		if (!frm) {
 			fprintf(stderr, "%s: -ENOMEM\n", __func__);
diff --git a/src/i1905.c b/src/i1905.c
index 56308c54..0bbc48ab 100644
--- a/src/i1905.c
+++ b/src/i1905.c
@@ -267,11 +267,6 @@ static struct i1905_interface *i1905_alloc_interface(const char *ifname,
 			}
 		}
 
-		/* get bssid */
-		ret = wifi_get_bssid(ifname, wifi->bssid);
-		if (ret)
-			fprintf(stderr, "error wifi_get_bssid()\n");
-
 		/* get role/mode */
 		ret = wifi_get_mode(ifname, &mode);
 		if (!ret) {
@@ -283,6 +278,15 @@ static struct i1905_interface *i1905_alloc_interface(const char *ifname,
 				wifi->role = IEEE80211_ROLE_UNKNOWN;
 		}
 
+		/* get bssid */
+		ret = wifi_get_bssid(ifname, wifi->bssid);
+		if (ret)
+			fprintf(stderr, "error wifi_get_bssid()\n");
+
+		if (wifi->role == IEEE80211_ROLE_AP ||
+		    (wifi->role == IEEE80211_ROLE_STA && !hwaddr_is_zero(wifi->bssid)))
+			n->authenticated = true;
+
 		/* get ap bandwidth */
 		ret = wifi_get_bandwidth(ifname, &bw);
 		if (!ret) {
@@ -1185,30 +1189,15 @@ int i1905_apconfig_request(void *priv, uint8_t band)
 		return -EINVAL;
 	}
 
+	if (!forall_radios) {
 #if 0
-	if (ifname && ifname[0] != '\0') {
-		iface = i1905_lookup_interface(p, ifname);
-		if (!iface || (iface && !IS_MEDIA_WIFI(iface->media))) {
-			fprintf(stderr, "%s: Not a i1905 WiFi interface\n", ifname);
+		if (i1905_has_registrar(p, freqband) && p->start_apconfig == 1) {
+			fprintf(stderr, "Self is registrar on band %d\n", band);
+			p->start_apconfig = 0;
 			return -EINVAL;
 		}
-	}
-
-	if (iface && !forall_radios) {
-		if (IS_MEDIA_WIFI_2GHZ(iface->media) && freqband != IEEE80211_FREQUENCY_BAND_2_4_GHZ)
-			return -EINVAL;
-
-		if (IS_MEDIA_WIFI_5GHZ(iface->media) && freqband != IEEE80211_FREQUENCY_BAND_5_GHZ)
-			return -EINVAL;
-
-		return i1905_send_ap_autoconfig_search(iface->priv, freqband);
-	}
 #endif
 
-	if (!forall_radios) {
-		//if (!i1905_has_registrar(priv, freqband))
-		//	return -EINVAL;
-
 		return i1905_send_ap_autoconfig_search(priv, freqband);
 	}
 
@@ -1216,18 +1205,6 @@ int i1905_apconfig_request(void *priv, uint8_t band)
 	for (i = 0; i < ARRAY_SIZE(bands); i++)
 		ret |= i1905_send_ap_autoconfig_search(priv, freqband);
 
-#if 0
-	list_for_each_entry(iface, &p->dm.self.iflist, list) {
-		if (!IS_MEDIA_WIFI(iface->media))
-			continue;
-
-		// FIXME: IS_MEDIA_WIFI_5/2GHZ()...
-		//if (freqband != IEEE80211_FREQUENCY_BAND_UNKNOWN && freqband != iface->media)
-		//	continue;
-		ret |= i1905_send_ap_autoconfig_search(iface->priv, freqband);
-	}
-#endif
-
 	return ret;
 }
 
-- 
GitLab