]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
s/request:/request./
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Mon, 21 Sep 2020 21:32:36 +0000 (16:32 -0500)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Mon, 21 Sep 2020 21:32:36 +0000 (16:32 -0500)
95 files changed:
doc/antora/modules/howto/pages/modules/ldap/authentication.adoc
doc/antora/modules/installation/pages/upgrade.adoc
doc/antora/modules/raddb/pages/mods-available/cache.adoc
doc/antora/modules/raddb/pages/mods-available/cache_eap.adoc
doc/antora/modules/raddb/pages/mods-available/dhcpv4.adoc
doc/antora/modules/raddb/pages/mods-available/json.adoc
doc/antora/modules/raddb/pages/mods-available/passwd.adoc
doc/antora/modules/raddb/pages/mods-available/yubikey.adoc
doc/antora/modules/raddb/pages/sites-available/coa-relay.adoc
doc/antora/modules/raddb/pages/sites-available/inner-tunnel.adoc
doc/antora/modules/raddb/pages/sites-available/ldap_sync.adoc
doc/antora/modules/raddb/pages/sites-available/originate-coa.adoc
doc/antora/modules/tutorials/pages/unlang_splitting_strings.adoc
doc/antora/modules/unlang/pages/detach.adoc
doc/antora/modules/unlang/pages/filter.adoc
doc/antora/modules/unlang/pages/list.adoc
doc/antora/modules/unlang/pages/parallel.adoc
doc/antora/modules/unlang/pages/subrequest.adoc
doc/antora/modules/unlang/pages/update.adoc
doc/antora/modules/unlang/pages/xlat/builtin.adoc
man/man5/unlang.5
raddb/mods-available/cache
raddb/mods-available/cache_eap
raddb/mods-available/dhcpv4
raddb/mods-available/json
raddb/mods-available/passwd
raddb/mods-available/yubikey
raddb/policy.d/abfab-tr
raddb/policy.d/cui
raddb/policy.d/debug
raddb/policy.d/eap
raddb/policy.d/filter
raddb/sites-available/coa-relay
raddb/sites-available/dhcp
raddb/sites-available/inner-tunnel
raddb/sites-available/ldap_sync
raddb/sites-available/originate-coa
src/lib/server/client.c
src/lib/server/state.c
src/lib/tls/cache.c
src/lib/tls/ocsp.c
src/lib/unlang/xlat_builtin.c
src/modules/proto_arp/proto_arp_process.c
src/modules/proto_dhcpv4/proto_dhcpv4_process.c
src/modules/proto_radius/proto_radius_coa.c
src/modules/proto_vmps/proto_vmps_process.c
src/modules/rlm_chap/rlm_chap.c
src/modules/rlm_dhcpv4/rlm_dhcpv4.c
src/modules/rlm_eap/types/rlm_eap_peap/peap.c
src/modules/rlm_redis_ippool/rlm_redis_ippool.c
src/modules/rlm_rest/rlm_rest.c
src/modules/rlm_yubikey/rlm_yubikey.c
src/tests/keywords/3gpp
src/tests/keywords/cast-byte
src/tests/keywords/cast-integer
src/tests/keywords/cast-ipaddr
src/tests/keywords/cast-short
src/tests/keywords/comments
src/tests/keywords/concat
src/tests/keywords/foreach-break
src/tests/keywords/foreach-break-3
src/tests/keywords/foreach-break-4
src/tests/keywords/if-multivalue
src/tests/keywords/map-xlat
src/tests/keywords/md4
src/tests/keywords/md5
src/tests/keywords/module-failure-message
src/tests/keywords/pairs
src/tests/keywords/pap
src/tests/keywords/parallel-rcode
src/tests/keywords/sha1
src/tests/keywords/sha2
src/tests/keywords/smash
src/tests/keywords/subrequest-if
src/tests/keywords/subrequest-return
src/tests/keywords/unit_test_module.conf
src/tests/keywords/update-remove-any
src/tests/keywords/update-remove-index
src/tests/keywords/update-remove-value
src/tests/keywords/xlat-explode
src/tests/map/base
src/tests/map/count-list-error
src/tests/modules/cache_rbtree/cache-logic.unlang
src/tests/modules/cache_rbtree/cache-update.unlang
src/tests/modules/cache_rbtree/module.conf
src/tests/modules/imap/imap_opt_tls/auth_try_tls.unlang
src/tests/modules/imap/imap_tls/auth_tls.unlang
src/tests/modules/json/encode.unlang
src/tests/modules/ldap/map.unlang
src/tests/modules/redis_ippool/alloc.unlang
src/tests/modules/redis_ippool/release.unlang
src/tests/modules/redis_ippool/update.unlang
src/tests/modules/redis_ippool/update_alloc.unlang
src/tests/modules/unit_test_module.conf
src/tests/unit/condition/base.txt

index 71ab360c9c2d31cc35db7621e2e5f5d890a69351..1905d330e2a703b615905e82fb8f844309b6445d 100644 (file)
@@ -82,7 +82,7 @@ ldapsearch -LL -H ldap://localhost -x -D cn=freeradius,dc=example,dc=com -w mypa
  *** the module decides it has everything it needs to do authentication so sets `&control:Auth-Type = pap`
  *** as RADIUS attributes were changed, it returns `updated` as a result code to unlang
  . the authenticate section runs and hands off to `pap` as `&control:Auth-Type = pap` was set earlier
- ** `&control:Cleartext-Password` is compared to `&request:User-Password`
+ ** `&control:Cleartext-Password` is compared to `&request.User-Password`
  ** matches so `ok` is returned
  . we return `Access-Accept` as `ok` was returned to unlang
 
index eda5147146495614859799358379b22f8c29aa35..66a2e64be7abc0dc838d59c5a98cd738535ca4c8 100644 (file)
@@ -518,7 +518,7 @@ call to a cache module instance. Both default to `yes`.
 All certificate attributes are available in the `&session-state:`
 list, immediately after they are parsed from their ASN1 form.
 
-The certificates are no longer added to the `&request:` list. Instead,
+The certificates are no longer added to the `&request.` list. Instead,
 they are added to the `session-state` list.  You are advised to update
 any references during the upgrade to 4.0:
 
@@ -609,7 +609,7 @@ recv Access-Request {
 
 === rlm_rest
 
-`REST-HTTP-Code` is now inserted into the `&request:` list instead
+`REST-HTTP-Code` is now inserted into the `&request.` list instead
 of the `&reply:` list, to be compliant with the
 http://wiki.freeradius.org/guide/List-Usage[list usage] guidelines.
 
index df07d14363e030f2ee206d6c3611a0c280778435..f0f9166ab411099c6db247a0e85bcf706db9cab1 100644 (file)
@@ -133,7 +133,7 @@ You should never set the "epoch" configuration item in this file.
 add_stats::
 
 If `yes` the following attributes will be added to the request:
-  * `&request:Cache-Entry-Hits` - The number of times this entry
+  * `&request.Cache-Entry-Hits` - The number of times this entry
 has been retrieved.
 
 NOTE: Not supported by the `rlm_cache_memcached` module.
index f16863932be2afceae87d2d0f69dcf5a2547b8aa..883237d08ba5db7a0da132c0472015b9cf9ddb1d 100644 (file)
@@ -72,7 +72,7 @@ cache cache_eap {
        ttl = 15
        update reply {
                &reply: += &reply:
-               &control:State := &request:State
+               &control:State := &request.State
        }
 }
 ```
index aa2dffebc12786e6430b3eaea4e38b40d40bdc68..ee3c9abe46f6a6ccf4058dd3535a2d6a2baad796 100644 (file)
@@ -79,7 +79,7 @@ update request {
   &DHCP-Relay-Remote-Id := 0x010203040506
 }
 update request {
-  &Tmp-Octets-0 := "%{dhcpv4_encode:&request:[*]}"
+  &Tmp-Octets-0 := "%{dhcpv4_encode:&request.[*]}"
 }
 if (&Tmp-Octets-0 != 0x520d0103abcdef0206010203040506) {
   update reply {
index 093dea1936e3e1de570cd52b2791789d41cba4a5..17509f91f45faaf0a73adf5788e3b15a513d36f3 100644 (file)
@@ -227,7 +227,7 @@ The following will include all attributes in the RADIUS request, except for
 .Example
 
 ```
-%{json_encode:&request:[*] !&User-Password}
+%{json_encode:&request.[*] !&User-Password}
 ```
 
 In another (contrived) example, all the attributes in the RADIUS request will
@@ -237,7 +237,7 @@ be included in the document, _except_ any attributes in the RADIUS reply.
 .Example
 
 ```
-%{json_encode:&request:[*] !&reply:[*] &control:User-Name}
+%{json_encode:&request.[*] !&reply:[*] &control:User-Name}
 ```
 
 #### Output format modes
index 7b2e7094d5d1a5c055815604fe8ba2a3d1f73793..a2fe6cb107863ac5654505feb43a488bc8d782f0 100644 (file)
@@ -56,7 +56,7 @@ passwd file.
   * Attributes marked as `=` are added to the `&reply:` list,
 instead of default `&control:` list.
 
-  * Attributes marked as `~` are added to the `&request:` list.
+  * Attributes marked as `~` are added to the `&request.` list.
 
   * Field marked as `,` may contain a comma separated list of attributes.
 
index 46473761849d94b3e0e697694a209df41b3bda92..c1a9d7801c1487343f37d6176b1af6a44cc3bc59 100644 (file)
@@ -25,8 +25,8 @@ Yubikey defaults to a 6 byte ID (2 * 6 = 12)
 split:: If true, the authorize method of `rlm_yubikey` will attempt to split the
 value of `link:https://freeradius.org/rfc/rfc2865.html#User-Password[User-Password]`, into the user's password, and the OTP token.
 
-NOTE: If enabled and successful, the value of `&request:User-Password` will be
-truncated and `&request:Yubikey-OTP` will be added.
+NOTE: If enabled and successful, the value of `&request.User-Password` will be
+truncated and `&request.Yubikey-OTP` will be added.
 
 
 
@@ -77,7 +77,7 @@ These attributes are available after `authorization`:
 [options="header,autowidth"]
 |===
 | Attributes                   | Description
-| `&request:Yubikey-Public-ID` | The public portion of the OTP string.
+| `&request.Yubikey-Public-ID` | The public portion of the OTP string.
                                  The value is a `id_len` modhex string.
 |===
 
@@ -86,7 +86,7 @@ and additionally if 'split' is set:
 [options="header,autowidth"]
 |===
 | Attributes             | Description
-| `&request:Yubikey-OTP` | The OTP portion of `link:https://freeradius.org/rfc/rfc2865.html#User-Password[User-Password]`.
+| `&request.Yubikey-OTP` | The OTP portion of `link:https://freeradius.org/rfc/rfc2865.html#User-Password[User-Password]`.
 |===
 
 These attributes are available after authentication (if successful):
@@ -94,19 +94,19 @@ These attributes are available after authentication (if successful):
 [options="header,autowidth"]
 |===
 | Attributes                    | Description
-| `&request:Yubikey-Private-ID` | The encrypted ID included in OTP data,
+| `&request.Yubikey-Private-ID` | The encrypted ID included in OTP data,
                                   should be verified for increased security.
                                   The value is a `6-byte` binary blob.
-| `&request:Yubikey-Counter`    | The last counter value (should be recorded).
+| `&request.Yubikey-Counter`    | The last counter value (should be recorded).
                                   The value is a concatenation of the 16-bit
                                   session count & `8-bit` use count which form a
                                   `24-bit` monotonically strictly increasing
                                   integer (until the individual count ceilings
                                   are hit)
-| `&request:Yubikey-Timestamp`  | Token's internal clock (mainly useful for debugging).
+| `&request.Yubikey-Timestamp`  | Token's internal clock (mainly useful for debugging).
                                   The value is a 24-bit increasing `integer @ 8 Hz`
                                   with rollover which is randomly initialized each session.
-| `&request:Yubikey-Random`     | Randomly generated value from the token.
+| `&request.Yubikey-Random`     | Randomly generated value from the token.
                                   The value is a 16-bit integer.
 |===
 
index d9ce274989d4abcb984f78c8cffdb242b2e0dd81..43131d0d2c487600a9e9a2bb118ca018d5da18ea 100644 (file)
@@ -238,7 +238,7 @@ server coa {
                                        }
                                        subrequest CoA-Request {
                                                update request {
-                                                       &request := &parent.request:[*]
+                                                       &request := &parent.request.[*]
                                                        &Acct-Session-Id := &parent.control:Tmp-String-1
                                                        &Event-Timestamp := "%l"
                                                        &Message-Authenticator := 0x00
index cc91f2a46d91f1ed3e93045ece9e6614c6f5ffed..9fe4a85c601a27fbb5b591e8b84be94902dd6c5b 100644 (file)
@@ -36,7 +36,7 @@ from from v4.0.
 Individual attributes from the outer request may be
 accessed with:
 
-    &outer.request:<attribute>
+    &outer.request.<attribute>
 
 The following policy in raddb/policy.d/eap can be used
 to copy attributes over.
@@ -306,7 +306,7 @@ send Access-Reject {
        -sql
        attr_filter.access_reject
        update outer.session-state {
-               &Module-Failure-Message := &request:Module-Failure-Message
+               &Module-Failure-Message := &request.Module-Failure-Message
        }
 }
 } # inner-tunnel server block
index 6ad4e93e0e02d4c6a947e84156a8eb818c4a0cc6..40ae7b1df097ef4bf87ad6904f379e7459ebf010 100644 (file)
@@ -77,10 +77,10 @@ Provides FreeRADIUS with the last cookie value we received for the sync
 
 A request will be generated with the following attributes:
 
-- &request:LDAP-Sync-DN                the base_dn of the sync.
-- &request:LDAP-Sync-Filter            the filter of the sync (optional).
-- &request:LDAP-Sync-Scope             the scope of the sync (optional).
-- &request:LDAP-Sync-attr              the attributes returned by the sync (optional).
+- &request.LDAP-Sync-DN                the base_dn of the sync.
+- &request.LDAP-Sync-Filter            the filter of the sync (optional).
+- &request.LDAP-Sync-Scope             the scope of the sync (optional).
+- &request.LDAP-Sync-attr              the attributes returned by the sync (optional).
 
 You should use these attributes to uniquely identify the sync when retrieving
 previous cookie values.
@@ -101,11 +101,11 @@ Stores the latest cookie we've received for a sync
 
 A request will be generated with the following attributes:
 
-- &request:LDAP-Sync-DN                the base_dn of the sync.
-- &request:LDAP-Sync-Cookie            the cookie value to store.
-- &request:LDAP-Sync-Filter            the filter of the sync (optional).
-- &request:LDAP-Sync-Scope             the scope of the sync (optional).
-- &request:LDAP-Sync-attr              the attributes returned by the sync (optional).
+- &request.LDAP-Sync-DN                the base_dn of the sync.
+- &request.LDAP-Sync-Cookie            the cookie value to store.
+- &request.LDAP-Sync-Filter            the filter of the sync (optional).
+- &request.LDAP-Sync-Scope             the scope of the sync (optional).
+- &request.LDAP-Sync-attr              the attributes returned by the sync (optional).
 
 The return code of this section is ignored.
 
@@ -119,14 +119,14 @@ a refreshDeletes phase.
 
 A request will be generated with the following attributes:
 
-- &request:LDAP-Sync-DN                the base_dn of the sync.
-- &request:LDAP-Sync-Entry-UUID        the UUID of the object.
-- &request:LDAP-Sync-Entry-DN  the DN of the object that was added.
+- &request.LDAP-Sync-DN                the base_dn of the sync.
+- &request.LDAP-Sync-Entry-UUID        the UUID of the object.
+- &request.LDAP-Sync-Entry-DN  the DN of the object that was added.
 - &*:*                         attributes mapped from the LDAP entry to FreeRADIUS
                        attributes using the update section within the sync.
-- &request:LDAP-Sync-Filter            the filter of the sync (optional).
-- &request:LDAP-Sync-Scope             the scope of the sync (optional).
-- &request:LDAP-Sync-attr              the attributes returned by the sync (optional).
+- &request.LDAP-Sync-Filter            the filter of the sync (optional).
+- &request.LDAP-Sync-Scope             the scope of the sync (optional).
+- &request.LDAP-Sync-attr              the attributes returned by the sync (optional).
 
 The return code of this section is ignored (for now).
 
@@ -140,14 +140,14 @@ a refreshDeletes phase.
 
 A request will be generated with the following attributes:
 
-- &request:LDAP-Sync-DN                the base_dn of the sync.
-- &request:LDAP-Sync-Entry-UUID        the UUID of the object.
-- &request:LDAP-Sync-Entry-DN  the DN of the object that was added.
+- &request.LDAP-Sync-DN                the base_dn of the sync.
+- &request.LDAP-Sync-Entry-UUID        the UUID of the object.
+- &request.LDAP-Sync-Entry-DN  the DN of the object that was added.
 - &*:*                         attributes mapped from the LDAP entry to FreeRADIUS
                        attributes using the update section within the sync.
-- &request:LDAP-Sync-Filter            the filter of the sync (optional).
-- &request:LDAP-Sync-Scope             the scope of the sync (optional).
-- &request:LDAP-Sync-attr              the attributes returned by the sync (optional).
+- &request.LDAP-Sync-Filter            the filter of the sync (optional).
+- &request.LDAP-Sync-Scope             the scope of the sync (optional).
+- &request.LDAP-Sync-attr              the attributes returned by the sync (optional).
 
 The return code of this section is ignored (for now).
 
@@ -161,12 +161,12 @@ a refreshDeletes phase.
 
 A request will be generated with the following attributes:
 
-- &request:LDAP-Sync-DN                the base_dn of the sync.
-- &request:LDAP-Sync-Entry-UUID        the UUID of the object.
-- &request:LDAP-Sync-Entry-DN  the DN of the object that was added (optional).
-- &request:LDAP-Sync-Filter            the filter of the sync (optional).
-- &request:LDAP-Sync-Scope             the scope of the sync (optional).
-- &request:LDAP-Sync-attr              the attributes returned by the sync (optional).
+- &request.LDAP-Sync-DN                the base_dn of the sync.
+- &request.LDAP-Sync-Entry-UUID        the UUID of the object.
+- &request.LDAP-Sync-Entry-DN  the DN of the object that was added (optional).
+- &request.LDAP-Sync-Filter            the filter of the sync (optional).
+- &request.LDAP-Sync-Scope             the scope of the sync (optional).
+- &request.LDAP-Sync-attr              the attributes returned by the sync (optional).
 
 The return code of this section is ignored (for now).
 
index d5a825506ebf5aeda1e9e0b5fab1aadc585a3ef5..635beca47b05803d2f8bb29db7f01233f12d2429 100644 (file)
@@ -67,8 +67,8 @@ how it works.
 #      User-Name
 #      Acct-Session-Id
 #      subrequest Disconnect-Request {
-#             &User-Name = &parent.request:User-Name
-#             &Acct-Session-Id = &parent.request:Acct-Session-Id
+#             &User-Name = &parent.request.User-Name
+#             &Acct-Session-Id = &parent.request.Acct-Session-Id
 #             &NAS-IP-Address = &parent.NAS-IP-Address}
 #             ...
 #      }
@@ -85,13 +85,13 @@ server originate-coa.example.com {
 recv Accounting-Request {
        subrequest Disconnect-Request {
                update request {
-                       &User-Name := &parent.request:User-Name
-                       &Acct-Session-Id := &parent.request:Acct-Session-Id
-                       &NAS-Identifier := &parent.request:NAS-Identifier
-                       &NAS-IP-Address := &parent.request:NAS-IP-Addres
-                       &NAS-IPv6-Address := &parent.request:NAS-IPv6-Address
-                       &NAS-Port := &parent.request:NAS-Port
-                       &Framed-IP-Address := &parent.request:Framed-IP-Address
+                       &User-Name := &parent.request.User-Name
+                       &Acct-Session-Id := &parent.request.Acct-Session-Id
+                       &NAS-Identifier := &parent.request.NAS-Identifier
+                       &NAS-IP-Address := &parent.request.NAS-IP-Addres
+                       &NAS-IPv6-Address := &parent.request.NAS-IPv6-Address
+                       &NAS-Port := &parent.request.NAS-Port
+                       &Framed-IP-Address := &parent.request.Framed-IP-Address
                }
                radius.coa
        }
index 50aa1f93e133a96edebf9c73302105f554aba24b..39431f841abc7eef65167533b6d248e35491e9d6 100644 (file)
@@ -32,7 +32,7 @@ its components and setup the request for proxying.
 Create an unlang version of "suffix" that splits an incoming `&User-Name` into
 two components on the "@" separator.
 
-The first component should be written to the `&request:Stripped-User-Name`
+The first component should be written to the `&request.Stripped-User-Name`
 attribute and the second component should be written to the
 `&control:Stripped-User-Domain` attribute.
 
index da57a4f2618b3c45a320dce09bd8e116445523f1..54785d91442386cc6fa6a336c55f8d6087321553 100644 (file)
@@ -20,10 +20,10 @@ access any attributes in the parent.
 ----
 subrequest Disconnect-Request {
     update request {
-        &User-Name := &parent.request:User-Name
-        &NAS-IP-Address := &parent.request:NAS-IP-Address
-        &NAS-Port := &parent.request:NAS-Port
-        &Acct-Session-Id := &parent.request:Acct-Session-Id
+        &User-Name := &parent.request.User-Name
+        &NAS-IP-Address := &parent.request.NAS-IP-Address
+        &NAS-Port := &parent.request.NAS-Port
+        &Acct-Session-Id := &parent.request.Acct-Session-Id
     }
 
     detach
@@ -53,10 +53,10 @@ seconds.  Only integer seconds can be set.
 ----
 subrequest Disconnect-Request {
     update request {
-        &User-Name := &parent.request:User-Name
-        &NAS-IP-Address := &parent.request:NAS-IP-Address
-        &NAS-Port := &parent.request:NAS-Port
-        &Acct-Session-Id := &parent.request:Acct-Session-Id
+        &User-Name := &parent.request.User-Name
+        &NAS-IP-Address := &parent.request.NAS-IP-Address
+        &NAS-Port := &parent.request.NAS-Port
+        &Acct-Session-Id := &parent.request.Acct-Session-Id
     }
 
     update control {
index 1860f26309c7d88f6964dbd5afe2f224f86d7077..5fba03e508b0321d369b71ad955e4c85f9f6b1b8 100644 (file)
@@ -20,7 +20,7 @@ usually `request`, `reply`, or `control`.
 +
 If the _<list>_ qualifier is omitted, then each entry inside of the
 `filter` section *must* be prefixed with a list name.  For example,
-`&request:User-Name ...`
+`&request.User-Name ...`
 
 <server-attribute>:: The server attribute which is being filtered via the given
 _<value>_.
@@ -49,7 +49,7 @@ filter reply {
 The _<list>_ field sets the attribute list that will be filter.  If
 the _<list>_ qualifier is omitted, then each entry inside of the
 `filter` section *must* be prefixed with a list name.  For example,
-`&request:User-Name ...`
+`&request.User-Name ...`
 
 Please see the xref:list.adoc[list] page for valid list names.
 
index 95f1b1e57b5141015f4236621e98f2b837c64f45..878b1d87c4c621f2e9daa53438bf669d1d49e712 100644 (file)
@@ -50,6 +50,6 @@ the child is running, the parent is suspended.  Once the child
 finishes, it is deleted, and is no longer accessible to the parent.
 
 .Examples
-`&parent.request:User-Name` +
+`&parent.request.User-Name` +
 `&parent.reply:Reply-Message` +
 `&parent.parent.session-state:Filter-Id`
index 7bdcdf82cb22294eb1f5bb2f68a432c40efba06f..6c83d674cd9e4173010f3884ab3a65438ad2cb95 100644 (file)
@@ -137,15 +137,15 @@ a different way from the parent `User-Name`, and it sees a
 parallel empty {
     group {
         update request {
-            &User-Name := "%{&parent.request:User-Name}@example.org"
+            &User-Name := "%{&parent.request.User-Name}@example.org"
             &User-Password := "hello"
         }
         radius1
     }
     group {
         update request {
-            &User-Name := "%{&parent.request:User-Name}@example.com"
-            &User-Password := &parent.request:User-Password
+            &User-Name := "%{&parent.request.User-Name}@example.com"
+            &User-Password := &parent.request.User-Password
         }
         radius2
     }
index d4f28b6aded6237e0c627eee469f3daf596e0c22..a0f837a31eb7718dc80c5ac8129991cf1cdf13c2 100644 (file)
@@ -44,10 +44,10 @@ and can create any kind of packet.
 ----
 subrequest Disconnect-Request {
     update request {
-        &User-Name := &parent.request:User-Name
-        &NAS-IP-Address := &parent.request:NAS-IP-Address
-        &NAS-Port := &parent.request:NAS-Port
-        &Acct-Session-Id := &parent.request:Acct-Session-Id
+        &User-Name := &parent.request.User-Name
+        &NAS-IP-Address := &parent.request.NAS-IP-Address
+        &NAS-Port := &parent.request.NAS-Port
+        &Acct-Session-Id := &parent.request.Acct-Session-Id
     }
 
     radius
@@ -67,7 +67,7 @@ parsed in the context of the new protocol.
 ----
 subrequest dhcpv4.DHCP-Discover {
     update request {
-        &DHCP-Your-IP-Address := &parent.request:Framed-IP-Address
+        &DHCP-Your-IP-Address := &parent.request.Framed-IP-Address
         ...
     }
 
@@ -97,10 +97,10 @@ request, the child can no longer access any attributes in the parent.
 ----
 subrequest Disconnect-Request {
     update request {
-        &User-Name := &parent.request:User-Name
-        &NAS-IP-Address := &parent.request:NAS-IP-Address
-        &NAS-Port := &parent.request:NAS-Port
-        &Acct-Session-Id := &parent.request:Acct-Session-Id
+        &User-Name := &parent.request.User-Name
+        &NAS-IP-Address := &parent.request.NAS-IP-Address
+        &NAS-Port := &parent.request.NAS-Port
+        &Acct-Session-Id := &parent.request.Acct-Session-Id
     }
 
     detach
index f7dec59285701d06510ee0edf70d0bf24464b9a9..594278f7ead9f5aa266bf650939cb7e99c06c9f6 100644 (file)
@@ -19,7 +19,7 @@ usually `request`, `reply`, or `control`.
 +
 If the _<list>_ qualifier is omitted, then each entry inside of the
 `update` section *must* be prefixed with a list name.  For example,
-`&request:User-Name ...`
+`&request.User-Name ...`
 
 <server-attribute>:: The server attribute which is assigned the
 _<value>_.
@@ -49,7 +49,7 @@ update reply {
 The _<list>_ field sets the attribute list that will be updated.  If
 the _<list>_ qualifier is omitted, then each entry inside of the
 `update` section *must* be prefixed with a list name.  For example,
-`&request:User-Name ...`
+`&request.User-Name ...`
 
 Please see the xref:list.adoc[list] page for valid list names.
 
index d311ebb3fd327702e270563c6ddf2bbabcfefd09..e3960aa0810b283dc56622e2fb63f9db2047cae0 100644 (file)
@@ -219,7 +219,7 @@ Dynamically change the debug level to something high, recording the old level.
 [source,unlang]
 ----
 recv Access-Request {
-    if (&request:User-Name == "bob") {
+    if (&request.User-Name == "bob") {
         "%{debug:4}"
     } else {
         "%{debug:0}"
@@ -233,10 +233,10 @@ recv Access-Request {
 ```
 ...
 (0)  recv Access-Request {
-(0)    if (&request:User-Name == "bob") {
+(0)    if (&request.User-Name == "bob") {
 (0)      EXPAND %{debug:4}
 (0)        --> 2
-(0)    } # if (&request:User-Name == "bob") (...)
+(0)    } # if (&request.User-Name == "bob") (...)
 (0)    filter_username {
 (0)      if (&State) {
 (0)        ...
@@ -256,8 +256,8 @@ expands to a zero-length string.
 [source,unlang]
 ----
 recv Access-Request {
-    if (&request:User-Name == "bob") {
-        "%{debug_attr:request:[*]}"
+    if (&request.User-Name == "bob") {
+        "%{debug_attr:request.[*]}"
     }
     ...
 }
@@ -268,15 +268,15 @@ recv Access-Request {
 ```
 ...
 (0)  recv Access-Request {
-(0)    if (&request:User-Name == "bob") {
-(0)      Attributes matching "request:[*]"
-(0)        &request:User-Name = bob
-(0)        &request:User-Password = hello
-(0)        &request:NAS-IP-Address = 127.0.1.1
-(0)        &request:NAS-Port = 1
-(0)        &request:Message-Authenticator = 0x9210ee447a9f4c522f5300eb8fc15e14
-(0)      EXPAND %{debug_attr:request:[*]}
-(0)    } # if (&request:User-Name == "bob") (...)
+(0)    if (&request.User-Name == "bob") {
+(0)      Attributes matching "request.[*]"
+(0)        &request.User-Name = bob
+(0)        &request.User-Password = hello
+(0)        &request.NAS-IP-Address = 127.0.1.1
+(0)        &request.NAS-Port = 1
+(0)        &request.Message-Authenticator = 0x9210ee447a9f4c522f5300eb8fc15e14
+(0)      EXPAND %{debug_attr:request.[*]}
+(0)    } # if (&request.User-Name == "bob") (...)
 ...
 ```
 
index cdd1033b53da8090532174115e1994c5bb39cec8..5cf0cb39cbc4f2687c7ea33e85ea613896cc54a4 100644 (file)
@@ -313,7 +313,7 @@ parent.
 .br
                update request {
 .br
-                       &User-Name = &parent.request:User-Name
+                       &User-Name = &parent.request.User-Name
 .br
                        ...
 .br
@@ -473,7 +473,7 @@ an attribute of the given name.  Some examples are:
 .DS
        User-Name
 .br
-       request:User-Name # same as above
+       request.User-Name # same as above
 .br
        reply:User-Name
 .br
@@ -481,7 +481,7 @@ an attribute of the given name.  Some examples are:
 .br
        Cisco-AVPAir[2]
 .br
-       outer.request:User-Name # from inside of a TTLS/PEAP tunnel
+       outer.request.User-Name # from inside of a TTLS/PEAP tunnel
 .DE
 Note that unlike C, there is no way to define new attributes at
 run-time.  They MUST be declared in a dictionary file, and loaded when
@@ -968,7 +968,7 @@ Generate HMAC-SHA1 of input data.
 .IP %{pairs:<list_or_attr>}
 Serialize attributes as comma-delimited string
 
-e.g. "%{pairs:request:}" == "User-Name = 'foo', User-Password = 'bar', ..."
+e.g. "%{pairs:request.}" == "User-Name = 'foo', User-Password = 'bar', ..."
 
 .IP %{base64:<string>}
 Encode string as base64.
@@ -1095,7 +1095,7 @@ string.
 When the value is an an attribute reference, it must take the form of
 "&Attribute-Name".  The leading "&" signifies that the value is a
 reference.  The "Attribute-Name" is an attribute name, such as
-"User-Name" or "request:User-Name".  When an attribute reference is
+"User-Name" or "request.User-Name".  When an attribute reference is
 used, both attributes must have the same data type.  For example,
 "User-Name := &NAS-Port" is invalid, because "User-Name" is a string,
 and "NAS-Port" is an integer.
index 162012b4492e9447d1e618f6b63b6763cd7cb8b4..c6350a0029e13fc9d720507ec57c1a61329f895a 100644 (file)
@@ -167,7 +167,7 @@ cache {
        #  add_stats::
        #
        #  If `yes` the following attributes will be added to the request:
-       #  * `&request:Cache-Entry-Hits` - The number of times this entry
+       #  * `&request.Cache-Entry-Hits` - The number of times this entry
        #  has been retrieved.
        #
        #  NOTE: Not supported by the `rlm_cache_memcached` module.
index c44116fb77b7dc16723cfc1e5a3e7e08355306ee..a9f9fc52ba02712e1fd12b4d7fe384ca3d972143 100644 (file)
@@ -71,6 +71,6 @@ cache cache_eap {
        #
        update reply {
                &reply: += &reply:
-               &control:State := &request:State
+               &control:State := &request.State
        }
 }
index 55af0ba3497513f4cc08930dbc2aae2843ba1050..63d556aff30acc596af2c5500af70b7b5a739e66 100644 (file)
@@ -84,7 +84,7 @@ dhcpv4 {
 #    &DHCP-Relay-Remote-Id := 0x010203040506
 #  }
 #  update request {
-#    &Tmp-Octets-0 := "%{dhcpv4_encode:&request:[*]}"
+#    &Tmp-Octets-0 := "%{dhcpv4_encode:&request.[*]}"
 #  }
 #  if (&Tmp-Octets-0 != 0x520d0103abcdef0206010203040506) {
 #    update reply {
index 1e710e9986407c12ed09789667977b8d3499c46e..c8ac8d34126d17a73af72e9308b275325c181e69 100644 (file)
@@ -244,7 +244,7 @@ json {
 #  .Example
 #
 #  ```
-#  %{json_encode:&request:[*] !&User-Password}
+#  %{json_encode:&request.[*] !&User-Password}
 #  ```
 #
 #  In another (contrived) example, all the attributes in the RADIUS request will
@@ -254,7 +254,7 @@ json {
 #  .Example
 #
 #  ```
-#  %{json_encode:&request:[*] !&reply:[*] &control:User-Name}
+#  %{json_encode:&request.[*] !&reply:[*] &control:User-Name}
 #  ```
 #
 #  #### Output format modes
index ecadc6da7429ba55d243e848d0fb65e4ac9f843a..3f451417eeaec3f4161361f90c363903c9da11b9 100644 (file)
@@ -62,7 +62,7 @@ passwd etc_passwd {
        #  * Attributes marked as `=` are added to the `&reply:` list,
        #  instead of default `&control:` list.
        #
-       #  * Attributes marked as `~` are added to the `&request:` list.
+       #  * Attributes marked as `~` are added to the `&request.` list.
        #
        #  * Field marked as `,` may contain a comma separated list of attributes.
        #
index 5f691815cc2ffde88f5e8cafcf49dd67e53184c5..e8bf973a293fb6a182fabf69175ef3db5e1a21b2 100644 (file)
@@ -31,8 +31,8 @@ yubikey {
        #  split:: If true, the authorize method of `rlm_yubikey` will attempt to split the
        #  value of `User-Password`, into the user's password, and the OTP token.
        #
-       #  NOTE: If enabled and successful, the value of `&request:User-Password` will be
-       #  truncated and `&request:Yubikey-OTP` will be added.
+       #  NOTE: If enabled and successful, the value of `&request.User-Password` will be
+       #  truncated and `&request.Yubikey-OTP` will be added.
        #
 #      split = yes
 
@@ -84,7 +84,7 @@ yubikey {
        #  [options="header,autowidth"]
        #  |===
        #  | Attributes                   | Description
-       #  | `&request:Yubikey-Public-ID` | The public portion of the OTP string.
+       #  | `&request.Yubikey-Public-ID` | The public portion of the OTP string.
        #                                   The value is a `id_len` modhex string.
        #  |===
        #
@@ -93,7 +93,7 @@ yubikey {
        #  [options="header,autowidth"]
        #  |===
        #  | Attributes             | Description
-       #  | `&request:Yubikey-OTP` | The OTP portion of `User-Password`.
+       #  | `&request.Yubikey-OTP` | The OTP portion of `User-Password`.
        #  |===
        #
        #  These attributes are available after authentication (if successful):
@@ -101,19 +101,19 @@ yubikey {
        #  [options="header,autowidth"]
        #  |===
        #  | Attributes                    | Description
-       #  | `&request:Yubikey-Private-ID` | The encrypted ID included in OTP data,
+       #  | `&request.Yubikey-Private-ID` | The encrypted ID included in OTP data,
        #                                    should be verified for increased security.
        #                                    The value is a `6-byte` binary blob.
-       #  | `&request:Yubikey-Counter`    | The last counter value (should be recorded).
+       #  | `&request.Yubikey-Counter`    | The last counter value (should be recorded).
        #                                    The value is a concatenation of the 16-bit
        #                                    session count & `8-bit` use count which form a
        #                                    `24-bit` monotonically strictly increasing
        #                                    integer (until the individual count ceilings
        #                                    are hit)
-       #  | `&request:Yubikey-Timestamp`  | Token's internal clock (mainly useful for debugging).
+       #  | `&request.Yubikey-Timestamp`  | Token's internal clock (mainly useful for debugging).
        #                                    The value is a 24-bit increasing `integer @ 8 Hz`
        #                                    with rollover which is randomly initialized each session.
-       #  | `&request:Yubikey-Random`     | Randomly generated value from the token.
+       #  | `&request.Yubikey-Random`     | Randomly generated value from the token.
        #                                    The value is a 16-bit integer.
        #  |===
        #
index a617a323310803cb322f716d858a8427314b872d..e84867e274a9d2b0b5dcda36c36c43ff8058a2c6 100644 (file)
@@ -52,15 +52,15 @@ abfab_client_check {
 #  A policy which is used to validate channel-bindings.
 #
 abfab_channel_bindings {
-       if (&GSS-Acceptor-Service-Name && (&outer.request:GSS-Acceptor-Service-Name != &GSS-Acceptor-Service-Name)) {
+       if (&GSS-Acceptor-Service-Name && (&outer.request.GSS-Acceptor-Service-Name != &GSS-Acceptor-Service-Name)) {
                reject
        }
 
-       if (&GSS-Acceptor-Host-Name && &outer.request:GSS-Acceptor-Host-Name != &GSS-Acceptor-Host-Name) {
+       if (&GSS-Acceptor-Host-Name && &outer.request.GSS-Acceptor-Host-Name != &GSS-Acceptor-Host-Name) {
                reject
        }
 
-       if (&GSS-Acceptor-Realm-Name && &outer.request:GSS-Acceptor-Realm-Name != &GSS-Acceptor-Realm-Name) {
+       if (&GSS-Acceptor-Realm-Name && &outer.request.GSS-Acceptor-Realm-Name != &GSS-Acceptor-Realm-Name) {
                reject
        }
 
index a2ed6e9cd50f9665bda16d7b643d20bad88a208b..85e6948191c0f595c0487bbf147f0f9e365618e0 100644 (file)
@@ -72,7 +72,7 @@ cui.post-auth {
        if (&reply:Chargeable-User-Identity) {
                # Force User-Name to be the User-Name from the request
                update {
-                       &reply:User-Name := &request:User-Name
+                       &reply:User-Name := &request.User-Name
                }
                cuisql
        }
@@ -80,8 +80,8 @@ cui.post-auth {
 
 
 cui-inner.post-auth {
-       if (&outer.request:Chargeable-User-Identity && \
-           (&outer.request:Operator-Name || ('${policy.cui_require_operator_name}' != 'yes'))) {
+       if (&outer.request.Chargeable-User-Identity && \
+           (&outer.request.Operator-Name || ('${policy.cui_require_operator_name}' != 'yes'))) {
                update reply {
                        &Chargeable-User-Identity := "%{sha1:${policy.cui_hash_key}%{tolower:%{User-Name}%{%{outer.request.Operator-Name}:-}}}"
                }
index 76f8feed907f0674f8b825bff6a40c0e02543155..3be849b0fa0f07d2ac3c1bf18ffe7d71c293d247 100644 (file)
@@ -11,7 +11,7 @@ debug_control {
 #  Outputs the contents of the request list in debugging (-X) mode
 #
 debug_request {
-       if ("%{debug_attr:request:[*]}" == '') {
+       if ("%{debug_attr:request.[*]}" == '') {
                noop
        }
 }
index 1d3d2a34610e8eab01b38cb07f9876da3761a8b9..d9b2fc25f000f8a66840b297ca982e9daab73713 100644 (file)
@@ -60,7 +60,7 @@ permit_only_eap {
                #  PEAP and EAP-FAST require EAP inside of
                #  the tunnel, so this check is OK.
                #  If so, then there MUST be an outer EAP message.
-               if (!&outer.request || !&outer.request:EAP-Message) {
+               if (!&outer.request || !&outer.request.EAP-Message) {
                        reject
                }
        }
@@ -92,8 +92,8 @@ remove_reply_message_if_eap {
 #
 copy_request_to_tunnel {
        update request {
-               Calling-Station-Id = &outer.request:Calling-Station-Id
-               Called-Station-Id = &outer.request:Called-Station-Id
+               Calling-Station-Id = &outer.request.Calling-Station-Id
+               Called-Station-Id = &outer.request.Called-Station-Id
        }
 }
 
index a67e7c9244e4767b0dbfcc549de3983478845c5a..39327dc9d664d7f9b717ead8a2980de3b5253adb 100644 (file)
@@ -133,7 +133,7 @@ filter_inner_identity {
        #
        #  No names, reject.
        #
-       if (!&outer.request:User-Name || !&User-Name) {
+       if (!&outer.request.User-Name || !&User-Name) {
                update request {
                        &Module-Failure-Message += "User-Name is required for tunneled authentication"
                }
@@ -147,11 +147,11 @@ filter_inner_identity {
        #  If the NAIs are the same, it violates user privacy,
        #  but is allowed.
        #
-       if (&outer.request:User-Name != &User-Name) {
+       if (&outer.request.User-Name != &User-Name) {
                #
                #  Get the outer realm.
                #
-               if (&outer.request:User-Name =~ /@([^@]+)$/) {
+               if (&outer.request.User-Name =~ /@([^@]+)$/) {
                        update request {
                                &Outer-Realm-Name = "%{1}"
                        }
@@ -163,7 +163,7 @@ filter_inner_identity {
                        #  We don't check for the full "anonymous", because
                        #  some vendors don't follow the standards.
                        #
-                       if (&outer.request:User-Name !~ /^(anon|@)/) {
+                       if (&outer.request.User-Name !~ /^(anon|@)/) {
                                update request {
                                        &Module-Failure-Message += "User-Name is not anonymized"
                                }
@@ -178,7 +178,7 @@ filter_inner_identity {
                #  Otherwise, you could log in as outer "bob", and inner "doug",
                #  and we'd have no idea which one was correct.
                #
-               elsif (&outer.request:User-Name !~ /^anon/) {
+               elsif (&outer.request.User-Name !~ /^anon/) {
                        update request {
                                &Module-Failure-Message += "User-Name is not anonymized"
                        }
index 941cf1ccd0189c24fceaa31dd944b472741405fd..1a035bb7feadf4f2d04b77c0a9be15e482748343 100644 (file)
@@ -172,7 +172,7 @@ server coa {
                                                        #  The subrequest begins empty, so initially copy all attributes
                                                        #  from the incoming request.
                                                        #
-                                                       &request := &parent.request:[*]
+                                                       &request := &parent.request.[*]
 
                                                        #
                                                        #  Add/override the session identification attributes looked up
index 038fd5285bf3301726737381b90e34d2a4d125fc..51e12a6fa3e4336bf5b89453d770fd72c9d88893 100644 (file)
@@ -189,8 +189,8 @@ recv DHCP-Request {
        }
 
        #  If the request is not for this server then silently discard it
-       if (&request:DHCP-DHCP-Server-Identifier && \
-           &request:DHCP-DHCP-Server-Identifier != &control:DHCP-DHCP-Server-Identifier) {
+       if (&request.DHCP-DHCP-Server-Identifier && \
+           &request.DHCP-DHCP-Server-Identifier != &control:DHCP-DHCP-Server-Identifier) {
                do_not_respond
        }
 
@@ -225,7 +225,7 @@ recv DHCP-Request {
 
        if (ok) {
                update reply {
-                       &DHCP-Your-IP-Address := "%{%{request.DHCP-Requested-IP-Address}:-{request:DHCP-Client-IP-Address}}"
+                       &DHCP-Your-IP-Address := "%{%{request.DHCP-Requested-IP-Address}:-{request.DHCP-Client-IP-Address}}"
                }
        }
 
index f458fa11b8328091262c74272b45db6d4a7f8e60..360bb69f0e45ce90162e8c44dafd66fc785b846a 100644 (file)
@@ -53,7 +53,7 @@ recv Access-Request {
        #  Individual attributes from the outer request may be
        #  accessed with:
        #
-       #      &outer.request:<attribute>
+       #      &outer.request.<attribute>
        #
        #  The following policy in raddb/policy.d/eap can be used
        #  to copy attributes over.
@@ -308,7 +308,7 @@ send Access-Reject {
        #  Let the outer session know which module failed, and why.
        #
        update outer.session-state {
-               &Module-Failure-Message := &request:Module-Failure-Message
+               &Module-Failure-Message := &request.Module-Failure-Message
        }
 }
 } # inner-tunnel server block
index bd621704cfa77a509b30e4f23b47d929f4016994..ff04d4b48d0c5dedf6cc1bec7a6593671b0362de 100644 (file)
@@ -110,10 +110,10 @@ server ldap {
        #
        #  A request will be generated with the following attributes:
        #
-       #  - &request:LDAP-Sync-DN              the base_dn of the sync.
-       #  - &request:LDAP-Sync-Filter          the filter of the sync (optional).
-       #  - &request:LDAP-Sync-Scope           the scope of the sync (optional).
-       #  - &request:LDAP-Sync-attr            the attributes returned by the sync (optional).
+       #  - &request.LDAP-Sync-DN              the base_dn of the sync.
+       #  - &request.LDAP-Sync-Filter          the filter of the sync (optional).
+       #  - &request.LDAP-Sync-Scope           the scope of the sync (optional).
+       #  - &request.LDAP-Sync-attr            the attributes returned by the sync (optional).
        #
        #  You should use these attributes to uniquely identify the sync when retrieving
        #  previous cookie values.
@@ -137,11 +137,11 @@ server ldap {
        #
        #  A request will be generated with the following attributes:
        #
-       #  - &request:LDAP-Sync-DN              the base_dn of the sync.
-       #  - &request:LDAP-Sync-Cookie          the cookie value to store.
-       #  - &request:LDAP-Sync-Filter          the filter of the sync (optional).
-       #  - &request:LDAP-Sync-Scope           the scope of the sync (optional).
-       #  - &request:LDAP-Sync-attr            the attributes returned by the sync (optional).
+       #  - &request.LDAP-Sync-DN              the base_dn of the sync.
+       #  - &request.LDAP-Sync-Cookie          the cookie value to store.
+       #  - &request.LDAP-Sync-Filter          the filter of the sync (optional).
+       #  - &request.LDAP-Sync-Scope           the scope of the sync (optional).
+       #  - &request.LDAP-Sync-attr            the attributes returned by the sync (optional).
        #
        #  The return code of this section is ignored.
        store Cookie {
@@ -158,14 +158,14 @@ server ldap {
        #
        #  A request will be generated with the following attributes:
        #
-       #  - &request:LDAP-Sync-DN              the base_dn of the sync.
-       #  - &request:LDAP-Sync-Entry-UUID      the UUID of the object.
-       #  - &request:LDAP-Sync-Entry-DN        the DN of the object that was added.
+       #  - &request.LDAP-Sync-DN              the base_dn of the sync.
+       #  - &request.LDAP-Sync-Entry-UUID      the UUID of the object.
+       #  - &request.LDAP-Sync-Entry-DN        the DN of the object that was added.
        #  - &*:*                               attributes mapped from the LDAP entry to FreeRADIUS
        #                                       attributes using the update section within the sync.
-       #  - &request:LDAP-Sync-Filter          the filter of the sync (optional).
-       #  - &request:LDAP-Sync-Scope           the scope of the sync (optional).
-       #  - &request:LDAP-Sync-attr            the attributes returned by the sync (optional).
+       #  - &request.LDAP-Sync-Filter          the filter of the sync (optional).
+       #  - &request.LDAP-Sync-Scope           the scope of the sync (optional).
+       #  - &request.LDAP-Sync-attr            the attributes returned by the sync (optional).
        #
        #  The return code of this section is ignored (for now).
        recv Add {
@@ -182,14 +182,14 @@ server ldap {
        #
        #  A request will be generated with the following attributes:
        #
-       #  - &request:LDAP-Sync-DN              the base_dn of the sync.
-       #  - &request:LDAP-Sync-Entry-UUID      the UUID of the object.
-       #  - &request:LDAP-Sync-Entry-DN        the DN of the object that was added.
+       #  - &request.LDAP-Sync-DN              the base_dn of the sync.
+       #  - &request.LDAP-Sync-Entry-UUID      the UUID of the object.
+       #  - &request.LDAP-Sync-Entry-DN        the DN of the object that was added.
        #  - &*:*                               attributes mapped from the LDAP entry to FreeRADIUS
        #                                       attributes using the update section within the sync.
-       #  - &request:LDAP-Sync-Filter          the filter of the sync (optional).
-       #  - &request:LDAP-Sync-Scope           the scope of the sync (optional).
-       #  - &request:LDAP-Sync-attr            the attributes returned by the sync (optional).
+       #  - &request.LDAP-Sync-Filter          the filter of the sync (optional).
+       #  - &request.LDAP-Sync-Scope           the scope of the sync (optional).
+       #  - &request.LDAP-Sync-attr            the attributes returned by the sync (optional).
        #
        #  The return code of this section is ignored (for now).
        recv Modify {
@@ -206,12 +206,12 @@ server ldap {
        #
        #  A request will be generated with the following attributes:
        #
-       #  - &request:LDAP-Sync-DN              the base_dn of the sync.
-       #  - &request:LDAP-Sync-Entry-UUID      the UUID of the object.
-       #  - &request:LDAP-Sync-Entry-DN        the DN of the object that was added (optional).
-       #  - &request:LDAP-Sync-Filter          the filter of the sync (optional).
-       #  - &request:LDAP-Sync-Scope           the scope of the sync (optional).
-       #  - &request:LDAP-Sync-attr            the attributes returned by the sync (optional).
+       #  - &request.LDAP-Sync-DN              the base_dn of the sync.
+       #  - &request.LDAP-Sync-Entry-UUID      the UUID of the object.
+       #  - &request.LDAP-Sync-Entry-DN        the DN of the object that was added (optional).
+       #  - &request.LDAP-Sync-Filter          the filter of the sync (optional).
+       #  - &request.LDAP-Sync-Scope           the scope of the sync (optional).
+       #  - &request.LDAP-Sync-attr            the attributes returned by the sync (optional).
        #
        #  The return code of this section is ignored (for now).
        recv Delete {
index c7896904519f7eaa5b68142238c19731b7ac5db4..d3f6f9de34a38c1f76b92ae682c322796bb26b81 100644 (file)
@@ -31,8 +31,8 @@
 #  and call the `radius` module to send the packet.
 #
 #      subrequest Disconnect-Request {
-#             &User-Name = &parent.request:User-Name
-#             &Acct-Session-Id = &parent.request:Acct-Session-Id
+#             &User-Name = &parent.request.User-Name
+#             &Acct-Session-Id = &parent.request.Acct-Session-Id
 #             &NAS-IP-Address = &parent.NAS-IP-Address}
 #             ...
 #      }
@@ -72,13 +72,13 @@ recv Accounting-Request {
                #  attributes over.
                #
                update request {
-                       &User-Name := &parent.request:User-Name
-                       &Acct-Session-Id := &parent.request:Acct-Session-Id
-                       &NAS-Identifier := &parent.request:NAS-Identifier
-                       &NAS-IP-Address := &parent.request:NAS-IP-Addres
-                       &NAS-IPv6-Address := &parent.request:NAS-IPv6-Address
-                       &NAS-Port := &parent.request:NAS-Port
-                       &Framed-IP-Address := &parent.request:Framed-IP-Address
+                       &User-Name := &parent.request.User-Name
+                       &Acct-Session-Id := &parent.request.Acct-Session-Id
+                       &NAS-Identifier := &parent.request.NAS-Identifier
+                       &NAS-IP-Address := &parent.request.NAS-IP-Addres
+                       &NAS-IPv6-Address := &parent.request.NAS-IPv6-Address
+                       &NAS-Port := &parent.request.NAS-Port
+                       &Framed-IP-Address := &parent.request.Framed-IP-Address
                }
 
                #
index 2d4cf7fb19aa5ea16fe84c827fe2628170100177..08c94ee5ee97852c4f6f4a1d36aac2355d7624fa 100644 (file)
@@ -963,7 +963,7 @@ RADCLIENT *client_afrom_request(TALLOC_CTX *ctx, REQUEST *request)
 
        fr_cursor_init(&cursor, &request->control);
 
-       RDEBUG2("Converting &request:control to client {...} section");
+       RDEBUG2("Converting &request.control to client {...} section");
        RINDENT();
 
        for (vp = fr_cursor_init(&cursor, &request->control);
index 3321bf6691c965cd1208e7a4cb1ca5da4625c420..2b942dcd287022cc78180bd3be058c1eb50b2dad 100644 (file)
@@ -616,7 +616,7 @@ void fr_state_to_request(fr_state_tree_t *state, REQUEST *request)
         */
        vp = fr_pair_find_by_da(request->packet->vps, state->da);
        if (!vp) {
-               RDEBUG3("No &request:State attribute, can't restore &session-state");
+               RDEBUG3("No &request.State attribute, can't restore &session-state");
                if (request->seq_start == 0) request->seq_start = request->number;      /* Need check for fake requests */
                return;
        }
index 368baa18be3dd5cee4df167a3c06e31b3574e54d..ca5c2fd59125b058603f893551a36a7bca400379 100644 (file)
@@ -41,7 +41,7 @@ USES_APPLE_DEPRECATED_API     /* OpenSSL API has been deprecated by Apple */
  *
  * Adds the following attributes to the request:
  *
- *     - &request:Session-Id
+ *     - &request.Session-Id
  *
  * Session identity will contain the binary session key used to create, retrieve
  * and delete cache entries related to the SSL session.
index c97ca2a87e28a9f2fb72e64f5074b24823f25638..c1663ccdc1e7f8a414a2dbf667b617d98d910591 100644 (file)
@@ -122,7 +122,7 @@ static int ocsp_staple_from_pair(REQUEST *request, SSL *ssl, VALUE_PAIR *vp)
 
 /** Store OCSP response as a TLS-OCSP-Response attribute
  *
- * @note Adds &request:TLS-OCSP-Response to the current request, and adds
+ * @note Adds &request.TLS-OCSP-Response to the current request, and adds
  *     stapling data to the current SSL session.
  *
  * @param out          Where to write the TLS-OCSP-Response attribute.  Will also
index cbd4a42dca3760b978aa1f852ebdf36b89114da3..665a01906ab87ee0024cde388d27595b53a5fb78 100644 (file)
@@ -831,7 +831,7 @@ done:
  *
  * Example:
 @verbatim
-"%{debug_attr:&request:[*]}"
+"%{debug_attr:&request.[*]}"
 @endverbatim
  *
  * @ingroup xlat_functions
@@ -2157,8 +2157,8 @@ static xlat_action_t xlat_func_pack(TALLOC_CTX *ctx, fr_cursor_t *out,
  *
  * Example:
 @verbatim
-"%{pairs:request:[*]}" == "User-Name = 'foo'User-Password = 'bar'"
-"%{concat:, %{pairs:request:[*]}}" == "User-Name = 'foo', User-Password = 'bar'"
+"%{pairs:request.[*]}" == "User-Name = 'foo'User-Password = 'bar'"
+"%{concat:, %{pairs:request.[*]}}" == "User-Name = 'foo', User-Password = 'bar'"
 @endverbatim
  *
  * @see #xlat_func_concat
index d1f331bc0cc15a31d99377d861946161c611e12a..17da29fbfc5b48e1a0b11fc58209f6fa78c9323d 100644 (file)
@@ -79,7 +79,7 @@ static rlm_rcode_t mod_process(UNUSED module_ctx_t const *mctx, REQUEST *request
 
                dv = fr_dict_enum_by_value(attr_arp_operation, fr_box_uint16(request->packet->code));
                if (!dv) {
-                       REDEBUG("Failed to find value for &request:ARP-Operation");
+                       REDEBUG("Failed to find value for &request.ARP-Operation");
                        return RLM_MODULE_FAIL;
                }
 
index cb13b7241a48e0d4dbe8fa7794616c7e50ee60a0..02c29b615cf98d6b72aae070371b5c435205a8c2 100644 (file)
@@ -155,7 +155,7 @@ static rlm_rcode_t mod_process(UNUSED module_ctx_t const *mctx, REQUEST *request
 
                dv = fr_dict_enum_by_value(attr_message_type, fr_box_uint8(request->packet->code));
                if (!dv) {
-                       REDEBUG("Failed to find value for &request:DHCP-Message-Type");
+                       REDEBUG("Failed to find value for &request.DHCP-Message-Type");
                        return RLM_MODULE_FAIL;
                }
 
index 7b65c4b11ad8848dd0892c95d3672cdad4dd5640..f76f2f7e5ab5aacc0889231dbef935b346a96c83 100644 (file)
@@ -73,7 +73,7 @@ static rlm_rcode_t mod_process(UNUSED module_ctx_t const *mctx, REQUEST *request
                 */
                dv = fr_dict_enum_by_value(attr_packet_type, fr_box_uint32(request->packet->code));
                if (!dv) {
-                       REDEBUG("Failed to find value for &request:Packet-Type");
+                       REDEBUG("Failed to find value for &request.Packet-Type");
                        return RLM_MODULE_FAIL;
                }
 
index 6f46919bd7d13d9304cef5c245b7ec8e5de399be..b25a87eba46544fb67020edcfa6899452a7af9c6 100644 (file)
@@ -65,7 +65,7 @@ static rlm_rcode_t mod_process(UNUSED module_ctx_t const *mctx, REQUEST *request
 
                dv = fr_dict_enum_by_value(attr_packet_type, fr_box_uint32(request->packet->code));
                if (!dv) {
-                       REDEBUG("Failed to find value for &request:VMPS-Packet-Type");
+                       REDEBUG("Failed to find value for &request.VMPS-Packet-Type");
                        return RLM_MODULE_FAIL;
                }
 
index c0c2ea7e4e89bd76aa0f27d24a838c35dd55adbe..c9b22c4d6f242b12de3a66b6f8cc5d037567efe9 100644 (file)
@@ -173,12 +173,12 @@ static rlm_rcode_t CC_HINT(nonnull) mod_authenticate(UNUSED module_ctx_t const *
        }
 
        if (chap->vp_length == 0) {
-               REDEBUG("&request:CHAP-Password is empty");
+               REDEBUG("&request.CHAP-Password is empty");
                return RLM_MODULE_INVALID;
        }
 
        if (chap->vp_length != RADIUS_CHAP_CHALLENGE_LENGTH + 1) {
-               REDEBUG("&request:CHAP-Password has invalid length");
+               REDEBUG("&request.CHAP-Password has invalid length");
                return RLM_MODULE_INVALID;
        }
 
@@ -214,7 +214,7 @@ static rlm_rcode_t CC_HINT(nonnull) mod_authenticate(UNUSED module_ctx_t const *
 
                vp = fr_pair_find_by_da(request->packet->vps, attr_chap_challenge);
                if (vp) {
-                       RDEBUG2("Using challenge from &request:CHAP-Challenge");
+                       RDEBUG2("Using challenge from &request.CHAP-Challenge");
                        p = vp->vp_octets;
                        length = vp->vp_length;
                } else {
index 15659995a325af18f45e74a103c8143cc82db369..81a9a8c043fabc4beec2850dc09cfea10ffab1a9 100644 (file)
@@ -136,7 +136,7 @@ static xlat_action_t dhcpv4_decode_xlat(TALLOC_CTX *ctx, fr_cursor_t *out,
  *
  * Example:
 @verbatim
-%{dhcpv4_encode:&request:[*]}
+%{dhcpv4_encode:&request.[*]}
 @endverbatim
  *
  * @ingroup xlat_functions
index 25e285d0e16e005db9b8017b920a03d3203b08ea..a4ddd67a76d4f9a4c5f1bc44d4cd2ade21d5960e 100644 (file)
@@ -760,7 +760,7 @@ static int CC_HINT(nonnull) setup_fake_request(REQUEST *request, REQUEST *fake,
        if (t->username) {
                vp = fr_pair_copy(fake->packet, t->username);
                fr_pair_add(&fake->packet->vps, vp);
-               RDEBUG2("Setting &request:User-Name from tunneled (inner) identity \"%s\"",
+               RDEBUG2("Setting &request.User-Name from tunneled (inner) identity \"%s\"",
                        vp->vp_strvalue);
        } else {
                RDEBUG2("No tunnel username (SSL resumption?)");
index 4a135f5f9561c48ee1d94ed4dd3805a2cb77a051..1704bc4befc3ac49df1af532d349f0f792fd89bf 100644 (file)
@@ -1262,7 +1262,7 @@ static rlm_rcode_t CC_HINT(nonnull) mod_accounting(module_ctx_t const *mctx, REQ
         */
        vp = fr_pair_find_by_da(request->packet->vps, attr_acct_status_type);
        if (!vp) {
-               RDEBUG2("Couldn't find &request:Acct-Status-Type or &control:Pool-Action, doing nothing...");
+               RDEBUG2("Couldn't find &request.Acct-Status-Type or &control:Pool-Action, doing nothing...");
                return RLM_MODULE_NOOP;
        }
 
index ea14cd72b54bf15357e763dc58f0abe0b2131cdc..2d8f41d6d7ed9f598c606afae62fd7f7106aaba0 100644 (file)
@@ -166,11 +166,11 @@ static int rlm_rest_status_update(REQUEST *request, void *handle)
        code = rest_get_handle_code(handle);
        if (!code) {
                pair_delete_request(attr_rest_http_status_code);
-               RDEBUG2("&request:REST-HTTP-Status-Code !* ANY");
+               RDEBUG2("&request.REST-HTTP-Status-Code !* ANY");
                return -1;
        }
 
-       RDEBUG2("&request:REST-HTTP-Status-Code := %i", code);
+       RDEBUG2("&request.REST-HTTP-Status-Code := %i", code);
 
        MEM(pair_update_request(&vp, attr_rest_http_status_code) >= 0);
        vp->vp_uint32 = code;
index c45ff06c1b3b758f5a6af7e72e4ab52b511a4d4b..fea5eb123526ee00eb7a5ea4c23ea7fdea06a75a 100644 (file)
@@ -315,11 +315,11 @@ static rlm_rcode_t CC_HINT(nonnull) mod_authorize(module_ctx_t const *mctx, REQU
 
                RINDENT();
                if (RDEBUG_ENABLED3) {
-                       RDEBUG3("&request:%pP", vp);
-                       RDEBUG3("&request:%pP", password);
+                       RDEBUG3("&request.%pP", vp);
+                       RDEBUG3("&request.%pP", password);
                } else {
-                       RDEBUG2("&request:%s := <<< secret >>>", vp->da->name);
-                       RDEBUG2("&request:%s := <<< secret >>>", password->da->name);
+                       RDEBUG2("&request.%s := <<< secret >>>", vp->da->name);
+                       RDEBUG2("&request.%s := <<< secret >>>", password->da->name);
                }
                REXDENT();
 
index af389ca00ce6ab1ff7d7ea68744ce00e238cacee..97b179daae0a40a26f90bb2ba070c49dae45d41d 100644 (file)
@@ -6,12 +6,12 @@ update request {
 }
 
 #
-#  "request:[0-9]" should be parsed as a list followed
+#  "request.[0-9]" should be parsed as a list followed
 #  by an attribute.
 #
 update control {
        &Tmp-String-0 := &3GPP-IMSI
-       &Tmp-String-1 := &request:3GPP-IMSI
+       &Tmp-String-1 := &request.3GPP-IMSI
 }
 
 success
index e7b910611c5ff70b0b6233f2aab4e657faa8baea..0ffd6bc1681dde5c2fe84a3739dcf33965c294dc 100644 (file)
@@ -2,7 +2,7 @@
 #  PRE: update if
 #
 update {
-       &request:Class := 0xad
+       &request.Class := 0xad
 }
 
 if (<byte>&Class == 173) {
index d50be3540854a24801d89b7af1e07627fd192200..ccc2f638a11e7d2022fd76cc0bb633c889ff8fc0 100644 (file)
@@ -2,7 +2,7 @@
 #  PRE: update if
 #
 update {
-       &request:Class := 0x00000101
+       &request.Class := 0x00000101
 }
 
 if (<integer>&Class[0] == 257) {
index 6c45684bf1f9934930ecaab2857e82a88334515d..e84fafe0e3ba265df13e6a37ff307eececad5a0f 100644 (file)
@@ -2,8 +2,8 @@
 #  PRE: update if redundant
 #
 update {
-       &request:NAS-IP-Address         := 127.0.0.1
-       &request:Tmp-Integer-0          := 2130706433
+       &request.NAS-IP-Address         := 127.0.0.1
+       &request.Tmp-Integer-0          := 2130706433
 }
 
 update request {
index ebacb4755dba60665e95d8ecdecade996138b64e..4caddc631fa4168627ea97f171addcf1d6e89837 100644 (file)
@@ -2,7 +2,7 @@
 #  PRE: update if
 #
 update {
-       &request:Class := 0x0101
+       &request.Class := 0x0101
 }
 
 if (<short>&Class == 257) {
index 0f82415a4f2230daef86b95e8ff062fd5dd9a153..5b02bda27898f8a38bebed27d75d8e587b288dc9 100644 (file)
@@ -16,22 +16,22 @@ update {                                    #}'{ Opening block with extra special chars {} '"
        &control:User-Name := 'whatever'                # do some random stuff
 }                                              #{'} Closing block with extra special chars {} '"
 
-update { &request:Tmp-String-0 := 'candy' }    # Comment after unicorn block
+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') {
+if (&request.Tmp-String-0 != 'candy') {
        test_fail
 }
 
-if (&request:Reply-Message[0] != 'I am #literally a comment #') {
+if (&request.Reply-Message[0] != 'I am #literally a comment #') {
        test_fail
 }
 
-if (&request:Reply-Message[1] != "I am #literally a comment #") {
+if (&request.Reply-Message[1] != "I am #literally a comment #") {
        test_fail
 }
 
index d1cd000cc32335a10218678d5a55f69d82d5fe47..695f4dcdcc15d18cd7f1a1a26d1df8c4387307f4 100644 (file)
@@ -2,21 +2,21 @@
 # PRE: update if
 #
 update {
-       &request:Tmp-String-0 := "ab c"
-       &request:Tmp-String-0 += "de fg"
-       &request:Tmp-Integer-0 := 123
+       &request.Tmp-String-0 := "ab c"
+       &request.Tmp-String-0 += "de fg"
+       &request.Tmp-Integer-0 := 123
 }
 
 update {
-       &request:Tmp-String-1 := "%{concat:, %{request[*]}}"
-       &request:Tmp-String-2 := "%{concat:, %{Tmp-String-0[*]}}"
+       &request.Tmp-String-1 := "%{concat:, %{request[*]}}"
+       &request.Tmp-String-2 := "%{concat:, %{Tmp-String-0[*]}}"
 }
 
-if (&request:Tmp-String-1 != "bob, hello, ab c, de fg, 123") {
+if (&request.Tmp-String-1 != "bob, hello, ab c, de fg, 123") {
        test_fail
 }
 
-if (&request:Tmp-String-2 != "ab c, de fg") {
+if (&request.Tmp-String-2 != "ab c, de fg") {
        test_fail
 }
 
index cbfb19ed9c02b3089ea24a4eae5114005628f57d..71b3104eef1a686c32f25785d8ec3d4bb89473e8 100644 (file)
@@ -27,35 +27,35 @@ foreach &Filter-Id {
 # Adding attribute during request and immediately breaking
 #
 update {
-       &request:Filter-Id += "1"
-       &request:Filter-Id += "2"
+       &request.Filter-Id += "1"
+       &request.Filter-Id += "2"
 }
 
-foreach &request:Reply-Message {
+foreach &request.Reply-Message {
        if("%{Foreach-Variable-0}" == "1") {
                update {
-                       &request:Filter-Id += "3"
+                       &request.Filter-Id += "3"
                }
                break
        }
 }
 
 update {
-       &request:Filter-Id !* ANY
+       &request.Filter-Id !* ANY
 }
 
 #
 # Adding attribute during request and continuing
 #
 update {
-       &request:Filter-Id += "1"
-       &request:Filter-Id += "2"
+       &request.Filter-Id += "1"
+       &request.Filter-Id += "2"
 }
 
-foreach &request:Reply-Message {
+foreach &request.Reply-Message {
        if("%{Foreach-Variable-0}" == "1") {
                update {
-                       &request:Filter-Id += "3"
+                       &request.Filter-Id += "3"
                }
        }
 
index 8bf45dd32957c420efc98e2fb9c1d2d2ed0e6997..54386786de9388464834916804e1e072ec44bb04 100644 (file)
@@ -27,7 +27,7 @@ update control {
 }
 
 foreach &control:Calling-Station-Id {
-       if (&request:Calling-Station-Id == "%{Foreach-Variable-0}") {
+       if (&request.Calling-Station-Id == "%{Foreach-Variable-0}") {
                success
                break
        }
index 87ae07f013292cd08eb7443492746c0260cb4fc6..d9ca4a81671ba764da5f9ca6102a0afa5c100318 100644 (file)
@@ -27,7 +27,7 @@ update control {
 }
 
 foreach &control:Calling-Station-Id {
-       if (&request:Calling-Station-Id == "%{Foreach-Variable-0}") {
+       if (&request.Calling-Station-Id == "%{Foreach-Variable-0}") {
                success
                break
        }
index dfffe7b17e919c327149fd789253af4555fe2757..db3c80912e49417804219576d4fc9c6bb42ae265 100644 (file)
@@ -47,37 +47,37 @@ update control {
 #
 #  Mmmm O(N^2)
 #
-if (&request:Tmp-String-0[*] != &control:Tmp-String-0[*]) {
+if (&request.Tmp-String-0[*] != &control:Tmp-String-0[*]) {
        test_fail
 }
 
-if (&request:Tmp-String-0[*] == &control:Tmp-String-1[*]) {
+if (&request.Tmp-String-0[*] == &control:Tmp-String-1[*]) {
        test_fail
 }
 
-if (&request:Tmp-String-1[*] == &control:Tmp-String-0[*]) {
+if (&request.Tmp-String-1[*] == &control:Tmp-String-0[*]) {
        test_fail
 }
 
 #
 #  Integer comparison and normalisation
 #
-if (&request:Tmp-Integer-0 != &control:Tmp-Integer-0) {
+if (&request.Tmp-Integer-0 != &control:Tmp-Integer-0) {
        test_fail
 }
 
 #
-#  if any value of request:Tmp-Integer-0 > any value of
-#  request:Tmp-Integer-1 then evaluate to true
+#  if any value of request.Tmp-Integer-0 > any value of
+#  request.Tmp-Integer-1 then evaluate to true
 #
-if (&request:Tmp-Integer-0[*] > &control:Tmp-Integer-1[*]) {
+if (&request.Tmp-Integer-0[*] > &control:Tmp-Integer-1[*]) {
        test_fail
 }
 
 #
 #  Compiled regex comparisons
 #
-if (&request:Tmp-String-1[*] !~ /PEONS$/) {
+if (&request.Tmp-String-1[*] !~ /PEONS$/) {
        test_fail
 }
 
@@ -92,19 +92,19 @@ if (&control:Tmp-String-1 =~ /DINKS$/) {
 #
 #  Dynamic regex comparisons
 #
-if (&request:Tmp-String-1[*] !~ /%{Tmp-String-2[0]}$/) {
+if (&request.Tmp-String-1[*] !~ /%{Tmp-String-2[0]}$/) {
        test_fail
 }
 
-if (&request:Tmp-String-1 =~ /%{Tmp-String-2[1]}$/) {
+if (&request.Tmp-String-1 =~ /%{Tmp-String-2[1]}$/) {
        test_fail
 }
 
-if (&request:Tmp-String-1 !~ /%{Tmp-String-2[2]}$/) {
+if (&request.Tmp-String-1 !~ /%{Tmp-String-2[2]}$/) {
        test_fail
 }
 
-if (&request:Tmp-String-1 =~ /%{Tmp-String-2[#]}$/) {
+if (&request.Tmp-String-1 =~ /%{Tmp-String-2[#]}$/) {
        test_fail
 }
 
@@ -126,11 +126,11 @@ if (&control:Tmp-String-1[*] == 'foo') {
        test_fail
 }
 
-if (&request:Tmp-Integer-0[*] > 10) {
+if (&request.Tmp-Integer-0[*] > 10) {
        test_fail
 }
 
-if (!(&request:Tmp-Integer-0[*] < 10)) {
+if (!(&request.Tmp-Integer-0[*] < 10)) {
        test_fail
 }
 
index 6bbd4725d896467ce026337558dc7cf9739271c5..3e5c4768740d152938c98dd7bfca8a6ad866b9e4 100644 (file)
@@ -5,8 +5,8 @@
 #
 update {
        &Tmp-String-0 := '&control:Tmp-String-0 := \'testing123\''
-       &Tmp-String-1 := "request:Alc-MSAP-Interface = 'UNICAST_7360OLT3'"
-       &Tmp-String-1 += "request:Alc-MSAP-Interface += 'UNICAST_7360OLT4'"
+       &Tmp-String-1 := "request.Alc-MSAP-Interface = 'UNICAST_7360OLT3'"
+       &Tmp-String-1 += "request.Alc-MSAP-Interface += 'UNICAST_7360OLT4'"
 }
 
 if ("%{map:%{Tmp-String-0}}" != 1) {
@@ -23,11 +23,11 @@ foreach &Tmp-String-1[*] {
        }
 }
 
-if (&request:Alc-MSAP-Interface[0] != 'UNICAST_7360OLT3') {
+if (&request.Alc-MSAP-Interface[0] != 'UNICAST_7360OLT3') {
        test_fail
 }
 
-if (&request:Alc-MSAP-Interface[1] != 'UNICAST_7360OLT4') {
+if (&request.Alc-MSAP-Interface[1] != 'UNICAST_7360OLT4') {
        test_fail
 }
 
index 1793b89693064cc6602fcac4ce1f6f42e094c403..91a4a80a8e484ee2cf91f9e818469b1fbe0b04ae 100644 (file)
@@ -2,11 +2,11 @@
 # 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 := ""
+       &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 := ""
 }
 
 
index 039f278be1f5f1c90d7756f1a4a24325c6aa80cb..7eb352d1d9e799040941b6c7d3abdeb062b29337 100644 (file)
@@ -2,11 +2,11 @@
 # 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 := ""
+       &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 := ""
 }
 
 
index 53296159b0f5702627f0f60c3651254e24f81ce5..6c787e730826ca48e268cac5ec13049c872a2c6f 100644 (file)
@@ -4,23 +4,23 @@
 
 test
 
-if (&request:Module-Failure-Message[4] != 'test: RERROR error message') {
+if (&request.Module-Failure-Message[4] != 'test: RERROR error message') {
        test_fail
 }
 
-if (&request:Module-Failure-Message[3] != 'test: RDEBUG error message') {
+if (&request.Module-Failure-Message[3] != 'test: RDEBUG error message') {
        test_fail
 }
 
-if (&request:Module-Failure-Message[2] != 'test: RDEBUG2 error message') {
+if (&request.Module-Failure-Message[2] != 'test: RDEBUG2 error message') {
        test_fail
 }
 
-if (&request:Module-Failure-Message[1] != 'test: RDEBUG3 error message') {
+if (&request.Module-Failure-Message[1] != 'test: RDEBUG3 error message') {
        test_fail
 }
 
-if (&request:Module-Failure-Message[0] != 'test: RDEBUG4 error message') {
+if (&request.Module-Failure-Message[0] != 'test: RDEBUG4 error message') {
        test_fail
 }
 
index c28de33ad8fd4949be977f001c49d33c6e9702e4..8e3c574d96bae54be2cc6fa5a39ffbf9152b3a56 100644 (file)
@@ -2,37 +2,37 @@
 # PRE: update if
 #
 update {
-       &request:Tmp-String-0 := "This is a string"
-       &request:Tmp-String-0 += "This is another one"
-       &request:Tmp-Octets-0 := 0x000504030201
-       &request:Tmp-Integer-0 := 7331
+       &request.Tmp-String-0 := "This is a string"
+       &request.Tmp-String-0 += "This is another one"
+       &request.Tmp-Octets-0 := 0x000504030201
+       &request.Tmp-Integer-0 := 7331
 }
 
 update {
-       &request:Tmp-String-1 := "%{concat:, %{pairs:request:[*]}}"
-       &request:Tmp-String-2 := "%{pairs:Tmp-String-0}"
-       &request:Tmp-String-3 := "%{concat:, %{pairs:Tmp-String-0[*]}}"
-       &request:Tmp-String-4 := "%{pairs:control:}"
-       &request:Tmp-String-5 := "%{pairs:control:User-Name}"
+       &request.Tmp-String-1 := "%{concat:, %{pairs:request.[*]}}"
+       &request.Tmp-String-2 := "%{pairs:Tmp-String-0}"
+       &request.Tmp-String-3 := "%{concat:, %{pairs:Tmp-String-0[*]}}"
+       &request.Tmp-String-4 := "%{pairs:control:}"
+       &request.Tmp-String-5 := "%{pairs:control:User-Name}"
 }
 
-if (&request:Tmp-String-1 != "User-Name = \"bob\", User-Password = \"hello\", Tmp-String-0 = \"This is a string\", Tmp-String-0 = \"This is another one\", Tmp-Octets-0 = 0x000504030201, Tmp-Integer-0 = 7331") {
+if (&request.Tmp-String-1 != "User-Name = \"bob\", User-Password = \"hello\", Tmp-String-0 = \"This is a string\", Tmp-String-0 = \"This is another one\", Tmp-Octets-0 = 0x000504030201, Tmp-Integer-0 = 7331") {
        test_fail
 }
 
-if (&request:Tmp-String-2 != "Tmp-String-0 = \"This is a string\"") {
+if (&request.Tmp-String-2 != "Tmp-String-0 = \"This is a string\"") {
        test_fail
 }
 
-if (&request:Tmp-String-3 != "Tmp-String-0 = \"This is a string\", Tmp-String-0 = \"This is another one\"") {
+if (&request.Tmp-String-3 != "Tmp-String-0 = \"This is a string\", Tmp-String-0 = \"This is another one\"") {
        test_fail
 }
 
-if (&request:Tmp-String-4 != "Cleartext-Password = \"hello\"") {
+if (&request.Tmp-String-4 != "Cleartext-Password = \"hello\"") {
        test_fail
 }
 
-if (&request:Tmp-String-5 != '') {
+if (&request.Tmp-String-5 != '') {
        test_fail
 }
 
index 5aa003f3aa3b85f61f47c2d73ffe4736d3e9593e..9c7eb0aff0cb875edad2ceabcd0855c70d174060 100644 (file)
@@ -3,7 +3,7 @@
 #
 update {
        &control: !* ANY
-       &request:Tmp-String-0 := "5RNqNl8iYLbkCc7JhR8as4TtDDCX6otuuWtcja8rITUyx9zrnHSe9tTHGmKK" # 60 byte salt
+       &request.Tmp-String-0 := "5RNqNl8iYLbkCc7JhR8as4TtDDCX6otuuWtcja8rITUyx9zrnHSe9tTHGmKK" # 60 byte salt
 }
 
 #
index fd9a8e8ab12af0014775fea6df68b454bf82ca54..00f2c7be6549e8462769556206493353baa8fe68 100644 (file)
@@ -37,7 +37,7 @@ group {
 if (!fail) {
        test_fail
 }
-if (&request:Tmp-String-0) {
+if (&request.Tmp-String-0) {
        test_fail
 }
 
@@ -61,7 +61,7 @@ group {
 if (!fail) {
        test_fail
 }
-if (&request:Tmp-String-0 != 'foo') {
+if (&request.Tmp-String-0 != 'foo') {
        test_fail
 }
 
index e4968f4174a8f346be0f6958e99f4df70ebe2215..8f58cedb026cea61df140119791faea2f5ec26dc 100644 (file)
@@ -2,50 +2,50 @@
 # 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 := ""
+       &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 := ""
 }
 
 update {
-       &request:Tmp-Octets-2 := "%{sha1:This is a string\n}"
-       &request:Tmp-Octets-3 := "%{sha1:%{Tmp-String-0}}"
-       &request:Tmp-Octets-4 := "%{sha1:%{request.Tmp-String-0}}"
-       &request:Tmp-Octets-5 := "%{sha1:%{request.Tmp-Octets-9}}"
-       &request:Tmp-Octets-6 := "%{hmacsha1:%{Tmp-String-1} %{Tmp-String-2}}"
-       &request:Tmp-Octets-7 := "%{hmacsha1:%{Tmp-String-3} %{Tmp-String-3}}"
-       &request:Tmp-Octets-8 := "%{hmacsha1:%{Tmp-String-1} }"
+       &request.Tmp-Octets-2 := "%{sha1:This is a string\n}"
+       &request.Tmp-Octets-3 := "%{sha1:%{Tmp-String-0}}"
+       &request.Tmp-Octets-4 := "%{sha1:%{request.Tmp-String-0}}"
+       &request.Tmp-Octets-5 := "%{sha1:%{request.Tmp-Octets-9}}"
+       &request.Tmp-Octets-6 := "%{hmacsha1:%{Tmp-String-1} %{Tmp-String-2}}"
+       &request.Tmp-Octets-7 := "%{hmacsha1:%{Tmp-String-3} %{Tmp-String-3}}"
+       &request.Tmp-Octets-8 := "%{hmacsha1:%{Tmp-String-1} }"
 }
 
 #
 #  Put "This is a string" into a file and call "sha1sum" on it.
 #  You should get this string.
 #
-if (&request:Tmp-Octets-2 != 0xcc7edf1ccc4bdf1e0ec8f72b95388b65218ecf0c) {
+if (&request.Tmp-Octets-2 != 0xcc7edf1ccc4bdf1e0ec8f72b95388b65218ecf0c) {
        test_fail
 }
 
-if (&request:Tmp-Octets-3 != 0xcc7edf1ccc4bdf1e0ec8f72b95388b65218ecf0c) {
+if (&request.Tmp-Octets-3 != 0xcc7edf1ccc4bdf1e0ec8f72b95388b65218ecf0c) {
        test_fail
 }
 
-if (&request:Tmp-Octets-4 != 0xcc7edf1ccc4bdf1e0ec8f72b95388b65218ecf0c) {
+if (&request.Tmp-Octets-4 != 0xcc7edf1ccc4bdf1e0ec8f72b95388b65218ecf0c) {
        test_fail
 }
 
 #
 # SHA1 of empty string
 #
-if (&request:Tmp-Octets-5 != 0xda39a3ee5e6b4b0d3255bfef95601890afd80709) {
+if (&request.Tmp-Octets-5 != 0xda39a3ee5e6b4b0d3255bfef95601890afd80709) {
        test_fail
 }
 
 #
 #  SHA1 HMAC with attribute references
 #
-if (&request:Tmp-Octets-6 != 0xeffcdf6ae5eb2fa2d27416d5f184df9c259a7c79) {
+if (&request.Tmp-Octets-6 != 0xeffcdf6ae5eb2fa2d27416d5f184df9c259a7c79) {
        test_fail
 }
 
index aef16ffb8f95ce94105d0cb5bfaaab42c02e0a96..c82bd44f4e868c610270a1752a3cbcd173901181 100644 (file)
@@ -2,45 +2,45 @@
 # PRE: update if
 #
 update {
-       &request:Tmp-String-0 := "This is a string\n"
-       &request:Tmp-Octets-0 := 0x000504030201
+       &request.Tmp-String-0 := "This is a string\n"
+       &request.Tmp-Octets-0 := 0x000504030201
 }
 
 update {
-       &request:Tmp-Octets-1 := "%{sha2_256:This is a string\n}"
-       &request:Tmp-Octets-2 := "%{sha2_256:%{Tmp-String-0}}"
-       &request:Tmp-Octets-3 := "%{sha2_256:%{request.Tmp-String-0}}"
-       &request:Tmp-Octets-4 := "%{sha2_256:%{request.Tmp-Octets-0}}"
-       &request:Tmp-Octets-5 := "%{sha2_256:%{request.Tmp-Octets-9}}"
+       &request.Tmp-Octets-1 := "%{sha2_256:This is a string\n}"
+       &request.Tmp-Octets-2 := "%{sha2_256:%{Tmp-String-0}}"
+       &request.Tmp-Octets-3 := "%{sha2_256:%{request.Tmp-String-0}}"
+       &request.Tmp-Octets-4 := "%{sha2_256:%{request.Tmp-Octets-0}}"
+       &request.Tmp-Octets-5 := "%{sha2_256:%{request.Tmp-Octets-9}}"
 }
 
 #
 #  Put "This is a string" into a file and call "sha2_256sum" on it.
 #  You should get this string.
 #
-if (&request:Tmp-Octets-1 != 0xb3716a1ab53042bb392034f29071e13b0c38aa19b4edd75d9a76022f91189124) {
+if (&request.Tmp-Octets-1 != 0xb3716a1ab53042bb392034f29071e13b0c38aa19b4edd75d9a76022f91189124) {
        test_fail
 }
 
-if (&request:Tmp-Octets-2 != 0xb3716a1ab53042bb392034f29071e13b0c38aa19b4edd75d9a76022f91189124) {
+if (&request.Tmp-Octets-2 != 0xb3716a1ab53042bb392034f29071e13b0c38aa19b4edd75d9a76022f91189124) {
        test_fail
 }
 
-if (&request:Tmp-Octets-3 != 0xb3716a1ab53042bb392034f29071e13b0c38aa19b4edd75d9a76022f91189124) {
+if (&request.Tmp-Octets-3 != 0xb3716a1ab53042bb392034f29071e13b0c38aa19b4edd75d9a76022f91189124) {
        test_fail
 }
 
 #
 #  SHA256 should also be able to cope with references to octet attributes
 #
-if (&request:Tmp-Octets-4 != 0xf307e202b881fded70e58017aa0c4d7b29c76ab25d02bf078301a5f6635187eb) {
+if (&request.Tmp-Octets-4 != 0xf307e202b881fded70e58017aa0c4d7b29c76ab25d02bf078301a5f6635187eb) {
        test_fail
 }
 
 #
 # SHA256 of empty string
 #
-if (&request:Tmp-Octets-5 != 0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855) {
+if (&request.Tmp-Octets-5 != 0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855) {
        test_fail
 }
 
@@ -49,20 +49,20 @@ if (&request:Tmp-Octets-5 != 0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca
 #  as exhaustive.
 #
 update {
-       &request:Tmp-Octets-1 := "%{sha2_512:This is a string\n}"
-       &request:Tmp-Octets-2 := "%{sha2_512:%{Tmp-String-0}}"
-       &request:Tmp-Octets-3 := "%{sha2_512:%{request.Tmp-Octets-0}}"
+       &request.Tmp-Octets-1 := "%{sha2_512:This is a string\n}"
+       &request.Tmp-Octets-2 := "%{sha2_512:%{Tmp-String-0}}"
+       &request.Tmp-Octets-3 := "%{sha2_512:%{request.Tmp-Octets-0}}"
 }
 
-if (&request:Tmp-Octets-1 != 0x56b57df5cce42d4e35c644649798ea23ec16f4f4626e78faf4d2d8f430ea349bcc28cd5532457c82f0aa66bf68988346039fe75b900a92ff94fd53993d45990f) {
+if (&request.Tmp-Octets-1 != 0x56b57df5cce42d4e35c644649798ea23ec16f4f4626e78faf4d2d8f430ea349bcc28cd5532457c82f0aa66bf68988346039fe75b900a92ff94fd53993d45990f) {
        test_fail
 }
 
-if (&request:Tmp-Octets-2 != 0x56b57df5cce42d4e35c644649798ea23ec16f4f4626e78faf4d2d8f430ea349bcc28cd5532457c82f0aa66bf68988346039fe75b900a92ff94fd53993d45990f) {
+if (&request.Tmp-Octets-2 != 0x56b57df5cce42d4e35c644649798ea23ec16f4f4626e78faf4d2d8f430ea349bcc28cd5532457c82f0aa66bf68988346039fe75b900a92ff94fd53993d45990f) {
        test_fail
 }
 
-if (&request:Tmp-Octets-3 != 0xde80271eb5e03a1c24dd0cd823a22305a743ee3a54f1de5bf97adbf56984561154bfb6928b1da4ccc3f5dde9f4032ad461937b60b9ace4ad3898cf45c90596d7) {
+if (&request.Tmp-Octets-3 != 0xde80271eb5e03a1c24dd0cd823a22305a743ee3a54f1de5bf97adbf56984561154bfb6928b1da4ccc3f5dde9f4032ad461937b60b9ace4ad3898cf45c90596d7) {
        test_fail
 }
 
index 4d04208afb604bce6e603eda3dca6a11336500d3..033128a374773be16aff0baf0d8168a336e12049 100644 (file)
@@ -3,6 +3,6 @@
 #
 #  This gives the game away.
 #
-update { &control:User-Name := 'bob', &request:Reply-Message := "foo" }
+update { &control:User-Name := 'bob', &request.Reply-Message := "foo" }
 
 success
index 5d7a6758ad3d3134e4bca9f430f523c2569d4e6d..02fb51e69f5dd6ce1753d1560e08825bf9e1e11e 100644 (file)
@@ -3,7 +3,7 @@
 #
 subrequest Access-Request {
        update request {
-               &User-Name := &parent.request:User-Name
+               &User-Name := &parent.request.User-Name
        }
 
        if (!&User-Name) {
index e948d089b2d8f7c9f501b6b9c104f653484eec70..abb97fad569109740e778c21f4c99e2b6af3ed0f 100644 (file)
@@ -13,7 +13,7 @@ subrequest Access-Request {
        }
 }
 
-if ((&request:Tmp-String-0 == "testing1234") && !&reply:Tmp-String-1) {
+if ((&request.Tmp-String-0 == "testing1234") && !&reply:Tmp-String-1) {
        success
 }
 else {
index 964fb372abf4947ff2f39d5a011fb41579fe3ecf..919202399a8aaac7f7ddb51951c13261aa2cf4b5 100644 (file)
@@ -56,7 +56,7 @@ policy {
        #  Outputs the contents of the request list in debugging (-X) mode
        #
        debug_request {
-               if("%{debug_attr:request:[*]}" == '') {
+               if("%{debug_attr:request.[*]}" == '') {
                        noop
                }
        }
@@ -100,7 +100,7 @@ policy {
                        }
                }
 
-               if (&parent.request:User-Name && !&parent.reply:Filter-Id) {
+               if (&parent.request.User-Name && !&parent.reply:Filter-Id) {
                        update parent.reply {
                                &Filter-Id := "filter"
                        }
@@ -112,7 +112,7 @@ policy {
                        &Filter-Id += "Failure in test at line %{interpreter:...line}"
                }
 
-               if (&parent.request:User-Name) {
+               if (&parent.request.User-Name) {
                        update parent.reply {
                                &Filter-Id += "Failure in test at line %{interpreter:...line}"
                        }
index f026bfecf505b3a3c8315b8841ba39f72066942c..3c3814fa19136029ca3ef8e06122dfacaf91bcfd 100644 (file)
@@ -2,10 +2,10 @@
 # PRE: update
 #
 update {
-       &request:Tmp-String-0 := 'foobarbaz'
-       &request:Tmp-Integer-0 := 123456789
-       &request:Tmp-IP-Address-0 := 192.0.2.1
-       &request:Tmp-IP-Address-0 += 192.0.2.2
+       &request.Tmp-String-0 := 'foobarbaz'
+       &request.Tmp-Integer-0 := 123456789
+       &request.Tmp-IP-Address-0 := 192.0.2.1
+       &request.Tmp-IP-Address-0 += 192.0.2.2
        &control:Tmp-IP-Address-0 := 192.0.2.1
        &control:Tmp-IP-Address-0 += 192.0.2.3
        &control:Tmp-IP-Address-1 := 192.0.3.1
@@ -17,7 +17,7 @@ if (("%{Tmp-IP-Address-0[0]}" != 192.0.2.1) || ("%{Tmp-IP-Address-0[1]}" != 192.
 
 # Remove all attributes in the request list
 update {
-       &request:Tmp-IP-Address-0 !* ANY
+       &request.Tmp-IP-Address-0 !* ANY
 }
 
 # Non Tmp-IP-Address-0 address attributes should still be in the request list
index 94a767df48268f357f42361374c70547930b7c4e..9b448b34dd065d9f7db260e76964cbf61e2c367f 100644 (file)
@@ -3,13 +3,13 @@
 #
 
 update {
-       &request:Tmp-String-0 := 'foobarbaz'
-       &request:Tmp-Integer-0 := 123456789
-       &request:Tmp-IP-Address-0 := 192.0.2.1
-       &request:Tmp-IP-Address-0 += 192.0.2.2
-       &request:Tmp-IP-Address-0 += 192.0.2.3
-       &request:Tmp-IP-Address-0 += 192.0.2.2
-       &request:Tmp-IP-Address-0 += 192.0.2.4
+       &request.Tmp-String-0 := 'foobarbaz'
+       &request.Tmp-Integer-0 := 123456789
+       &request.Tmp-IP-Address-0 := 192.0.2.1
+       &request.Tmp-IP-Address-0 += 192.0.2.2
+       &request.Tmp-IP-Address-0 += 192.0.2.3
+       &request.Tmp-IP-Address-0 += 192.0.2.2
+       &request.Tmp-IP-Address-0 += 192.0.2.4
 }
 
 
index 882cd57684dc8a5435e45fafbf6188f317dce79b..af423d15a81b8ad339e81e3f7036eb1fb98f3771 100644 (file)
@@ -3,12 +3,12 @@
 #
 
 update {
-       &request:Tmp-String-0 := 'foobarbaz'
-       &request:Tmp-Integer-0 := 123456789
-       &request:Tmp-IP-Address-0 := 192.0.2.1
-       &request:Tmp-IP-Address-0 += 192.0.2.2
-       &request:Tmp-IP-Address-0 += 192.0.2.3
-       &request:Tmp-IP-Address-0 += 192.0.2.4
+       &request.Tmp-String-0 := 'foobarbaz'
+       &request.Tmp-Integer-0 := 123456789
+       &request.Tmp-IP-Address-0 := 192.0.2.1
+       &request.Tmp-IP-Address-0 += 192.0.2.2
+       &request.Tmp-IP-Address-0 += 192.0.2.3
+       &request.Tmp-IP-Address-0 += 192.0.2.4
        &control:Tmp-IP-Address-0 := 192.0.2.1
        &control:Tmp-IP-Address-0 += 192.0.2.3
 }
@@ -22,7 +22,7 @@ if (("%{Tmp-IP-Address-0[0]}" != 192.0.2.1) || \
 
 # Remove Tmp-IP-Address-0 with a specific value
 update {
-       &request:Tmp-IP-Address-0 -= 192.0.2.1
+       &request.Tmp-IP-Address-0 -= 192.0.2.1
 }
 
 # Only the 2nd, 3rd and 4th Tmp-IP-Address attributes should still be in the list
@@ -35,7 +35,7 @@ if (("%{Tmp-IP-Address-0[0]}" != '192.0.2.2') || \
 
 # Remove Tmp-IP-Address-0 with a specific value (somewhere in the middle)
 update {
-       &request:Tmp-IP-Address-0 -= 192.0.2.3
+       &request.Tmp-IP-Address-0 -= 192.0.2.3
 }
 
 # Only the 1st, and 3rd Tmp-IP-Address attributes should still be in the list
@@ -47,7 +47,7 @@ if (("%{Tmp-IP-Address-0[0]}" != '192.0.2.2') || \
 
 # Remove Tmp-IP-Address-0 with a specific value (which doesn't exist)
 update {
-       &request:Tmp-IP-Address-0 -= 192.0.2.3
+       &request.Tmp-IP-Address-0 -= 192.0.2.3
 }
 
 # Only the 1st, and 3rd Tmp-IP-Address attributes should still be in the list
@@ -59,12 +59,12 @@ if (("%{Tmp-IP-Address-0[0]}" != '192.0.2.2') || \
 
 # Remove Tmp-IP-Address-4 (which doesn't exist - more to check for SEGV/assert)
 update {
-       &request:Tmp-IP-Address-4 -= 192.0.2.3
+       &request.Tmp-IP-Address-4 -= 192.0.2.3
 }
 
 # Remove Tmp-IP-Address-0 with a specific value
 update {
-       &request:Tmp-IP-Address-0 -= 192.0.2.4
+       &request.Tmp-IP-Address-0 -= 192.0.2.4
 }
 
 # Only the 1st, and 3rd Tmp-IP-Address attributes should still be in the list
@@ -75,7 +75,7 @@ if (("%{Tmp-IP-Address-0[0]}" != '192.0.2.2') || \
 
 # Remove Tmp-IP-Address-0 with a specific value
 update {
-       &request:Tmp-IP-Address-0 -= 192.0.2.2
+       &request.Tmp-IP-Address-0 -= 192.0.2.2
 }
 
 # Only the 1st, and 3rd Tmp-IP-Address attributes should still be in the list
index b450b50e1c06d371bd0c7ae4450bf4d091a4a5fc..6f73aa87a2ce05dbe077bb1b723a051d9d416329 100644 (file)
@@ -4,8 +4,8 @@
 #  Check explode works correctly
 #
 update {
-       &request:Class := '1=1|my_attr=2|my_attr=hello|'
-       &request:Calling-Station-ID += '|'
+       &request.Class := '1=1|my_attr=2|my_attr=hello|'
+       &request.Calling-Station-ID += '|'
        &control:User-Name += '|hello|goodbye'
        &control:User-Name += '|morning|night|1|'
        &control:Reply-Message := 'Can\'t touch this'
index 11e06b51735c4c68bac14e2637a6f7e31d5ef14e..5d3fc78188ec082ad928a437557a0ab6dc84b7fd 100644 (file)
@@ -2,5 +2,5 @@ update request {
        &Filter-Id[*] := "filter"
        &User-Name[*] := "blah"
 
-       &reply:Filter-Id[*] += &request:Filter-Id[*]
+       &reply:Filter-Id[*] += &request.Filter-Id[*]
 }
index a7beae138a3720033661c5c79479462eb7ca101c..48fdfa40e89d3d93619ab410ae760cc1762b3276 100644 (file)
@@ -2,5 +2,5 @@
 #      Updating lists isn't allowed
 #
 update {
-       &request:Filter-Id := &Filter-Id[#]     # ERROR
+       &request.Filter-Id := &Filter-Id[#]     # ERROR
 }
index 489997ee9adbde7217d32916a4ae1d255ff76363..cd27d7152188ccfe1258348fa68d9d6dbf26f82a 100644 (file)
@@ -2,7 +2,7 @@
 #  PRE:
 #
 update {
-       &request:Tmp-String-0 := 'testkey'
+       &request.Tmp-String-0 := 'testkey'
 }
 
 
@@ -22,7 +22,7 @@ else {
 }
 
 # 1. Check the module didn't perform a merge
-if (&request:Tmp-String-1) {
+if (&request.Tmp-String-1) {
        test_fail
 }
 else {
@@ -59,7 +59,7 @@ else {
 }
 
 # 5.
-if (&request:Tmp-String-1 != &control:Tmp-String-1) {
+if (&request.Tmp-String-1 != &control:Tmp-String-1) {
        test_fail
 }
 else {
@@ -80,7 +80,7 @@ else {
 }
 
 # 7.
-if (&request:Tmp-String-1 != &control:Tmp-String-1) {
+if (&request.Tmp-String-1 != &control:Tmp-String-1) {
        test_fail
 }
 else {
@@ -184,7 +184,7 @@ else {
 }
 
 # 17.
-if (&request:Tmp-String-1 != &control:Tmp-String-1) {
+if (&request.Tmp-String-1 != &control:Tmp-String-1) {
        test_fail
 }
 else {
@@ -208,7 +208,7 @@ else {
 }
 
 # 19. Request Tmp-String-1 shouldn't have been updated yet
-if (&request:Tmp-String-1 == &control:Tmp-String-1) {
+if (&request.Tmp-String-1 == &control:Tmp-String-1) {
        test_fail
 }
 else {
@@ -228,7 +228,7 @@ else {
 }
 
 # 21. Request Tmp-String-1 still shouldn't have been updated yet
-if (&request:Tmp-String-1 == &control:Tmp-String-1) {
+if (&request.Tmp-String-1 == &control:Tmp-String-1) {
        test_fail
 }
 else {
@@ -245,7 +245,7 @@ else {
 }
 
 # 23. Request Tmp-String-1 should now have been updated
-if (&request:Tmp-String-1 != &control:Tmp-String-1) {
+if (&request.Tmp-String-1 != &control:Tmp-String-1) {
        test_fail
 }
 else {
@@ -267,7 +267,7 @@ else {
 }
 
 # 25. Request Tmp-String-1 should now have been updated
-if (&request:Tmp-String-1 != &control:Tmp-String-1) {
+if (&request.Tmp-String-1 != &control:Tmp-String-1) {
        test_fail
 }
 else {
@@ -275,7 +275,7 @@ else {
 }
 
 # 26. Check Cache-Entry-Hits is updated as we expect
-if (&request:Cache-Entry-Hits != 0) {
+if (&request.Cache-Entry-Hits != 0) {
        test_fail
 }
 else {
@@ -283,7 +283,7 @@ else {
 }
 
 cache
-if (&request:Cache-Entry-Hits != 1) {
+if (&request.Cache-Entry-Hits != 1) {
        test_fail
 }
 else {
index bbe8c931a7d36e72c5dbc500ce52501d9e46f26a..c51a95b78c4c40baa1f3590684f4faac8aee5bae 100644 (file)
@@ -2,7 +2,7 @@
 #  PRE: cache-logic
 #
 update {
-       &request:Tmp-String-0 := 'testkey'
+       &request.Tmp-String-0 := 'testkey'
 
        # Reply attributes
        &reply:Reply-Message := 'hello'
index c0501252c1d280be0d93bb214ad8588738ea18f8..49d58d10b2a16f92eb0a079fa5b357c925f8330f 100644 (file)
@@ -6,8 +6,8 @@ cache {
        ttl = 2
 
        update {
-               &request:Tmp-String-1 := &control:Tmp-String-1[0]
-               &request:Tmp-Integer-0 := &control:Tmp-Integer-0[0]
+               &request.Tmp-String-1 := &control:Tmp-String-1[0]
+               &request.Tmp-Integer-0 := &control:Tmp-Integer-0[0]
                &control: += &reply:
        }
 
index 5f82167ab97ba06af675d1965ed5b3af7ddda718..4367dc22423666713a1a7e55ef74eafb9095d136 100644 (file)
@@ -1,6 +1,6 @@
 imap_try_tls.authenticate
 
-# if (&request:cert-attrs.Issuer) {
+# if (&request.cert-attrs.Issuer) {
 #        test_fail
 #}
 # else {
@@ -17,7 +17,7 @@ else {
     reject
 }
 
-if (&request:TLS-Cert-Issuer =~ /@example\.org/) {
+if (&request.TLS-Cert-Issuer =~ /@example\.org/) {
         test_pass
 } else {
        test_fail
index 393266bdf56c6375a19bbedbe1f074ac391b1b5e..d87119343264725a1313a30366652ee4b9456d70 100644 (file)
@@ -1,6 +1,6 @@
 imap_tls.authenticate
 
-# if (&request:cert-attrs.Issuer) {
+# if (&request.cert-attrs.Issuer) {
 #        test_fail
 #}
 # else {
@@ -17,7 +17,7 @@ else {
     reject
 }
 
-if (&request:TLS-Cert-Issuer =~ /@example\.org/) {
+if (&request.TLS-Cert-Issuer =~ /@example\.org/) {
         test_pass
 } else {
        test_fail
index f474db5a8b1e502ee92e6ce6c55a2fa591582939..b7a0d4e6d8ec9ef143cbdcd19ecaddd40207142c 100644 (file)
@@ -6,15 +6,15 @@
 # 0. Check basic xlat parsing
 
 update request {
-       &Tmp-String-1 := "%{json_encode:&request:[*]}"
-       &Tmp-String-2 := "%{json_encode:&request:[*] }"
-       &Tmp-String-3 := "%{json_encode: &request:[*]}"
-       &Tmp-String-4 := "%{json_encode:         &request:[*]   }"
-       &Tmp-String-5 := "%{json_encode: &request:[*]    !&Filter-Id }"
-       &Tmp-String-6 := "%{json_encode:&request:[*] ! }"
+       &Tmp-String-1 := "%{json_encode:&request.[*]}"
+       &Tmp-String-2 := "%{json_encode:&request.[*] }"
+       &Tmp-String-3 := "%{json_encode: &request.[*]}"
+       &Tmp-String-4 := "%{json_encode:         &request.[*]   }"
+       &Tmp-String-5 := "%{json_encode: &request.[*]    !&Filter-Id }"
+       &Tmp-String-6 := "%{json_encode:&request.[*] ! }"
 #  Check defaults are the same as output_mode "object":
-       &Tmp-String-7 := "%{json_object_encode:&request:[*]}"
-       &Tmp-String-8 := "%{json_object_no_encode:&request:[*]}"
+       &Tmp-String-7 := "%{json_object_encode:&request.[*]}"
+       &Tmp-String-8 := "%{json_object_no_encode:&request.[*]}"
 }
 
 
@@ -67,8 +67,8 @@ update request {
 # decide that it's going to use a different ordering of the keys...
 
 update request {
-       &Tmp-String-1 := "%{json_object_encode:&request:[*]}"
-       &Tmp-String-2 := "%{json_object_ex_encode:&request:[*]}"
+       &Tmp-String-1 := "%{json_object_encode:&request.[*]}"
+       &Tmp-String-2 := "%{json_object_ex_encode:&request.[*]}"
 }
 
 if (&Tmp-String-1 == '{"User-Name":{"type":"string","value":"john"},"Filter-Id":{"type":"string","value":["f1","f2"]},"NAS-Port":{"type":"uint32","value":999},"Service-Type":{"type":"uint32","value":"Login-User"}}') {
@@ -86,7 +86,7 @@ if (&Tmp-String-2 == '{"pf:User-Name":{"type":"string","value":["john"]},"pf:Fil
 # 1b. "object" empty inputs
 
 update request {
-       &Tmp-String-1 := "%{json_object_encode:!&request:[*]}"
+       &Tmp-String-1 := "%{json_object_encode:!&request.[*]}"
        &Tmp-String-2 := "%{json_object_ex_encode:}"
 }
 
@@ -118,8 +118,8 @@ update request {
 # 2a. Output mode "object_simple" tests
 
 update request {
-       &Tmp-String-1 := "%{json_object_simple_encode:&request:[*]}"
-       &Tmp-String-2 := "%{json_object_simple_ex_encode:&request:[*]}"
+       &Tmp-String-1 := "%{json_object_simple_encode:&request.[*]}"
+       &Tmp-String-2 := "%{json_object_simple_ex_encode:&request.[*]}"
 }
 
 if (&Tmp-String-1 == '{"User-Name":"john","Filter-Id":["f1","f2"],"NAS-Port":999,"Service-Type":"Login-User"}') {
@@ -137,7 +137,7 @@ if (&Tmp-String-2 == '{"pf:User-Name":["john"],"pf:Filter-Id":["f1","f2"],"pf:NA
 # 2b. "object_simple" empty inputs
 
 update request {
-       &Tmp-String-1 := "%{json_object_simple_encode:!&request:[*]}"
+       &Tmp-String-1 := "%{json_object_simple_encode:!&request.[*]}"
        &Tmp-String-2 := "%{json_object_simple_ex_encode:}"
 }
 
@@ -169,8 +169,8 @@ update request {
 # 3a. Output mode "array" tests
 
 update request {
-       &Tmp-String-1 := "%{json_array_encode:&request:[*]}"
-       &Tmp-String-2 := "%{json_array_ex_encode:&request:[*]}"
+       &Tmp-String-1 := "%{json_array_encode:&request.[*]}"
+       &Tmp-String-2 := "%{json_array_ex_encode:&request.[*]}"
 }
 
 if (&Tmp-String-1 == '[{"name":"User-Name","type":"string","value":"john"},{"name":"Filter-Id","type":"string","value":"f1"},{"name":"Filter-Id","type":"string","value":"f2"},{"name":"NAS-Port","type":"uint32","value":999},{"name":"Service-Type","type":"uint32","value":"Login-User"}]') {
@@ -188,7 +188,7 @@ if (&Tmp-String-2 == '[{"name":"pf:User-Name","type":"string","value":["john"]},
 # 3b. "array" empty inputs
 
 update request {
-       &Tmp-String-1 := "%{json_array_encode:!&request:[*]}"
+       &Tmp-String-1 := "%{json_array_encode:!&request.[*]}"
        &Tmp-String-2 := "%{json_array_ex_encode:}"
 }
 
@@ -220,8 +220,8 @@ update request {
 # 4a. Output mode "array_of_names" tests
 
 update request {
-       &Tmp-String-1 := "%{json_array_names_encode:&request:[*]}"
-       &Tmp-String-2 := "%{json_array_names_ex_encode:&request:[*]}"
+       &Tmp-String-1 := "%{json_array_names_encode:&request.[*]}"
+       &Tmp-String-2 := "%{json_array_names_ex_encode:&request.[*]}"
 }
 
 if (&Tmp-String-1 == '["User-Name","Filter-Id","Filter-Id","NAS-Port","Service-Type"]') {
@@ -239,7 +239,7 @@ if (&Tmp-String-2 == '["pf:User-Name","pf:Filter-Id","pf:Filter-Id","pf:NAS-Port
 # 4b. "array_of_names" empty inputs
 
 update request {
-       &Tmp-String-1 := "%{json_array_names_encode:!&request:[*]}"
+       &Tmp-String-1 := "%{json_array_names_encode:!&request.[*]}"
        &Tmp-String-2 := "%{json_array_names_ex_encode:}"
 }
 
@@ -271,8 +271,8 @@ update request {
 # 5a. Output mode "array_of_values" tests
 
 update request {
-       &Tmp-String-1 := "%{json_array_values_encode:&request:[*]}"
-       &Tmp-String-2 := "%{json_array_values_ex_encode:&request:[*]}"
+       &Tmp-String-1 := "%{json_array_values_encode:&request.[*]}"
+       &Tmp-String-2 := "%{json_array_values_ex_encode:&request.[*]}"
 }
 
 if (&Tmp-String-1 == '["john","f1","f2",999,"Login-User"]') {
@@ -290,7 +290,7 @@ if (&Tmp-String-2 == '["john","f1","f2","999","1"]') {
 # 5b. "array_of_values" empty inputs
 
 update request {
-       &Tmp-String-1 := "%{json_array_values_encode:!&request:[*]}"
+       &Tmp-String-1 := "%{json_array_values_encode:!&request.[*]}"
        &Tmp-String-2 := "%{json_array_values_ex_encode:}"
 }
 
index 957210f141d9978a67c140e9d341a545c4f03bae..ac788fcefadb18cacd9aa94c1396137cb3cf478b 100644 (file)
@@ -9,21 +9,21 @@ if (updated) {
        test_fail
 }
 
-if (&request:Tmp-String-0 == '255.255.255.0') {
+if (&request.Tmp-String-0 == '255.255.255.0') {
        test_pass
 }
 else {
        test_fail
 }
 
-if (&request:Tmp-String-1[0] == 'cn=radprofile,ou=profiles,dc=example,dc=com') {
+if (&request.Tmp-String-1[0] == 'cn=radprofile,ou=profiles,dc=example,dc=com') {
        test_pass
 }
 else {
        test_fail
 }
 
-if (&request:Tmp-String-1[1] == 'cn=profile1,ou=profiles,dc=example,dc=com') {
+if (&request.Tmp-String-1[1] == 'cn=profile1,ou=profiles,dc=example,dc=com') {
        test_pass
 }
 else {
index 8032bb16a7209ca5c399a042901e1cd9f3a29406..390e18de3d011847d962b58d82665909a8161b1f 100644 (file)
@@ -95,9 +95,9 @@ if (&reply:Session-Timeout == 30) {
 }
 
 update {
-       &request:Pool-Range := &reply:Pool-Range
-       &request:Framed-IP-Address := &reply:Framed-IP-Address
-       &request:Session-Timeout := &reply:Session-Timeout # We should get the same lease time
+       &request.Pool-Range := &reply:Pool-Range
+       &request.Framed-IP-Address := &reply:Framed-IP-Address
+       &request.Session-Timeout := &reply:Session-Timeout # We should get the same lease time
        &reply: !* ANY
 }
 
@@ -121,7 +121,7 @@ if (updated) {
 #
 #  Check the ranges are the same
 #
-if (&request:Pool-Range == &reply:Pool-Range) {
+if (&request.Pool-Range == &reply:Pool-Range) {
        test_pass
 } else {
        test_fail
@@ -130,7 +130,7 @@ if (&request:Pool-Range == &reply:Pool-Range) {
 #
 #  Check the IP addresses are the same
 #
-if (&request:Framed-IP-Address == &reply:Framed-IP-Address) {
+if (&request.Framed-IP-Address == &reply:Framed-IP-Address) {
        test_pass
 } else {
        test_fail
@@ -142,7 +142,7 @@ if (&request:Framed-IP-Address == &reply:Framed-IP-Address) {
 #  The fudge factor is to allow for delays running ippool tool and script interpretation
 #  as we should be allocating the same lesase as before, but its TTL could be slightly lower.
 #
-if ("%{expr:&request:Session-Timeout - &reply:Session-Timeout}" < 5) {
+if ("%{expr:&request.Session-Timeout - &reply:Session-Timeout}" < 5) {
        test_pass
 } else {
        test_fail
index 069a309cbb648b71a065c72630522b3a0cc9427f..a5388384e2eefe6fb871f27c9da647ff7bc2f4e0 100644 (file)
@@ -36,7 +36,7 @@ if (&reply:Framed-IP-Address == 192.168.0.1) {
 #  Release the IP address
 #
 update {
-       &request:Framed-IP-Address := &reply:Framed-IP-Address
+       &request.Framed-IP-Address := &reply:Framed-IP-Address
        &control:Pool-Action := Release
 }
 redis_ippool {
@@ -99,7 +99,7 @@ if ("%{expr:%{redis:ZSCORE '{%{control.Pool-Name}%}:pool' '%{reply.Framed-IP-Add
 #  Release the IP address again (should still be fine)
 #
 update {
-       &request:Framed-IP-Address := &reply:Framed-IP-Address
+       &request.Framed-IP-Address := &reply:Framed-IP-Address
        &control:Pool-Action := Release
 }
 redis_ippool {
index c3b9f79fcc58a51213e7aa2418a25c1110c515fc..07f9bf04bb5362dbd7dacde67f4c83cb9fb80afd 100644 (file)
@@ -50,8 +50,8 @@ update request {
 
 # 6. Verify that the lease time is extended
 update {
-       &request:Framed-IP-Address := &reply:Framed-IP-Address
-       &request:NAS-IP-Address := 127.0.0.2
+       &request.Framed-IP-Address := &reply:Framed-IP-Address
+       &request.NAS-IP-Address := 127.0.0.2
        &control:Pool-Action := Renew
 }
 redis_ippool
@@ -116,7 +116,7 @@ if (&reply:Pool-Range && (&reply:Pool-Range == '192.168.0.0')) {
 
 # Change the ip address to one that doesn't exist in the pool and check we *can't* update it
 update request {
-       &request:Framed-IP-Address := 192.168.3.1
+       &request.Framed-IP-Address := 192.168.3.1
 }
 redis_ippool {
        invalid = 1
@@ -128,7 +128,7 @@ if (notfound) {
        test_fail
 }
 update request {
-       &request:Framed-IP-Address := 192.168.0.1
+       &request.Framed-IP-Address := 192.168.0.1
 }
 
 # 15. Now change the calling station ID and check that we *can't* update the lease
index 4aed0045ac87ab91ca48ec4f5330580bb8fb70d3..46fd4bc3b5c95e912331f18a871477a819dfa9f6 100644 (file)
@@ -26,8 +26,8 @@ if (updated) {
 #  Attempt to reserve an IP address by performing a renew
 #
 update {
-       &request:Framed-IP-Address := 192.168.0.1
-       &request:NAS-IP-Address := 127.0.0.1
+       &request.Framed-IP-Address := 192.168.0.1
+       &request.NAS-IP-Address := 127.0.0.1
        &control:Pool-Action := Renew
 }
 redis_ippool
index 4b924c41b6272261aba509033e30ed031133076b..e5c0f7ffed582669b556d9a4805a2d41434e5713 100644 (file)
@@ -73,7 +73,7 @@ policy {
        #  Outputs the contents of the request list in debugging (-X) mode
        #
        debug_request {
-               if("%{debug_attr:request:[*]}" == '') {
+               if("%{debug_attr:request.[*]}" == '') {
                        noop
                }
        }
index a988760c749fd41285355a701762814240305844..9262d8ac6ea4038e068f5cfb9c4ec8c45a3aa6ff 100644 (file)
@@ -11,7 +11,7 @@
 #
 proto-dictionary radius
 
-condition &request:User-Name == &reply:User-Name
+condition &request.User-Name == &reply:User-Name
 match &User-Name == &reply:User-Name
 
 # All IP address literals should be parsed as prefixes
@@ -418,7 +418,7 @@ match ERROR offset 0 Cannot compare attributes of type 'string' and 'ipaddr'
 condition <ipaddr>127.0.0.1 == &Filter-Id
 match ERROR offset 0 Cannot compare types 'ipaddr' (cast) and 'string' (attr)
 
-condition &Tmp-Integer64-0 == &request:Foo-Stuff-Bar
+condition &Tmp-Integer64-0 == &request.Foo-Stuff-Bar
 match &Tmp-Integer64-0 == &Foo-Stuff-Bar
 
 condition &Tmp-Integer64-0 == &reply:Foo-Stuff-Bar
@@ -525,21 +525,21 @@ match ERROR offset 11 Invalid array index '-1' (should be between 0-1000)
 #
 #  Sometimes the attribute/condition parser needs to fallback to bare words
 #
-condition request:Foo == 'request:Foo'
+condition request.Foo == 'request.Foo'
 match true
 
 # Bareword compared with bareword is true
-condition request:Foo+Bar == request:Foo+Bar
+condition request.Foo+Bar == request.Foo+Bar
 match true
 
-condition &request:Foo+Bar == 'request:Foo+Bar'
+condition &request.Foo+Bar == 'request.Foo+Bar'
 match ERROR offset 12 Unexpected text after attribute reference
 
-condition 'request:Foo+d' == &request:Foo+Bar
+condition 'request.Foo+d' == &request.Foo+Bar
 match ERROR offset 31 Unexpected text after attribute reference
 
 #  Attribute tags are not allowed for unknown attributes
-condition &request:FooBar:0 == &request:FooBar
+condition &request.FooBar:0 == &request.FooBar
 match ERROR offset 15 Unexpected text after attribute reference
 
 condition &not-a-list:User-Name == &not-a-list:User-Name