From: Nick Porter Date: Thu, 19 Sep 2024 13:32:54 +0000 (+0100) Subject: Convert structural data into Perl hashes X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=40e5a08d0f58c275ee2c53debcf592ce2da7af92;p=thirdparty%2Ffreeradius-server.git Convert structural data into Perl hashes --- diff --git a/src/modules/rlm_perl/rlm_perl.c b/src/modules/rlm_perl/rlm_perl.c index 96d01784d1a..f74a1ab61ae 100644 --- a/src/modules/rlm_perl/rlm_perl.c +++ b/src/modules/rlm_perl/rlm_perl.c @@ -599,7 +599,10 @@ static void perl_parse_config(CONF_SECTION *cs, int lvl, HV *rad_hv) DEBUG("%*s}", indent_section, " "); } -static void perl_vp_to_svpvn_element(request_t *request, AV *av, fr_pair_t const *vp, +static void perl_store_vps(request_t *request, fr_pair_list_t *vps, HV *rad_hv, + const char *hash_name, bool dbg_print); + +static void perl_vp_to_svpvn_element(request_t *request, AV *av, fr_pair_t *vp, int *i, const char *hash_name, bool dbg_print) { @@ -615,6 +618,15 @@ static void perl_vp_to_svpvn_element(request_t *request, AV *av, fr_pair_t const sv = newSVpvn((char const *)vp->vp_octets, vp->vp_length); break; + case FR_TYPE_STRUCTURAL: + { + HV *hv; + hv = newHV(); + perl_store_vps(request, &vp->vp_group, hv, vp->da->name, false); + sv = newRV_noinc((SV *)hv); + } + break; + default: { char buffer[1024]; @@ -690,6 +702,15 @@ static void perl_store_vps(request_t *request, fr_pair_list_t *vps, HV *rad_hv, newSVpvn((char const *)vp->vp_octets, vp->vp_length), 0); break; + case FR_TYPE_STRUCTURAL: + { + HV *hv; + hv = newHV(); + perl_store_vps(request, &vp->vp_group, hv, vp->da->name, false); + (void)hv_store(rad_hv, name, strlen(name), newRV_noinc((SV *)hv), 0); + } + break; + default: { char buffer[1024];