}
tmpl_only:
- if (env->rule->pair.tmpl_offset) tmpl_out = ((uint8_t *)*call_env_ctx->data) + env->rule->pair.tmpl_offset;
+ if (env->rule->pair.tmpl_offset >= 0) tmpl_out = ((uint8_t *)*call_env_ctx->data) + env->rule->pair.tmpl_offset;
result = call_env_value_parse(*call_env_ctx->data, request, out, tmpl_out, env, &call_env_ctx->tmpl_expanded);
if (result != CALL_ENV_SUCCESS) {
call_env_dest_t type; //!< Type of structure boxes will be written to.
size_t size; //!< Size of structure boxes will be written to.
char const *type_name; //!< Name of structure type boxes will be written to.
- size_t tmpl_offset; //!< Where to write pointer to tmpl in the output structure. Optional.
+ ssize_t tmpl_offset; //!< Where to write pointer to tmpl in the output structure. Optional.
} pair;
struct {
.nullable = _nullable, \
.type = FR_CALL_ENV_DST_TYPE(_struct, _field), \
.size = FR_CALL_ENV_DST_SIZE(_struct, _field), \
- .type_name = FR_CALL_ENV_DST_TYPE_NAME(_struct, _field) }
+ .type_name = FR_CALL_ENV_DST_TYPE_NAME(_struct, _field), \
+ .tmpl_offset = -1 }
/** Version of the above which sets optional field for pointer to tmpl
*/