SM_STATE(EAP, IDLE)
{
	SM_ENTRY(EAP, IDLE);

        #if 0   /* original */
	sm->retransWhile = eap_sm_calculateTimeout(sm, sm->retransCount,
						   sm->eapSRTT, sm->eapRTTVAR,
						   sm->methodTimeout);
        #else
        /* Per RFC 4137, retransWhile is an external timeout counter
         * that counts down to zero.
         * We substitute an eloop timer callback instead; 
         * retransWhile is simply sampled as being nonzero (not timed out)
         * or zero (timed out).
         *
         * Retries are only done if methodTimeout value has been
         * returned nonzero from the application.
         */
        sm->retransWhile = 1;   /* no retransmits will happen while nonzero */
        if (sm->methodTimeout > 0) {
                eloop_cancel_timeout(eap_idle_timeout_handler, sm, NULL); 
                eloop_register_timeout(sm->methodTimeout /*seconds*/, 0, 
                        eap_idle_timeout_handler, sm, NULL);
        }
        else {
                eloop_cancel_timeout(eap_idle_timeout_handler, sm, NULL);
        }
        #endif
}
Exemple #2
0
SM_STATE(EAP, IDLE2)
{
	SM_ENTRY(EAP, IDLE2);

	sm->eap_if.retransWhile = eap_sm_calculateTimeout(
		sm, sm->retransCount, sm->eap_if.eapSRTT, sm->eap_if.eapRTTVAR,
		sm->methodTimeout);
}