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