Return to eap_manager.h CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / strongswan / src / libcharon / sa / eap |
1.1 misho 1: /* 2: * Copyright (C) 2012 Tobias Brunner 3: * Copyright (C) 2008 Martin Willi 4: * HSR Hochschule fuer Technik Rapperswil 5: * 6: * This program is free software; you can redistribute it and/or modify it 7: * under the terms of the GNU General Public License as published by the 8: * Free Software Foundation; either version 2 of the License, or (at your 9: * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. 10: * 11: * This program is distributed in the hope that it will be useful, but 12: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 13: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14: * for more details. 15: */ 16: 17: /** 18: * @defgroup eap_manager eap_manager 19: * @{ @ingroup eap 20: */ 21: 22: #ifndef EAP_MANAGER_H_ 23: #define EAP_MANAGER_H_ 24: 25: #include <sa/eap/eap_method.h> 26: 27: typedef struct eap_manager_t eap_manager_t; 28: 29: /** 30: * The EAP manager manages all EAP implementations and creates instances. 31: * 32: * A plugin registers it's implemented EAP method at the manager by 33: * providing type and a constructor function. The manager then instantiates 34: * eap_method_t instances through the provided constructor to handle 35: * EAP authentication. 36: */ 37: struct eap_manager_t { 38: 39: /** 40: * Register a EAP method implementation. 41: * 42: * @param method vendor specific method, if vendor != 0 43: * @param vendor vendor ID, 0 for non-vendor (default) EAP methods 44: * @param role EAP role of the registered method 45: * @param constructor constructor function, returns an eap_method_t 46: */ 47: void (*add_method)(eap_manager_t *this, eap_type_t type, uint32_t vendor, 48: eap_role_t role, eap_constructor_t constructor); 49: 50: /** 51: * Unregister a EAP method implementation using it's constructor. 52: * 53: * @param constructor constructor function to remove, as added in add_method 54: */ 55: void (*remove_method)(eap_manager_t *this, eap_constructor_t constructor); 56: 57: /** 58: * Enumerate the registered EAP authentication methods for the given role. 59: * 60: * @note Only authentication types are enumerated (e.g. EAP-Identity is not 61: * even though it is registered as method with this manager). 62: * 63: * @param role EAP role of methods to enumerate 64: * @return enumerator over (eap_type_t type, uint32_t vendor) 65: */ 66: enumerator_t* (*create_enumerator)(eap_manager_t *this, eap_role_t role); 67: 68: /** 69: * Create a new EAP method instance. 70: * 71: * @param type type of the EAP method 72: * @param vendor vendor ID, 0 for non-vendor (default) EAP methods 73: * @param role role of EAP method, either EAP_SERVER or EAP_PEER 74: * @param server identity of the server 75: * @param peer identity of the peer (client) 76: * @return EAP method instance, NULL if no constructor found 77: */ 78: eap_method_t* (*create_instance)(eap_manager_t *this, eap_type_t type, 79: uint32_t vendor, eap_role_t role, 80: identification_t *server, 81: identification_t *peer); 82: 83: /** 84: * Destroy a eap_manager instance. 85: */ 86: void (*destroy)(eap_manager_t *this); 87: }; 88: 89: /** 90: * Create a eap_manager instance. 91: */ 92: eap_manager_t *eap_manager_create(); 93: 94: #endif /** EAP_MANAGER_H_ @}*/