Does this work for anyone else? I'm running 3.0.x HEAD, and finding that this: if (Cisco-AVPair) { foreach &Cisco-AVPair { if (Foreach-Variable-0 =~ /^audit-session-id=(.+)$/) { update request { IC-Cisco-ASID := "%{1}" } } } } ...doesn't work; with a packet of: Received Access-Request Id 10 from ... Cisco-AVPair = 'blah=foo' Cisco-AVPair = 'audit-session-id=foo' ...I get: (10) if (Cisco-AVPair) (10) if (Cisco-AVPair) -> TRUE (10) if (Cisco-AVPair) { (10) foreach &Cisco-AVPair (10) update request { (10) EXPAND %{Foreach-Variable-0} (10) --> blah=foo (10) Tmp-String-0 := '"blah=foo"' (10) } # update request = noop (10) if (Foreach-Variable-0 =~ /^audit-session-id=(.+)$/) (10) if (Foreach-Variable-0 =~ /^audit-session-id=(.+)$/) -> FALSE (10) update request { (10) EXPAND %{Foreach-Variable-0} (10) --> audit-session-id=foo (10) Tmp-String-0 := '"audit-session-id=foo"' (10) } # update request = noop (10) if (Foreach-Variable-0 =~ /^audit-session-id=(.+)$/) (10) if (Foreach-Variable-0 =~ /^audit-session-id=(.+)$/) -> FALSE (10) } # foreach &Cisco-AVPair = noop (10) } # if (Cisco-AVPair) = noop ...but it works if I copy Foreach-Variable-0 to Tmp-String-0 and do the regexp against that. Before I dig any deeper, just wanted to see if it actually works for anyone?