Dominik George via Freeradius-Users <freeradius-users@lists.freeradius.org> wrote:
I tried to do that using the cache module. I set key = "%{Acct-Session-Id}" in the module config and then called
post-auth { cache } in inner-tunnel, but that way, Acct-Session-Id expands to an empty string.
Do you happen to have an example somewhere of how to use the cache module for such a short-term storage?
If your Acct-Session-Id is in the outer session and your username is in the inner session, fist, get them into a variable of the same name, because in one case (Auth) your variable is named "outer.request:Acct-Session-Id" and in the other just "Acct-Session-Id". You need the key = "%{whatever}" statement to always find the value at the same name, (Or use a conditional expansion syntax there). Pay attention in debug logs to which list attributes are in (control/request/reply/outer.request etc) So copy outer:Acct_Session-Id into your inner tunnel request, then run the cache module: update request { Acct-Session-Id := "%{outer.request:Acct-Session-Id}" } cache (and set the ttl in the cache module definition to something short, unless you also need it for Interim/Stop packets) Also, name your cache module. You will probably end up needing more than one cache eventually for some other thing. cache acctidcache { ttl = 30 ... } (then call with "acctidcache" instead of "cache") ...or alternatively set key="%{%{Acct-SessionId}:-%{outer.request:Acct-Session-Id}}" ...if that syntax works there. I've never tried that. A handy trick for debug mode, if you need to see a variable that normal debug does not show you, is an empty if statement: if ("foobar" == "%{Thing-I-Need-To-See}") { } the RHS expansion will then be verbosely logged under -X logging and you can search on "foobar" to find it quickly.