1e28a4053SRui Paulo /*
2e28a4053SRui Paulo  * EAP method registration
3e28a4053SRui Paulo  * Copyright (c) 2004-2009, Jouni Malinen <j@w1.fi>
4e28a4053SRui Paulo  *
5*f05cddf9SRui Paulo  * This software may be distributed under the terms of the BSD license.
6*f05cddf9SRui 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"
14*f05cddf9SRui 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  */
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 
38*f05cddf9SRui Paulo #ifdef EAP_UNAUTH_TLS
39*f05cddf9SRui Paulo 	if (ret == 0)
40*f05cddf9SRui Paulo 		ret = eap_peer_unauth_tls_register();
41*f05cddf9SRui Paulo #endif /* EAP_UNAUTH_TLS */
42*f05cddf9SRui Paulo 
43e28a4053SRui Paulo #ifdef EAP_MSCHAPv2
44e28a4053SRui Paulo 	if (ret == 0)
45e28a4053SRui Paulo 		ret = eap_peer_mschapv2_register();
46e28a4053SRui Paulo #endif /* EAP_MSCHAPv2 */
47e28a4053SRui Paulo 
48e28a4053SRui Paulo #ifdef EAP_PEAP
49e28a4053SRui Paulo 	if (ret == 0)
50e28a4053SRui Paulo 		ret = eap_peer_peap_register();
51e28a4053SRui Paulo #endif /* EAP_PEAP */
52e28a4053SRui Paulo 
53e28a4053SRui Paulo #ifdef EAP_TTLS
54e28a4053SRui Paulo 	if (ret == 0)
55e28a4053SRui Paulo 		ret = eap_peer_ttls_register();
56e28a4053SRui Paulo #endif /* EAP_TTLS */
57e28a4053SRui Paulo 
58e28a4053SRui Paulo #ifdef EAP_GTC
59e28a4053SRui Paulo 	if (ret == 0)
60e28a4053SRui Paulo 		ret = eap_peer_gtc_register();
61e28a4053SRui Paulo #endif /* EAP_GTC */
62e28a4053SRui Paulo 
63e28a4053SRui Paulo #ifdef EAP_OTP
64e28a4053SRui Paulo 	if (ret == 0)
65e28a4053SRui Paulo 		ret = eap_peer_otp_register();
66e28a4053SRui Paulo #endif /* EAP_OTP */
67e28a4053SRui Paulo 
68e28a4053SRui Paulo #ifdef EAP_SIM
69e28a4053SRui Paulo 	if (ret == 0)
70e28a4053SRui Paulo 		ret = eap_peer_sim_register();
71e28a4053SRui Paulo #endif /* EAP_SIM */
72e28a4053SRui Paulo 
73e28a4053SRui Paulo #ifdef EAP_LEAP
74e28a4053SRui Paulo 	if (ret == 0)
75e28a4053SRui Paulo 		ret = eap_peer_leap_register();
76e28a4053SRui Paulo #endif /* EAP_LEAP */
77e28a4053SRui Paulo 
78e28a4053SRui Paulo #ifdef EAP_PSK
79e28a4053SRui Paulo 	if (ret == 0)
80e28a4053SRui Paulo 		ret = eap_peer_psk_register();
81e28a4053SRui Paulo #endif /* EAP_PSK */
82e28a4053SRui Paulo 
83e28a4053SRui Paulo #ifdef EAP_AKA
84e28a4053SRui Paulo 	if (ret == 0)
85e28a4053SRui Paulo 		ret = eap_peer_aka_register();
86e28a4053SRui Paulo #endif /* EAP_AKA */
87e28a4053SRui Paulo 
88e28a4053SRui Paulo #ifdef EAP_AKA_PRIME
89e28a4053SRui Paulo 	if (ret == 0)
90e28a4053SRui Paulo 		ret = eap_peer_aka_prime_register();
91e28a4053SRui Paulo #endif /* EAP_AKA_PRIME */
92e28a4053SRui Paulo 
93e28a4053SRui Paulo #ifdef EAP_FAST
94e28a4053SRui Paulo 	if (ret == 0)
95e28a4053SRui Paulo 		ret = eap_peer_fast_register();
96e28a4053SRui Paulo #endif /* EAP_FAST */
97e28a4053SRui Paulo 
98e28a4053SRui Paulo #ifdef EAP_PAX
99e28a4053SRui Paulo 	if (ret == 0)
100e28a4053SRui Paulo 		ret = eap_peer_pax_register();
101e28a4053SRui Paulo #endif /* EAP_PAX */
102e28a4053SRui Paulo 
103e28a4053SRui Paulo #ifdef EAP_SAKE
104e28a4053SRui Paulo 	if (ret == 0)
105e28a4053SRui Paulo 		ret = eap_peer_sake_register();
106e28a4053SRui Paulo #endif /* EAP_SAKE */
107e28a4053SRui Paulo 
108e28a4053SRui Paulo #ifdef EAP_GPSK
109e28a4053SRui Paulo 	if (ret == 0)
110e28a4053SRui Paulo 		ret = eap_peer_gpsk_register();
111e28a4053SRui Paulo #endif /* EAP_GPSK */
112e28a4053SRui Paulo 
113e28a4053SRui Paulo #ifdef EAP_WSC
114e28a4053SRui Paulo 	if (ret == 0)
115e28a4053SRui Paulo 		ret = eap_peer_wsc_register();
116e28a4053SRui Paulo #endif /* EAP_WSC */
117e28a4053SRui Paulo 
118e28a4053SRui Paulo #ifdef EAP_IKEV2
119e28a4053SRui Paulo 	if (ret == 0)
120e28a4053SRui Paulo 		ret = eap_peer_ikev2_register();
121e28a4053SRui Paulo #endif /* EAP_IKEV2 */
122e28a4053SRui Paulo 
123e28a4053SRui Paulo #ifdef EAP_VENDOR_TEST
124e28a4053SRui Paulo 	if (ret == 0)
125e28a4053SRui Paulo 		ret = eap_peer_vendor_test_register();
126e28a4053SRui Paulo #endif /* EAP_VENDOR_TEST */
127e28a4053SRui Paulo 
128e28a4053SRui Paulo #ifdef EAP_TNC
129e28a4053SRui Paulo 	if (ret == 0)
130e28a4053SRui Paulo 		ret = eap_peer_tnc_register();
131e28a4053SRui Paulo #endif /* EAP_TNC */
132e28a4053SRui Paulo 
133*f05cddf9SRui Paulo #ifdef EAP_PWD
134*f05cddf9SRui Paulo 	if (ret == 0)
135*f05cddf9SRui Paulo 		ret = eap_peer_pwd_register();
136*f05cddf9SRui Paulo #endif /* EAP_PWD */
137e28a4053SRui Paulo 
138e28a4053SRui Paulo #ifdef EAP_SERVER_IDENTITY
139e28a4053SRui Paulo 	if (ret == 0)
140e28a4053SRui Paulo 		ret = eap_server_identity_register();
141e28a4053SRui Paulo #endif /* EAP_SERVER_IDENTITY */
142e28a4053SRui Paulo 
143e28a4053SRui Paulo #ifdef EAP_SERVER_MD5
144e28a4053SRui Paulo 	if (ret == 0)
145e28a4053SRui Paulo 		ret = eap_server_md5_register();
146e28a4053SRui Paulo #endif /* EAP_SERVER_MD5 */
147e28a4053SRui Paulo 
148e28a4053SRui Paulo #ifdef EAP_SERVER_TLS
149e28a4053SRui Paulo 	if (ret == 0)
150e28a4053SRui Paulo 		ret = eap_server_tls_register();
151e28a4053SRui Paulo #endif /* EAP_SERVER_TLS */
152e28a4053SRui Paulo 
153*f05cddf9SRui Paulo #ifdef EAP_SERVER_UNAUTH_TLS
154*f05cddf9SRui Paulo 	if (ret == 0)
155*f05cddf9SRui Paulo 		ret = eap_server_unauth_tls_register();
156*f05cddf9SRui Paulo #endif /* EAP_SERVER_UNAUTH_TLS */
157*f05cddf9SRui Paulo 
158e28a4053SRui Paulo #ifdef EAP_SERVER_MSCHAPV2
159e28a4053SRui Paulo 	if (ret == 0)
160e28a4053SRui Paulo 		ret = eap_server_mschapv2_register();
161e28a4053SRui Paulo #endif /* EAP_SERVER_MSCHAPV2 */
162e28a4053SRui Paulo 
163e28a4053SRui Paulo #ifdef EAP_SERVER_PEAP
164e28a4053SRui Paulo 	if (ret == 0)
165e28a4053SRui Paulo 		ret = eap_server_peap_register();
166e28a4053SRui Paulo #endif /* EAP_SERVER_PEAP */
167e28a4053SRui Paulo 
168e28a4053SRui Paulo #ifdef EAP_SERVER_TLV
169e28a4053SRui Paulo 	if (ret == 0)
170e28a4053SRui Paulo 		ret = eap_server_tlv_register();
171e28a4053SRui Paulo #endif /* EAP_SERVER_TLV */
172e28a4053SRui Paulo 
173e28a4053SRui Paulo #ifdef EAP_SERVER_GTC
174e28a4053SRui Paulo 	if (ret == 0)
175e28a4053SRui Paulo 		ret = eap_server_gtc_register();
176e28a4053SRui Paulo #endif /* EAP_SERVER_GTC */
177e28a4053SRui Paulo 
178e28a4053SRui Paulo #ifdef EAP_SERVER_TTLS
179e28a4053SRui Paulo 	if (ret == 0)
180e28a4053SRui Paulo 		ret = eap_server_ttls_register();
181e28a4053SRui Paulo #endif /* EAP_SERVER_TTLS */
182e28a4053SRui Paulo 
183e28a4053SRui Paulo #ifdef EAP_SERVER_SIM
184e28a4053SRui Paulo 	if (ret == 0)
185e28a4053SRui Paulo 		ret = eap_server_sim_register();
186e28a4053SRui Paulo #endif /* EAP_SERVER_SIM */
187e28a4053SRui Paulo 
188e28a4053SRui Paulo #ifdef EAP_SERVER_AKA
189e28a4053SRui Paulo 	if (ret == 0)
190e28a4053SRui Paulo 		ret = eap_server_aka_register();
191e28a4053SRui Paulo #endif /* EAP_SERVER_AKA */
192e28a4053SRui Paulo 
193e28a4053SRui Paulo #ifdef EAP_SERVER_AKA_PRIME
194e28a4053SRui Paulo 	if (ret == 0)
195e28a4053SRui Paulo 		ret = eap_server_aka_prime_register();
196e28a4053SRui Paulo #endif /* EAP_SERVER_AKA_PRIME */
197e28a4053SRui Paulo 
198e28a4053SRui Paulo #ifdef EAP_SERVER_PAX
199e28a4053SRui Paulo 	if (ret == 0)
200e28a4053SRui Paulo 		ret = eap_server_pax_register();
201e28a4053SRui Paulo #endif /* EAP_SERVER_PAX */
202e28a4053SRui Paulo 
203e28a4053SRui Paulo #ifdef EAP_SERVER_PSK
204e28a4053SRui Paulo 	if (ret == 0)
205e28a4053SRui Paulo 		ret = eap_server_psk_register();
206e28a4053SRui Paulo #endif /* EAP_SERVER_PSK */
207e28a4053SRui Paulo 
208e28a4053SRui Paulo #ifdef EAP_SERVER_SAKE
209e28a4053SRui Paulo 	if (ret == 0)
210e28a4053SRui Paulo 		ret = eap_server_sake_register();
211e28a4053SRui Paulo #endif /* EAP_SERVER_SAKE */
212e28a4053SRui Paulo 
213e28a4053SRui Paulo #ifdef EAP_SERVER_GPSK
214e28a4053SRui Paulo 	if (ret == 0)
215e28a4053SRui Paulo 		ret = eap_server_gpsk_register();
216e28a4053SRui Paulo #endif /* EAP_SERVER_GPSK */
217e28a4053SRui Paulo 
218e28a4053SRui Paulo #ifdef EAP_SERVER_VENDOR_TEST
219e28a4053SRui Paulo 	if (ret == 0)
220e28a4053SRui Paulo 		ret = eap_server_vendor_test_register();
221e28a4053SRui Paulo #endif /* EAP_SERVER_VENDOR_TEST */
222e28a4053SRui Paulo 
223e28a4053SRui Paulo #ifdef EAP_SERVER_FAST
224e28a4053SRui Paulo 	if (ret == 0)
225e28a4053SRui Paulo 		ret = eap_server_fast_register();
226e28a4053SRui Paulo #endif /* EAP_SERVER_FAST */
227e28a4053SRui Paulo 
228e28a4053SRui Paulo #ifdef EAP_SERVER_WSC
229e28a4053SRui Paulo 	if (ret == 0)
230e28a4053SRui Paulo 		ret = eap_server_wsc_register();
231e28a4053SRui Paulo #endif /* EAP_SERVER_WSC */
232e28a4053SRui Paulo 
233e28a4053SRui Paulo #ifdef EAP_SERVER_IKEV2
234e28a4053SRui Paulo 	if (ret == 0)
235e28a4053SRui Paulo 		ret = eap_server_ikev2_register();
236e28a4053SRui Paulo #endif /* EAP_SERVER_IKEV2 */
237e28a4053SRui Paulo 
238e28a4053SRui Paulo #ifdef EAP_SERVER_TNC
239e28a4053SRui Paulo 	if (ret == 0)
240e28a4053SRui Paulo 		ret = eap_server_tnc_register();
241e28a4053SRui Paulo #endif /* EAP_SERVER_TNC */
242e28a4053SRui Paulo 
243*f05cddf9SRui Paulo #ifdef EAP_SERVER_PWD
244*f05cddf9SRui Paulo 	if (ret == 0)
245*f05cddf9SRui Paulo 		ret = eap_server_pwd_register();
246*f05cddf9SRui Paulo #endif /* EAP_SERVER_PWD */
247*f05cddf9SRui Paulo 
248e28a4053SRui Paulo 	return ret;
249e28a4053SRui Paulo }
250