-#
-# PRE: update
-#
# Static if condition
#
if (1) {
}
if (&User-Name != "bob") {
- update reply {
- &Filter-Id := "not bob"
- }
+ test_fail
}
# Matching "if" conditions
#
if (&User-Name != "bob") {
- update reply {
- &Filter-Id := "not bob"
- }
+ test_fail
}
else {
success
# Matching "if" conditions
#
if (&User-Name != "bob") {
- update reply {
- &Filter-Id := "not bob"
- }
+ test_fail
}
elsif (&User-Name == "bob") {
success
}
else {
- update reply {
- &Filter-Id := "last else"
- }
+ test_fail
}
#
-# PRE: update if
+# PRE: if
#
# Static if condition
#
# return code in an "if" section.
#
if (&User-Name == "bob") {
- update request {
- &Proxy-State := 0x01020304
- }
-
ok = reject # ERROR
}
#
-# PRE: update if if-regex-match
+# PRE: if if-regex-match
#
if (&control.Password.Cleartext !~ /hell(o)(.*)/) {
# Check assignment of regex null-match
#
if (&control.Password.Cleartext =~ /hell(o)(.*)/) {
- update {
- &control.Tmp-String-1 := "%{2}"
- }
+ &control.Tmp-String-1 := "%{2}"
}
if (!&control.Tmp-String-1) {
# PRE: if
#
-update request {
- &Tmp-Integer-0 := '123456789'
-}
+&request.Tmp-Integer-0 := '123456789'
# Non matching on attribute ref
if (&User-Name !~ /^([0-9])_([0-9])?_([0-9]*)_([0-9]+)_([^_])_(6)_([7-8])%{Tmp-String-0}/) {
# Matching on attribute ref with capture groups
if (&User-Name =~ /^([0-9])_([0-9])?_([0-9]*)_([0-9]+)_([^_])_(6)_([7-8])%{Tmp-String-0}/) {
# Test all the capture groups
- update {
- &reply.User-Name := "%{7}_%{6}_%{5}_%{4}_%{3}_%{2}_%{1}_%{0}"
- }
+ &reply.User-Name := "%{7}_%{6}_%{5}_%{4}_%{3}_%{2}_%{1}_%{0}"
}
else {
test_fail
test_fail
}
-update request {
- &Tmp-String-0 := "foo\nbar"
-}
+&request.Tmp-String-0 := "foo\nbar"
# uncompiled - ref - multiline
if (&Tmp-String-0 !~ /^foo$%{Tmp-String-8}/m) {
# Matching on attribute ref with capture groups
if (&User-Name =~ /^([0-9])_([0-9])?_([0-9]*)_([0-9]+)_([^_])_(6)_([7-8])/) {
# Test all the capture groups
- update {
- &reply.User-Name := "%{7}_%{6}_%{5}_%{4}_%{3}_%{2}_%{1}_%{0}"
- }
+ &reply.User-Name := "%{7}_%{6}_%{5}_%{4}_%{3}_%{2}_%{1}_%{0}"
}
else {
test_fail
test_fail
}
-update request {
- &Tmp-String-0 := "foo\nbar"
-}
+&Tmp-String-0 := "foo\nbar"
# compiled - ref - multiline
if (&Tmp-String-0 !~ /^foo$/m) {
#
-# PRE: update if
+# PRE: if
#
"%{map:&TLS-Certificate.Issuer = 'foo'}"
# PRE: update if
#
-update request {
+&request += {
# Dotted Quad
- &Tmp-IP-Address-0 := 127.0.0.1
+ &Tmp-IP-Address-0 = 127.0.0.1
# Dotted Quad with prefix
- &Tmp-IP-Address-1 := 127.0.0.2/32
+ &Tmp-IP-Address-1 = 127.0.0.2/32
# Hex (0x)
- &Tmp-IP-Address-2 := 0x7f000003
+ &Tmp-IP-Address-2 = 0x7f000003
# Decimal
- &Tmp-IP-Address-3 := 2130706436
+ &Tmp-IP-Address-3 = 2130706436
}
if (&NAS-IP-Address != 127.0.0.1) {
#
# Malformed NAS-IP-Address
#
+# @todo - allow "raw" in the new edit sections!
+#
update request {
&raw.4 = 0x010203
}
debug_request
if (!&raw.4) {
- update reply {
- &Filter-Id := "Cannot find newly added raw attribute"
- }
+ test_fail
}
-else {
- if (&raw.4 != 0x010203) {
- update reply {
- &Filter-Id := "raw.4 is not 0x0120203"
- }
- }
+elsif (&raw.4 != 0x010203) {
+ test_fail
}
success
#
-# PRE: update if
+# PRE: if
#
-
-update control {
- &Tmp-Cast-IPv4Prefix := 198.51.100.255/16
- &Tmp-Cast-IPv6Prefix := ::198.51.100.255/112
- &Framed-IP-Address := 198.51.0.1
+&control += {
+ &Tmp-Cast-IPv4Prefix = 198.51.100.255/16
+ &Tmp-Cast-IPv6Prefix = ::198.51.100.255/112
+ &Framed-IP-Address = 198.51.0.1
}
if (&control.Tmp-Cast-IPv6Prefix != '::198.51.0.0/112') {
test_fail
}
-update session-state {
- &User-Name := 'foo'
-}
+&session-state.User-Name := 'foo'
if (!&session-state.) {
test_fail
-# PRE: update if foreach
+#
+# PRE: if foreach
#
# Load-Balance blocks.
#
# Should distribute load between the modules.
#
-update request {
- &Tmp-Integer-0 := 0
- &Tmp-Integer-1 := 0
+&request += {
+ &Tmp-Integer-0 = 0
+ &Tmp-Integer-1 = 0
- &Tmp-Integer-2 += 0 # 0
- &Tmp-Integer-2 += 1
- &Tmp-Integer-2 += 2
- &Tmp-Integer-2 += 3
- &Tmp-Integer-2 += 4
- &Tmp-Integer-2 += 5
- &Tmp-Integer-2 += 6
- &Tmp-Integer-2 += 7
- &Tmp-Integer-2 += 8
- &Tmp-Integer-2 += 9 # 10
- &Tmp-Integer-2 += 0
- &Tmp-Integer-2 += 1
- &Tmp-Integer-2 += 2
- &Tmp-Integer-2 += 3
- &Tmp-Integer-2 += 4
- &Tmp-Integer-2 += 5
- &Tmp-Integer-2 += 6
- &Tmp-Integer-2 += 7
- &Tmp-Integer-2 += 8
- &Tmp-Integer-2 += 9 # 20
- &Tmp-Integer-2 += 0
- &Tmp-Integer-2 += 1
- &Tmp-Integer-2 += 2
- &Tmp-Integer-2 += 3
- &Tmp-Integer-2 += 4
- &Tmp-Integer-2 += 5
- &Tmp-Integer-2 += 6
- &Tmp-Integer-2 += 7
- &Tmp-Integer-2 += 8
- &Tmp-Integer-2 += 9 # 30
- &Tmp-Integer-2 += 0
- &Tmp-Integer-2 += 1
- &Tmp-Integer-2 += 2
- &Tmp-Integer-2 += 3
- &Tmp-Integer-2 += 4
- &Tmp-Integer-2 += 5
- &Tmp-Integer-2 += 6
- &Tmp-Integer-2 += 7
- &Tmp-Integer-2 += 8
- &Tmp-Integer-2 += 9 # 40
- &Tmp-Integer-2 += 0
- &Tmp-Integer-2 += 1
- &Tmp-Integer-2 += 2
- &Tmp-Integer-2 += 3
- &Tmp-Integer-2 += 4
- &Tmp-Integer-2 += 5
- &Tmp-Integer-2 += 6
- &Tmp-Integer-2 += 7
- &Tmp-Integer-2 += 8
- &Tmp-Integer-2 += 9 # 49
+ &Tmp-Integer-2 = 0 # 0
+ &Tmp-Integer-2 = 1
+ &Tmp-Integer-2 = 2
+ &Tmp-Integer-2 = 3
+ &Tmp-Integer-2 = 4
+ &Tmp-Integer-2 = 5
+ &Tmp-Integer-2 = 6
+ &Tmp-Integer-2 = 7
+ &Tmp-Integer-2 = 8
+ &Tmp-Integer-2 = 9 # 10
+ &Tmp-Integer-2 = 0
+ &Tmp-Integer-2 = 1
+ &Tmp-Integer-2 = 2
+ &Tmp-Integer-2 = 3
+ &Tmp-Integer-2 = 4
+ &Tmp-Integer-2 = 5
+ &Tmp-Integer-2 = 6
+ &Tmp-Integer-2 = 7
+ &Tmp-Integer-2 = 8
+ &Tmp-Integer-2 = 9 # 20
+ &Tmp-Integer-2 = 0
+ &Tmp-Integer-2 = 1
+ &Tmp-Integer-2 = 2
+ &Tmp-Integer-2 = 3
+ &Tmp-Integer-2 = 4
+ &Tmp-Integer-2 = 5
+ &Tmp-Integer-2 = 6
+ &Tmp-Integer-2 = 7
+ &Tmp-Integer-2 = 8
+ &Tmp-Integer-2 = 9 # 30
+ &Tmp-Integer-2 = 0
+ &Tmp-Integer-2 = 1
+ &Tmp-Integer-2 = 2
+ &Tmp-Integer-2 = 3
+ &Tmp-Integer-2 = 4
+ &Tmp-Integer-2 = 5
+ &Tmp-Integer-2 = 6
+ &Tmp-Integer-2 = 7
+ &Tmp-Integer-2 = 8
+ &Tmp-Integer-2 = 9 # 40
+ &Tmp-Integer-2 = 0
+ &Tmp-Integer-2 = 1
+ &Tmp-Integer-2 = 2
+ &Tmp-Integer-2 = 3
+ &Tmp-Integer-2 = 4
+ &Tmp-Integer-2 = 5
+ &Tmp-Integer-2 = 6
+ &Tmp-Integer-2 = 7
+ &Tmp-Integer-2 = 8
+ &Tmp-Integer-2 = 9 # 49
}
#
foreach &Tmp-Integer-2 {
load-balance {
group {
- update request {
- &Tmp-Integer-0 := "%{expr:%{Tmp-Integer-0} + 1}"
- &Filter-Id += "PICKED GROUP 1 %{Tmp-Integer-0} TIME(S)"
+ &Tmp-Integer-0 += 1
+ &request += {
+ &Tmp-String-0 = "Picked group 1 - %{Tmp-Integer-0} time(s)"
}
ok
}
group {
- update request {
- &Tmp-Integer-1 := "%{expr:%{Tmp-Integer-1} + 1}"
- &Filter-Id += "PICKED GROUP 2 %{Tmp-Integer-1} TIME(S)"
+ &Tmp-Integer-1 += 1
+ &request += {
+ &Tmp-String-1 = "Picked group 2 %{Tmp-Integer-1} Time(s)"
}
ok
}
if ((&Tmp-Integer-0 == 0) || (&Tmp-Integer-1 == 0)) {
test_fail
}
-else {
- success
+
+if (%{expr:%{Tmp-Integer-0} + %{Tmp-Integer-1}} != 50) {
+ test_fail
}
+
+success