Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #ifndef EAP_PACKET_H
0003 #define EAP_PACKET_H
0004 
0005 #include <linux/compiler.h>
0006 #include <linux/bitops.h>
0007 #include <uapi/linux/if_ether.h>
0008 
0009 struct ether_hdr {
0010     unsigned char h_dest[ETH_ALEN]; /* destination eth addr */
0011     unsigned char h_source[ETH_ALEN];   /* source ether addr    */
0012     unsigned char h_dest_snap;
0013     unsigned char h_source_snap;
0014     unsigned char h_command;
0015     unsigned char h_vendor_id[3];
0016     __be16 h_proto; /* packet type ID field */
0017     /* followed by length octets of data */
0018 } __packed;
0019 
0020 #define ETHER_HDR_SIZE sizeof(struct ether_hdr)
0021 
0022 struct ieee802_1x_hdr {
0023     unsigned char version;
0024     unsigned char type;
0025     unsigned short length;
0026     /* followed by length octets of data */
0027 } __packed;
0028 
0029 enum {
0030     IEEE802_1X_TYPE_EAP_PACKET = 0,
0031     IEEE802_1X_TYPE_EAPOL_START = 1,
0032     IEEE802_1X_TYPE_EAPOL_LOGOFF = 2,
0033     IEEE802_1X_TYPE_EAPOL_KEY = 3,
0034     IEEE802_1X_TYPE_EAPOL_ENCAPSULATED_ASF_ALERT = 4
0035 };
0036 
0037 #define WPA_NONCE_LEN 32
0038 #define WPA_REPLAY_COUNTER_LEN 8
0039 
0040 struct wpa_eapol_key {
0041     unsigned char type;
0042     __be16 key_info;
0043     unsigned short key_length;
0044     unsigned char replay_counter[WPA_REPLAY_COUNTER_LEN];
0045     unsigned char key_nonce[WPA_NONCE_LEN];
0046     unsigned char key_iv[16];
0047     unsigned char key_rsc[8];
0048     unsigned char key_id[8];    /* Reserved in IEEE 802.11i/RSN */
0049     unsigned char key_mic[16];
0050     unsigned short key_data_length;
0051     /* followed by key_data_length bytes of key_data */
0052 } __packed;
0053 
0054 #define WPA_KEY_INFO_TYPE_MASK GENMASK(2, 0)
0055 #define WPA_KEY_INFO_TYPE_HMAC_MD5_RC4 BIT(0)
0056 #define WPA_KEY_INFO_TYPE_HMAC_SHA1_AES BIT(1)
0057 #define WPA_KEY_INFO_KEY_TYPE BIT(3)    /* 1 = Pairwise, 0 = Group key */
0058 /* bit4..5 is used in WPA, but is reserved in IEEE 802.11i/RSN */
0059 #define WPA_KEY_INFO_KEY_INDEX_MASK GENMASK(5, 4)
0060 #define WPA_KEY_INFO_KEY_INDEX_SHIFT 4
0061 #define WPA_KEY_INFO_INSTALL BIT(6) /* pairwise */
0062 #define WPA_KEY_INFO_TXRX BIT(6)    /* group */
0063 #define WPA_KEY_INFO_ACK BIT(7)
0064 #define WPA_KEY_INFO_MIC BIT(8)
0065 #define WPA_KEY_INFO_SECURE BIT(9)
0066 #define WPA_KEY_INFO_ERROR BIT(10)
0067 #define WPA_KEY_INFO_REQUEST BIT(11)
0068 #define WPA_KEY_INFO_ENCR_KEY_DATA BIT(12)  /* IEEE 802.11i/RSN only */
0069 
0070 #endif /* EAP_PACKET_H */