32 #ifndef __EAP_HEADER__ 33 #define __EAP_HEADER__ 40 #if defined(MOC_LITTLE_ENDIAN) 41 #define EAP_NTOHS(A) SWAPWORD(A) 42 #define EAP_HTONS(A) SWAPWORD(A) 43 #define EAP_NTOHL(A) SWAPDWORD(A) 44 #define EAP_HTONL(A) SWAPDWORD(A) 45 #elif defined(MOC_BIG_ENDIAN) 46 #define EAP_NTOHS(A) (A) 47 #define EAP_HTONS(A) (A) 48 #define EAP_NTOHL(A) (A) 49 #define EAP_HTONL(A) (A) 50 #elif defined(__ENABLE_MOCANA_EAP_PEER__) || defined(__ENABLE_MOCANA_EAP_AUTH__) || defined(__ENABLE_MOCANA_EAPOL__) 51 #error Must define either MOC_LITTLE_ENDIAN or MOC_BIG_ENDIAN in moptions.h 54 #if defined(__ENABLE_MOCANA_EAP_PEER__) || defined(__ENABLE_MOCANA_EAP_AUTH__) 57 #define TIMEOUT_EAP_CLIENT (30) 58 #define TIMEOUT_EAP_RETRANSMIT (10) 61 #define EAP_DEFAULT_MTU (1020) 62 #define EAP_DEFAULT_RETRY_TIMER (5) 65 #define EAP_SHA_FINGER_PRINT_SIZE (20) 66 #define EAP_MD5_FINGER_PRINT_SIZE (16) 67 #define EAP_BUFFER_SIZE (1020) 68 #define EAP_HEADER_SIZE (8) 69 #define EAP_MAX_IDENTITY_SIZE (128) 70 #define EAP_MAX_KEY_SIZE (256) 71 #define EAP_MAX_METHOD_NAME (64) 72 #define EAP_MAX_ROUNDS (50) 73 #define EAP_MAX_METHODS (25) 74 #define EAP_MAX_USER_LEN (64) 75 #define EAP_MAX_PASS_LEN (64) 78 #define EAP_SET_VERSION (1) 81 #define EAP_VENDOR_ID_IETF (0) 83 #include "../eap/eap_proto.h" 86 typedef enum logLevel_s
91 EAP_LOG_LEVEL_VERBOSE,
112 typedef struct eapMethodDef_s
126 ubyte method_name[EAP_MAX_METHOD_NAME];
167 MSTATUS (*funcPtr_ulReceiveCallback) (ubyte * app_session_handle,
169 eapCode code, ubyte id,
171 ubyte4 eap_data_len, ubyte * opaque_data);
213 MSTATUS (*funcPtr_ulReceivePassthruCallback) (ubyte * app_session_handle,
215 eapCode code, ubyte id,
216 ubyte * eap_data, ubyte4 eap_data_len,
217 ubyte * opaque_data);
262 MSTATUS (*funcPtr_ulReceiveIndication) (ubyte * app_session_handle,
263 eapIndication ind_type,
264 ubyte * data, ubyte4 data_len);
298 MSTATUS (*funcPtr_ulMICVerify) (ubyte * app_session_handle,
299 ubyte * pkt, ubyte4 pkt_len);
331 MSTATUS (*funcPtr_ulGetMethodstate) (ubyte * app_session_handle,
332 ubyte4 * methodState);
364 MSTATUS (*funcPtr_ulGetDecision) (ubyte * app_session_handle,
400 MSTATUS (*funcPtr_llTransmitPacket) (ubyte * app_session_handle,
402 ubyte * eap_data, ubyte4 eap_data_len);
407 typedef struct eapExpandedMethod_t
410 ubyte method_type[4];
411 } eapExpandedMethod_t;
415 typedef struct eapGlobalStats_s
417 ubyte4 eap_total_pkts_sent;
418 ubyte4 eap_total_pkts_received;
419 ubyte4 eap_total_pkts_discard;
420 ubyte4 eap_no_of_create_sessions;
421 ubyte4 eap_no_of_modify_sessions;
422 ubyte4 eap_no_of_active_sessions;
423 ubyte4 eap_no_of_failed_sessions;
424 ubyte4 eap_no_of_restart_sessions;
425 ubyte4 eap_no_of_session_success;
426 ubyte4 eap_no_of_session_failure;
427 ubyte4 eap_no_of_retransmission;
428 ubyte4 eap_no_of_peer_timeouts;
429 ubyte4 eap_pkts_drop_invalid_session;
430 ubyte4 eap_pkts_drop_invalid_pkt;
436 typedef struct eapSessionStats_s
438 ubyte4 eap_pkts_ll_sent;
439 ubyte4 eap_pkts_ll_received;
440 ubyte4 eap_pkts_ul_callback;
441 ubyte4 eap_pkts_ul_received;
442 ubyte4 eap_pkts_retransmitted;
443 ubyte4 eap_pkts_discard;
444 ubyte4 eap_pkts_drop_ul_nocallback;
445 ubyte4 eap_pkts_drop_invalid_pkt;
446 ubyte4 eap_pkts_tx_id_resp;
447 ubyte4 eap_pkts_rx_id_resp;
448 ubyte4 eap_pkts_rx_id_req;
449 ubyte4 eap_pkts_tx_id_req;
454 typedef struct eapSessionConfig_s
456 eapSessionType sessionType;
458 ubyte4 eap_ul_timeout;
459 ubyte4 eap_retrans_timeout;
460 ubyte4 eap_max_retrans;
462 } eapSessionConfig_t;
464 #define EAP_OPTIONS_ENABLE_FORCED_AUTH (0x1) 466 #define EAP_MOD_METHOD_DEF (0x1) 467 #define EAP_MOD_SESSION_TYPE (0x2) 468 #define EAP_MOD_SESSION_MTU (0x4) 469 #define EAP_MOD_SESSION_UL_TIMEOUT (0x8) 470 #define EAP_MOD_SESSION_RETRANS_TIMEOUT (0x10) 471 #define EAP_MOD_SESSION_MAX_RETRANS (0x20) 517 eapMethodType method_type,
519 eapMethodDecision methodDecision,
520 eapMethodState methodState,
522 ubyte4 eap_data_len);
566 ubyte * opaque_data);
616 eapAltIndication altIndication);
662 eapSessionConfig_t cfgParam ,
663 ubyte ** eapSessionHdl);
713 eapSessionConfig_t cfgParam,
714 ubyte4 modifiedFlag);
888 MOC_EXTERN MSTATUS
EAP_getIdentity(ubyte * eapSessionHdl, ubyte4 instanceId,
889 ubyte **identity, ubyte4 *len);
920 MOC_EXTERN MSTATUS
EAP_setIdentity(ubyte * eapSessionHdl, ubyte4 instanceId,
921 ubyte *identity,ubyte4 len);
955 MOC_EXTERN MSTATUS
EAP_getKey(ubyte * eapSessionHdl,
957 ubyte **key, ubyte *keylen);
991 MOC_EXTERN MSTATUS
EAP_setKey(ubyte * eapSessionHdl,
993 ubyte *key, ubyte4 keylen);
1030 eapAuthStatus *authStatus);
1032 struct eapSessionStatus_s;
1064 struct eapSessionStatus_s *eapStatus);
1114 eapSessionStats_t *eapStats);
1161 eapGlobalStats_t *stats);
1420 eapExpandedMethod_t *expMethods, ubyte expMethodCount,
1421 ubyte **eapResponse, ubyte4 *eapRespLen);
1458 ubyte4 expVendorId, ubyte4 expMethodId,
1459 ubyte *eapPayload, ubyte4 eapPayloadLen,
1460 ubyte **eapResponse, ubyte4 *eapRespLen);
1497 ubyte* nakMethods, ubyte4 nakMethodCount,
1498 ubyte **eapResponse, ubyte4 *eapRespLen);
1537 ubyte methodState, ubyte methodDecision);
1576 ubyte
id, ubyte type);
1613 EAP_getAppHdl(ubyte4 eapSessionHdl,
1614 ubyte4 instanceId,ubyte **appHdl);
1616 #if defined(__ENABLE_ALL_DEBUGGING__) 1618 MOC_EXTERN
void EAP_PrintBytes( ubyte* buffer, sbyte4 len);
1621 #if defined(__ENABLE_MOCANA_EAP_AUTH__) 1681 MOC_EXTERN MSTATUS
EAP_getMtu(ubyte *eapSessionHdl, ubyte4 instanceId, ubyte4 *mtu);
MOC_EXTERN MSTATUS EAP_llReceivePacket(ubyte *eapSessionHdl, ubyte4 instanceId, ubyte *eap_pkt, ubyte4 eap_pkt_len, ubyte *opaque_data)
Pass a received packet from the lower layer to the upper for processing.
MOC_EXTERN MSTATUS EAP_getIdentity(ubyte *eapSessionHdl, ubyte4 instanceId, ubyte **identity, ubyte4 *len)
Get EAP session's identity string.
MOC_EXTERN MSTATUS EAP_sessionRestart(ubyte *eapSessionHdl, ubyte4 instanceId)
Restart an EAP session.
MOC_EXTERN MSTATUS EAP_init(void)
Initialize EAP structures, data, and stack.
MOC_EXTERN MSTATUS EAP_setKey(ubyte *eapSessionHdl, ubyte4 instanceId, ubyte *key, ubyte4 keylen)
Set an EAP session's authentication key.
MOC_EXTERN MSTATUS EAP_getInstanceStats(ubyte4 instanceId, eapGlobalStats_t *stats)
Get an EAP instance's statistics.
MOC_EXTERN MSTATUS EAP_generateIdReq(ubyte id, ubyte **req, ubyte4 *reqLen)
Builds an EAP request.
MOC_EXTERN MSTATUS EAP_getSessionStatus(ubyte *eapSessionHdl, ubyte4 instanceId, struct eapSessionStatus_s *eapStatus)
Get an EAP session's status.
MOC_EXTERN MSTATUS EAP_getAuthenticationStatus(ubyte *eapSessionHdl, ubyte4 instanceId, eapAuthStatus *authStatus)
Get an EAP session's current authentication status.
MOC_EXTERN MSTATUS EAP_initInstance(ubyte4 *instanceId)
Create and initialize an EAP instance and get its ID.
MOC_EXTERN MSTATUS EAP_setMethodStateDecision(ubyte *eapSessionHdl, ubyte4 instanceId, ubyte methodState, ubyte methodDecision)
Assign (place on the EAP stack) the EAP processing state machine (methodState) and decision (methodDe...
MOC_EXTERN MSTATUS EAP_buildNAK(ubyte *eapSessionHdl, ubyte4 instanceId, ubyte *nakMethods, ubyte4 nakMethodCount, ubyte **eapResponse, ubyte4 *eapRespLen)
Builds a NAK response to send to the authenticator.
MOC_EXTERN MSTATUS EAP_buildExpandedNAK(ubyte *eapSessionHdl, ubyte4 instanceId, eapExpandedMethod_t *expMethods, ubyte expMethodCount, ubyte **eapResponse, ubyte4 *eapRespLen)
Builds a NAK response to send to the authenticator.
MOC_EXTERN MSTATUS EAP_buildExpandedResponse(ubyte *eapSessionHdl, ubyte4 instanceId, ubyte4 expVendorId, ubyte4 expMethodId, ubyte *eapPayload, ubyte4 eapPayloadLen, ubyte **eapResponse, ubyte4 *eapRespLen)
Builds an expanded payload response.
MOC_EXTERN MSTATUS EAP_resetInstanceStats(ubyte4 instanceId)
Reset an EAP instance's global statistics.
MOC_EXTERN MSTATUS EAP_getMtu(ubyte *eapSessionHdl, ubyte4 instanceId, ubyte4 *mtu)
Get the MTU (maximum transmission unit) value.
MOC_EXTERN MSTATUS EAP_ulStartReauth(ubyte *eapSessionHdl, ubyte4 instanceId)
Start reauthorization and timer rescheduling.
MOC_EXTERN MSTATUS EAP_getSessionStats(ubyte *eapSessionHdl, ubyte4 instanceId, eapSessionStats_t *eapStats)
Get an EAP session's statistics.
MOC_EXTERN MSTATUS EAP_shutdown(void)
Clean up memory and mutexes and shut down the EAP stack.
MOC_EXTERN MSTATUS EAP_deleteInstance(ubyte4 instanceId)
Delete an EAP instance.
MOC_EXTERN MSTATUS EAP_sessionDelete(ubyte *eapSessionHdl, ubyte4 instanceId)
Delete an EAP session.
MOC_EXTERN MSTATUS EAP_checkTimers(ubyte4 instanceId)
Call expired timers' callbacks.
MOC_EXTERN MSTATUS EAP_sessionEnable(ubyte *eapSessionHdl, ubyte4 instanceId)
Enable an EAP session.
MOC_EXTERN MSTATUS EAP_resetSessionStats(ubyte *eapSessionHdl, ubyte4 instanceId)
Reset an EAP session's statistics.
MOC_EXTERN MSTATUS EAP_setId_Type(ubyte *eapSessionHdl, ubyte4 instanceId, ubyte id, ubyte type)
Set identifier and type to the last sent identifier and the EAP packet type.
eapMethodType method_type
Method type, such as LEAP or PEAP, that these settings and callback pointers are for.
Definition: eap.h:120
MOC_EXTERN MSTATUS EAP_setIdentity(ubyte *eapSessionHdl, ubyte4 instanceId, ubyte *identity, ubyte4 len)
Set an EAP session's identity string.
MOC_EXTERN MSTATUS EAP_ulTransmit(ubyte *eapSessionHdl, ubyte4 instanceId, eapMethodType method_type, eapCode code, eapMethodDecision methodDecision, eapMethodState methodState, ubyte *eap_data, ubyte4 eap_data_len)
Pass a packet from the upper (method) layer to the EAP stack.
MOC_EXTERN MSTATUS EAP_sessionCreate(ubyte *appSessionHandle, ubyte4 instanceId, eapMethodDef_t methodDef, eapSessionConfig_t cfgParam, ubyte **eapSessionHdl)
Create an EAP Session.
Configuration settings and callback function pointers for EAP methods.
Definition: eap.h:112
MOC_EXTERN MSTATUS EAP_sessionModify(ubyte *eapSessionHdl, ubyte4 instanceId, eapMethodDef_t methodDef, eapSessionConfig_t cfgParam, ubyte4 modifiedFlag)
Modify an EAP Session.
MOC_EXTERN MSTATUS EAP_llReceiveIndication(ubyte *eapSessionHdl, ubyte4 instanceId, eapAltIndication altIndication)
Change EAP state machine's EAP_SUCCESS or EAP_FAILURE state.
MOC_EXTERN MSTATUS EAP_getKey(ubyte *eapSessionHdl, ubyte4 instanceId, ubyte **key, ubyte *keylen)
Get an EAP session's authentication key.
MOC_EXTERN MSTATUS EAP_sessionDisable(ubyte *eapSessionHdl, ubyte4 instanceId)
Disable an EAP session.