Hello everybody,<br>here are my Steps how i created an C++ Module for FreeRadius.<br><br><ul><li><b>Adaptions in the radiusd.conf</b></li></ul>         Create an new Module Section like:<br><br>         

<p class="MsoNormal" style="margin-left:35.4pt">modules {<span style>                                                                   </span><span style="color:blue"><br></span></p>

<p class="MsoNormal" style="margin-left:35.4pt"><span style>                        </span>cpp
{</p>

<p class="MsoNormal" style="margin-left:35.4pt"><span style>                                   </span>…</p>

<p class="MsoNormal" style="margin-left:35.4pt"><span style>                        </span><span style>       </span>}</p>

<p class="MsoNormal" style="margin-left:35.4pt"><span style>            </span><span style>    </span>}</p>

<br><br><ul><li>Creating an new Directory in the modules Directory <br></li></ul>          I created an new Directory named "<b>rlm_cpp</b>" where I putted an Makefile and my <b>rlm_cpp.cpp</b> File<br><br><br>
          <b>Makefile:</b><br><br>          <i>TARGET      = rlm_cpp<br></i><div style="margin-left:40px"><i>SRCS        = rlm_cpp.cpp <br></i></div><div style="margin-left:40px"><i>HEADERS     = <br>RLM_CFLAGS  =  -I/usr/include<br>
RLM_LIBS    =  -lc<br>RLM_INSTALL = install-example<br><br>## this uses the RLM_CFLAGS and RLM_LIBS and SRCS defs to make TARGET.<br>include ../rules.mak<br><br>$(LT_OBJS): $(HEADERS)<br><br>## the rule that RLM_INSTALL tells the parent rules.mak to use.<br>
install-example:<br>        touch .</i><br><br><br></div><div style="margin-left:40px">My outgoing rlm_cpp.cpp File was the *.c File I took.<br>Then I need to change every function of this file like this:<br><br><b>extern "C"</b> {<br>
<div style="margin-left:40px">static int cpp_authorize(void *instance, REQUEST *request)<br>{<br><div style="margin-left:40px">...<br></div>}<br></div>}<br><br>Then I added two DEFINES at the TOP of my rlm_cpp.cpp File, because the two words are reserved names in in C.<br>
<br><b>#define operator op3578000<br>#define template tem34123</b><br><br>At the end I needed to change the the struct. First I changed the struct in radiusd.conf<br><br>struct auth_req {<br><div style="margin-left:40px">
...<br>home_server<b>_t </b>                    *home_server<br>...<br></div>}<br><br>typedef struct radclient {<br>...<br><div style="margin-left:40px">home_server<b>_t </b>          *coa_server;<br></div>...<br>} RADCLIENT;<br>
<br>Also change the Typedef to:<br><br><span style="font-size:12.0pt;font-family:"Times New Roman"" lang="EN-GB">typedef struct
home_server {<br>...<br>}</span><span style="font-size:12.0pt;font-family:"Times New Roman"" lang="EN-GB">home_server<b style><span style="color:red">_t;</span></b></span><br><br>Every struct in the Source of FreeRadius need to be changed to <font size="4"><b>home_server_t</b></font>!<br>
<br><br>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!<br><br>
<br></div>Greetz<br>Patrick<br><br>