hostapd: check for banned client on association event
authorRafał Miłecki <zajec5@gmail.com>
Mon, 28 Sep 2015 09:39:47 +0000 (09:39 +0000)
committerRafał Miłecki <zajec5@gmail.com>
Mon, 28 Sep 2015 09:39:47 +0000 (09:39 +0000)
When using FullMAC drivers (e.g. brcmfmac) we don't get mgmt frames so
check for banned client in probe request handler won't ever be used.
Since cfg80211 provides us info about STA associating let's put a check
there.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Backport of r47064

SVN-Revision: 47065

package/network/services/hostapd/patches/600-ubus_support.patch

index 1efe84ed70e60b9f8b71b12fffd55f661c8ab95c..df2eac873c306728b05c8b96e2a464592944d181 100644 (file)
  int ieee802_11_set_beacon(struct hostapd_data *hapd);
  int ieee802_11_set_beacons(struct hostapd_iface *iface);
  int ieee802_11_update_beacons(struct hostapd_iface *iface);
+--- a/src/ap/drv_callbacks.c
++++ b/src/ap/drv_callbacks.c
+@@ -49,6 +49,10 @@ int hostapd_notif_assoc(struct hostapd_d
+       u16 reason = WLAN_REASON_UNSPECIFIED;
+       u16 status = WLAN_STATUS_SUCCESS;
+       const u8 *p2p_dev_addr = NULL;
++      struct hostapd_ubus_request req = {
++              .type = HOSTAPD_UBUS_ASSOC_REQ,
++              .addr = addr,
++      };
+       if (addr == NULL) {
+               /*
+@@ -113,6 +117,12 @@ int hostapd_notif_assoc(struct hostapd_d
+       }
+       sta->flags &= ~(WLAN_STA_WPS | WLAN_STA_MAYBE_WPS | WLAN_STA_WPS2);
++      if (hostapd_ubus_handle_event(hapd, &req)) {
++              wpa_printf(MSG_DEBUG, "Station " MACSTR " assoc rejected by ubus handler.\n",
++                         MAC2STR(req.addr));
++              goto fail;
++      }
++
+ #ifdef CONFIG_P2P
+       if (elems.p2p) {
+               wpabuf_free(sta->p2p_ie);