#
-# PRE: update
+# PRE: if
#
# Static if condition
#
# We're not running the 'pap' module, so
# we have to set this ourselves.
#
- update control {
- &Auth-Type := pap
- }
+ &control.Auth-Type := pap
# not at the end of a section
actions { # ERROR
ok
}
-test_fail
+test_fail
\ No newline at end of file
#
-# PRE: update
+# PRE: if
#
# Static if condition
#
# We're not running the 'pap' module, so
# we have to set this ourselves.
#
- update control {
- &Auth-Type := pap
- }
+ &control.Auth-Type := pap
actions {
ok = return
#
# Tests for dereferencing the Nth attribute
#
-update request {
- &Class := 0x01020304
- &Class += 0x05060708
- &Class += 0x090a0b0c
+&request += {
+ &Class = 0x01020304,
+ &Class = 0x05060708,
+ &Class = 0x090a0b0c,
}
-debug_request
+if (%{Class[#]} != 3) {
+ test_fail
+}
if (&Class[0] != 0x01020304) {
test_fail
#
# PRE: hex
#
-update request {
- &Tmp-String-0 := '9870'
- &Tmp-Octets-0 := 0x39383731
- &Tmp-IP-Address-0 := 57.56.55.50
- &Tmp-Integer-0 := 959985460
- &Tmp-Cast-IfId := '0000:0000:3938:3737'
- &Tmp-Cast-IPv6Addr := '::3938:3738'
- &Tmp-Cast-IPv6Prefix := '::3938:3739/128'
- &Tmp-Cast-Byte := 58
- &Tmp-Cast-Short := 14139
- &Tmp-Cast-Ether := 00:00:39:38:37:3c
- &Tmp-Cast-Integer64 := 1152921505566832445
- &Tmp-Cast-IPv4Prefix := 57.56.55.62/32
-}
-
-update request {
- &Tmp-String-0 := "%{base64:%{Tmp-String-0}}"
- &Tmp-String-1 := "%{base64:%{Tmp-Octets-0}}"
- &Tmp-String-2 := "%{base64:%{Tmp-IP-Address-0}}"
- &Tmp-String-4 := "%{base64:%{Tmp-Integer-0}}"
- &Tmp-String-6 := "%{base64:%{Tmp-Cast-Ifid}}"
- &Tmp-String-7 := "%{base64:%{Tmp-Cast-IPv6Addr}}"
- &Tmp-String-8 := "%{base64:%{Tmp-Cast-IPv6Prefix}}"
- &Tmp-String-9 := "%{base64:%{Tmp-Cast-Byte}}"
-}
+&request += {
+ &Tmp-String-0 = '9870'
+ &Tmp-Octets-0 = 0x39383731
+ &Tmp-IP-Address-0 = 57.56.55.50
+ &Tmp-Integer-0 = 959985460
+ &Tmp-Cast-IfId = '0000:0000:3938:3737'
+ &Tmp-Cast-IPv6Addr = '::3938:3738'
+ &Tmp-Cast-IPv6Prefix = '::3938:3739/128'
+ &Tmp-Cast-Byte = 58
+ &Tmp-Cast-Short = 14139
+ &Tmp-Cast-Ether = 00:00:39:38:37:3c
+ &Tmp-Cast-Integer64 = 1152921505566832445
+ &Tmp-Cast-IPv4Prefix = 57.56.55.62/32
+}
+
+ok
+
+&request <= {
+ &Tmp-String-0 = "%{base64:%{Tmp-String-0}}"
+ &Tmp-String-1 = "%{base64:%{Tmp-Octets-0}}"
+ &Tmp-String-2 = "%{base64:%{Tmp-IP-Address-0}}"
+ &Tmp-String-4 = "%{base64:%{Tmp-Integer-0}}"
+ &Tmp-String-6 = "%{base64:%{Tmp-Cast-Ifid}}"
+ &Tmp-String-7 = "%{base64:%{Tmp-Cast-IPv6Addr}}"
+ &Tmp-String-8 = "%{base64:%{Tmp-Cast-IPv6Prefix}}"
+ &Tmp-String-9 = "%{base64:%{Tmp-Cast-Byte}}"
+}
+
+%(debug_attr:request[*])
# String - bin 0x39383730
if (&Tmp-String-0[0] != 'OTg3MA==') {
test_fail
}
-update request {
- &Tmp-String-0 := "%{base64:%{Tmp-Cast-Short}}"
- &Tmp-String-1 := "%{base64:%{Tmp-Cast-Ether}}"
- &Tmp-String-2 := "%{base64:%{Tmp-Cast-Integer64}}"
- &Tmp-String-3 := "%{base64:%{Tmp-Cast-IPv4Prefix}}"
+&request <= {
+ &Tmp-String-0 = "%{base64:%{Tmp-Cast-Short}}"
+ &Tmp-String-1 = "%{base64:%{Tmp-Cast-Ether}}"
+ &Tmp-String-2 = "%{base64:%{Tmp-Cast-Integer64}}"
+ &Tmp-String-3 = "%{base64:%{Tmp-Cast-IPv4Prefix}}"
}
# short - bin 0x373b
test_fail
}
-update request {
- &Tmp-Octets-0 := "%{base64decode:Zm9v}"
- &Tmp-Octets-1 := "%{base64decode:AIAAAAAAAAAAAAAAAAA5ODc5}"
+&request <= {
+ &Tmp-Octets-0 = "%{base64decode:Zm9v}"
+ &Tmp-Octets-1 = "%{base64decode:AIAAAAAAAAAAAAAAAAA5ODc5}"
}
if (&Tmp-Octets-0 != "foo") {
}
# Regression tests
-update request {
- &Tmp-Octets-0 := %{base64decode:5RNqNl8iYLbkCc7JhR8as4TtDDCX6otuuWtcja8rITUyx9zrnHSe9tTHGmKK}
+&request <= {
+ &Tmp-Octets-0 = %{base64decode:5RNqNl8iYLbkCc7JhR8as4TtDDCX6otuuWtcja8rITUyx9zrnHSe9tTHGmKK}
}
if (&Tmp-Octets-0 != 0xe5136a365f2260b6e409cec9851f1ab384ed0c3097ea8b6eb96b5c8daf2b213532c7dceb9c749ef6d4c71a628a) {
test_fail
}
-update request {
- &Tmp-Octets-0 := "%{base64decode:eHfXPKZ+2iv9cnMV1MOmE/moYYA1Uk5xTmw4aVlMYmtDYzdKaFI4YXM0VHRERENYNm90dXVXdGNqYThySVRVeXg5enJuSFNlOXRUSEdtS0s=}"
+&request <= {
+ &Tmp-Octets-0 = "%{base64decode:eHfXPKZ+2iv9cnMV1MOmE/moYYA1Uk5xTmw4aVlMYmtDYzdKaFI4YXM0VHRERENYNm90dXVXdGNqYThySVRVeXg5enJuSFNlOXRUSEdtS0s=}"
}
if (&Tmp-Octets-0 != 0x7877d73ca67eda2bfd727315d4c3a613f9a8618035524e714e6c3869594c626b4363374a685238617334547444444358366f7475755774636a6138724954557978397a726e48536539745448476d4b4b) {
#
-# PRE: update
+# PRE: if
#
call second {
- update reply {
- &Reply-Message += 'call second post'
- }
+ &reply.Reply-Message += 'call second post'
}
if (!&reply.Reply-Message) {
test_fail
}
-update reply {
- &Reply-Message !* ANY
-}
+&reply -= &Reply-Message
success
#
-# PRE: update
+# PRE: if call
#
# Test empty call section
test_fail
}
-update reply {
- &Reply-Message !* ANY
-}
+&reply -= &Reply-Message
success
#
-# PRE: update
+# PRE:
#
# Doesn't yet pass because we need to stop processing
# PRE: switch
#
-update request {
- &Filter-Id := ""
-}
+&request.Filter-Id := ""
switch &Filter-Id {
case "" {
}
case "doug" {
- update reply {
- &Filter-Id := "doug"
- }
+ &reply.Filter-Id := "doug"
}
case {
- update reply {
- &Filter-Id := "default"
- }
+ &reply.Filter-Id := "default"
}
}
#
-# PRE: update if
+# PRE: if
#
-update {
- &request.Class := 0xad
-}
+&request.Class := 0xad
if (<byte>&Class == 173) {
success
}
if (<byte>&Class < 173) {
- update reply {
- &Filter-Id += "wrong"
- }
+ test_fail
}
if (<byte>&Class > 173) {
- update reply {
- &Filter-Id += "wrong"
- }
+ test_fail
}
#
-# PRE: update if
+# PRE: if
#
-update {
- &request.Class := 0x00000101
-}
+&request.Class := 0x00000101
if (<integer>&Class[0] == 257) {
success
}
if (<integer>&Class[0] < 256) {
- update reply {
- &Filter-Id += "wrong"
- }
+ test_fail
}
if (<integer>&Class[0] > 257) {
- update reply {
- &Filter-Id += "wrong"
- }
+ test_fail
}
#
# PRE: update if redundant
#
-update {
- &request.NAS-IP-Address := 127.0.0.1
- &request.Tmp-Integer-0 := 0x7f000001
-}
+&request.NAS-IP-Address := 127.0.0.1
+&request.Tmp-Integer-0 := 0x7f000001
-update request {
- &Tmp-String-0[0] := &NAS-IP-Address
-}
+&Tmp-String-0 := &NAS-IP-Address
if (<ipaddr>&Tmp-Integer-0[0] != &NAS-IP-Address) {
test_fail
#
-# PRE: update if
+# PRE: if
#
-update {
- &request.Class := 0x0101
-}
+&request.Class := 0x0101
if (<short>&Class == 257) {
success
}
if (<short>&Class < 256) {
- update reply {
- &Filter-Id += "wrong"
- }
+ test_fail
}
if (<short>&Class > 257) {
- update reply {
- &Filter-Id += "wrong"
- }
+ test_fail
}
#
-# PRE: update
+# PRE:
#
-update request {
- &Called-Station-Id := "This is a test"
- &Calling-Station-Id := "This is a test"
-}
+&request.Called-Station-Id := "This is a test"
+&request.Calling-Station-Id := "This is a test"
#
# Check attribute references
#
-# PRE: update if
+# PRE: if
#
# One comment
update { &request.Tmp-String-0 := 'candy' } # Comment after unicorn block
-update request {
- &request.Reply-Message += 'I am #literally a comment #'
- &request.Reply-Message += "I am #literally a comment #"
-}
+&request.Reply-Message += 'I am #literally a comment #'
+&request.Reply-Message += "I am #literally a comment #"
if (&request.Tmp-String-0 != 'candy') {
test_fail
#
-# PRE: update if
+# PRE: if
#
-update {
- &request.Packet-Type !* ANY
-}
+&request -= &Packet-Type
-update {
- &request.Tmp-String-0 := "ab c"
- &request.Tmp-String-0 += "de fg"
- &request.Tmp-Integer-0 := 123
+&request += {
+ &Tmp-String-0 = "ab c"
+ &Tmp-String-0 = "de fg"
+ &Tmp-Integer-0 = 123
}
-update {
- &request.Tmp-String-1 := "%(concat:%{request[*]} ', ')"
- &request.Tmp-String-2 := "%(concat:%{Tmp-String-0[*]} ', ')"
- &request.Tmp-String-3 := "%(concat:%{Tmp-String-0[*]})"
- &request.Tmp-String-4 := "%(concat:%{Tmp-String-0[*]} ,)"
- &request.Tmp-String-5 := "%(concat:%{Tmp-String-0[*]} |-)"
+ok # separate updates
+
+&request += {
+ &Tmp-String-1 = "%(concat:%{request[*]} ', ')"
+ &Tmp-String-2 = "%(concat:%{Tmp-String-0[*]} ', ')"
+ &Tmp-String-3 = "%(concat:%{Tmp-String-0[*]})"
+ &Tmp-String-4 = "%(concat:%{Tmp-String-0[*]} ,)"
+ &Tmp-String-5 = "%(concat:%{Tmp-String-0[*]} |-)"
}
if (&request.Tmp-String-1 != "bob, hello, ab c, de fg, 123") {
-update request {
- &Tmp-Ethernet-0 := "00:11:22:33:44:54"
- &Tmp-Ethernet-0 += "00:11:22:33:44:55"
- &Tmp-Octets-0 := 0x001122334456
+&request += {
+ &Tmp-Ethernet-0 = 00:11:22:33:44:54,
+ &Tmp-Ethernet-0 = 00:11:22:33:44:55,
+ &Tmp-Octets-0 = 0x001122334456,
}
if (&Tmp-Ethernet-0[0] != 00:11:22:33:44:54) {
test_fail
}
-update request {
- &Tmp-Ethernet-0 += &Tmp-Octets-0[0]
+&request += {
+ &Tmp-Ethernet-0 = &Tmp-Octets-0[0]
}
if (&Tmp-Ethernet-0[2] != 00:11:22:33:44:56) {
test_fail
}
-# NULL assignment
-group {
- update request {
- &Tmp-Ethernet-0 += "%{Tmp-Ethernet-1[42]}"
- }
+# invalid assignment
+&request += {
+ &Tmp-Ethernet-0 = %{Tmp-Ethernet-1[42]}
+}
- actions {
- fail = 1
- }
+if (&request.Module-Failure-Message != "No value found for assignment") {
+ test_fail
}
-if (!fail) {
+if (%{request.Tmp-Ethernet-0[#]} != 3) {
test_fail
}