Move EAP method registration away from src/eap_{peer,server}
This makes it easier to make a library out of EAP methods without losing possiblity of binary size optimization by linker dropping unreferenced code.
This commit is contained in:
		
							parent
							
								
									2d106f21aa
								
							
						
					
					
						commit
						127608152e
					
				
					 16 changed files with 654 additions and 325 deletions
				
			
		|  | @ -90,6 +90,7 @@ CFLAGS += -DEAP_PAX | |||
| CFLAGS += -DEAP_SAKE | ||||
| CFLAGS += -DEAP_GPSK -DEAP_GPSK_SHA256 | ||||
| 
 | ||||
| CFLAGS += -DEAP_SERVER_IDENTITY | ||||
| CFLAGS += -DEAP_SERVER_TLS | ||||
| CFLAGS += -DEAP_SERVER_PEAP | ||||
| CFLAGS += -DEAP_SERVER_TTLS | ||||
|  | @ -174,6 +175,17 @@ ifndef LDO | |||
| LDO=$(CC) | ||||
| endif | ||||
| 
 | ||||
| Q=@ | ||||
| E=echo | ||||
| ifeq ($(V), 1) | ||||
| Q= | ||||
| E=true | ||||
| endif | ||||
| 
 | ||||
| %.o: %.c | ||||
| 	$(Q)$(CC) -c -o $@ $(CFLAGS) $< | ||||
| 	@$(E) "  CC " $< | ||||
| 
 | ||||
| 
 | ||||
| OBJS_lib=$(OBJS_both) $(OBJS_peer) $(OBJS_server) | ||||
| 
 | ||||
|  |  | |||
|  | @ -177,6 +177,114 @@ static void peer_notify_pending(void *ctx) | |||
| } | ||||
| 
 | ||||
| 
 | ||||
| static int eap_peer_register_methods(void) | ||||
| { | ||||
| 	int ret = 0; | ||||
| 
 | ||||
| #ifdef EAP_MD5 | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_md5_register(); | ||||
| #endif /* EAP_MD5 */ | ||||
| 
 | ||||
| #ifdef EAP_TLS | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_tls_register(); | ||||
| #endif /* EAP_TLS */ | ||||
| 
 | ||||
| #ifdef EAP_MSCHAPv2 | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_mschapv2_register(); | ||||
| #endif /* EAP_MSCHAPv2 */ | ||||
| 
 | ||||
| #ifdef EAP_PEAP | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_peap_register(); | ||||
| #endif /* EAP_PEAP */ | ||||
| 
 | ||||
| #ifdef EAP_TTLS | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_ttls_register(); | ||||
| #endif /* EAP_TTLS */ | ||||
| 
 | ||||
| #ifdef EAP_GTC | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_gtc_register(); | ||||
| #endif /* EAP_GTC */ | ||||
| 
 | ||||
| #ifdef EAP_OTP | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_otp_register(); | ||||
| #endif /* EAP_OTP */ | ||||
| 
 | ||||
| #ifdef EAP_SIM | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_sim_register(); | ||||
| #endif /* EAP_SIM */ | ||||
| 
 | ||||
| #ifdef EAP_LEAP | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_leap_register(); | ||||
| #endif /* EAP_LEAP */ | ||||
| 
 | ||||
| #ifdef EAP_PSK | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_psk_register(); | ||||
| #endif /* EAP_PSK */ | ||||
| 
 | ||||
| #ifdef EAP_AKA | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_aka_register(); | ||||
| #endif /* EAP_AKA */ | ||||
| 
 | ||||
| #ifdef EAP_AKA_PRIME | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_aka_prime_register(); | ||||
| #endif /* EAP_AKA_PRIME */ | ||||
| 
 | ||||
| #ifdef EAP_FAST | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_fast_register(); | ||||
| #endif /* EAP_FAST */ | ||||
| 
 | ||||
| #ifdef EAP_PAX | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_pax_register(); | ||||
| #endif /* EAP_PAX */ | ||||
| 
 | ||||
| #ifdef EAP_SAKE | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_sake_register(); | ||||
| #endif /* EAP_SAKE */ | ||||
| 
 | ||||
| #ifdef EAP_GPSK | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_gpsk_register(); | ||||
| #endif /* EAP_GPSK */ | ||||
| 
 | ||||
| #ifdef EAP_WSC | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_wsc_register(); | ||||
| #endif /* EAP_WSC */ | ||||
| 
 | ||||
| #ifdef EAP_IKEV2 | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_ikev2_register(); | ||||
| #endif /* EAP_IKEV2 */ | ||||
| 
 | ||||
| #ifdef EAP_VENDOR_TEST | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_vendor_test_register(); | ||||
| #endif /* EAP_VENDOR_TEST */ | ||||
| 
 | ||||
| #ifdef EAP_TNC | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_tnc_register(); | ||||
| #endif /* EAP_TNC */ | ||||
| 
 | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| static struct eapol_callbacks eap_cb; | ||||
| static struct eap_config eap_conf; | ||||
| 
 | ||||
|  |  | |||
|  | @ -102,6 +102,114 @@ static int eap_example_server_init_tls(void) | |||
| } | ||||
| 
 | ||||
| 
 | ||||
| static int eap_server_register_methods(void) | ||||
| { | ||||
| 	int ret = 0; | ||||
| 
 | ||||
| #ifdef EAP_SERVER_IDENTITY | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_identity_register(); | ||||
| #endif /* EAP_SERVER_IDENTITY */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_MD5 | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_md5_register(); | ||||
| #endif /* EAP_SERVER_MD5 */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_TLS | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_tls_register(); | ||||
| #endif /* EAP_SERVER_TLS */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_MSCHAPV2 | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_mschapv2_register(); | ||||
| #endif /* EAP_SERVER_MSCHAPV2 */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_PEAP | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_peap_register(); | ||||
| #endif /* EAP_SERVER_PEAP */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_TLV | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_tlv_register(); | ||||
| #endif /* EAP_SERVER_TLV */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_GTC | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_gtc_register(); | ||||
| #endif /* EAP_SERVER_GTC */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_TTLS | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_ttls_register(); | ||||
| #endif /* EAP_SERVER_TTLS */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_SIM | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_sim_register(); | ||||
| #endif /* EAP_SERVER_SIM */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_AKA | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_aka_register(); | ||||
| #endif /* EAP_SERVER_AKA */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_AKA_PRIME | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_aka_prime_register(); | ||||
| #endif /* EAP_SERVER_AKA_PRIME */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_PAX | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_pax_register(); | ||||
| #endif /* EAP_SERVER_PAX */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_PSK | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_psk_register(); | ||||
| #endif /* EAP_SERVER_PSK */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_SAKE | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_sake_register(); | ||||
| #endif /* EAP_SERVER_SAKE */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_GPSK | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_gpsk_register(); | ||||
| #endif /* EAP_SERVER_GPSK */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_VENDOR_TEST | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_vendor_test_register(); | ||||
| #endif /* EAP_SERVER_VENDOR_TEST */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_FAST | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_fast_register(); | ||||
| #endif /* EAP_SERVER_FAST */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_WSC | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_wsc_register(); | ||||
| #endif /* EAP_SERVER_WSC */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_IKEV2 | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_ikev2_register(); | ||||
| #endif /* EAP_SERVER_IKEV2 */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_TNC | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_tnc_register(); | ||||
| #endif /* EAP_SERVER_TNC */ | ||||
| 
 | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| int eap_example_server_init(void) | ||||
| { | ||||
| 	if (eap_server_register_methods() < 0) | ||||
|  |  | |||
|  | @ -342,10 +342,12 @@ endif | |||
| endif | ||||
| 
 | ||||
| # Basic EAP functionality is needed for EAPOL
 | ||||
| OBJS += eap_register.o | ||||
| OBJS += ../src/eap_server/eap.o | ||||
| OBJS += ../src/eap_common/eap_common.o | ||||
| OBJS += ../src/eap_server/eap_methods.o | ||||
| OBJS += ../src/eap_server/eap_identity.o | ||||
| CFLAGS += -DEAP_SERVER_IDENTITY | ||||
| 
 | ||||
| ifdef CONFIG_EAP | ||||
| CFLAGS += -DEAP_SERVER | ||||
|  |  | |||
							
								
								
									
										133
									
								
								hostapd/eap_register.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										133
									
								
								hostapd/eap_register.c
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,133 @@ | |||
| /*
 | ||||
|  * EAP method registration | ||||
|  * Copyright (c) 2004-2009, Jouni Malinen <j@w1.fi> | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License version 2 as | ||||
|  * published by the Free Software Foundation. | ||||
|  * | ||||
|  * Alternatively, this software may be distributed under the terms of BSD | ||||
|  * license. | ||||
|  * | ||||
|  * See README and COPYING for more details. | ||||
|  */ | ||||
| 
 | ||||
| #include "includes.h" | ||||
| 
 | ||||
| #include "common.h" | ||||
| #include "eap_server/eap_methods.h" | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  * eap_server_register_methods - Register statically linked EAP server methods | ||||
|  * Returns: 0 on success, -1 or -2 on failure | ||||
|  * | ||||
|  * This function is called at program initialization to register all EAP | ||||
|  * methods that were linked in statically. | ||||
|  */ | ||||
| int eap_server_register_methods(void) | ||||
| { | ||||
| 	int ret = 0; | ||||
| 
 | ||||
| #ifdef EAP_SERVER_IDENTITY | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_identity_register(); | ||||
| #endif /* EAP_SERVER_IDENTITY */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_MD5 | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_md5_register(); | ||||
| #endif /* EAP_SERVER_MD5 */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_TLS | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_tls_register(); | ||||
| #endif /* EAP_SERVER_TLS */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_MSCHAPV2 | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_mschapv2_register(); | ||||
| #endif /* EAP_SERVER_MSCHAPV2 */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_PEAP | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_peap_register(); | ||||
| #endif /* EAP_SERVER_PEAP */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_TLV | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_tlv_register(); | ||||
| #endif /* EAP_SERVER_TLV */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_GTC | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_gtc_register(); | ||||
| #endif /* EAP_SERVER_GTC */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_TTLS | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_ttls_register(); | ||||
| #endif /* EAP_SERVER_TTLS */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_SIM | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_sim_register(); | ||||
| #endif /* EAP_SERVER_SIM */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_AKA | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_aka_register(); | ||||
| #endif /* EAP_SERVER_AKA */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_AKA_PRIME | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_aka_prime_register(); | ||||
| #endif /* EAP_SERVER_AKA_PRIME */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_PAX | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_pax_register(); | ||||
| #endif /* EAP_SERVER_PAX */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_PSK | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_psk_register(); | ||||
| #endif /* EAP_SERVER_PSK */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_SAKE | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_sake_register(); | ||||
| #endif /* EAP_SERVER_SAKE */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_GPSK | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_gpsk_register(); | ||||
| #endif /* EAP_SERVER_GPSK */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_VENDOR_TEST | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_vendor_test_register(); | ||||
| #endif /* EAP_SERVER_VENDOR_TEST */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_FAST | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_fast_register(); | ||||
| #endif /* EAP_SERVER_FAST */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_WSC | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_wsc_register(); | ||||
| #endif /* EAP_SERVER_WSC */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_IKEV2 | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_ikev2_register(); | ||||
| #endif /* EAP_SERVER_IKEV2 */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_TNC | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_tnc_register(); | ||||
| #endif /* EAP_SERVER_TNC */ | ||||
| 
 | ||||
| 	return ret; | ||||
| } | ||||
|  | @ -183,4 +183,6 @@ int hostapd_register_probereq_cb(struct hostapd_data *hapd, | |||
| 					    const u8 *ie, size_t ie_len), | ||||
| 				 void *ctx); | ||||
| 
 | ||||
| int eap_server_register_methods(void); | ||||
| 
 | ||||
| #endif /* HOSTAPD_H */ | ||||
|  |  | |||
|  | @ -339,161 +339,6 @@ int eap_peer_method_register(struct eap_method *method) | |||
| } | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  * eap_peer_register_methods - Register statically linked EAP peer methods | ||||
|  * Returns: 0 on success, -1 on failure | ||||
|  * | ||||
|  * This function is called at program initialization to register all EAP peer | ||||
|  * methods that were linked in statically. | ||||
|  */ | ||||
| int eap_peer_register_methods(void) | ||||
| { | ||||
| 	int ret = 0; | ||||
| 
 | ||||
| #ifdef EAP_MD5 | ||||
| 	if (ret == 0) { | ||||
| 		int eap_peer_md5_register(void); | ||||
| 		ret = eap_peer_md5_register(); | ||||
| 	} | ||||
| #endif /* EAP_MD5 */ | ||||
| 
 | ||||
| #ifdef EAP_TLS | ||||
| 	if (ret == 0) { | ||||
| 		int eap_peer_tls_register(void); | ||||
| 		ret = eap_peer_tls_register(); | ||||
| 	} | ||||
| #endif /* EAP_TLS */ | ||||
| 
 | ||||
| #ifdef EAP_MSCHAPv2 | ||||
| 	if (ret == 0) { | ||||
| 		int eap_peer_mschapv2_register(void); | ||||
| 		ret = eap_peer_mschapv2_register(); | ||||
| 	} | ||||
| #endif /* EAP_MSCHAPv2 */ | ||||
| 
 | ||||
| #ifdef EAP_PEAP | ||||
| 	if (ret == 0) { | ||||
| 		int eap_peer_peap_register(void); | ||||
| 		ret = eap_peer_peap_register(); | ||||
| 	} | ||||
| #endif /* EAP_PEAP */ | ||||
| 
 | ||||
| #ifdef EAP_TTLS | ||||
| 	if (ret == 0) { | ||||
| 		int eap_peer_ttls_register(void); | ||||
| 		ret = eap_peer_ttls_register(); | ||||
| 	} | ||||
| #endif /* EAP_TTLS */ | ||||
| 
 | ||||
| #ifdef EAP_GTC | ||||
| 	if (ret == 0) { | ||||
| 		int eap_peer_gtc_register(void); | ||||
| 		ret = eap_peer_gtc_register(); | ||||
| 	} | ||||
| #endif /* EAP_GTC */ | ||||
| 
 | ||||
| #ifdef EAP_OTP | ||||
| 	if (ret == 0) { | ||||
| 		int eap_peer_otp_register(void); | ||||
| 		ret = eap_peer_otp_register(); | ||||
| 	} | ||||
| #endif /* EAP_OTP */ | ||||
| 
 | ||||
| #ifdef EAP_SIM | ||||
| 	if (ret == 0) { | ||||
| 		int eap_peer_sim_register(void); | ||||
| 		ret = eap_peer_sim_register(); | ||||
| 	} | ||||
| #endif /* EAP_SIM */ | ||||
| 
 | ||||
| #ifdef EAP_LEAP | ||||
| 	if (ret == 0) { | ||||
| 		int eap_peer_leap_register(void); | ||||
| 		ret = eap_peer_leap_register(); | ||||
| 	} | ||||
| #endif /* EAP_LEAP */ | ||||
| 
 | ||||
| #ifdef EAP_PSK | ||||
| 	if (ret == 0) { | ||||
| 		int eap_peer_psk_register(void); | ||||
| 		ret = eap_peer_psk_register(); | ||||
| 	} | ||||
| #endif /* EAP_PSK */ | ||||
| 
 | ||||
| #ifdef EAP_AKA | ||||
| 	if (ret == 0) { | ||||
| 		int eap_peer_aka_register(void); | ||||
| 		ret = eap_peer_aka_register(); | ||||
| 	} | ||||
| #endif /* EAP_AKA */ | ||||
| 
 | ||||
| #ifdef EAP_AKA_PRIME | ||||
| 	if (ret == 0) { | ||||
| 		int eap_peer_aka_prime_register(void); | ||||
| 		ret = eap_peer_aka_prime_register(); | ||||
| 	} | ||||
| #endif /* EAP_AKA_PRIME */ | ||||
| 
 | ||||
| #ifdef EAP_FAST | ||||
| 	if (ret == 0) { | ||||
| 		int eap_peer_fast_register(void); | ||||
| 		ret = eap_peer_fast_register(); | ||||
| 	} | ||||
| #endif /* EAP_FAST */ | ||||
| 
 | ||||
| #ifdef EAP_PAX | ||||
| 	if (ret == 0) { | ||||
| 		int eap_peer_pax_register(void); | ||||
| 		ret = eap_peer_pax_register(); | ||||
| 	} | ||||
| #endif /* EAP_PAX */ | ||||
| 
 | ||||
| #ifdef EAP_SAKE | ||||
| 	if (ret == 0) { | ||||
| 		int eap_peer_sake_register(void); | ||||
| 		ret = eap_peer_sake_register(); | ||||
| 	} | ||||
| #endif /* EAP_SAKE */ | ||||
| 
 | ||||
| #ifdef EAP_GPSK | ||||
| 	if (ret == 0) { | ||||
| 		int eap_peer_gpsk_register(void); | ||||
| 		ret = eap_peer_gpsk_register(); | ||||
| 	} | ||||
| #endif /* EAP_GPSK */ | ||||
| 
 | ||||
| #ifdef EAP_WSC | ||||
| 	if (ret == 0) { | ||||
| 		int eap_peer_wsc_register(void); | ||||
| 		ret = eap_peer_wsc_register(); | ||||
| 	} | ||||
| #endif /* EAP_WSC */ | ||||
| 
 | ||||
| #ifdef EAP_IKEV2 | ||||
| 	if (ret == 0) { | ||||
| 		int eap_peer_ikev2_register(void); | ||||
| 		ret = eap_peer_ikev2_register(); | ||||
| 	} | ||||
| #endif /* EAP_IKEV2 */ | ||||
| 
 | ||||
| #ifdef EAP_VENDOR_TEST | ||||
| 	if (ret == 0) { | ||||
| 		int eap_peer_vendor_test_register(void); | ||||
| 		ret = eap_peer_vendor_test_register(); | ||||
| 	} | ||||
| #endif /* EAP_VENDOR_TEST */ | ||||
| 
 | ||||
| #ifdef EAP_TNC | ||||
| 	if (ret == 0) { | ||||
| 		int eap_peer_tnc_register(void); | ||||
| 		ret = eap_peer_tnc_register(); | ||||
| 	} | ||||
| #endif /* EAP_TNC */ | ||||
| 
 | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  * eap_peer_unregister_methods - Unregister EAP peer methods | ||||
|  * | ||||
|  |  | |||
|  | @ -32,7 +32,6 @@ EapType eap_peer_get_type(const char *name, int *vendor); | |||
| const char * eap_get_name(int vendor, EapType type); | ||||
| size_t eap_get_names(char *buf, size_t buflen); | ||||
| char ** eap_get_names_as_string_array(size_t *num); | ||||
| int eap_peer_register_methods(void); | ||||
| void eap_peer_unregister_methods(void); | ||||
| 
 | ||||
| #else /* IEEE8021X_EAPOL */ | ||||
|  | @ -89,4 +88,26 @@ static inline int eap_peer_method_unload(struct eap_method *method) | |||
| 
 | ||||
| #endif /* CONFIG_DYNAMIC_EAP_METHODS */ | ||||
| 
 | ||||
| /* EAP peer method registration calls for statically linked in methods */ | ||||
| int eap_peer_md5_register(void); | ||||
| int eap_peer_tls_register(void); | ||||
| int eap_peer_mschapv2_register(void); | ||||
| int eap_peer_peap_register(void); | ||||
| int eap_peer_ttls_register(void); | ||||
| int eap_peer_gtc_register(void); | ||||
| int eap_peer_otp_register(void); | ||||
| int eap_peer_sim_register(void); | ||||
| int eap_peer_leap_register(void); | ||||
| int eap_peer_psk_register(void); | ||||
| int eap_peer_aka_register(void); | ||||
| int eap_peer_aka_prime_register(void); | ||||
| int eap_peer_fast_register(void); | ||||
| int eap_peer_pax_register(void); | ||||
| int eap_peer_sake_register(void); | ||||
| int eap_peer_gpsk_register(void); | ||||
| int eap_peer_wsc_register(void); | ||||
| int eap_peer_ikev2_register(void); | ||||
| int eap_peer_vendor_test_register(void); | ||||
| int eap_peer_tnc_register(void); | ||||
| 
 | ||||
| #endif /* EAP_METHODS_H */ | ||||
|  |  | |||
|  | @ -133,159 +133,6 @@ int eap_server_method_register(struct eap_method *method) | |||
| } | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  * eap_server_register_methods - Register statically linked EAP server methods | ||||
|  * Returns: 0 on success, -1 on failure | ||||
|  * | ||||
|  * This function is called at program initialization to register all EAP server | ||||
|  * methods that were linked in statically. | ||||
|  */ | ||||
| int eap_server_register_methods(void) | ||||
| { | ||||
| 	int ret = 0; | ||||
| 
 | ||||
| 	if (ret == 0) { | ||||
| 		int eap_server_identity_register(void); | ||||
| 		ret = eap_server_identity_register(); | ||||
| 	} | ||||
| 
 | ||||
| #ifdef EAP_SERVER_MD5 | ||||
| 	if (ret == 0) { | ||||
| 		int eap_server_md5_register(void); | ||||
| 		ret = eap_server_md5_register(); | ||||
| 	} | ||||
| #endif /* EAP_SERVER_MD5 */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_TLS | ||||
| 	if (ret == 0) { | ||||
| 		int eap_server_tls_register(void); | ||||
| 		ret = eap_server_tls_register(); | ||||
| 	} | ||||
| #endif /* EAP_SERVER_TLS */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_MSCHAPV2 | ||||
| 	if (ret == 0) { | ||||
| 		int eap_server_mschapv2_register(void); | ||||
| 		ret = eap_server_mschapv2_register(); | ||||
| 	} | ||||
| #endif /* EAP_SERVER_MSCHAPV2 */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_PEAP | ||||
| 	if (ret == 0) { | ||||
| 		int eap_server_peap_register(void); | ||||
| 		ret = eap_server_peap_register(); | ||||
| 	} | ||||
| #endif /* EAP_SERVER_PEAP */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_TLV | ||||
| 	if (ret == 0) { | ||||
| 		int eap_server_tlv_register(void); | ||||
| 		ret = eap_server_tlv_register(); | ||||
| 	} | ||||
| #endif /* EAP_SERVER_TLV */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_GTC | ||||
| 	if (ret == 0) { | ||||
| 		int eap_server_gtc_register(void); | ||||
| 		ret = eap_server_gtc_register(); | ||||
| 	} | ||||
| #endif /* EAP_SERVER_GTC */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_TTLS | ||||
| 	if (ret == 0) { | ||||
| 		int eap_server_ttls_register(void); | ||||
| 		ret = eap_server_ttls_register(); | ||||
| 	} | ||||
| #endif /* EAP_SERVER_TTLS */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_SIM | ||||
| 	if (ret == 0) { | ||||
| 		int eap_server_sim_register(void); | ||||
| 		ret = eap_server_sim_register(); | ||||
| 	} | ||||
| #endif /* EAP_SERVER_SIM */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_AKA | ||||
| 	if (ret == 0) { | ||||
| 		int eap_server_aka_register(void); | ||||
| 		ret = eap_server_aka_register(); | ||||
| 	} | ||||
| #endif /* EAP_SERVER_AKA */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_AKA_PRIME | ||||
| 	if (ret == 0) { | ||||
| 		int eap_server_aka_prime_register(void); | ||||
| 		ret = eap_server_aka_prime_register(); | ||||
| 	} | ||||
| #endif /* EAP_SERVER_AKA_PRIME */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_PAX | ||||
| 	if (ret == 0) { | ||||
| 		int eap_server_pax_register(void); | ||||
| 		ret = eap_server_pax_register(); | ||||
| 	} | ||||
| #endif /* EAP_SERVER_PAX */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_PSK | ||||
| 	if (ret == 0) { | ||||
| 		int eap_server_psk_register(void); | ||||
| 		ret = eap_server_psk_register(); | ||||
| 	} | ||||
| #endif /* EAP_SERVER_PSK */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_SAKE | ||||
| 	if (ret == 0) { | ||||
| 		int eap_server_sake_register(void); | ||||
| 		ret = eap_server_sake_register(); | ||||
| 	} | ||||
| #endif /* EAP_SERVER_SAKE */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_GPSK | ||||
| 	if (ret == 0) { | ||||
| 		int eap_server_gpsk_register(void); | ||||
| 		ret = eap_server_gpsk_register(); | ||||
| 	} | ||||
| #endif /* EAP_SERVER_GPSK */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_VENDOR_TEST | ||||
| 	if (ret == 0) { | ||||
| 		int eap_server_vendor_test_register(void); | ||||
| 		ret = eap_server_vendor_test_register(); | ||||
| 	} | ||||
| #endif /* EAP_SERVER_VENDOR_TEST */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_FAST | ||||
| 	if (ret == 0) { | ||||
| 		int eap_server_fast_register(void); | ||||
| 		ret = eap_server_fast_register(); | ||||
| 	} | ||||
| #endif /* EAP_SERVER_FAST */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_WSC | ||||
| 	if (ret == 0) { | ||||
| 		int eap_server_wsc_register(void); | ||||
| 		ret = eap_server_wsc_register(); | ||||
| 	} | ||||
| #endif /* EAP_SERVER_WSC */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_IKEV2 | ||||
| 	if (ret == 0) { | ||||
| 		int eap_server_ikev2_register(void); | ||||
| 		ret = eap_server_ikev2_register(); | ||||
| 	} | ||||
| #endif /* EAP_SERVER_IKEV2 */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_TNC | ||||
| 	if (ret == 0) { | ||||
| 		int eap_server_tnc_register(void); | ||||
| 		ret = eap_server_tnc_register(); | ||||
| 	} | ||||
| #endif /* EAP_SERVER_TNC */ | ||||
| 
 | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  * eap_server_unregister_methods - Unregister EAP server methods | ||||
|  * | ||||
|  |  | |||
|  | @ -15,6 +15,8 @@ | |||
| #ifndef EAP_SERVER_METHODS_H | ||||
| #define EAP_SERVER_METHODS_H | ||||
| 
 | ||||
| #include "eap_common/eap_defs.h" | ||||
| 
 | ||||
| const struct eap_method * eap_server_get_eap_method(int vendor, | ||||
| 						    EapType method); | ||||
| struct eap_method * eap_server_method_alloc(int version, int vendor, | ||||
|  | @ -23,8 +25,29 @@ void eap_server_method_free(struct eap_method *method); | |||
| int eap_server_method_register(struct eap_method *method); | ||||
| 
 | ||||
| EapType eap_server_get_type(const char *name, int *vendor); | ||||
| int eap_server_register_methods(void); | ||||
| void eap_server_unregister_methods(void); | ||||
| const char * eap_server_get_name(int vendor, EapType type); | ||||
| 
 | ||||
| /* EAP server method registration calls for statically linked in methods */ | ||||
| int eap_server_identity_register(void); | ||||
| int eap_server_md5_register(void); | ||||
| int eap_server_tls_register(void); | ||||
| int eap_server_mschapv2_register(void); | ||||
| int eap_server_peap_register(void); | ||||
| int eap_server_tlv_register(void); | ||||
| int eap_server_gtc_register(void); | ||||
| int eap_server_ttls_register(void); | ||||
| int eap_server_sim_register(void); | ||||
| int eap_server_aka_register(void); | ||||
| int eap_server_aka_prime_register(void); | ||||
| int eap_server_pax_register(void); | ||||
| int eap_server_psk_register(void); | ||||
| int eap_server_sake_register(void); | ||||
| int eap_server_gpsk_register(void); | ||||
| int eap_server_vendor_test_register(void); | ||||
| int eap_server_fast_register(void); | ||||
| int eap_server_wsc_register(void); | ||||
| int eap_server_ikev2_register(void); | ||||
| int eap_server_tnc_register(void); | ||||
| 
 | ||||
| #endif /* EAP_SERVER_METHODS_H */ | ||||
|  |  | |||
|  | @ -40,6 +40,7 @@ install: all | |||
| 
 | ||||
| OBJS = config.o | ||||
| OBJS += notify.o | ||||
| OBJS += eap_register.o | ||||
| OBJS += ../src/utils/common.o | ||||
| OBJS += ../src/utils/wpa_debug.o | ||||
| OBJS += ../src/utils/wpabuf.o | ||||
|  | @ -582,7 +583,7 @@ ifdef CONFIG_CTRL_IFACE | |||
| OBJS += ../hostapd/ctrl_iface_ap.o | ||||
| endif | ||||
| 
 | ||||
| CFLAGS += -DEAP_SERVER | ||||
| CFLAGS += -DEAP_SERVER -DEAP_SERVER_IDENTITY | ||||
| OBJS += ../src/eap_server/eap.o | ||||
| OBJS += ../src/eap_server/eap_identity.o | ||||
| OBJS += ../src/eap_server/eap_methods.o | ||||
|  |  | |||
							
								
								
									
										235
									
								
								wpa_supplicant/eap_register.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										235
									
								
								wpa_supplicant/eap_register.c
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,235 @@ | |||
| /*
 | ||||
|  * EAP method registration | ||||
|  * Copyright (c) 2004-2009, Jouni Malinen <j@w1.fi> | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License version 2 as | ||||
|  * published by the Free Software Foundation. | ||||
|  * | ||||
|  * Alternatively, this software may be distributed under the terms of BSD | ||||
|  * license. | ||||
|  * | ||||
|  * See README and COPYING for more details. | ||||
|  */ | ||||
| 
 | ||||
| #include "includes.h" | ||||
| 
 | ||||
| #include "common.h" | ||||
| #include "eap_peer/eap_methods.h" | ||||
| #include "eap_server/eap_methods.h" | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  * eap_register_methods - Register statically linked EAP methods | ||||
|  * Returns: 0 on success, -1 or -2 on failure | ||||
|  * | ||||
|  * This function is called at program initialization to register all EAP | ||||
|  * methods that were linked in statically. | ||||
|  */ | ||||
| int eap_register_methods(void) | ||||
| { | ||||
| 	int ret = 0; | ||||
| 
 | ||||
| #ifdef EAP_MD5 | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_md5_register(); | ||||
| #endif /* EAP_MD5 */ | ||||
| 
 | ||||
| #ifdef EAP_TLS | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_tls_register(); | ||||
| #endif /* EAP_TLS */ | ||||
| 
 | ||||
| #ifdef EAP_MSCHAPv2 | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_mschapv2_register(); | ||||
| #endif /* EAP_MSCHAPv2 */ | ||||
| 
 | ||||
| #ifdef EAP_PEAP | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_peap_register(); | ||||
| #endif /* EAP_PEAP */ | ||||
| 
 | ||||
| #ifdef EAP_TTLS | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_ttls_register(); | ||||
| #endif /* EAP_TTLS */ | ||||
| 
 | ||||
| #ifdef EAP_GTC | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_gtc_register(); | ||||
| #endif /* EAP_GTC */ | ||||
| 
 | ||||
| #ifdef EAP_OTP | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_otp_register(); | ||||
| #endif /* EAP_OTP */ | ||||
| 
 | ||||
| #ifdef EAP_SIM | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_sim_register(); | ||||
| #endif /* EAP_SIM */ | ||||
| 
 | ||||
| #ifdef EAP_LEAP | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_leap_register(); | ||||
| #endif /* EAP_LEAP */ | ||||
| 
 | ||||
| #ifdef EAP_PSK | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_psk_register(); | ||||
| #endif /* EAP_PSK */ | ||||
| 
 | ||||
| #ifdef EAP_AKA | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_aka_register(); | ||||
| #endif /* EAP_AKA */ | ||||
| 
 | ||||
| #ifdef EAP_AKA_PRIME | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_aka_prime_register(); | ||||
| #endif /* EAP_AKA_PRIME */ | ||||
| 
 | ||||
| #ifdef EAP_FAST | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_fast_register(); | ||||
| #endif /* EAP_FAST */ | ||||
| 
 | ||||
| #ifdef EAP_PAX | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_pax_register(); | ||||
| #endif /* EAP_PAX */ | ||||
| 
 | ||||
| #ifdef EAP_SAKE | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_sake_register(); | ||||
| #endif /* EAP_SAKE */ | ||||
| 
 | ||||
| #ifdef EAP_GPSK | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_gpsk_register(); | ||||
| #endif /* EAP_GPSK */ | ||||
| 
 | ||||
| #ifdef EAP_WSC | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_wsc_register(); | ||||
| #endif /* EAP_WSC */ | ||||
| 
 | ||||
| #ifdef EAP_IKEV2 | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_ikev2_register(); | ||||
| #endif /* EAP_IKEV2 */ | ||||
| 
 | ||||
| #ifdef EAP_VENDOR_TEST | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_vendor_test_register(); | ||||
| #endif /* EAP_VENDOR_TEST */ | ||||
| 
 | ||||
| #ifdef EAP_TNC | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_peer_tnc_register(); | ||||
| #endif /* EAP_TNC */ | ||||
| 
 | ||||
| 
 | ||||
| #ifdef EAP_SERVER_IDENTITY | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_identity_register(); | ||||
| #endif /* EAP_SERVER_IDENTITY */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_MD5 | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_md5_register(); | ||||
| #endif /* EAP_SERVER_MD5 */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_TLS | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_tls_register(); | ||||
| #endif /* EAP_SERVER_TLS */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_MSCHAPV2 | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_mschapv2_register(); | ||||
| #endif /* EAP_SERVER_MSCHAPV2 */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_PEAP | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_peap_register(); | ||||
| #endif /* EAP_SERVER_PEAP */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_TLV | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_tlv_register(); | ||||
| #endif /* EAP_SERVER_TLV */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_GTC | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_gtc_register(); | ||||
| #endif /* EAP_SERVER_GTC */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_TTLS | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_ttls_register(); | ||||
| #endif /* EAP_SERVER_TTLS */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_SIM | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_sim_register(); | ||||
| #endif /* EAP_SERVER_SIM */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_AKA | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_aka_register(); | ||||
| #endif /* EAP_SERVER_AKA */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_AKA_PRIME | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_aka_prime_register(); | ||||
| #endif /* EAP_SERVER_AKA_PRIME */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_PAX | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_pax_register(); | ||||
| #endif /* EAP_SERVER_PAX */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_PSK | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_psk_register(); | ||||
| #endif /* EAP_SERVER_PSK */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_SAKE | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_sake_register(); | ||||
| #endif /* EAP_SERVER_SAKE */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_GPSK | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_gpsk_register(); | ||||
| #endif /* EAP_SERVER_GPSK */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_VENDOR_TEST | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_vendor_test_register(); | ||||
| #endif /* EAP_SERVER_VENDOR_TEST */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_FAST | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_fast_register(); | ||||
| #endif /* EAP_SERVER_FAST */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_WSC | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_wsc_register(); | ||||
| #endif /* EAP_SERVER_WSC */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_IKEV2 | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_ikev2_register(); | ||||
| #endif /* EAP_SERVER_IKEV2 */ | ||||
| 
 | ||||
| #ifdef EAP_SERVER_TNC | ||||
| 	if (ret == 0) | ||||
| 		ret = eap_server_tnc_register(); | ||||
| #endif /* EAP_SERVER_TNC */ | ||||
| 
 | ||||
| 	return ret; | ||||
| } | ||||
|  | @ -1128,7 +1128,7 @@ int main(int argc, char *argv[]) | |||
| 		return -1; | ||||
| 	} | ||||
| 
 | ||||
| 	if (eap_peer_register_methods()) { | ||||
| 	if (eap_register_methods()) { | ||||
| 		wpa_printf(MSG_ERROR, "Failed to register EAP methods"); | ||||
| 		return -1; | ||||
| 	} | ||||
|  |  | |||
|  | @ -312,7 +312,7 @@ int main(int argc, char *argv[]) | |||
| 		return -1; | ||||
| 	} | ||||
| 
 | ||||
| 	if (eap_peer_register_methods()) { | ||||
| 	if (eap_register_methods()) { | ||||
| 		wpa_printf(MSG_ERROR, "Failed to register EAP methods"); | ||||
| 		return -1; | ||||
| 	} | ||||
|  |  | |||
|  | @ -2286,7 +2286,7 @@ struct wpa_global * wpa_supplicant_init(struct wpa_params *params) | |||
| 	if (params->wpa_debug_syslog) | ||||
| 		wpa_debug_open_syslog(); | ||||
| 
 | ||||
| 	ret = eap_peer_register_methods(); | ||||
| 	ret = eap_register_methods(); | ||||
| 	if (ret) { | ||||
| 		wpa_printf(MSG_ERROR, "Failed to register EAP methods"); | ||||
| 		if (ret == -2) | ||||
|  | @ -2295,17 +2295,6 @@ struct wpa_global * wpa_supplicant_init(struct wpa_params *params) | |||
| 		return NULL; | ||||
| 	} | ||||
| 
 | ||||
| #ifdef CONFIG_AP | ||||
| 	ret = eap_server_register_methods(); | ||||
| 	if (ret) { | ||||
| 		wpa_printf(MSG_ERROR, "Failed to register EAP server methods"); | ||||
| 		if (ret == -2) | ||||
| 			wpa_printf(MSG_ERROR, "Two or more EAP methods used " | ||||
| 				   "the same EAP type."); | ||||
| 		return NULL; | ||||
| 	} | ||||
| #endif /* CONFIG_AP */ | ||||
| 
 | ||||
| 	global = os_zalloc(sizeof(*global)); | ||||
| 	if (global == NULL) | ||||
| 		return NULL; | ||||
|  |  | |||
|  | @ -492,4 +492,7 @@ int wpa_supplicant_trigger_scan(struct wpa_supplicant *wpa_s, | |||
| /* events.c */ | ||||
| void wpa_supplicant_mark_disassoc(struct wpa_supplicant *wpa_s); | ||||
| 
 | ||||
| /* eap_register.c */ | ||||
| int eap_register_methods(void); | ||||
| 
 | ||||
| #endif /* WPA_SUPPLICANT_I_H */ | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Jouni Malinen
						Jouni Malinen