diff options
author | Matti Gottlieb <matti.gottlieb@intel.com> | 2016-04-06 14:14:40 (GMT) |
---|---|---|
committer | Jouni Malinen <j@w1.fi> | 2016-04-08 10:13:55 (GMT) |
commit | e42adb9a75d140ea504203dfffbad492fa4e5c73 (patch) | |
tree | 1829470fd036421a72171ceed8597812818b832c | |
parent | ae33239c555313e547b9a2a376c927ec50e2b9de (diff) | |
download | hostap-e42adb9a75d140ea504203dfffbad492fa4e5c73.zip hostap-e42adb9a75d140ea504203dfffbad492fa4e5c73.tar.gz hostap-e42adb9a75d140ea504203dfffbad492fa4e5c73.tar.bz2 |
driver: Add a packet filtering function declaration
Add a new function declaration that will allow wpa_supplicant to request
the driver to configure data frame filters for specific cases.
Add definitions that will allow frame filtering for stations as
required by Hotspot 2.0:
1. Gratuitous ARP
2. Unsolicited NA
3. Unicast IP packets encrypted with GTK
Signed-off-by: Matti Gottlieb <matti.gottlieb@intel.com>
-rw-r--r-- | src/drivers/driver.h | 16 | ||||
-rw-r--r-- | wpa_supplicant/driver_i.h | 9 |
2 files changed, 25 insertions, 0 deletions
diff --git a/src/drivers/driver.h b/src/drivers/driver.h index 7948950..a787d7d 100644 --- a/src/drivers/driver.h +++ b/src/drivers/driver.h @@ -54,6 +54,13 @@ #define HOSTAPD_CHAN_VHT_130_30 0x04000000 #define HOSTAPD_CHAN_VHT_150_10 0x08000000 +/* Filter gratuitous ARP */ +#define WPA_DATA_FRAME_FILTER_FLAG_ARP BIT(0) +/* Filter unsolicited Neighbor Advertisement */ +#define WPA_DATA_FRAME_FILTER_FLAG_NA BIT(1) +/* Filter unicast IP packets encrypted using the GTK */ +#define WPA_DATA_FRAME_FILTER_FLAG_GTK BIT(2) + /** * enum reg_change_initiator - Regulatory change initiator */ @@ -3538,6 +3545,15 @@ struct wpa_driver_ops { * Returns 0 on success, -1 on failure */ int (*abort_scan)(void *priv); + + /** + * configure_data_frame_filters - Request to configure frame filters + * @priv: Private driver interface data + * @filter_flags: The type of frames to filter (bitfield of + * WPA_DATA_FRAME_FILTER_FLAG_*) + * Returns: 0 on success or -1 on failure + */ + int (*configure_data_frame_filters)(void *priv, u32 filter_flags); }; diff --git a/wpa_supplicant/driver_i.h b/wpa_supplicant/driver_i.h index 699fd4f..7a213b6 100644 --- a/wpa_supplicant/driver_i.h +++ b/wpa_supplicant/driver_i.h @@ -917,4 +917,13 @@ static inline int wpa_drv_abort_scan(struct wpa_supplicant *wpa_s) return wpa_s->driver->abort_scan(wpa_s->drv_priv); } +static inline int wpa_drv_configure_frame_filters(struct wpa_supplicant *wpa_s, + u32 filters) +{ + if (!wpa_s->driver->configure_data_frame_filters) + return -1; + return wpa_s->driver->configure_data_frame_filters(wpa_s->drv_priv, + filters); +} + #endif /* DRIVER_I_H */ |