mka: Share a single delete mka implementation

Share mka deletion implementation in ieee802_1x_participant_timer() for
the cak_life and mka_life expiration cases.

Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
This commit is contained in:
Sabrina Dubroca 2016-08-15 11:43:42 +02:00 committed by Jouni Malinen
parent 0dabf79b5d
commit 34dbe90ac5

View file

@ -2359,27 +2359,16 @@ static void ieee802_1x_participant_timer(void *eloop_ctx, void *timeout_ctx)
participant = (struct ieee802_1x_mka_participant *)eloop_ctx;
kay = participant->kay;
if (participant->cak_life) {
if (now > participant->cak_life) {
kay->authenticated = FALSE;
kay->secured = FALSE;
kay->failed = TRUE;
ieee802_1x_kay_delete_mka(kay, &participant->ckn);
return;
}
if (now > participant->cak_life)
goto delete_mka;
}
/* should delete MKA instance if there are not live peers
* when the MKA life elapsed since its creating */
if (participant->mka_life) {
if (dl_list_empty(&participant->live_peers)) {
if (now > participant->mka_life) {
kay->authenticated = FALSE;
kay->secured = FALSE;
kay->failed = TRUE;
ieee802_1x_kay_delete_mka(kay,
&participant->ckn);
return;
}
if (now > participant->mka_life)
goto delete_mka;
} else {
participant->mka_life = 0;
}
@ -2467,6 +2456,14 @@ static void ieee802_1x_participant_timer(void *eloop_ctx, void *timeout_ctx)
eloop_register_timeout(MKA_HELLO_TIME / 1000, 0,
ieee802_1x_participant_timer,
participant, NULL);
return;
delete_mka:
kay->authenticated = FALSE;
kay->secured = FALSE;
kay->failed = TRUE;
ieee802_1x_kay_delete_mka(kay, &participant->ckn);
}