Skip to content

Commit

Permalink
Include session-state in rlm_perl
Browse files Browse the repository at this point in the history
Via the new variable %RAD_STATE.
  • Loading branch information
qnet-herwin committed Sep 24, 2015
1 parent 4cfcf13 commit 14f0044
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 1 deletion.
4 changes: 3 additions & 1 deletion raddb/mods-config/perl/example.pl
Expand Up @@ -34,14 +34,16 @@
use Data::Dumper;

# Bring the global hashes into the package scope
our (%RAD_REQUEST, %RAD_REPLY, %RAD_CONFIG);
our (%RAD_REQUEST, %RAD_REPLY, %RAD_CONFIG, %RAD_STATE);

# This is hash wich hold original request from radius
#my %RAD_REQUEST;
# In this hash you add values that will be returned to NAS.
#my %RAD_REPLY;
#This is for config items (was %RAD_CHECK in earlier versions)
#my %RAD_CONFIG;
# This is the session-sate
#my %RAD_STATE;
# This is configuration items from "config" perl module configuration section
#my %RAD_PERLCONF;

Expand Down
9 changes: 9 additions & 0 deletions src/modules/rlm_perl/rlm_perl.c
Expand Up @@ -792,6 +792,7 @@ static int do_perl(void *instance, REQUEST *request, char const *function_name)
HV *rad_reply_hv;
HV *rad_config_hv;
HV *rad_request_hv;
HV *rad_state_hv;
#ifdef WITH_PROXY
HV *rad_request_proxy_hv;
HV *rad_request_proxy_reply_hv;
Expand Down Expand Up @@ -828,10 +829,12 @@ static int do_perl(void *instance, REQUEST *request, char const *function_name)
rad_reply_hv = get_hv("RAD_REPLY", 1);
rad_config_hv = get_hv("RAD_CONFIG", 1);
rad_request_hv = get_hv("RAD_REQUEST", 1);
rad_state_hv = get_hv("RAD_STATE", 1);

perl_store_vps(request->packet, request, &request->packet->vps, rad_request_hv, "RAD_REQUEST", "request");
perl_store_vps(request->reply, request, &request->reply->vps, rad_reply_hv, "RAD_REPLY", "reply");
perl_store_vps(request, request, &request->config, rad_config_hv, "RAD_CONFIG", "control");
perl_store_vps(request, request, &request->state, rad_state_hv, "RAD_STATE", "session-state");

#ifdef WITH_PROXY
rad_request_proxy_hv = get_hv("RAD_REQUEST_PROXY",1);
Expand Down Expand Up @@ -910,6 +913,12 @@ static int do_perl(void *instance, REQUEST *request, char const *function_name)
vp = NULL;
}

if ((get_hv_content(request, request, rad_state_hv, &vp, "RAD_STATE", "session-state")) == 0) {
fr_pair_list_free(&request->state);
request->state = vp;
vp = NULL;
}

#ifdef WITH_PROXY
if (request->proxy &&
(get_hv_content(request->proxy, request, rad_request_proxy_hv, &vp,
Expand Down

0 comments on commit 14f0044

Please sign in to comment.