wpa_supplicant AP mode: Add function for enabling MAC address filtering
This can be used to allow only a specific station to associate.
This commit is contained in:
parent
48b357a989
commit
f90ceeaabf
2 changed files with 43 additions and 0 deletions
|
@ -414,3 +414,44 @@ int ap_ctrl_iface_wpa_get_status(struct wpa_supplicant *wpa_s, char *buf,
|
|||
}
|
||||
|
||||
#endif /* CONFIG_CTRL_IFACE */
|
||||
|
||||
|
||||
int wpa_supplicant_ap_mac_addr_filter(struct wpa_supplicant *wpa_s,
|
||||
const u8 *addr)
|
||||
{
|
||||
struct hostapd_data *hapd;
|
||||
struct hostapd_bss_config *conf;
|
||||
|
||||
if (!wpa_s->ap_iface)
|
||||
return -1;
|
||||
|
||||
if (addr)
|
||||
wpa_printf(MSG_DEBUG, "AP: Set MAC address filter: " MACSTR,
|
||||
MAC2STR(addr));
|
||||
else
|
||||
wpa_printf(MSG_DEBUG, "AP: Clear MAC address filter");
|
||||
|
||||
hapd = wpa_s->ap_iface->bss[0];
|
||||
conf = hapd->conf;
|
||||
|
||||
os_free(conf->accept_mac);
|
||||
conf->accept_mac = NULL;
|
||||
conf->num_accept_mac = 0;
|
||||
os_free(conf->deny_mac);
|
||||
conf->deny_mac = NULL;
|
||||
conf->num_deny_mac = 0;
|
||||
|
||||
if (addr == NULL) {
|
||||
conf->macaddr_acl = ACCEPT_UNLESS_DENIED;
|
||||
return 0;
|
||||
}
|
||||
|
||||
conf->macaddr_acl = DENY_UNLESS_ACCEPTED;
|
||||
conf->accept_mac = os_zalloc(sizeof(struct mac_acl_entry));
|
||||
if (conf->accept_mac == NULL)
|
||||
return -1;
|
||||
os_memcpy(conf->accept_mac[0].addr, addr, ETH_ALEN);
|
||||
conf->num_accept_mac = 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -37,5 +37,7 @@ void ap_tx_status(void *ctx, const u8 *addr,
|
|||
void ap_rx_from_unknown_sta(void *ctx, const u8 *frame, size_t len);
|
||||
void ap_mgmt_rx(void *ctx, struct rx_mgmt *rx_mgmt);
|
||||
void ap_mgmt_tx_cb(void *ctx, const u8 *buf, size_t len, u16 stype, int ok);
|
||||
int wpa_supplicant_ap_mac_addr_filter(struct wpa_supplicant *wpa_s,
|
||||
const u8 *addr);
|
||||
|
||||
#endif /* AP_H */
|
||||
|
|
Loading…
Reference in a new issue