#ifndef IKED_EAP_H
#define IKED_EAP_H
struct eap_header {
uint8_t eap_code;
uint8_t eap_id;
uint16_t eap_length;
} __packed;
struct eap_message {
uint8_t eap_code;
uint8_t eap_id;
uint16_t eap_length;
uint8_t eap_type;
} __packed;
#define EAP_CODE_REQUEST 1
#define EAP_CODE_RESPONSE 2
#define EAP_CODE_SUCCESS 3
#define EAP_CODE_FAILURE 4
extern struct iked_constmap eap_code_map[];
#define EAP_TYPE_NONE 0
#define EAP_TYPE_IDENTITY 1
#define EAP_TYPE_NOTIFICATION 2
#define EAP_TYPE_NAK 3
#define EAP_TYPE_MD5 4
#define EAP_TYPE_OTP 5
#define EAP_TYPE_GTC 6
#define EAP_TYPE_RSA 9
#define EAP_TYPE_DSS 10
#define EAP_TYPE_KEA 11
#define EAP_TYPE_KEA_VALIDATE 12
#define EAP_TYPE_TLS 13
#define EAP_TYPE_AXENT 14
#define EAP_TYPE_SECURID 15
#define EAP_TYPE_ARCOT 16
#define EAP_TYPE_CISCO 17
#define EAP_TYPE_SIM 18
#define EAP_TYPE_SRP_SHA1 19
#define EAP_TYPE_TTLS 21
#define EAP_TYPE_RAS 22
#define EAP_TYPE_OAAKA 23
#define EAP_TYPE_3COM 24
#define EAP_TYPE_PEAP 25
#define EAP_TYPE_MSCHAP_V2 26
#define EAP_TYPE_MAKE 27
#define EAP_TYPE_CRYPTOCARD 28
#define EAP_TYPE_MSCHAP_V2_2 29
#define EAP_TYPE_DYNAMID 30
#define EAP_TYPE_ROB 31
#define EAP_TYPE_POTP 32
#define EAP_TYPE_MS_TLV 33
#define EAP_TYPE_SENTRINET 34
#define EAP_TYPE_ACTIONTEC 35
#define EAP_TYPE_BIOMETRICS 36
#define EAP_TYPE_AIRFORTRESS 37
#define EAP_TYPE_HTTP_DIGEST 38
#define EAP_TYPE_SECURESUITE 39
#define EAP_TYPE_DEVICECONNECT 40
#define EAP_TYPE_SPEKE 41
#define EAP_TYPE_MOBAC 42
#define EAP_TYPE_FAST 43
#define EAP_TYPE_ZLX 44
#define EAP_TYPE_LINK 45
#define EAP_TYPE_PAX 46
#define EAP_TYPE_PSK 47
#define EAP_TYPE_SAKE 48
#define EAP_TYPE_IKEV2 49
#define EAP_TYPE_AKA2 50
#define EAP_TYPE_GPSK 51
#define EAP_TYPE_PWD 52
#define EAP_TYPE_EXPANDED_TYPE 254
#define EAP_TYPE_EXPERIMENTAL 255
#define EAP_TYPE_RADIUS 10001
extern struct iked_constmap eap_type_map[];
#define EAP_MSCHAP_CHALLENGE_SZ 16
#define EAP_MSCHAP_RESPONSE_SZ 49
#define EAP_MSCHAP_NTRESPONSE_SZ 24
#define EAP_MSCHAP_SUCCESS_SZ 42
#define EAP_MSOPCODE_CHALLENGE 1
#define EAP_MSOPCODE_RESPONSE 2
#define EAP_MSOPCODE_SUCCESS 3
#define EAP_MSOPCODE_FAILURE 4
#define EAP_MSOPCODE_CHANGE_PASSWORD 7
extern struct iked_constmap eap_msopcode_map[];
struct eap_mschap {
uint8_t ms_opcode;
} __packed;
struct eap_mschap_challenge {
uint8_t msc_opcode;
uint8_t msc_id;
uint16_t msc_length;
uint8_t msc_valuesize;
uint8_t msc_challenge[EAP_MSCHAP_CHALLENGE_SZ];
} __packed;
struct eap_mschap_peer {
uint8_t msp_challenge[EAP_MSCHAP_CHALLENGE_SZ];
uint8_t msp_reserved[8];
uint8_t msp_ntresponse[EAP_MSCHAP_NTRESPONSE_SZ];
uint8_t msp_flags;
};
struct eap_mschap_response {
uint8_t msr_opcode;
uint8_t msr_id;
uint16_t msr_length;
uint8_t msr_valuesize;
union {
uint8_t resp_data[EAP_MSCHAP_RESPONSE_SZ];
struct eap_mschap_peer resp_peer;
} msr_response;
} __packed;
struct eap_mschap_success {
uint8_t mss_opcode;
uint8_t mss_id;
uint16_t mss_length;
} __packed;
struct eap_mschap_failure {
uint8_t msf_opcode;
uint8_t msf_id;
uint16_t msf_length;
} __packed;
#define EAP_MSERROR_RESTRICTED_LOGON_HOURS 646
#define EAP_MSERROR_ACCT_DISABLED 647
#define EAP_MSERROR_PASSWD_EXPIRED 648
#define EAP_MSERROR_NO_DIALIN_PERMISSION 649
#define EAP_MSERROR_AUTHENTICATION_FAILURE 691
#define EAP_MSERROR_CHANGING_PASSWORD 709
extern struct iked_constmap eap_mserror_map[];
#endif