blob: edf92e538a80faa95f57cbde041c14aa2ef9c95f [file] [log] [blame]
Brian Waters13d96012017-12-08 16:53:31 -06001/*****************************************************************************************************
2 * Software License Agreement (BSD License)
3 * Author : Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
4 *
5 * Copyright (c) 2009-2010, Souheil Ben Ayed, Teraoka Laboratory of Keio University, and the WIDE Project
6 * All rights reserved.
7 *
8 * Redistribution and use of this software in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions are met:
10 *
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 *
14 * 2. Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in the
16 * documentation and/or other materials provided with the distribution.
17 *
18 * 3. All advertising materials mentioning features or use of this software
19 * must display the following acknowledgement:
20 * This product includes software developed by Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>.
21 *
22 * 4. Neither the name of Souheil Ben Ayed, Teraoka Laboratory of Keio University or the WIDE Project nor the
23 * names of its contributors may be used to endorse or promote products
24 * derived from this software without specific prior written permission.
25 *
26 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ''AS IS'' AND ANY
27 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
28 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
29 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY
30 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
31 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
32 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
33 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 *****************************************************************************************************/
37
38
39#ifndef _PLUGINS_H
40#define _PLUGINS_H
41
42#include "libdiameap.h"
43#include "libcrypt.h"
44
45
46
47
48/* Macro that define the register functions of an EAP method */
49#define REGISTER_METHOD(_methodName, _configFunction, _initFunction, _initPickUpFunction, _buildReqFunction, _getTimeoutFunction, _checkFunction, _processFunction, _isDoneFunction, _getKeyFunction, _unregisterFunction, _datafreeFunction ) \
50static struct register_plugin *registerplugin = NULL; \
51static int isregistered = 0; \
52int diameap_plugin_register() { \
53 if (!isregistered){ \
54 registerplugin = malloc (sizeof(struct register_plugin)); \
55 if(registerplugin==NULL) \
56 fprintf(stderr,"[DiamEAP extension] Error in registering plug-in\t%s\n",strerror(errno)); \
57 memset(registerplugin, 0, sizeof(struct register_plugin)); \
58 if(_configFunction) registerplugin->configure=_configFunction; \
59 if(_initFunction) registerplugin->init=_initFunction; \
60 if(_initPickUpFunction) registerplugin->initPickUp=_initPickUpFunction; \
61 if(_buildReqFunction) registerplugin->buildReq=_buildReqFunction; \
62 if(_getTimeoutFunction) registerplugin->getTimeout=_getTimeoutFunction; \
63 if(_checkFunction) registerplugin->check=_checkFunction; \
64 if(_processFunction) registerplugin->process=_processFunction; \
65 if(_isDoneFunction) registerplugin->isDone=_isDoneFunction; \
66 if(_getKeyFunction) registerplugin->getKey=_getKeyFunction; \
67 if(_unregisterFunction) registerplugin->unregister=_unregisterFunction; \
68 if(_datafreeFunction) registerplugin->datafree=_datafreeFunction; \
69 isregistered++; \
70 }else{ \
71 fprintf(stderr, "Cannot register the " _methodName " plugin twice\n"); \
72 return EINVAL; \
73 } \
74 return 0; \
75 } \
76int diameap_plugin_objects(struct register_plugin ** rplugin){ \
77*rplugin=registerplugin; \
78return 0; \
79} \
80
81
82#endif /*_PLUGINS_H*/