xref: /freebsd/contrib/wpa/src/eap_peer/eap_methods.h (revision e28a4053b110e06768631ac8401ed4a3c05e68a5)
139beb93cSSam Leffler /*
239beb93cSSam Leffler  * EAP peer: Method registration
339beb93cSSam Leffler  * Copyright (c) 2004-2007, Jouni Malinen <j@w1.fi>
439beb93cSSam Leffler  *
539beb93cSSam Leffler  * This program is free software; you can redistribute it and/or modify
639beb93cSSam Leffler  * it under the terms of the GNU General Public License version 2 as
739beb93cSSam Leffler  * published by the Free Software Foundation.
839beb93cSSam Leffler  *
939beb93cSSam Leffler  * Alternatively, this software may be distributed under the terms of BSD
1039beb93cSSam Leffler  * license.
1139beb93cSSam Leffler  *
1239beb93cSSam Leffler  * See README and COPYING for more details.
1339beb93cSSam Leffler  */
1439beb93cSSam Leffler 
1539beb93cSSam Leffler #ifndef EAP_METHODS_H
1639beb93cSSam Leffler #define EAP_METHODS_H
1739beb93cSSam Leffler 
1839beb93cSSam Leffler #include "eap_common/eap_defs.h"
1939beb93cSSam Leffler 
2039beb93cSSam Leffler const struct eap_method * eap_peer_get_eap_method(int vendor, EapType method);
2139beb93cSSam Leffler const struct eap_method * eap_peer_get_methods(size_t *count);
2239beb93cSSam Leffler 
2339beb93cSSam Leffler struct eap_method * eap_peer_method_alloc(int version, int vendor,
2439beb93cSSam Leffler 					  EapType method, const char *name);
2539beb93cSSam Leffler void eap_peer_method_free(struct eap_method *method);
2639beb93cSSam Leffler int eap_peer_method_register(struct eap_method *method);
2739beb93cSSam Leffler 
2839beb93cSSam Leffler 
2939beb93cSSam Leffler #ifdef IEEE8021X_EAPOL
3039beb93cSSam Leffler 
3139beb93cSSam Leffler EapType eap_peer_get_type(const char *name, int *vendor);
3239beb93cSSam Leffler const char * eap_get_name(int vendor, EapType type);
3339beb93cSSam Leffler size_t eap_get_names(char *buf, size_t buflen);
3439beb93cSSam Leffler char ** eap_get_names_as_string_array(size_t *num);
3539beb93cSSam Leffler void eap_peer_unregister_methods(void);
3639beb93cSSam Leffler 
3739beb93cSSam Leffler #else /* IEEE8021X_EAPOL */
3839beb93cSSam Leffler 
3939beb93cSSam Leffler static inline EapType eap_peer_get_type(const char *name, int *vendor)
4039beb93cSSam Leffler {
4139beb93cSSam Leffler 	*vendor = EAP_VENDOR_IETF;
4239beb93cSSam Leffler 	return EAP_TYPE_NONE;
4339beb93cSSam Leffler }
4439beb93cSSam Leffler 
4539beb93cSSam Leffler static inline const char * eap_get_name(int vendor, EapType type)
4639beb93cSSam Leffler {
4739beb93cSSam Leffler 	return NULL;
4839beb93cSSam Leffler }
4939beb93cSSam Leffler 
5039beb93cSSam Leffler static inline size_t eap_get_names(char *buf, size_t buflen)
5139beb93cSSam Leffler {
5239beb93cSSam Leffler 	return 0;
5339beb93cSSam Leffler }
5439beb93cSSam Leffler 
5539beb93cSSam Leffler static inline int eap_peer_register_methods(void)
5639beb93cSSam Leffler {
5739beb93cSSam Leffler 	return 0;
5839beb93cSSam Leffler }
5939beb93cSSam Leffler 
6039beb93cSSam Leffler static inline void eap_peer_unregister_methods(void)
6139beb93cSSam Leffler {
6239beb93cSSam Leffler }
6339beb93cSSam Leffler 
643157ba21SRui Paulo static inline char ** eap_get_names_as_string_array(size_t *num)
653157ba21SRui Paulo {
663157ba21SRui Paulo 	return NULL;
673157ba21SRui Paulo }
683157ba21SRui Paulo 
6939beb93cSSam Leffler #endif /* IEEE8021X_EAPOL */
7039beb93cSSam Leffler 
7139beb93cSSam Leffler 
7239beb93cSSam Leffler #ifdef CONFIG_DYNAMIC_EAP_METHODS
7339beb93cSSam Leffler 
7439beb93cSSam Leffler int eap_peer_method_load(const char *so);
7539beb93cSSam Leffler int eap_peer_method_unload(struct eap_method *method);
7639beb93cSSam Leffler 
7739beb93cSSam Leffler #else /* CONFIG_DYNAMIC_EAP_METHODS */
7839beb93cSSam Leffler 
7939beb93cSSam Leffler static inline int eap_peer_method_load(const char *so)
8039beb93cSSam Leffler {
8139beb93cSSam Leffler 	return 0;
8239beb93cSSam Leffler }
8339beb93cSSam Leffler 
8439beb93cSSam Leffler static inline int eap_peer_method_unload(struct eap_method *method)
8539beb93cSSam Leffler {
8639beb93cSSam Leffler 	return 0;
8739beb93cSSam Leffler }
8839beb93cSSam Leffler 
8939beb93cSSam Leffler #endif /* CONFIG_DYNAMIC_EAP_METHODS */
9039beb93cSSam Leffler 
91*e28a4053SRui Paulo /* EAP peer method registration calls for statically linked in methods */
92*e28a4053SRui Paulo int eap_peer_md5_register(void);
93*e28a4053SRui Paulo int eap_peer_tls_register(void);
94*e28a4053SRui Paulo int eap_peer_mschapv2_register(void);
95*e28a4053SRui Paulo int eap_peer_peap_register(void);
96*e28a4053SRui Paulo int eap_peer_ttls_register(void);
97*e28a4053SRui Paulo int eap_peer_gtc_register(void);
98*e28a4053SRui Paulo int eap_peer_otp_register(void);
99*e28a4053SRui Paulo int eap_peer_sim_register(void);
100*e28a4053SRui Paulo int eap_peer_leap_register(void);
101*e28a4053SRui Paulo int eap_peer_psk_register(void);
102*e28a4053SRui Paulo int eap_peer_aka_register(void);
103*e28a4053SRui Paulo int eap_peer_aka_prime_register(void);
104*e28a4053SRui Paulo int eap_peer_fast_register(void);
105*e28a4053SRui Paulo int eap_peer_pax_register(void);
106*e28a4053SRui Paulo int eap_peer_sake_register(void);
107*e28a4053SRui Paulo int eap_peer_gpsk_register(void);
108*e28a4053SRui Paulo int eap_peer_wsc_register(void);
109*e28a4053SRui Paulo int eap_peer_ikev2_register(void);
110*e28a4053SRui Paulo int eap_peer_vendor_test_register(void);
111*e28a4053SRui Paulo int eap_peer_tnc_register(void);
112*e28a4053SRui Paulo 
11339beb93cSSam Leffler #endif /* EAP_METHODS_H */
114