Accessing REQUEST structure data outside FreeRADIUS module

Nicolas Castel nicolas.castel at gmail.com
Wed Apr 12 10:12:41 CEST 2006


Hello and thanks for replies

I'm using FreeRADIUS v1.1.0. I'm developping  some modules and I try to
access auth_req structure (REQUEST) data from an  external function (out of
my module) and it fails. All works fine when  accessing this data from the
module itself but when i call an external  function with the address of
REQUEST, it doesn't work.

Code which  works

/***********************************************************************/
static  int wcp_lt_vms_authorize(void *pt_instance, REQUEST *pt_request) {

   VALUE_PAIR *lpt_value_pair = NULL;
...
 if ((lpt_value_pair =  pairfind(pt_request->packet->vps, PW_USER_NAME)) ==
NULL ) {
      WCP_DEBUG("User-Name not found !");
 } else {
  WCP_DEBUG("RADIUS  attribute name %s, value: [%s]",
   lpt_value_pair->name,
    lpt_value_pair->strvalue);
 }
...
}
/***********************************************************************/

This  works fine, when the server receive a request

Tue Apr 11 16:05:03 2006 :  wcp_lt_vms_authorize: RADIUS attribute name
User-Name, value:  [330001]

The problem comes when doing the same thing but by calling a  function.

/***********************************************************************/
static  int wcp_lt_vms_authorize(void *pt_instance, REQUEST *pt_request)  {
 ...
 lib_com_filter_traffic(pt_request);
 ...
}
/***********************************************************************/
and  in anotherfile, lib_com.c

int lib_com_filter_traffic(REQUEST *pt_request)  {

 VALUE_PAIR *lpt_value_pair = NULL;
...
 if ((lpt_value_pair =  pairfind(pt_request->packet->vps, PW_USER_NAME)) ==
NULL ) {
      WCP_DEBUG("User-Name not found !");
 } else {
  WCP_DEBUG("RADIUS  attribute name %s, value: [%s]",
   lpt_value_pair->name,
    lpt_value_pair->strvalue);
 }
/***********************************************************************/
This  doesn't work. when receiving one request, FreeRADIUS takes a lot of
processor  time and then the server crashes.

Tue Apr 11 17:00:30 2006 : Error:  WARNING: Unresponsive child (id 3) for
request 0

I don't understand  why all works when accessing REQUEST data inside the
module and not in the  lib function. It's like the lib can't accessed to this
memory.
Any help  would be appreciated.




More information about the Freeradius-Users mailing list