From de57d873539a97d19e83ddfea8c157843cb5c7eb Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Thu, 10 Sep 2015 21:34:15 +0300 Subject: [PATCH] ERP: Make eap_peer_finish() callable This is needed for FILS to process EAP-Finish/Re-auth. Signed-off-by: Jouni Malinen --- src/eap_peer/eap.c | 3 +-- src/eap_peer/eap.h | 1 + src/eapol_supp/eapol_supp_sm.c | 11 +++++++++++ src/eapol_supp/eapol_supp_sm.h | 6 ++++++ 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/eap_peer/eap.c b/src/eap_peer/eap.c index c47922056..1c6116aab 100644 --- a/src/eap_peer/eap.c +++ b/src/eap_peer/eap.c @@ -1591,8 +1591,7 @@ invalid: } -static void eap_peer_finish(struct eap_sm *sm, const struct eap_hdr *hdr, - size_t len) +void eap_peer_finish(struct eap_sm *sm, const struct eap_hdr *hdr, size_t len) { #ifdef CONFIG_ERP const u8 *pos = (const u8 *) (hdr + 1); diff --git a/src/eap_peer/eap.h b/src/eap_peer/eap.h index 3c6885552..7b013ee15 100644 --- a/src/eap_peer/eap.h +++ b/src/eap_peer/eap.h @@ -349,6 +349,7 @@ void eap_set_anon_id(struct eap_sm *sm, const u8 *id, size_t len); int eap_peer_was_failure_expected(struct eap_sm *sm); void eap_peer_erp_free_keys(struct eap_sm *sm); struct wpabuf * eap_peer_build_erp_reauth_start(struct eap_sm *sm, u8 eap_id); +void eap_peer_finish(struct eap_sm *sm, const struct eap_hdr *hdr, size_t len); #endif /* IEEE8021X_EAPOL */ diff --git a/src/eapol_supp/eapol_supp_sm.c b/src/eapol_supp/eapol_supp_sm.c index a08010d89..7fdb27723 100644 --- a/src/eapol_supp/eapol_supp_sm.c +++ b/src/eapol_supp/eapol_supp_sm.c @@ -2170,3 +2170,14 @@ struct wpabuf * eapol_sm_build_erp_reauth_start(struct eapol_sm *sm) return NULL; #endif /* CONFIG_ERP */ } + + +void eapol_sm_process_erp_finish(struct eapol_sm *sm, const u8 *buf, + size_t len) +{ +#ifdef CONFIG_ERP + if (!sm) + return; + eap_peer_finish(sm->eap, (const struct eap_hdr *) buf, len); +#endif /* CONFIG_ERP */ +} diff --git a/src/eapol_supp/eapol_supp_sm.h b/src/eapol_supp/eapol_supp_sm.h index 7b80878f3..b48cab2ee 100644 --- a/src/eapol_supp/eapol_supp_sm.h +++ b/src/eapol_supp/eapol_supp_sm.h @@ -329,6 +329,8 @@ void eapol_sm_set_ext_pw_ctx(struct eapol_sm *sm, int eapol_sm_failed(struct eapol_sm *sm); void eapol_sm_erp_flush(struct eapol_sm *sm); struct wpabuf * eapol_sm_build_erp_reauth_start(struct eapol_sm *sm); +void eapol_sm_process_erp_finish(struct eapol_sm *sm, const u8 *buf, + size_t len); int eapol_sm_get_eap_proxy_imsi(struct eapol_sm *sm, char *imsi, size_t *len); #else /* IEEE8021X_EAPOL */ static inline struct eapol_sm *eapol_sm_init(struct eapol_ctx *ctx) @@ -444,6 +446,10 @@ eapol_sm_build_erp_reauth_start(struct eapol_sm *sm) { return NULL; } +static inline void eapol_sm_process_erp_finish(struct eapol_sm *sm, + const u8 *buf, size_t len) +{ +} #endif /* IEEE8021X_EAPOL */ #endif /* EAPOL_SUPP_SM_H */