#ifdef __cplusplus
extern "C" {
#endif
	#include <freeradius/ident.h>
	RCSID("$Id$")
	#include <freeradius/radiusd.h>
	#include <freeradius/modules.h>
#ifdef __cplusplus
}
#endif

//Header with C++ code
//#include "authorize.hpp"


static const CONF_PARSER module_config[] = {
		{ NULL, -1, 0, NULL, NULL }		/* end the list */
	};

static int tokens_instantiate(CONF_SECTION *conf, void **instance); 
static int tokens_authorize(void *instance, REQUEST *request); 
static int tokens_authenticate(void *instance, REQUEST *request); 
static int tokens_postauth(void *instance, REQUEST * request);
static int tokens_detach(void *instance);

module_t rlm_tokens = {
	RLM_MODULE_INIT,
 	"tokens",
 	RLM_TYPE_THREAD_SAFE,		/* type */
 	tokens_instantiate,		/* instantiation */
 	tokens_detach,			/* detach */
 	{
 		tokens_authenticate,	/* authentication */
 		tokens_authorize,		/* authorization */
 		NULL,					/* preaccounting */
 		NULL,					/* accounting */
 		NULL,					/* checksimul */
 		NULL,					/* pre-proxy */
 		NULL,					/* post-proxy */
 		tokens_postauth		/* post-auth */
 	},
};

static int tokens_instantiate(CONF_SECTION *conf, void **instance) {
	return 0;
}

static int tokens_authorize(void *instance, REQUEST *request) {
	//Some C++ code 
	return 0;
}

static int tokens_authenticate(void *instance, REQUEST *request) {
	return 0;
}

static int tokens_postauth(void *instance, REQUEST *request) {
	return 0;
}

static int tokens_detach(void *instance){
	return 0;
}

