-enum eap_gss_state {
- EAP_STATE_AUTHENTICATE = 1,
- EAP_STATE_KEY_TRANSPORT,
- EAP_STATE_SECURE_ASSOCIATION,
- EAP_STATE_GSS_CHANNEL_BINDINGS,
- EAP_STATE_ESTABLISHED
+#define CTX_IS_INITIATOR(ctx) (((ctx)->flags & CTX_FLAG_INITIATOR) != 0)
+
+enum gss_eap_state {
+ EAP_STATE_IDENTITY = 0,
+ EAP_STATE_AUTHENTICATE,
+ EAP_STATE_EXTENSIONS_REQ,
+ EAP_STATE_EXTENSIONS_RESP,
+ EAP_STATE_ESTABLISHED,
+#ifdef GSSEAP_ENABLE_REAUTH
+ EAP_STATE_KRB_REAUTH_GSS
+#endif
+};
+
+#define CTX_IS_ESTABLISHED(ctx) ((ctx)->state == EAP_STATE_ESTABLISHED)
+
+/* Initiator context flags */
+#define CTX_FLAG_EAP_SUCCESS 0x00010000
+#define CTX_FLAG_EAP_RESTART 0x00020000
+#define CTX_FLAG_EAP_FAIL 0x00040000
+#define CTX_FLAG_EAP_RESP 0x00080000
+#define CTX_FLAG_EAP_NO_RESP 0x00100000
+#define CTX_FLAG_EAP_REQ 0x00200000
+#define CTX_FLAG_EAP_PORT_ENABLED 0x00400000
+#define CTX_FLAG_EAP_ALT_ACCEPT 0x00800000
+#define CTX_FLAG_EAP_ALT_REJECT 0x01000000
+#define CTX_FLAG_EAP_MASK 0xFFFF0000
+
+struct gss_eap_initiator_ctx {
+ gss_cred_id_t defaultCred;
+ unsigned int idleWhile;
+#ifndef __cplusplus
+ struct eap_peer_config eapPeerConfig;
+ struct eap_sm *eap;
+ struct wpabuf reqData;
+#endif
+};
+
+struct gss_eap_acceptor_ctx {
+ struct rs_handle *radHandle;
+ struct rs_connection *radConn;
+ char *radServer;
+ gss_buffer_desc state;
+ VALUE_PAIR *vps;