xref: /freebsd/contrib/wpa/src/eap_peer/eap_methods.h (revision 3157ba2193f225049c28b3527f499567dae6ad14)
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 int eap_peer_register_methods(void);
3639beb93cSSam Leffler void eap_peer_unregister_methods(void);
3739beb93cSSam Leffler 
3839beb93cSSam Leffler #else /* IEEE8021X_EAPOL */
3939beb93cSSam Leffler 
4039beb93cSSam Leffler static inline EapType eap_peer_get_type(const char *name, int *vendor)
4139beb93cSSam Leffler {
4239beb93cSSam Leffler 	*vendor = EAP_VENDOR_IETF;
4339beb93cSSam Leffler 	return EAP_TYPE_NONE;
4439beb93cSSam Leffler }
4539beb93cSSam Leffler 
4639beb93cSSam Leffler static inline const char * eap_get_name(int vendor, EapType type)
4739beb93cSSam Leffler {
4839beb93cSSam Leffler 	return NULL;
4939beb93cSSam Leffler }
5039beb93cSSam Leffler 
5139beb93cSSam Leffler static inline size_t eap_get_names(char *buf, size_t buflen)
5239beb93cSSam Leffler {
5339beb93cSSam Leffler 	return 0;
5439beb93cSSam Leffler }
5539beb93cSSam Leffler 
5639beb93cSSam Leffler static inline int eap_peer_register_methods(void)
5739beb93cSSam Leffler {
5839beb93cSSam Leffler 	return 0;
5939beb93cSSam Leffler }
6039beb93cSSam Leffler 
6139beb93cSSam Leffler static inline void eap_peer_unregister_methods(void)
6239beb93cSSam Leffler {
6339beb93cSSam Leffler }
6439beb93cSSam Leffler 
65*3157ba21SRui Paulo static inline char ** eap_get_names_as_string_array(size_t *num)
66*3157ba21SRui Paulo {
67*3157ba21SRui Paulo 	return NULL;
68*3157ba21SRui Paulo }
69*3157ba21SRui Paulo 
7039beb93cSSam Leffler #endif /* IEEE8021X_EAPOL */
7139beb93cSSam Leffler 
7239beb93cSSam Leffler 
7339beb93cSSam Leffler #ifdef CONFIG_DYNAMIC_EAP_METHODS
7439beb93cSSam Leffler 
7539beb93cSSam Leffler int eap_peer_method_load(const char *so);
7639beb93cSSam Leffler int eap_peer_method_unload(struct eap_method *method);
7739beb93cSSam Leffler 
7839beb93cSSam Leffler #else /* CONFIG_DYNAMIC_EAP_METHODS */
7939beb93cSSam Leffler 
8039beb93cSSam Leffler static inline int eap_peer_method_load(const char *so)
8139beb93cSSam Leffler {
8239beb93cSSam Leffler 	return 0;
8339beb93cSSam Leffler }
8439beb93cSSam Leffler 
8539beb93cSSam Leffler static inline int eap_peer_method_unload(struct eap_method *method)
8639beb93cSSam Leffler {
8739beb93cSSam Leffler 	return 0;
8839beb93cSSam Leffler }
8939beb93cSSam Leffler 
9039beb93cSSam Leffler #endif /* CONFIG_DYNAMIC_EAP_METHODS */
9139beb93cSSam Leffler 
9239beb93cSSam Leffler #endif /* EAP_METHODS_H */
93