1526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/*
2526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * EAP peer: Method registration
3526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Copyright (c) 2004-2007, Jouni Malinen <j@w1.fi>
4526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *
5526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * This program is free software; you can redistribute it and/or modify
6526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * it under the terms of the GNU General Public License version 2 as
7526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * published by the Free Software Foundation.
8526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *
9526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Alternatively, this software may be distributed under the terms of BSD
10526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * license.
11526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *
12526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * See README and COPYING for more details.
13526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt */
14526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
15526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#ifndef EAP_METHODS_H
16526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define EAP_METHODS_H
17526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
18526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#include "eap_common/eap_defs.h"
19526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
20526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtconst struct eap_method * eap_peer_get_eap_method(int vendor, EapType method);
21526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtconst struct eap_method * eap_peer_get_methods(size_t *count);
22526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
23526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstruct eap_method * eap_peer_method_alloc(int version, int vendor,
24526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt					  EapType method, const char *name);
25526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtvoid eap_peer_method_free(struct eap_method *method);
26526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtint eap_peer_method_register(struct eap_method *method);
27526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
28526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
29526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#ifdef IEEE8021X_EAPOL
30526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
31526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry ShmidtEapType eap_peer_get_type(const char *name, int *vendor);
32526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtconst char * eap_get_name(int vendor, EapType type);
33526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtsize_t eap_get_names(char *buf, size_t buflen);
34526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtchar ** eap_get_names_as_string_array(size_t *num);
35526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtint eap_peer_register_methods(void);
36526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtvoid eap_peer_unregister_methods(void);
37526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
38526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#else /* IEEE8021X_EAPOL */
39526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
40526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic inline EapType eap_peer_get_type(const char *name, int *vendor)
41526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{
42526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	*vendor = EAP_VENDOR_IETF;
43526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	return EAP_TYPE_NONE;
44526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}
45526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
46526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic inline const char * eap_get_name(int vendor, EapType type)
47526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{
48526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	return NULL;
49526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}
50526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
51526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic inline size_t eap_get_names(char *buf, size_t buflen)
52526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{
53526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	return 0;
54526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}
55526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
56526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic inline int eap_peer_register_methods(void)
57526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{
58526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	return 0;
59526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}
60526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
61526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic inline void eap_peer_unregister_methods(void)
62526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{
63526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}
64526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
65dde787cc314cd04caa4ea5f031cc8a02495ca513Dmitry Shmidtstatic inline char ** eap_get_names_as_string_array(size_t *num)
66dde787cc314cd04caa4ea5f031cc8a02495ca513Dmitry Shmidt{
67dde787cc314cd04caa4ea5f031cc8a02495ca513Dmitry Shmidt	return NULL;
68dde787cc314cd04caa4ea5f031cc8a02495ca513Dmitry Shmidt}
69dde787cc314cd04caa4ea5f031cc8a02495ca513Dmitry Shmidt
70526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#endif /* IEEE8021X_EAPOL */
71526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
72526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
73526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#ifdef CONFIG_DYNAMIC_EAP_METHODS
74526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
75526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtint eap_peer_method_load(const char *so);
76526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtint eap_peer_method_unload(struct eap_method *method);
77526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
78526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#else /* CONFIG_DYNAMIC_EAP_METHODS */
79526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
80526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic inline int eap_peer_method_load(const char *so)
81526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{
82526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	return 0;
83526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}
84526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
85526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic inline int eap_peer_method_unload(struct eap_method *method)
86526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{
87526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	return 0;
88526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}
89526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
90526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#endif /* CONFIG_DYNAMIC_EAP_METHODS */
91526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
92526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#endif /* EAP_METHODS_H */
93