///< This should be used as part of a multi-pass
///< approach to parsing.
- uint8_t allow_foreign:1; //!< Allow arguments not found in dict_def.
+ uint8_t allow_wildcard:1; //!< Allow the special case of .[*] representing
+ ///< all children of a structural attribute.
+
+ uint8_t allow_foreign:1; //!< Allow arguments not found in dict_def.
uint8_t disallow_internal:1; //!< Allow/fallback to internal attributes.
* Don't alter the fr_strerror buffer, may contain useful
* errors from the dictionary code.
*/
- if (!at_rules->allow_unresolved) {
+ if (!at_rules->allow_unresolved && !(at_rules->allow_wildcard && fr_sbuff_is_char(name, '['))) {
fr_strerror_const_push("Unresolved attributes are not allowed here");
if (err) *err = TMPL_ATTR_ERROR_UNRESOLVED_NOT_ALLOWED;
fr_sbuff_set(name, &m_s);