I get this error when I run freeradius using this piece of code in my example.pl: Can't modify constant item in scalar assignment at /etc/freeradius_commu/example.pl line 60, near "NULL;" Execution of /etc/freeradius_commu/example.pl aborted due to compilation errors. rlm_perl: perl_parse failed: /etc/freeradius_commu/example.pl not found or has syntax errors. /etc/freeradius_commu/modules/perl[7]: Instantiation failed for module "perl" /etc/freeradius_commu/sites-enabled/sfrwificommu[9]: Failed to find module "perl". /etc/freeradius_commu/sites-enabled/sfrwificommu[5]: Errors parsing authorize section. -----Message d'origine----- De : freeradius-users-bounces+aurelien.jund=sfr.com@lists.freeradius.org [mailto:freeradius-users-bounces+aurelien.jund=sfr.com@lists.freeradius.org] De la part de Bjørn Mork Envoyé : mercredi 25 août 2010 14:20 À : FreeRadius users mailing list Objet : Re: rlm_perl error "JUND, Aurélien" <aurelien.jund@sfr.com> writes:
3 hashes are given to the module and filled with value-pairs (Attribute names and values):
# %RAD_CHECK Read-only Check items # %RAD_REQUEST Read-only Attributes from the request # %RAD_REPLY Read-write Attributes for the reply
Why are %RAD_CHECK and %RAD_REQUEST Read-Only?
I believe this is wrong. rlm_perl copies data back from all 5 hashes (RAD_REQUEST, RAD_REPLY, RAD_CHECK, RAD_REQUEST_PROXY, RAD_REQUEST_PROXY_REPLY): if ((get_hv_content(rad_request_hv, &vp)) > 0 ) { pairfree(&request->packet->vps); request->packet->vps = vp; vp = NULL; /* * Update cached copies */ request->username = pairfind(request->packet->vps, PW_USER_NAME); request->password = pairfind(request->packet->vps, PW_USER_PASSWORD); if (!request->password) request->password = pairfind(request->packet->vps, PW_CHAP_PASSWORD); } if ((get_hv_content(rad_reply_hv, &vp)) > 0 ) { pairfree(&request->reply->vps); request->reply->vps = vp; vp = NULL; } if ((get_hv_content(rad_check_hv, &vp)) > 0 ) { pairfree(&request->config_items); request->config_items = vp; vp = NULL; } if (request->proxy && (get_hv_content(rad_request_proxy_hv, &vp) > 0)) { pairfree(&request->proxy->vps); request->proxy->vps = vp; vp = NULL; } if (request->proxy_reply && (get_hv_content(rad_request_proxy_reply_hv, &vp) > 0)) { pairfree(&request->proxy_reply->vps); request->proxy_reply->vps = vp; vp = NULL; }
I would like to add check item and modify le request. Is there a way to make them Read-write?
Try it and see if it works. Bjørn - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html