<type>:: The type of the child request being created.
+
-The _<type>_ field is a either a packet name such as `Access-Request`,
+The _<type>_ field is a either an enumerated packet name such as `::Access-Request`,
or a protocol name followed by a packet name, such as
`dhcpv4.Discover`. Please see the protocol dictionaries for a
complete list of packet types for each protocol.
return NULL;
}
+ /*
+ * ::enum is this dictionary, "Packet-Type = ::enum"
+ */
+ if ((name2[0] == ':') && (name2[1] == ':')) {
+ dict = unlang_ctx->rules->attr.dict_def;
+ packet_name = name2;
+ goto get_packet_type;
+ }
+
+ /*
+ * If !tmpl_require_enum_prefix, '&' means "attribute reference".
+ */
if (name2[0] == '&') {
size_t slen;
}
if (packet_name) {
+ /*
+ * Allow ::enum-name for packet types
+ */
+ if ((packet_name[0] == ':') && (packet_name[1] == ':')) packet_name += 2;
+
type_enum = fr_dict_enum_by_name(da, packet_name, -1);
if (!type_enum) {
cf_log_err(cs, "No such value '%s' for attribute 'Packet-Type' in namespace '%s'",
-subrequest Access-Request {
+subrequest ::Access-Request {
&parent.control.User-Name := 'bob'
success
}
string bar
# Cancel in subrequest
-subrequest Access-Request {
+subrequest ::Access-Request {
&parent.foo := 'testing'
# Immediately cancel the subrequest
&Filter-Id := 'testing'
# Cancel in subrequest
-subrequest Access-Request {
+subrequest ::Access-Request {
detach
# Smoke test, check for crashes
}
# Check that detached requests can be cancelled
-subrequest Access-Request {
+subrequest ::Access-Request {
detach
# Smoke test for cancelling detached requests
#
# PRE: subrequest
#
-subrequest Access-Request {
+subrequest ::Access-Request {
&User-Name := &parent.request.User-Name
if (!&User-Name) {
# request->rcode is updated to the result of the subrequest section
-subrequest Access-Request {
+subrequest ::Access-Request {
ok {
ok = 10
}
-subrequest Access-Request {
+subrequest ::Access-Request {
#
# Prefix/attribute parsing disambiguation
#
&User-Name := "obo"
- subrequest Access-Request {
+ subrequest ::Access-Request {
&User-Name := "jim"
- subrequest Access-Request {
+ subrequest ::Access-Request {
&User-Name := "joe"
&outer.request += {
-subrequest Access-Request {
+subrequest ::Access-Request {
&parent.request.Filter-Id := "testing1234"
return
#
# PRE: subrequest
#
-subrequest Access-Request &request &reply.Tmp-Group-0 {
+subrequest ::Access-Request &request &reply.Tmp-Group-0 {
if (!&User-Name) {
test_fail
}
#
# PRE: subrequest
#
-subrequest Access-Request &request &reply.Tmp-Group-0 {
+subrequest ::Access-Request &request &reply.Tmp-Group-0 {
subrequest Access-Request &request &reply.Tmp-Group-0 {
if (!&User-Name) {
test_fail