Search Linux Wireless

[PATCH 2/3] mac80211: generate mesh probe requests

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



A mesh probe request must include the mesh ID IE and a
wildcard SSID IE. Add this and transpose the SSID scan
list into mesh IDs for mesh interfaces.

Also allow the user to specify a mesh ID IE in the user
scan IEs, since additional SSID IEs seem to be allowed.

Signed-off-by: Thomas Pedersen <thomas@xxxxxxxxxxx>
---
 net/mac80211/tx.c   |   15 +++++++++++----
 net/mac80211/util.c |    1 +
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 01dc001..9f3e9ba 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -2622,11 +2622,18 @@ struct sk_buff *ieee80211_probereq_get(struct ieee80211_hw *hw,
 	memcpy(hdr->addr2, vif->addr, ETH_ALEN);
 	eth_broadcast_addr(hdr->addr3);
 
-	pos = skb_put(skb, ie_ssid_len);
-	*pos++ = WLAN_EID_SSID;
+	if (ieee80211_vif_is_mesh(vif)) {
+		pos = skb_put(skb, 2 + 2 + ssid_len);
+		*pos++ = WLAN_EID_SSID;
+		*pos++ = 0;
+		/* NOTE: mesh ID will be out of order */
+		*pos++ = WLAN_EID_MESH_ID;
+	} else {
+		pos = skb_put(skb, 2 + ssid_len);
+		*pos++ = WLAN_EID_SSID;
+	}
 	*pos++ = ssid_len;
-	if (ssid_len)
-		memcpy(pos, ssid, ssid_len);
+	memcpy(pos, ssid, ssid_len);
 	pos += ssid_len;
 
 	return skb;
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index 139ad9b..aeb0f88 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -1181,6 +1181,7 @@ int ieee80211_build_preq_ies(struct ieee80211_local *local, u8 *buffer,
 	if (ie && ie_len) {
 		static const u8 before_ht[] = {
 			WLAN_EID_SSID,
+			WLAN_EID_MESH_ID,
 			WLAN_EID_SUPP_RATES,
 			WLAN_EID_REQUEST,
 			WLAN_EID_EXT_SUPP_RATES,
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux