Hello everybody,
here are my Steps how i created an C++ Module for FreeRadius.Create an new Module Section like:
- Adaptions in the radiusd.conf
modules {
cpp {
…
}
}
I created an new Directory named "rlm_cpp" where I putted an Makefile and my rlm_cpp.cpp File
- Creating an new Directory in the modules Directory
Makefile:
TARGET = rlm_cppSRCS = rlm_cpp.cppHEADERS =
RLM_CFLAGS = -I/usr/include
RLM_LIBS = -lc
RLM_INSTALL = install-example
## this uses the RLM_CFLAGS and RLM_LIBS and SRCS defs to make TARGET.
include ../rules.mak
$(LT_OBJS): $(HEADERS)
## the rule that RLM_INSTALL tells the parent rules.mak to use.
install-example:
touch .My outgoing rlm_cpp.cpp File was the *.c File I took.Greetz
Then I need to change every function of this file like this:
extern "C" {
static int cpp_authorize(void *instance, REQUEST *request)}
{...}
Then I added two DEFINES at the TOP of my rlm_cpp.cpp File, because the two words are reserved names in in C.
#define operator op3578000
#define template tem34123
At the end I needed to change the the struct. First I changed the struct in radiusd.conf
struct auth_req {...}
home_server_t *home_server
...
typedef struct radclient {
...home_server_t *coa_server;...
} RADCLIENT;
Also change the Typedef to:
typedef struct home_server {
...
}home_server_t;
Every struct in the Source of FreeRadius need to be changed to home_server_t!
now you should made finallay the main make and see the all should be fine compiled! at the end run "make install " and implement the new C++ Module in an Section in the radiusd.conf and it will run!
Patrick
-
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/devel.html