On 13 May 2014, at 10:28, <peter.geiser@id.unibe.ch> <peter.geiser@id.unibe.ch> wrote:
Hi, does the case insensitive flag in unlang regex no longer work in FR 3.0.3?
This Policy match in FR 3.0.2 but not in FR 3.0.3:
set_eduroam_vlan { foreach Cisco-Avpair { if("%{Foreach-Variable-0}" =~ /ssid=eduroam/i) { update { reply:Tunnel-Type := ‚VLAN' reply:Tunnel-Medium-Type := 'IEEE-802‘ }
… (irrelevant part deleted)
} } }
Now debug output:
(11) set_eduroam_vlan set_eduroam_vlan { (11) foreach Cisco-Avpair (11) if ("%{Foreach-Variable-0}" =~ /ssid=eduroam/i) (11) EXPAND %{Foreach-Variable-0} (11) --> ssid=EDUROAM (11) if ("%{Foreach-Variable-0}" =~ /ssid=eduroam/i) -> FALSE (11) } # foreach Cisco-Avpair = noop (11) } # set_eduroam_vlan set_eduroam_vlan = noop
Why does this no longer match with FR 3.0.3?
Workaround: update request { Tmp-String-0 !* ANY } if ("%{Foreach-Variable-0}" =~ /ssid=eduroam%{Tmp-String-0}/i) It's only in compiled expansions. I've updated the test cases and i'll fix the issue now. Arran Cudbard-Bell <a.cudbardb@freeradius.org> FreeRADIUS Development Team FD31 3077 42EC 7FCD 32FE 5EE2 56CF 27F9 30A8 CAA2