huge madwifi update (work in progress, disabled by default, compiles but breaks at...
[openwrt.git] / package / madwifi / patches-r3776 / 320-hidden_ssid.patch
diff --git a/package/madwifi/patches-r3776/320-hidden_ssid.patch b/package/madwifi/patches-r3776/320-hidden_ssid.patch
new file mode 100644 (file)
index 0000000..d5a7083
--- /dev/null
@@ -0,0 +1,40 @@
+This patch fixes the detection of hidden SSIDs as transmitted
+by some cisco systems.
+
+Signed-off-by: Felix Fietkau <nbd@openwrt.org>
+
+Index: madwifi-trunk-r3776/net80211/ieee80211_scan_sta.c
+===================================================================
+--- madwifi-trunk-r3776.orig/net80211/ieee80211_scan_sta.c     2008-07-17 03:10:02.000000000 +0200
++++ madwifi-trunk-r3776/net80211/ieee80211_scan_sta.c  2008-07-17 04:02:41.000000000 +0200
+@@ -209,6 +209,19 @@
+               ieee80211_saveie(iep, ie);
+ }
++
++static inline int is_empty_ssid(u_int8_t *ssid)
++{
++      if (!ssid)
++              return 1;
++      if (ssid[1] == 0)
++              return 1;
++      if ((ssid[1] == 1) && (ssid[2] == 0))
++              return 1;
++      return 0;
++}
++
++
+ /*
+  * Process a beacon or probe response frame; create an
+  * entry in the scan cache or update any previous entry.
+@@ -252,8 +265,8 @@
+       ise = &se->base;
+       /* XXX ap beaconing multiple ssid w/ same bssid */
+-      if (sp->ssid[1] != 0 &&
+-          (ISPROBE(subtype) || ise->se_ssid[1] == 0))
++      if (!is_empty_ssid(sp->ssid) &&
++          (ISPROBE(subtype) || is_empty_ssid(ise->se_ssid)))
+               memcpy(ise->se_ssid, sp->ssid, 2 + sp->ssid[1]);
+       memcpy(ise->se_rates, sp->rates, 
This page took 0.023714 seconds and 4 git commands to generate.