-#
-# PRE: update
-#
map foo { # ERROR
User-Name = 'foo'
}
#
-# PRE: update map
+# PRE: map
#
-update control {
- &Tmp-String-0 := "fail"
-}
+&control.Tmp-String-0 := "fail"
map csv &User-Name {
&control.Tmp-String-0 ^= 'field3'
#
-# PRE: update
+# PRE: map foreach
#
# Test the map xlat
#
-update {
- &Tmp-String-0 := '&control.Tmp-String-0 := \'testing123\''
- &Tmp-String-1 := "request.Vendor-Specific.Nokia-SR.MSAP-Interface = 'UNICAST_7360OLT3'"
- &Tmp-String-1 += "request.Vendor-Specific.Nokia-SR.MSAP-Interface += 'UNICAST_7360OLT4'"
+&request += {
+ &Tmp-String-0 = '&control.Tmp-String-0 := \'testing123\''
+ &Tmp-String-1 = "request.Vendor-Specific.Nokia-SR.MSAP-Interface = 'UNICAST_7360OLT3'"
+ &Tmp-String-1 = "request.Vendor-Specific.Nokia-SR.MSAP-Interface += 'UNICAST_7360OLT4'"
}
if ("%{map:%{Tmp-String-0}}" != 1) {
#
-# PRE: update
+# PRE: map-xlat
#
# Test the map xlat
#
-update {
- &Tmp-String-0 := "request.Tmp-Group-0.Tmp-String-1 = 'testing123'"
-}
+&Tmp-String-0 := "request.Tmp-Group-0.Tmp-String-1 = 'testing123'"
if ("%{map:%{Tmp-String-0}}" != 1) {
test_fail
#
-# PRE: update
+# PRE: map-xlat
#
# Test the map xlat
#
-update {
- &Tmp-String-0 := "request.Tmp-Group-0.Tmp-String-0 := 'testing123'"
-}
+&Tmp-String-0 := "request.Tmp-Group-0.Tmp-String-0 := 'testing123'"
if ("%{map:%{Tmp-String-0}}" != 1) {
test_fail
#
-# PRE: update
+# PRE: map
# PROTOCOL: dhcpv6
#
# Test the map xlat
#
-update {
- &Tmp-String-0 := "IA-PD.IAID = 11"
-}
+&Tmp-String-0 := "IA-PD.IAID = 11"
if ("%{map:%{Tmp-String-0}}" != 1) {
test_fail
#
-# PRE: update if
-#
-update {
- &request.Tmp-String-0 := "This is a string\n"
- &request.Tmp-Octets-0 := 0x000504030201
- &request.Tmp-String-1 := "what do ya want for nothing?"
- &request.Tmp-String-2 := "Jefe"
- &request.Tmp-String-3 := ""
+# PRE: if
+#
+&request += {
+ &Tmp-String-0 = "This is a string\n"
+ &Tmp-Octets-0 = 0x000504030201
+ &Tmp-String-1 = "what do ya want for nothing?"
+ &Tmp-String-2 = "Jefe"
+ &Tmp-String-3 = ""
}
-update request {
- &Tmp-Octets-1 := "%{md4:This is a string\n}"
- &Tmp-Octets-2 := "%{md4:%{Tmp-String-0}}"
- &Tmp-Octets-3 := "%{md4:%{request.Tmp-String-0}}"
- &Tmp-Octets-4 := "%{md4:%{request.Tmp-Octets-0}}"
- &Tmp-Octets-5 := "%{md4:%{Tmp-String-9}}"
+&request += {
+ &Tmp-Octets-1 = "%{md4:This is a string\n}"
+ &Tmp-Octets-2 = "%{md4:%{Tmp-String-0}}"
+ &Tmp-Octets-3 = "%{md4:%{request.Tmp-String-0}}"
+ &Tmp-Octets-4 = "%{md4:%{request.Tmp-Octets-0}}"
+ &Tmp-Octets-5 = "%{md4:%{Tmp-String-9}}"
}
#
#
-# PRE: update if
+# PRE: if
#
-update {
- &request.Tmp-String-0 := "This is a string\n"
- &request.Tmp-Octets-0 := 0x000504030201
- &request.Tmp-String-1 := "what do ya want for nothing?"
- &request.Tmp-String-2 := "Jefe"
- &request.Tmp-String-3 := ""
+&request += {
+ &Tmp-String-0 = "This is a string\n"
+ &Tmp-Octets-0 = 0x000504030201
+ &Tmp-String-1 = "what do ya want for nothing?"
+ &Tmp-String-2 = "Jefe"
+ &Tmp-String-3 = ""
}
-update request {
- &Tmp-Octets-1 := "%{md5:This is a string\n}"
- &Tmp-Octets-2 := "%{md5:%{Tmp-String-0}}"
- &Tmp-Octets-3 := "%{md5:%{request.Tmp-String-0}}"
- &Tmp-Octets-4 := "%{md5:%{request.Tmp-Octets-0}}"
- &Tmp-Octets-5 := "%{md5:%{Tmp-String-9}}"
- &Tmp-Octets-6 := "%(hmacmd5:%{Tmp-String-1} %{Tmp-String-2})"
- &Tmp-Octets-7 := "%(hmacmd5:%{Tmp-String-3} %{Tmp-String-3})"
+&request += {
+ &Tmp-Octets-1 = "%{md5:This is a string\n}"
+ &Tmp-Octets-2 = "%{md5:%{Tmp-String-0}}"
+ &Tmp-Octets-3 = "%{md5:%{request.Tmp-String-0}}"
+ &Tmp-Octets-4 = "%{md5:%{request.Tmp-Octets-0}}"
+ &Tmp-Octets-5 = "%{md5:%{Tmp-String-9}}"
+ &Tmp-Octets-6 = "%(hmacmd5:%{Tmp-String-1} %{Tmp-String-2})"
+ &Tmp-Octets-7 = "%(hmacmd5:%{Tmp-String-3} %{Tmp-String-3})"
}
#
#
-# PRE: update
+# PRE: md5
#
-update request {
- &Tmp-String-1 := "hello"
-}
+&Tmp-String-1 := "hello"
#
# MD5 HMAC with missing key should fail
#
-update request {
- &Tmp-Octets-1 := "%(hmacmd5:%{Tmp-String-1} )" # ERROR
-}
+&Tmp-Octets-1 := "%(hmacmd5:%{Tmp-String-1} )" # ERROR
test_fail
#
-# PRE: update ok-return
+# PRE: ok-return
#
ok {
#
-# PRE: update ok-return
+# PRE: ok-return
#
ok {
#
-# PRE: update
+# PRE: if
#
test
#
-# PRE: update
+# PRE: if
#
# MS CHAPv1
&Vendor-Specific.Microsoft.CHAP-Response := 0x00010000000000000000000000000000000000000000000000008860bbaac0cd3960b4ce5dc6f0f7a462b897ef530484e80f
}
-update request {
- &Tmp-Octets-0 := "%(mschap:Challenge)"
- &Tmp-Octets-1 := "%(mschap:NT-Response)"
- &Tmp-String-0 := "%(mschap:NT-Domain)"
- &Tmp-String-1 := "%(mschap:User-Name)"
+&request += {
+ &Tmp-Octets-0 = "%(mschap:Challenge)"
+ &Tmp-Octets-1 = "%(mschap:NT-Response)"
+ &Tmp-String-0 = "%(mschap:NT-Domain)"
+ &Tmp-String-1 = "%(mschap:User-Name)"
}
if (&Tmp-Octets-0 != 0xe96e4fff2955c4f1) {
#
-# PRE: update expr
+# PRE: expr
#
#
# different numbers of days involved. Check hour / day / week
#
-update request {
- &Tmp-Integer-0 := "%{expr:%(nexttime:2h) - %(nexttime:1h)}"
-}
+&Tmp-Integer-0 := "%{expr:%(nexttime:2h) - %(nexttime:1h)}"
# We have a fudge factor of 1 second either way
if ((&Tmp-Integer-0 < 3599) || (&Tmp-Integer-0 > 3601)) {
test_fail
}
-update request {
- &Tmp-Integer-0 := "%{expr:%(nexttime:3d) - %(nexttime:1d)}"
-}
-
+#
+# Day
+#
+&Tmp-Integer-0 := "%{expr:%(nexttime:3d) - %(nexttime:1d)}"
if ((&Tmp-Integer-0 < 172799) || (&Tmp-Integer-0 > 172801)) {
test_fail
}
-update request {
- &Tmp-Integer-0 := "%{expr:%(nexttime:4w) - %(nexttime:2w)}"
-}
-
+#
+# Week
+#
+&Tmp-Integer-0 := "%{expr:%(nexttime:4w) - %(nexttime:2w)}"
if ((&Tmp-Integer-0 < 1209599) || (&Tmp-Integer-0 > 1209601)) {
test_fail
}
#
-# PRE: if update
+# PRE: if
#
#
-update {
- &control.Auth-Type = 'Accept'
- &reply.Reply-Message = 'pass'
-}
+&control.Auth-Type := 'Accept'
+&reply.Reply-Message := 'pass'
+
# Section should exit after this statement
ok {
ok = return
}
-update {
- &reply.Reply-Message := 'fail'
-}
+#
+# If we hit this statement, that's an error.
+#
+test_fail
-update request {
- &Framed-IP-Address := 127.0.0.1
+#
+# PRE: if
+#
+&request += {
+ &Framed-IP-Address = 127.0.0.1
&NAS-Port = 2112
- &NAS-IP-Address := 127.0.0.2
+ &NAS-IP-Address = 127.0.0.2
}
-update request {
- &Tmp-Octets-0 := "%{pack:%{Framed-IP-Address}%{NAS-Port}%{NAS-IP-Address}}"
-}
+
+&Tmp-Octets-0 := "%{pack:%{Framed-IP-Address}%{NAS-Port}%{NAS-IP-Address}}"
if (&Tmp-Octets-0 != 0x7f000001000008407f000002) {
fail
#
-# PRE: if update return
+# PRE: if return
#
-update request {
- &Tmp-String-0 = "test"
-}
+&Tmp-String-0 = "test"
#
# rpad tests
#
-# PRE: update
+# PRE:
#
parallel {
- update parent.control {
- &Tmp-Integer-0 += 1
+ group {
+ &parent.control += {
+ &Tmp-Integer-0 = 1
+ }
}
- update parent.control {
- &Tmp-Integer-0 += 2
+ group {
+ &parent.control += {
+ &Tmp-Integer-0 = 3
+ }
}
- update parent.control {
- &Tmp-Integer-0 += 3
+ group {
+ &parent.control += {
+ &Tmp-Integer-0 = 5
+ }
}
- update parent.control {
- &Tmp-Integer-0 += 4
+ group {
+ &parent.control += {
+ &Tmp-Integer-0 = 7
+ }
}
}
if ("%{control.Tmp-Integer-0[#]}" != 4) {
test_fail
-
- return
}
+#
+# We can't check order, as there's offically no guarantee on the
+# order in which child sections will be evaluated.
+#
+
+
success