diff --git a/hostapd/eapol_sm.c b/hostapd/eapol_sm.c index 4bf0ff412..2b3d16ef0 100644 --- a/hostapd/eapol_sm.c +++ b/hostapd/eapol_sm.c @@ -806,6 +806,7 @@ eapol_auth_alloc(struct eapol_authenticator *eapol, const u8 *addr, eap_conf.pac_opaque_encr_key = eapol->conf.pac_opaque_encr_key; eap_conf.eap_fast_a_id = eapol->conf.eap_fast_a_id; eap_conf.eap_sim_aka_result_ind = eapol->conf.eap_sim_aka_result_ind; + eap_conf.tnc = eapol->conf.tnc; sm->eap = eap_server_sm_init(sm, &eapol_cb, &eap_conf); if (sm->eap == NULL) { eapol_auth_free(sm); @@ -1237,6 +1238,7 @@ static int eapol_auth_conf_clone(struct eapol_auth_config *dst, else dst->eap_fast_a_id = NULL; dst->eap_sim_aka_result_ind = src->eap_sim_aka_result_ind; + dst->tnc = src->tnc; return 0; } diff --git a/hostapd/eapol_sm.h b/hostapd/eapol_sm.h index 7e2cb5c81..df0ddd0bd 100644 --- a/hostapd/eapol_sm.h +++ b/hostapd/eapol_sm.h @@ -50,6 +50,7 @@ struct eapol_auth_config { u8 *pac_opaque_encr_key; char *eap_fast_a_id; int eap_sim_aka_result_ind; + int tnc; /* * Pointer to hostapd data. This is a temporary workaround for diff --git a/hostapd/hostapd.c b/hostapd/hostapd.c index e8e8b8a1e..64e5b9972 100644 --- a/hostapd/hostapd.c +++ b/hostapd/hostapd.c @@ -1140,6 +1140,7 @@ static int hostapd_setup_radius_srv(struct hostapd_data *hapd, srv.pac_opaque_encr_key = conf->pac_opaque_encr_key; srv.eap_fast_a_id = conf->eap_fast_a_id; srv.eap_sim_aka_result_ind = conf->eap_sim_aka_result_ind; + srv.tnc = conf->tnc; srv.ipv6 = conf->radius_server_ipv6; srv.get_eap_user = hostapd_radius_get_eap_user; diff --git a/hostapd/ieee802_1x.c b/hostapd/ieee802_1x.c index e2f22cc1e..9f66672c5 100644 --- a/hostapd/ieee802_1x.c +++ b/hostapd/ieee802_1x.c @@ -1608,6 +1608,7 @@ int ieee802_1x_init(struct hostapd_data *hapd) conf.pac_opaque_encr_key = hapd->conf->pac_opaque_encr_key; conf.eap_fast_a_id = hapd->conf->eap_fast_a_id; conf.eap_sim_aka_result_ind = hapd->conf->eap_sim_aka_result_ind; + conf.tnc = hapd->conf->tnc; os_memset(&cb, 0, sizeof(cb)); cb.eapol_send = ieee802_1x_eapol_send; diff --git a/src/eap_server/eap.c b/src/eap_server/eap.c index 058ecdcb7..0fa8132a1 100644 --- a/src/eap_server/eap.c +++ b/src/eap_server/eap.c @@ -1154,6 +1154,7 @@ struct eap_sm * eap_server_sm_init(void *eapol_ctx, if (conf->eap_fast_a_id) sm->eap_fast_a_id = os_strdup(conf->eap_fast_a_id); sm->eap_sim_aka_result_ind = conf->eap_sim_aka_result_ind; + sm->tnc = conf->tnc; wpa_printf(MSG_DEBUG, "EAP: Server state machine created"); diff --git a/src/eap_server/eap.h b/src/eap_server/eap.h index 1bb58ddf8..ed84baea7 100644 --- a/src/eap_server/eap.h +++ b/src/eap_server/eap.h @@ -97,6 +97,7 @@ struct eap_config { u8 *pac_opaque_encr_key; char *eap_fast_a_id; int eap_sim_aka_result_ind; + int tnc; }; diff --git a/src/eap_server/eap_i.h b/src/eap_server/eap_i.h index 60873306f..696c65a17 100644 --- a/src/eap_server/eap_i.h +++ b/src/eap_server/eap_i.h @@ -174,6 +174,7 @@ struct eap_sm { u8 *pac_opaque_encr_key; char *eap_fast_a_id; int eap_sim_aka_result_ind; + int tnc; }; int eap_user_get(struct eap_sm *sm, const u8 *identity, size_t identity_len, diff --git a/src/radius/radius_server.c b/src/radius/radius_server.c index 20ded436f..0d18d8caa 100644 --- a/src/radius/radius_server.c +++ b/src/radius/radius_server.c @@ -87,6 +87,7 @@ struct radius_server_data { u8 *pac_opaque_encr_key; char *eap_fast_a_id; int eap_sim_aka_result_ind; + int tnc; int ipv6; struct os_time start_time; struct radius_server_counters counters; @@ -311,6 +312,7 @@ radius_server_get_new_session(struct radius_server_data *data, eap_conf.pac_opaque_encr_key = data->pac_opaque_encr_key; eap_conf.eap_fast_a_id = data->eap_fast_a_id; eap_conf.eap_sim_aka_result_ind = data->eap_sim_aka_result_ind; + eap_conf.tnc = data->tnc; sess->eap = eap_server_sm_init(sess, &radius_server_eapol_cb, &eap_conf); if (sess->eap == NULL) { @@ -1016,6 +1018,7 @@ radius_server_init(struct radius_server_conf *conf) data->eap_fast_a_id = os_strdup(conf->eap_fast_a_id); data->get_eap_user = conf->get_eap_user; data->eap_sim_aka_result_ind = conf->eap_sim_aka_result_ind; + data->tnc = conf->tnc; data->clients = radius_server_read_clients(conf->client_file, conf->ipv6); diff --git a/src/radius/radius_server.h b/src/radius/radius_server.h index d8f74d4eb..1012a1453 100644 --- a/src/radius/radius_server.h +++ b/src/radius/radius_server.h @@ -27,6 +27,7 @@ struct radius_server_conf { u8 *pac_opaque_encr_key; char *eap_fast_a_id; int eap_sim_aka_result_ind; + int tnc; int ipv6; int (*get_eap_user)(void *ctx, const u8 *identity, size_t identity_len, int phase2, struct eap_user *user);