Creating in C++ Module for FreeRadius

Patrick Ko patrick0585 at
Mon Mar 11 14:58:41 CET 2013

Hello everybody,
here are my Steps how i created an C++ Module for FreeRadius.

   - *Adaptions in the radiusd.conf*

         Create an new Module Section like:

modules {

                        cpp {




   - Creating an new Directory in the modules Directory

          I created an new Directory named "*rlm_cpp*" where I putted an
Makefile and my *rlm_cpp.cpp* File


          *TARGET      = rlm_cpp
*SRCS        = rlm_cpp.cpp
*HEADERS     =
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


## the rule that RLM_INSTALL tells the parent rules.mak to use.
        touch .*

My outgoing rlm_cpp.cpp File was the *.c File I took.
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

struct auth_req {
home_server*_t *                    *home_server

typedef struct radclient {
home_server*_t *          *coa_server;

Also change the Typedef to:

typedef struct home_server {

Every struct in the Source of FreeRadius need to be changed to *

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!

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the Freeradius-Devel mailing list