~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/linux/802_11.h

Version: ~ [ 2.2.5 ] ~ [ 2.4.1 ] ~ [ 2.4.9 ] ~ [ 2.6.17.10 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #ifndef IEEE_802_11
  2 #define IEEE_802_11  
  3 
  4 #include <linux/types.h>
  5 
  6 enum 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 
 36 struct 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 
 49 struct 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 
 60 struct 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 
 71 struct 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 
 81 struct 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 }
155 struct 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

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.