linux-old/include/linux/802_11.h
<<
>>
Prefs
   1#ifndef IEEE_802_11
   2#define IEEE_802_11  
   3
   4#include <linux/types.h>
   5
   6enum ieee_802_11_link_status_failure_reason {
   7        reserved0, Unspecified=1, Previous_not_valid, 
   8        Sender_Quits_ESS_or_IBSS,
   9        Due_Inactivity, AP_Overload, 
  10        Class_2_from_NonAuth,
  11        Class_3_from_NonAuth,
  12        Sender_Quits_BSS,
  13        Association_requester_not_authenticated,
  14        Reserved10 
  15};
  16        
  17        
  18#define IEEE_802_11_LINK_STATUS_FAILURE_REASON_STRINGS \
  19{       \
  20        {reserved0,             0xff," Reserved reason "},\
  21        {Unspecified,           0xff," Unspecified Reason "},\
  22        {Previous_not_valid,    0xff," Previous Authentication no longer valid "},\
  23        {Sender_Quits_ESS_or_IBSS,0xff," Deauthenticated because sending station is leaving (has left) IBSS or ESS "},\
  24        {Due_Inactivity,        0xff," Disassociated due to inactivity "},\
  25        {AP_Overload,           0xff," Disassociated because AP is unable to handle all currently associated stations "},\
  26        {Class_2_from_NonAuth,  0xff," Class 2 frame received from non-Authenticated station"},\
  27        {Class_3_from_NonAuth,  0xff," Class 3 frame received from non­Associated station"},\
  28        {Sender_Quits_BSS,      0xff," Disassociated because sending station is leaving (has left) BSS"},\
  29        {Association_requester_not_authenticated,0xff," Station requesting (Re)Association is not Authenticated with responding station"},\
  30        {Reserved10,            0xff," Reserved"},\
  31        {0,0,NULL}\
  32};
  33
  34
  35
  36struct ieee_802_11_header {
  37        u16     frame_control;// needs to be subtyped
  38        u16     duration;
  39        u8      mac1[6];
  40        u8      mac2[6];
  41        u8      mac3[6];
  42        u16     SeqCtl;
  43        u8      mac4[6];
  44        u16     gapLen;
  45        u8      gap[8];
  46};
  47
  48
  49struct ieee_802_3_header {
  50
  51        u16     status;
  52        u16     payload_length;
  53        u8      dst_mac[6];
  54        u8      src_mac[6];
  55        
  56};
  57
  58#define P80211_OUI_LEN 3
  59
  60struct ieee_802_11_snap_header { 
  61
  62        u8    dsap;   /* always 0xAA */
  63        u8    ssap;   /* always 0xAA */
  64        u8    ctrl;   /* always 0x03 */
  65        u8    oui[P80211_OUI_LEN];    /* organizational universal id */
  66
  67} __attribute__ ((packed));
  68
  69#define P80211_LLC_OUI_LEN 3
  70
  71struct ieee_802_11_802_1H_header {
  72
  73        u8    dsap;   
  74        u8    ssap;   /* always 0xAA */
  75        u8    ctrl;   /* always 0x03 */
  76        u8    oui[P80211_OUI_LEN];    /* organizational universal id */
  77        u16    unknown1;      /* packet type ID fields */
  78        u16    unknown2;                /* here is something like length in some cases */
  79} __attribute__ ((packed));
  80
  81struct ieee_802_11_802_2_header {
  82
  83        u8    dsap;   
  84        u8    ssap;   /* always 0xAA */
  85        u8    ctrl;   /* always 0x03 */
  86        u8    oui[P80211_OUI_LEN];    /* organizational universal id */
  87        u8    type;      /* packet type ID field. i guess,  */
  88
  89} __attribute__ ((packed));
  90
  91
  92
  93// following is incoplete and may be incorrect and need reorganization
  94
  95#define ieee_802_11_frame_type_Management       0x00
  96#define ieee_802_11_frame_type_Control          0x01
  97#define ieee_802_11_frame_type_Data             0x10
  98#define ieee_802_11_frame_type_Reserved         0x11
  99
 100#define ieee_802_11_frame_subtype_Association_Req       0x0 // Association Request
 101#define ieee_802_11_frame_subtype_Association_Resp      0x1 // Association Response
 102#define ieee_802_11_frame_subtype_Reassociation_Req     0x2 // Reassociation Request
 103#define ieee_802_11_frame_subtype_Reassociation_Resp    0x3 // Reassociation Response
 104#define ieee_802_11_frame_subtype_Probe_Req             0x4 // Probe Request
 105#define ieee_802_11_frame_subtype_Probe_Resp            0x5 // Probe Response
 106#define ieee_802_11_frame_subtype_Beacon                0x8 // Beacon
 107#define ieee_802_11_frame_subtype_ATIM                  0x9 // ATIM
 108#define ieee_802_11_frame_subtype_Disassociation        0xA // Disassociation
 109#define ieee_802_11_frame_subtype_Authentication        0xB // Authentication
 110#define ieee_802_11_frame_subtype_Deauthentication      0xC // Deauthentication
 111#define ieee_802_11_frame_subtype_PS_Poll               0xA // PS-Poll
 112#define ieee_802_11_frame_subtype_RTS                   0xB // RTS
 113#define ieee_802_11_frame_subtype_CTS                   0xC // CTS
 114#define ieee_802_11_frame_subtype_ACK                   0xD // ACK
 115#define ieee_802_11_frame_subtype_CFEnd                 0xE // CF-End
 116#define ieee_802_11_frame_subtype_CFEnd_CFAck           0xF // CF-End + CF-Ack
 117#define ieee_802_11_frame_subtype_Data                  0x0 // Data
 118#define ieee_802_11_frame_subtype_Data_CFAck            0x1 // Data + CF-Ack
 119#define ieee_802_11_frame_subtype_Data_CF_Poll          0x2 // Data + CF-Poll
 120#define ieee_802_11_frame_subtype_Data_CF_AckCF_Poll    0x3 // Data + CF-Ack + CF-Poll
 121#define ieee_802_11_frame_subtype_NullFunction          0x4 // Null Function (no data)
 122#define ieee_802_11_frame_subtype_CF_Ack                0x5 // CF-Ack (no data)
 123#define ieee_802_11_frame_subtype_CF_Poll               0x6 // CF-Poll (no data)
 124#define ieee_802_11_frame_subtype_CF_AckCF_Poll         0x7 // CF-Ack + CF-Poll (no data)
 125
 126
 127#define ieee_802_11_frame_subtype_strings {\
 128        { ieee_802_11_frame_subtype_Association_Req,    0xF,"f  Association Request"},\
 129        { ieee_802_11_frame_subtype_Association_Resp,   0xF,"1  Association Response"},\
 130        { ieee_802_11_frame_subtype_Reassociation_Req,  0xF,"2  Reassociation Request"},\
 131        { ieee_802_11_frame_subtype_Reassociation_Resp, 0xF,"3  Reassociation Response"},\
 132        { ieee_802_11_frame_subtype_Probe_Req   ,       0xF,"4  Probe Request"},\
 133        { ieee_802_11_frame_subtype_Probe_Resp  ,       0xF,"5  Probe Response"},\
 134        { ieee_802_11_frame_subtype_Beacon      ,       0xF,"8  Beacon"},\
 135        { ieee_802_11_frame_subtype_ATIM        ,       0xF,"9  ATIM"},\
 136        { ieee_802_11_frame_subtype_Disassociation,     0xF,"A  Disassociation"},\
 137        { ieee_802_11_frame_subtype_Authentication,     0xF,"B  Authentication"},\
 138        { ieee_802_11_frame_subtype_Deauthentication,   0xF,"C  Deauthentication"},\
 139        { ieee_802_11_frame_subtype_PS_Poll     ,       0xF,"A  PS-Poll"},\
 140        { ieee_802_11_frame_subtype_RTS         ,       0xF,"B  RTS"},\
 141        { ieee_802_11_frame_subtype_CTS         ,       0xF,"C  CTS"},\
 142        { ieee_802_11_frame_subtype_ACK         ,       0xF,"D  ACK"},\
 143        { ieee_802_11_frame_subtype_CFEnd       ,       0xF,"E  CF-End"},\
 144        { ieee_802_11_frame_subtype_CFEnd_CFAck ,       0xF,"F  CF-End + CF-Ack"},\
 145        { ieee_802_11_frame_subtype_Data        ,       0xF,"0  Data"},\
 146        { ieee_802_11_frame_subtype_Data_CFAck  ,       0xF,"1  Data + CF-Ack"},\
 147        { ieee_802_11_frame_subtype_Data_CFPoll ,       0xF,"2  Data + CF-Poll"},\
 148        { ieee_802_11_frame_subtype_Data_CFAck_CFPoll,  0xF,"3  Data + CF-Ack + CF-Poll"},\
 149        { ieee_802_11_frame_subtype_Null_Function ,     0xF,"4  Null Function (no data)"},\
 150        { ieee_802_11_frame_subtype_CFAck ,             0xF,"5  CF-Ack (no data)"},\
 151        { ieee_802_11_frame_subtype_CFPoll ,            0xF,"6  CF-Poll (no data)"},\
 152        { ieee_802_11_frame_subtype_CFAck_CFPoll,       0xF,"y7  CF-Ack + CF-Poll (no data)"},\
 153        { 0,0,NULL}\
 154}
 155struct ieee_802_11_frame_subtype_class {
 156        u8      subtype;
 157        u8      mask;
 158        u8      class;
 159        u8      type;
 160};
 161#define ieee_802_11_frame_subtype_classes {\
 162        { ieee_802_11_frame_subtype_Association_Req,    0xF,2,ieee_802_11_frame_type_Management},\
 163        { ieee_802_11_frame_subtype_Association_Resp,   0xF,2,ieee_802_11_frame_type_Management},\
 164        { ieee_802_11_frame_subtype_Reassociation_Req,  0xF,2,ieee_802_11_frame_type_Management},\
 165        { ieee_802_11_frame_subtype_Reassociation_Resp, 0xF,2,ieee_802_11_frame_type_Management},\
 166        { ieee_802_11_frame_subtype_Probe_Req   ,       0xF,1,ieee_802_11_frame_type_Management},\
 167        { ieee_802_11_frame_subtype_Probe_Resp  ,       0xF,1,ieee_802_11_frame_type_Management},\
 168        { ieee_802_11_frame_subtype_Beacon      ,       0xF,1,ieee_802_11_frame_type_Management},\
 169        { ieee_802_11_frame_subtype_ATIM        ,       0xF,1,ieee_802_11_frame_type_Management},\
 170        { ieee_802_11_frame_subtype_Disassociation,     0xF,2,ieee_802_11_frame_type_Management},\
 171        { ieee_802_11_frame_subtype_Authentication,     0xF,1,ieee_802_11_frame_type_Management},\
 172        { ieee_802_11_frame_subtype_Deauthentication,   0xF,3,ieee_802_11_frame_type_Management},\
 173        { ieee_802_11_frame_subtype_PS-Poll     ,       0xF,3,ieee_802_11_frame_type_Control},\
 174        { ieee_802_11_frame_subtype_RTS         ,       0xF,1,ieee_802_11_frame_type_Control},\
 175        { ieee_802_11_frame_subtype_CTS         ,       0xF,1,ieee_802_11_frame_type_Control},\
 176        { ieee_802_11_frame_subtype_ACK         ,       0xF,1,ieee_802_11_frame_type_Control},\
 177        { ieee_802_11_frame_subtype_CFEnd       ,       0xF,1,ieee_802_11_frame_type_Control},\
 178        { ieee_802_11_frame_subtype_CFEnd_CFAck ,       0xF,1,ieee_802_11_frame_type_Control},\
 179        { ieee_802_11_frame_subtype_Data        ,       0xF,3,ieee_802_11_frame_type_Data},\
 180        { ieee_802_11_frame_subtype_Data_CFAck  ,       0xF,3,ieee_802_11_frame_type_Data},\
 181        { ieee_802_11_frame_subtype_Data_CF_Poll        0xF,3,ieee_802_11_frame_type_Data},\
 182        { ieee_802_11_frame_subtype_Data_CF_AckCF_Poll, 0xF,3,ieee_802_11_frame_type_Data},\
 183        { ieee_802_11_frame_subtype_NullFunction        0xF,1,ieee_802_11_frame_type_Data},\
 184        { ieee_802_11_frame_subtype_CF_Ack ,            0xF,1,ieee_802_11_frame_type_Data},\
 185        { ieee_802_11_frame_subtype_CF_Poll ,           0xF,1,ieee_802_11_frame_type_Data},\
 186        { ieee_802_11_frame_subtype_CF_AckCF_Poll,      0xF,1,ieee_802_11_frame_type_Data},\
 187        { 0,0,NULL}\
 188}
 189
 190
 191#endif
 192
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.