mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2025-02-21 03:23:04 -05:00
Remove direct driver calls from ieee802_11.c
This commit is contained in:
parent
bdee6fceb9
commit
2ce86d9d72
@ -297,6 +297,31 @@ static int hostapd_sta_disassoc(struct hostapd_data *hapd, const u8 *addr,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int hostapd_sta_add(const char *ifname, struct hostapd_data *hapd,
|
||||||
|
const u8 *addr, u16 aid, u16 capability,
|
||||||
|
const u8 *supp_rates, size_t supp_rates_len,
|
||||||
|
u16 listen_interval,
|
||||||
|
const struct ieee80211_ht_capabilities *ht_capab)
|
||||||
|
{
|
||||||
|
struct hostapd_sta_add_params params;
|
||||||
|
|
||||||
|
if (hapd->driver == NULL)
|
||||||
|
return 0;
|
||||||
|
if (hapd->driver->sta_add == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
os_memset(¶ms, 0, sizeof(params));
|
||||||
|
params.addr = addr;
|
||||||
|
params.aid = aid;
|
||||||
|
params.capability = capability;
|
||||||
|
params.supp_rates = supp_rates;
|
||||||
|
params.supp_rates_len = supp_rates_len;
|
||||||
|
params.listen_interval = listen_interval;
|
||||||
|
params.ht_capabilities = ht_capab;
|
||||||
|
return hapd->driver->sta_add(ifname, hapd->drv_priv, ¶ms);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int hostapd_sta_remove(struct hostapd_data *hapd, const u8 *addr)
|
static int hostapd_sta_remove(struct hostapd_data *hapd, const u8 *addr)
|
||||||
{
|
{
|
||||||
if (hapd->driver == NULL || hapd->driver->sta_remove == NULL)
|
if (hapd->driver == NULL || hapd->driver->sta_remove == NULL)
|
||||||
@ -327,5 +352,6 @@ void hostapd_set_driver_ops(struct hostapd_driver_ops *ops)
|
|||||||
ops->get_inact_sec = hostapd_get_inact_sec;
|
ops->get_inact_sec = hostapd_get_inact_sec;
|
||||||
ops->sta_deauth = hostapd_sta_deauth;
|
ops->sta_deauth = hostapd_sta_deauth;
|
||||||
ops->sta_disassoc = hostapd_sta_disassoc;
|
ops->sta_disassoc = hostapd_sta_disassoc;
|
||||||
|
ops->sta_add = hostapd_sta_add;
|
||||||
ops->sta_remove = hostapd_sta_remove;
|
ops->sta_remove = hostapd_sta_remove;
|
||||||
}
|
}
|
||||||
|
@ -134,30 +134,6 @@ hostapd_set_countermeasures(struct hostapd_data *hapd, int enabled)
|
|||||||
return hapd->driver->hapd_set_countermeasures(hapd->drv_priv, enabled);
|
return hapd->driver->hapd_set_countermeasures(hapd->drv_priv, enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int
|
|
||||||
hostapd_sta_add(const char *ifname, struct hostapd_data *hapd, const u8 *addr,
|
|
||||||
u16 aid, u16 capability, const u8 *supp_rates,
|
|
||||||
size_t supp_rates_len, u16 listen_interval,
|
|
||||||
const struct ieee80211_ht_capabilities *ht_capabilities)
|
|
||||||
{
|
|
||||||
struct hostapd_sta_add_params params;
|
|
||||||
|
|
||||||
if (hapd->driver == NULL)
|
|
||||||
return 0;
|
|
||||||
if (hapd->driver->sta_add == NULL)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
os_memset(¶ms, 0, sizeof(params));
|
|
||||||
params.addr = addr;
|
|
||||||
params.aid = aid;
|
|
||||||
params.capability = capability;
|
|
||||||
params.supp_rates = supp_rates;
|
|
||||||
params.supp_rates_len = supp_rates_len;
|
|
||||||
params.listen_interval = listen_interval;
|
|
||||||
params.ht_capabilities = ht_capabilities;
|
|
||||||
return hapd->driver->sta_add(ifname, hapd->drv_priv, ¶ms);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int
|
static inline int
|
||||||
hostapd_set_freq(struct hostapd_data *hapd, int mode, int freq, int channel,
|
hostapd_set_freq(struct hostapd_data *hapd, int mode, int freq, int channel,
|
||||||
int ht_enabled, int sec_channel_offset)
|
int ht_enabled, int sec_channel_offset)
|
||||||
|
@ -25,10 +25,8 @@ struct hapd_interfaces;
|
|||||||
struct hostapd_data;
|
struct hostapd_data;
|
||||||
struct sta_info;
|
struct sta_info;
|
||||||
struct hostap_sta_driver_data;
|
struct hostap_sta_driver_data;
|
||||||
|
struct ieee80211_ht_capabilities;
|
||||||
#ifdef CONFIG_FULL_DYNAMIC_VLAN
|
|
||||||
struct full_dynamic_vlan;
|
struct full_dynamic_vlan;
|
||||||
#endif /* CONFIG_FULL_DYNAMIC_VLAN */
|
|
||||||
|
|
||||||
struct hostapd_probereq_cb {
|
struct hostapd_probereq_cb {
|
||||||
void (*cb)(void *ctx, const u8 *sa, const u8 *ie, size_t ie_len);
|
void (*cb)(void *ctx, const u8 *sa, const u8 *ie, size_t ie_len);
|
||||||
@ -85,6 +83,11 @@ struct hostapd_driver_ops {
|
|||||||
int reason);
|
int reason);
|
||||||
int (*sta_disassoc)(struct hostapd_data *hapd, const u8 *addr,
|
int (*sta_disassoc)(struct hostapd_data *hapd, const u8 *addr,
|
||||||
int reason);
|
int reason);
|
||||||
|
int (*sta_add)(const char *ifname, struct hostapd_data *hapd,
|
||||||
|
const u8 *addr, u16 aid, u16 capability,
|
||||||
|
const u8 *supp_rates, size_t supp_rates_len,
|
||||||
|
u16 listen_interval,
|
||||||
|
const struct ieee80211_ht_capabilities *ht_capab);
|
||||||
int (*sta_remove)(struct hostapd_data *hapd, const u8 *addr);
|
int (*sta_remove)(struct hostapd_data *hapd, const u8 *addr);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -16,11 +16,10 @@
|
|||||||
|
|
||||||
#ifndef CONFIG_NATIVE_WINDOWS
|
#ifndef CONFIG_NATIVE_WINDOWS
|
||||||
|
|
||||||
#include <net/if.h>
|
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "eloop.h"
|
#include "eloop.h"
|
||||||
#include "crypto/crypto.h"
|
#include "crypto/crypto.h"
|
||||||
|
#include "drivers/driver.h"
|
||||||
#include "common/wpa_ctrl.h"
|
#include "common/wpa_ctrl.h"
|
||||||
#include "radius/radius.h"
|
#include "radius/radius.h"
|
||||||
#include "radius/radius_client.h"
|
#include "radius/radius_client.h"
|
||||||
@ -35,7 +34,7 @@
|
|||||||
#include "wme.h"
|
#include "wme.h"
|
||||||
#include "ap_list.h"
|
#include "ap_list.h"
|
||||||
#include "accounting.h"
|
#include "accounting.h"
|
||||||
#include "driver_i.h"
|
#include "config.h"
|
||||||
#include "mlme.h"
|
#include "mlme.h"
|
||||||
|
|
||||||
|
|
||||||
@ -1550,11 +1549,10 @@ static void handle_assoc_cb(struct hostapd_data *hapd,
|
|||||||
hostapd_get_ht_capab(hapd, sta->ht_capabilities, &ht_cap);
|
hostapd_get_ht_capab(hapd, sta->ht_capabilities, &ht_cap);
|
||||||
#endif /* CONFIG_IEEE80211N */
|
#endif /* CONFIG_IEEE80211N */
|
||||||
|
|
||||||
if (hostapd_sta_add(hapd->conf->iface, hapd, sta->addr, sta->aid,
|
if (hapd->drv.sta_add(hapd->conf->iface, hapd, sta->addr, sta->aid,
|
||||||
sta->capability, sta->supported_rates,
|
sta->capability, sta->supported_rates,
|
||||||
sta->supported_rates_len, sta->listen_interval,
|
sta->supported_rates_len, sta->listen_interval,
|
||||||
sta->flags & WLAN_STA_HT ? &ht_cap : NULL))
|
sta->flags & WLAN_STA_HT ? &ht_cap : NULL)) {
|
||||||
{
|
|
||||||
hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
|
hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
|
||||||
HOSTAPD_LEVEL_NOTICE,
|
HOSTAPD_LEVEL_NOTICE,
|
||||||
"Could not add STA to kernel driver");
|
"Could not add STA to kernel driver");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user