1e28a4053SRui Paulo /*
2e28a4053SRui Paulo  * EAP method registration
3e28a4053SRui Paulo  * Copyright (c) 2004-2009, Jouni Malinen <j@w1.fi>
4e28a4053SRui Paulo  *
5f05cddf9SRui Paulo  * This software may be distributed under the terms of the BSD license.
6f05cddf9SRui Paulo  * See README for more details.
7e28a4053SRui Paulo  */
8e28a4053SRui Paulo 
9e28a4053SRui Paulo #include "includes.h"
10e28a4053SRui Paulo 
11e28a4053SRui Paulo #include "common.h"
12e28a4053SRui Paulo #include "eap_peer/eap_methods.h"
13e28a4053SRui Paulo #include "eap_server/eap_methods.h"
14f05cddf9SRui Paulo #include "wpa_supplicant_i.h"
15e28a4053SRui Paulo 
16e28a4053SRui Paulo 
17e28a4053SRui Paulo /**
18e28a4053SRui Paulo  * eap_register_methods - Register statically linked EAP methods
19e28a4053SRui Paulo  * Returns: 0 on success, -1 or -2 on failure
20e28a4053SRui Paulo  *
21e28a4053SRui Paulo  * This function is called at program initialization to register all EAP
22e28a4053SRui Paulo  * methods that were linked in statically.
23e28a4053SRui Paulo  */
eap_register_methods(void)24e28a4053SRui Paulo int eap_register_methods(void)
25e28a4053SRui Paulo {
26e28a4053SRui Paulo 	int ret = 0;
27e28a4053SRui Paulo 
28e28a4053SRui Paulo #ifdef EAP_MD5
29e28a4053SRui Paulo 	if (ret == 0)
30e28a4053SRui Paulo 		ret = eap_peer_md5_register();
31e28a4053SRui Paulo #endif /* EAP_MD5 */
32e28a4053SRui Paulo 
33e28a4053SRui Paulo #ifdef EAP_TLS
34e28a4053SRui Paulo 	if (ret == 0)
35e28a4053SRui Paulo 		ret = eap_peer_tls_register();
36e28a4053SRui Paulo #endif /* EAP_TLS */
37e28a4053SRui Paulo 
38f05cddf9SRui Paulo #ifdef EAP_UNAUTH_TLS
39f05cddf9SRui Paulo 	if (ret == 0)
40f05cddf9SRui Paulo 		ret = eap_peer_unauth_tls_register();
41f05cddf9SRui Paulo #endif /* EAP_UNAUTH_TLS */
42f05cddf9SRui Paulo 
435b9c547cSRui Paulo #ifdef EAP_TLS
445b9c547cSRui Paulo #ifdef CONFIG_HS20
455b9c547cSRui Paulo 	if (ret == 0)
465b9c547cSRui Paulo 		ret = eap_peer_wfa_unauth_tls_register();
475b9c547cSRui Paulo #endif /* CONFIG_HS20 */
485b9c547cSRui Paulo #endif /* EAP_TLS */
495b9c547cSRui Paulo 
50e28a4053SRui Paulo #ifdef EAP_MSCHAPv2
51e28a4053SRui Paulo 	if (ret == 0)
52e28a4053SRui Paulo 		ret = eap_peer_mschapv2_register();
53e28a4053SRui Paulo #endif /* EAP_MSCHAPv2 */
54e28a4053SRui Paulo 
55e28a4053SRui Paulo #ifdef EAP_PEAP
56e28a4053SRui Paulo 	if (ret == 0)
57e28a4053SRui Paulo 		ret = eap_peer_peap_register();
58e28a4053SRui Paulo #endif /* EAP_PEAP */
59e28a4053SRui Paulo 
60e28a4053SRui Paulo #ifdef EAP_TTLS
61e28a4053SRui Paulo 	if (ret == 0)
62e28a4053SRui Paulo 		ret = eap_peer_ttls_register();
63e28a4053SRui Paulo #endif /* EAP_TTLS */
64e28a4053SRui Paulo 
65e28a4053SRui Paulo #ifdef EAP_GTC
66e28a4053SRui Paulo 	if (ret == 0)
67e28a4053SRui Paulo 		ret = eap_peer_gtc_register();
68e28a4053SRui Paulo #endif /* EAP_GTC */
69e28a4053SRui Paulo 
70e28a4053SRui Paulo #ifdef EAP_OTP
71e28a4053SRui Paulo 	if (ret == 0)
72e28a4053SRui Paulo 		ret = eap_peer_otp_register();
73e28a4053SRui Paulo #endif /* EAP_OTP */
74e28a4053SRui Paulo 
75e28a4053SRui Paulo #ifdef EAP_SIM
76e28a4053SRui Paulo 	if (ret == 0)
77e28a4053SRui Paulo 		ret = eap_peer_sim_register();
78e28a4053SRui Paulo #endif /* EAP_SIM */
79e28a4053SRui Paulo 
80e28a4053SRui Paulo #ifdef EAP_LEAP
81e28a4053SRui Paulo 	if (ret == 0)
82e28a4053SRui Paulo 		ret = eap_peer_leap_register();
83e28a4053SRui Paulo #endif /* EAP_LEAP */
84e28a4053SRui Paulo 
85e28a4053SRui Paulo #ifdef EAP_PSK
86e28a4053SRui Paulo 	if (ret == 0)
87e28a4053SRui Paulo 		ret = eap_peer_psk_register();
88e28a4053SRui Paulo #endif /* EAP_PSK */
89e28a4053SRui Paulo 
90e28a4053SRui Paulo #ifdef EAP_AKA
91e28a4053SRui Paulo 	if (ret == 0)
92e28a4053SRui Paulo 		ret = eap_peer_aka_register();
93e28a4053SRui Paulo #endif /* EAP_AKA */
94e28a4053SRui Paulo 
95e28a4053SRui Paulo #ifdef EAP_AKA_PRIME
96e28a4053SRui Paulo 	if (ret == 0)
97e28a4053SRui Paulo 		ret = eap_peer_aka_prime_register();
98e28a4053SRui Paulo #endif /* EAP_AKA_PRIME */
99e28a4053SRui Paulo 
100e28a4053SRui Paulo #ifdef EAP_FAST
101e28a4053SRui Paulo 	if (ret == 0)
102e28a4053SRui Paulo 		ret = eap_peer_fast_register();
103e28a4053SRui Paulo #endif /* EAP_FAST */
104e28a4053SRui Paulo 
105*206b73d0SCy Schubert #ifdef EAP_TEAP
106*206b73d0SCy Schubert 	if (ret == 0)
107*206b73d0SCy Schubert 		ret = eap_peer_teap_register();
108*206b73d0SCy Schubert #endif /* EAP_TEAP */
109*206b73d0SCy Schubert 
110e28a4053SRui Paulo #ifdef EAP_PAX
111e28a4053SRui Paulo 	if (ret == 0)
112e28a4053SRui Paulo 		ret = eap_peer_pax_register();
113e28a4053SRui Paulo #endif /* EAP_PAX */
114e28a4053SRui Paulo 
115e28a4053SRui Paulo #ifdef EAP_SAKE
116e28a4053SRui Paulo 	if (ret == 0)
117e28a4053SRui Paulo 		ret = eap_peer_sake_register();
118e28a4053SRui Paulo #endif /* EAP_SAKE */
119e28a4053SRui Paulo 
120e28a4053SRui Paulo #ifdef EAP_GPSK
121e28a4053SRui Paulo 	if (ret == 0)
122e28a4053SRui Paulo 		ret = eap_peer_gpsk_register();
123e28a4053SRui Paulo #endif /* EAP_GPSK */
124e28a4053SRui Paulo 
125e28a4053SRui Paulo #ifdef EAP_WSC
126e28a4053SRui Paulo 	if (ret == 0)
127e28a4053SRui Paulo 		ret = eap_peer_wsc_register();
128e28a4053SRui Paulo #endif /* EAP_WSC */
129e28a4053SRui Paulo 
130e28a4053SRui Paulo #ifdef EAP_IKEV2
131e28a4053SRui Paulo 	if (ret == 0)
132e28a4053SRui Paulo 		ret = eap_peer_ikev2_register();
133e28a4053SRui Paulo #endif /* EAP_IKEV2 */
134e28a4053SRui Paulo 
135e28a4053SRui Paulo #ifdef EAP_VENDOR_TEST
136e28a4053SRui Paulo 	if (ret == 0)
137e28a4053SRui Paulo 		ret = eap_peer_vendor_test_register();
138e28a4053SRui Paulo #endif /* EAP_VENDOR_TEST */
139e28a4053SRui Paulo 
140e28a4053SRui Paulo #ifdef EAP_TNC
141e28a4053SRui Paulo 	if (ret == 0)
142e28a4053SRui Paulo 		ret = eap_peer_tnc_register();
143e28a4053SRui Paulo #endif /* EAP_TNC */
144e28a4053SRui Paulo 
145f05cddf9SRui Paulo #ifdef EAP_PWD
146f05cddf9SRui Paulo 	if (ret == 0)
147f05cddf9SRui Paulo 		ret = eap_peer_pwd_register();
148f05cddf9SRui Paulo #endif /* EAP_PWD */
149e28a4053SRui Paulo 
1505b9c547cSRui Paulo #ifdef EAP_EKE
1515b9c547cSRui Paulo 	if (ret == 0)
1525b9c547cSRui Paulo 		ret = eap_peer_eke_register();
1535b9c547cSRui Paulo #endif /* EAP_EKE */
1545b9c547cSRui Paulo 
155e28a4053SRui Paulo #ifdef EAP_SERVER_IDENTITY
156e28a4053SRui Paulo 	if (ret == 0)
157e28a4053SRui Paulo 		ret = eap_server_identity_register();
158e28a4053SRui Paulo #endif /* EAP_SERVER_IDENTITY */
159e28a4053SRui Paulo 
160e28a4053SRui Paulo #ifdef EAP_SERVER_MD5
161e28a4053SRui Paulo 	if (ret == 0)
162e28a4053SRui Paulo 		ret = eap_server_md5_register();
163e28a4053SRui Paulo #endif /* EAP_SERVER_MD5 */
164e28a4053SRui Paulo 
165e28a4053SRui Paulo #ifdef EAP_SERVER_TLS
166e28a4053SRui Paulo 	if (ret == 0)
167e28a4053SRui Paulo 		ret = eap_server_tls_register();
168e28a4053SRui Paulo #endif /* EAP_SERVER_TLS */
169e28a4053SRui Paulo 
170f05cddf9SRui Paulo #ifdef EAP_SERVER_UNAUTH_TLS
171f05cddf9SRui Paulo 	if (ret == 0)
172f05cddf9SRui Paulo 		ret = eap_server_unauth_tls_register();
173f05cddf9SRui Paulo #endif /* EAP_SERVER_UNAUTH_TLS */
174f05cddf9SRui Paulo 
175e28a4053SRui Paulo #ifdef EAP_SERVER_MSCHAPV2
176e28a4053SRui Paulo 	if (ret == 0)
177e28a4053SRui Paulo 		ret = eap_server_mschapv2_register();
178e28a4053SRui Paulo #endif /* EAP_SERVER_MSCHAPV2 */
179e28a4053SRui Paulo 
180e28a4053SRui Paulo #ifdef EAP_SERVER_PEAP
181e28a4053SRui Paulo 	if (ret == 0)
182e28a4053SRui Paulo 		ret = eap_server_peap_register();
183e28a4053SRui Paulo #endif /* EAP_SERVER_PEAP */
184e28a4053SRui Paulo 
185e28a4053SRui Paulo #ifdef EAP_SERVER_TLV
186e28a4053SRui Paulo 	if (ret == 0)
187e28a4053SRui Paulo 		ret = eap_server_tlv_register();
188e28a4053SRui Paulo #endif /* EAP_SERVER_TLV */
189e28a4053SRui Paulo 
190e28a4053SRui Paulo #ifdef EAP_SERVER_GTC
191e28a4053SRui Paulo 	if (ret == 0)
192e28a4053SRui Paulo 		ret = eap_server_gtc_register();
193e28a4053SRui Paulo #endif /* EAP_SERVER_GTC */
194e28a4053SRui Paulo 
195e28a4053SRui Paulo #ifdef EAP_SERVER_TTLS
196e28a4053SRui Paulo 	if (ret == 0)
197e28a4053SRui Paulo 		ret = eap_server_ttls_register();
198e28a4053SRui Paulo #endif /* EAP_SERVER_TTLS */
199e28a4053SRui Paulo 
200e28a4053SRui Paulo #ifdef EAP_SERVER_SIM
201e28a4053SRui Paulo 	if (ret == 0)
202e28a4053SRui Paulo 		ret = eap_server_sim_register();
203e28a4053SRui Paulo #endif /* EAP_SERVER_SIM */
204e28a4053SRui Paulo 
205e28a4053SRui Paulo #ifdef EAP_SERVER_AKA
206e28a4053SRui Paulo 	if (ret == 0)
207e28a4053SRui Paulo 		ret = eap_server_aka_register();
208e28a4053SRui Paulo #endif /* EAP_SERVER_AKA */
209e28a4053SRui Paulo 
210e28a4053SRui Paulo #ifdef EAP_SERVER_AKA_PRIME
211e28a4053SRui Paulo 	if (ret == 0)
212e28a4053SRui Paulo 		ret = eap_server_aka_prime_register();
213e28a4053SRui Paulo #endif /* EAP_SERVER_AKA_PRIME */
214e28a4053SRui Paulo 
215e28a4053SRui Paulo #ifdef EAP_SERVER_PAX
216e28a4053SRui Paulo 	if (ret == 0)
217e28a4053SRui Paulo 		ret = eap_server_pax_register();
218e28a4053SRui Paulo #endif /* EAP_SERVER_PAX */
219e28a4053SRui Paulo 
220e28a4053SRui Paulo #ifdef EAP_SERVER_PSK
221e28a4053SRui Paulo 	if (ret == 0)
222e28a4053SRui Paulo 		ret = eap_server_psk_register();
223e28a4053SRui Paulo #endif /* EAP_SERVER_PSK */
224e28a4053SRui Paulo 
225e28a4053SRui Paulo #ifdef EAP_SERVER_SAKE
226e28a4053SRui Paulo 	if (ret == 0)
227e28a4053SRui Paulo 		ret = eap_server_sake_register();
228e28a4053SRui Paulo #endif /* EAP_SERVER_SAKE */
229e28a4053SRui Paulo 
230e28a4053SRui Paulo #ifdef EAP_SERVER_GPSK
231e28a4053SRui Paulo 	if (ret == 0)
232e28a4053SRui Paulo 		ret = eap_server_gpsk_register();
233e28a4053SRui Paulo #endif /* EAP_SERVER_GPSK */
234e28a4053SRui Paulo 
235e28a4053SRui Paulo #ifdef EAP_SERVER_VENDOR_TEST
236e28a4053SRui Paulo 	if (ret == 0)
237e28a4053SRui Paulo 		ret = eap_server_vendor_test_register();
238e28a4053SRui Paulo #endif /* EAP_SERVER_VENDOR_TEST */
239e28a4053SRui Paulo 
240e28a4053SRui Paulo #ifdef EAP_SERVER_FAST
241e28a4053SRui Paulo 	if (ret == 0)
242e28a4053SRui Paulo 		ret = eap_server_fast_register();
243e28a4053SRui Paulo #endif /* EAP_SERVER_FAST */
244e28a4053SRui Paulo 
245*206b73d0SCy Schubert #ifdef EAP_SERVER_TEAP
246*206b73d0SCy Schubert 	if (ret == 0)
247*206b73d0SCy Schubert 		ret = eap_server_teap_register();
248*206b73d0SCy Schubert #endif /* EAP_SERVER_TEAP */
249*206b73d0SCy Schubert 
250e28a4053SRui Paulo #ifdef EAP_SERVER_WSC
251e28a4053SRui Paulo 	if (ret == 0)
252e28a4053SRui Paulo 		ret = eap_server_wsc_register();
253e28a4053SRui Paulo #endif /* EAP_SERVER_WSC */
254e28a4053SRui Paulo 
255e28a4053SRui Paulo #ifdef EAP_SERVER_IKEV2
256e28a4053SRui Paulo 	if (ret == 0)
257e28a4053SRui Paulo 		ret = eap_server_ikev2_register();
258e28a4053SRui Paulo #endif /* EAP_SERVER_IKEV2 */
259e28a4053SRui Paulo 
260e28a4053SRui Paulo #ifdef EAP_SERVER_TNC
261e28a4053SRui Paulo 	if (ret == 0)
262e28a4053SRui Paulo 		ret = eap_server_tnc_register();
263e28a4053SRui Paulo #endif /* EAP_SERVER_TNC */
264e28a4053SRui Paulo 
265f05cddf9SRui Paulo #ifdef EAP_SERVER_PWD
266f05cddf9SRui Paulo 	if (ret == 0)
267f05cddf9SRui Paulo 		ret = eap_server_pwd_register();
268f05cddf9SRui Paulo #endif /* EAP_SERVER_PWD */
269f05cddf9SRui Paulo 
270e28a4053SRui Paulo 	return ret;
271e28a4053SRui Paulo }
272