questions about module rlm_perl

Herwin Weststrate herwin at quarantainenet.nl
Fri Feb 20 07:35:54 CET 2015


On 19-02-15 20:39, HAKNER J wrote:
> Working with version 2.2.6, two questions about rlm_perl, perhaps these
> belong on the developers list?
> 
> 1: Why is this module unable to set items on the CONFIG list?  
> Looking in the source code rlm_perl.c at function rlmperl_call,
> the hashes RAD_REPLY,RAD_CHECK,RAD_CONFIG,RAD_REQUEST,RAD_REQUEST_PROXY
> and RAD_REQUEST_PROXY_REPLY are all pre-loaded with the value pairs from
> the corresponding lists before the perl subroutine (e.g. authorize) is
> called.  After the subroutine returns, all of these hashes are examined and
> the values put back into the radiusd value pairs, except RAD_CONFIG.
> I have worked around it, but why can't this module do this?

The hashes RAD_CONFIG and RAD_CHECK are actually loaded with the same
values. from rlm_perl.c:

  697: rad_check_hv = get_hv("RAD_CHECK",1);
  698: rad_config_hv = get_hv("RAD_CONFIG",1);
  705: perl_store_vps(request->config_items, rad_check_hv);
  707: perl_store_vps(request->config_items, rad_config_hv);

Later in this function, the value of rad_check_hv is written back:

  777: if ((get_hv_content(rad_check_hv, &vp)) > 0 ) {
  778:   pairfree(&request->config_items);
  779:   request->config_items = vp;

But this does not happen with the RAD_CONFIG/rad_config_hv (if that
would happen, we'd have the same problem for RAD_CHECK).

RAD_CHECK has been removed in master, but hasn't been backported to
3.0.x because it will break compatibility.

A short log of the changes can be found at
https://github.com/FreeRADIUS/freeradius-server/pull/715

-- 
Herwin Weststrate


More information about the Freeradius-Users mailing list