# # PRE: update # # Remove all attributes in a list # update { control:Cleartext-Password := 'hello' reply:Filter-Id := 'filter' } update request { Tunnel-Server-Endpoint := '192.0.1.1' # Should not be tagged Tunnel-Server-Endpoint:0 += '192.0.1.2' # Should not be tagged Tunnel-Server-Endpoint:1 := '192.0.2.1' Tunnel-Server-Endpoint:1 += '192.0.2.2' Tunnel-Server-Endpoint:2 := '192.0.3.1' Tunnel-Server-Endpoint:2 += '192.0.3.2' } update request { Tmp-Integer-0 := "%{debug_attr:request:}" } # Check the tag printing xlat works correctly if ("%{tag:Tunnel-Server-Endpoint[0]}" != '') { update { reply:Filter-Id += 'fail 0a' } } if ("%{tag:Tunnel-Server-Endpoint[1]}" != '') { update { reply:Filter-Id += 'fail 0b' } } if ("%{tag:Tunnel-Server-Endpoint[2]}" != '1') { update { reply:Filter-Id += 'fail 0c' } } if ("%{tag:Tunnel-Server-Endpoint[5]}" != '2') { update { reply:Filter-Id += 'fail 0d' } } if ("%{tag:Tunnel-Server-Endpoint[6]}" != '') { update { reply:Filter-Id += 'fail 0e' } } if ("%{tag:control:Cleartext-Password}" != '') { update { reply:Filter-Id += 'fail 0f' } } # Check that access attributes by tag works first if ("%{Tunnel-Server-Endpoint:2}" != '192.0.3.1') { update { reply:Filter-Id += 'fail 1' } } if ("%{Tunnel-Server-Endpoint:2}" == '192.0.3.2') { update { reply:Filter-Id += 'fail 2' } } if ("%{Tunnel-Server-Endpoint:1}" != '192.0.2.1') { update { reply:Filter-Id += 'fail 3' } } # Get the first instance of Tunnel-Server-Endpoint:2 if ("%{Tunnel-Server-Endpoint:2[0]}" != '192.0.3.1') { update { reply:Filter-Id += 'fail 4' } } # Get the first instance of Tunnel-Server-Endpoint:2 if ("%{Tunnel-Server-Endpoint:2[1]}" != '192.0.3.2') { update { reply:Filter-Id += 'fail 5' } } if ("%{Tunnel-Server-Endpoint:0[2]}" != '') { update { reply:Filter-Id += 'fail 6' } } if ("%{Tunnel-Server-Endpoint:0[0]}" != '192.0.1.1') { update { reply:Filter-Id += 'fail 7' } } if ("%{Tunnel-Server-Endpoint:0[1]}" != '192.0.1.2') { update { reply:Filter-Id += 'fail 8' } } if ("%{Tunnel-Server-Endpoint:0[2]}" != '') { update { reply:Filter-Id += 'fail 9' } } # # Selecting on attributes with no tag specified (should match all of that type) # if ("%{Tunnel-Server-Endpoint[0]}" != '192.0.1.1') { update { reply:Filter-Id += 'fail 10' } } if ("%{Tunnel-Server-Endpoint[1]}" != '192.0.1.2') { update { reply:Filter-Id += 'fail 11' } } if ("%{Tunnel-Server-Endpoint[2]}" != '192.0.2.1') { update { reply:Filter-Id += 'fail 12' } } # # Assignment (xlat) # update request { Tmp-String-0 += "%{Tunnel-Server-Endpoint:2}" #0 Tmp-String-0 += "%{Tunnel-Server-Endpoint:2}" #1 Tmp-String-0 += "%{Tunnel-Server-Endpoint:1}" #2 Tmp-String-0 += "%{Tunnel-Server-Endpoint:2[0]}" #3 Tmp-String-0 += "%{Tunnel-Server-Endpoint:2[1]}" #4 Tmp-String-0 += "%{Tunnel-Server-Endpoint:0[0]}" #5 Tmp-String-0 += "%{Tunnel-Server-Endpoint:0[1]}" #6 Tmp-String-0 += "%{Tunnel-Server-Endpoint:0[2]}" #7 Tmp-String-0 += "%{Tunnel-Server-Endpoint[0]}" #8 Tmp-String-0 += "%{Tunnel-Server-Endpoint[1]}" #9 Tmp-String-0 += "%{Tunnel-Server-Endpoint[2]}" #10 } # Check that access attributes by tag works first if (Tmp-String-0[0] != '192.0.3.1') { update { reply:Filter-Id += 'fail 13' } } if (Tmp-String-0[1] == '192.0.3.2') { update { reply:Filter-Id += 'fail 14' } } if (Tmp-String-0[2] != '192.0.2.1') { update { reply:Filter-Id += 'fail 15' } } # Get the first instance of Tunnel-Server-Endpoint:2 if (Tmp-String-0[3] != '192.0.3.1') { update { reply:Filter-Id += 'fail 16' } } # Get the first instance of Tunnel-Server-Endpoint:2 if (Tmp-String-0[4] != '192.0.3.2') { update { reply:Filter-Id += 'fail 17' } } # Now check the assignment if (Tmp-String-0[5] != '192.0.1.1') { update { reply:Filter-Id += 'fail 18' } } if (Tmp-String-0[6] != '192.0.1.2') { update { reply:Filter-Id += 'fail 19' } } if (Tmp-String-0[7] != '') { update { reply:Filter-Id += 'fail 20' } } if (Tmp-String-0[8] != '192.0.1.1') { update { reply:Filter-Id += 'fail 21' } } if (Tmp-String-0[9] != '192.0.1.2') { update { reply:Filter-Id += 'fail 22' } } if (Tmp-String-0[10] != '192.0.2.1') { update { reply:Filter-Id += 'fail 23' } }