Moved the management of the AP and Stations from nl80211 driver to generic wifi.
This commit is contained in:
@ -284,6 +284,38 @@ int ieee80211_is_broadcast_addr(const uint8_t* addr) {
|
||||
return (((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) && (addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff)) ? 1 : 0);
|
||||
}
|
||||
|
||||
/* */
|
||||
const uint8_t* ieee80211_get_bssid_addr(const struct ieee80211_header* header) {
|
||||
uint16_t framecontrol;
|
||||
uint16_t framecontrol_type;
|
||||
|
||||
ASSERT(header);
|
||||
|
||||
/* Get type frame */
|
||||
framecontrol = __le16_to_cpu(header->framecontrol);
|
||||
framecontrol_type = IEEE80211_FRAME_CONTROL_GET_TYPE(framecontrol);
|
||||
|
||||
if (framecontrol_type == IEEE80211_FRAMECONTROL_TYPE_MGMT) {
|
||||
return header->address3;
|
||||
} else if (framecontrol_type == IEEE80211_FRAMECONTROL_TYPE_DATA) {
|
||||
switch (framecontrol & (IEEE80211_FRAME_CONTROL_MASK_TODS | IEEE80211_FRAME_CONTROL_MASK_FROMDS)) {
|
||||
case 0: {
|
||||
return header->address3;
|
||||
}
|
||||
|
||||
case IEEE80211_FRAME_CONTROL_MASK_TODS: {
|
||||
return header->address1;
|
||||
}
|
||||
|
||||
case IEEE80211_FRAME_CONTROL_MASK_FROMDS: {
|
||||
return header->address2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* */
|
||||
int ieee80211_is_valid_ssid(const char* ssid, struct ieee80211_ie_ssid* iessid, struct ieee80211_ie_ssid_list* isssidlist) {
|
||||
int ssidlength;
|
||||
|
@ -99,9 +99,21 @@
|
||||
#define IEEE80211_FRAMECONTROL_DATA_SUBTYPE_QOSCFACK_CFPOLL 15
|
||||
|
||||
/* */
|
||||
#define IEEE80211_FRAME_CONTROL_MASK_PROTOCOL_VERSION 0x0003
|
||||
#define IEEE80211_FRAME_CONTROL_MASK_TYPE 0x000c
|
||||
#define IEEE80211_FRAME_CONTROL_MASK_SUBTYPE 0x00f0
|
||||
#define IEEE80211_FRAME_CONTROL_MASK_TODS 0x0100
|
||||
#define IEEE80211_FRAME_CONTROL_MASK_FROMDS 0x0200
|
||||
#define IEEE80211_FRAME_CONTROL_MASK_MORE_FRAGMENT 0x0400
|
||||
#define IEEE80211_FRAME_CONTROL_MASK_RETRY 0x0800
|
||||
#define IEEE80211_FRAME_CONTROL_MASK_POWER_MANAGEMENT 0x1000
|
||||
#define IEEE80211_FRAME_CONTROL_MASK_MORE_DATA 0x2000
|
||||
#define IEEE80211_FRAME_CONTROL_MASK_PROTECTED_FRAME 0x4000
|
||||
#define IEEE80211_FRAME_CONTROL_MASK_ORDER 0x8000
|
||||
|
||||
#define IEEE80211_FRAME_CONTROL(type, stype) __cpu_to_le16((type << 2) | (stype << 4))
|
||||
#define IEEE80211_FRAME_CONTROL_GET_TYPE(framecontrol) (((framecontrol) & 0x000c) >> 2)
|
||||
#define IEEE80211_FRAME_CONTROL_GET_SUBTYPE(framecontrol) (((framecontrol) & 0x00f0) >> 4)
|
||||
#define IEEE80211_FRAME_CONTROL_GET_TYPE(framecontrol) (((framecontrol) & IEEE80211_FRAME_CONTROL_MASK_TYPE) >> 2)
|
||||
#define IEEE80211_FRAME_CONTROL_GET_SUBTYPE(framecontrol) (((framecontrol) & IEEE80211_FRAME_CONTROL_MASK_SUBTYPE) >> 4)
|
||||
|
||||
/* IEEE802.11 Status Code */
|
||||
#define IEEE80211_STATUS_SUCCESS 0
|
||||
@ -572,6 +584,7 @@ int ieee80211_create_deauthentication(uint8_t* buffer, int length, struct ieee80
|
||||
int ieee80211_retrieve_information_elements_position(struct ieee80211_ie_items* items, const uint8_t* data, int length);
|
||||
unsigned long ieee80211_frequency_to_channel(uint32_t freq);
|
||||
int ieee80211_is_broadcast_addr(const uint8_t* addr);
|
||||
const uint8_t* ieee80211_get_bssid_addr(const struct ieee80211_header* header);
|
||||
|
||||
/* */
|
||||
#define IEEE80211_VALID_SSID 1
|
||||
|
@ -39,6 +39,9 @@
|
||||
#define min(a,b) ((a) <= (b) ? (a) : (b))
|
||||
#endif
|
||||
|
||||
/* Opaque type */
|
||||
#define DECLARE_OPAQUE_TYPE(name) struct name##__opaque__ { int unused; }; typedef struct name##__opaque__* name
|
||||
|
||||
/* UDPLite */
|
||||
#ifdef HAVE_NETINET_UDPLITE_H
|
||||
#include <netinet/udplite.h>
|
||||
@ -55,6 +58,7 @@
|
||||
#endif
|
||||
|
||||
/* standard include */
|
||||
#include "capwap_rfc.h"
|
||||
#include "capwap_logging.h"
|
||||
#include "capwap_debug.h"
|
||||
#include "capwap_error.h"
|
||||
|
@ -1,7 +1,6 @@
|
||||
#ifndef __CAPWAP_ELEMENT_HEADER__
|
||||
#define __CAPWAP_ELEMENT_HEADER__
|
||||
|
||||
#include "capwap_rfc.h"
|
||||
#include "capwap_array.h"
|
||||
#include "capwap_list.h"
|
||||
|
||||
|
@ -1,7 +1,6 @@
|
||||
#ifndef __CAPWAP_PROTOCOL_HEADER__
|
||||
#define __CAPWAP_PROTOCOL_HEADER__
|
||||
|
||||
#include "capwap_rfc.h"
|
||||
#include "capwap_element.h"
|
||||
#include "capwap_network.h"
|
||||
#include "capwap_dtls.h"
|
||||
|
Reference in New Issue
Block a user