# `-S flag=value`.
#
migrate {
- #
- # flatten_after_decode:: Convert "nested" attribute lists to
- # "flat" ones after the protocol decoders have run, but
- # before any `unlang` policies are used.
- #
- flatten_after_decode = yes
-
- #
- # flatten_before_encode:: Convert "nested" attribute lists to
- # "flat" ones before calling the protocol encoders.
- #
- flatten_before_encode = yes
-
- #
- # unflatten_after_decode:: Convert "flat" attribute lists to
- # "nested" ones after the protocol decoders have run, but
- # before any `unlang` policies are used.
- #
- # Some protocol decoders still produce "flat" attribute
- # lists. This is in large part because many of the core
- # modules still expect to see "flat" lists.
- #
- unflatten_after_decode = no
-
- #
- # unflatten_before_encode:: Convert "flat" attribute lists to
- # "nested" ones before calling the protocol encoders.
- #
- # All of the protocol encoders currently handle flat or
- # nested attributes. This flag should be forced to `true`,
- # and the "flat" code removed from the protocol encoders.
- #
- unflatten_before_encode = false
-
#
# tmpl_tokenize_all_nested:: Create all internal "tmpl" data
# structures as using nested structures instead of flat ones.
#define COPY(_x) schedule->worker._x = config->_x
COPY(max_requests);
COPY(max_request_time);
- COPY(unflatten_after_decode);
- COPY(unflatten_before_encode);
- COPY(flatten_after_decode);
- COPY(flatten_before_encode);
/*
* Single server mode: use the global event list.
ssize_t slen = 0;
fr_listen_t const *listen = request->async->listen;
- if (worker->config.unflatten_before_encode) {
- fr_pair_unflatten(request->pair_list.reply);
-
- } else if (worker->config.flatten_before_encode) {
- fr_pair_flatten(request->pair_list.reply);
- }
-
if (listen->app_io->encode) {
slen = listen->app_io->encode(listen->app_io_instance, request,
reply->m.data, reply->m.rb_size);
return;
}
- if (worker->config.unflatten_after_decode) {
- fr_pair_unflatten(request->pair_list.request);
-
- } else if (worker->config.flatten_after_decode) {
- fr_pair_flatten(request->pair_list.request);
- }
-
/*
* Set the entry point for this virtual server.
*/
fr_time_delta_t max_request_time; //!< maximum time a request can be processed
- bool unflatten_after_decode; //!< the worker will call "unflatten" after protocol decoding
- bool unflatten_before_encode; //!< the worker will call "unflatten" before all encoding
-
- bool flatten_after_decode; //!< the worker will call "flatten" after protocol decoding
- bool flatten_before_encode; //!< the worker will call "flatten" before all encoding
-
size_t talloc_pool_size; //!< for each request
} fr_worker_config_t;
* Migration configuration.
*/
static const CONF_PARSER migrate_config[] = {
- { FR_CONF_OFFSET("unflatten_after_decode", FR_TYPE_BOOL | FR_TYPE_HIDDEN, main_config_t, unflatten_after_decode) },
- { FR_CONF_OFFSET("unflatten_before_encode", FR_TYPE_BOOL | FR_TYPE_HIDDEN, main_config_t, unflatten_before_encode) },
- { FR_CONF_OFFSET("flatten_after_decode", FR_TYPE_BOOL | FR_TYPE_HIDDEN, main_config_t, flatten_after_decode), .dflt = "yes" },
- { FR_CONF_OFFSET("flatten_before_encode", FR_TYPE_BOOL | FR_TYPE_HIDDEN, main_config_t, flatten_before_encode), .dflt = "yes" },
{ FR_CONF_OFFSET("tmpl_tokenize_all_nested", FR_TYPE_BOOL | FR_TYPE_HIDDEN, main_config_t, tmpl_tokenize_all_nested) },
{ FR_CONF_OFFSET("rewrite_update", FR_TYPE_BOOL | FR_TYPE_HIDDEN, main_config_t, rewrite_update) },
{ FR_CONF_OFFSET("forbid_update", FR_TYPE_BOOL | FR_TYPE_HIDDEN, main_config_t, forbid_update) },
goto failure;
}
- /*
- * Handle migration.
- *
- * If all of the tmpls are tokenized as nested, then we
- * MUST use the new conditions. The old conditions can't
- * handle nested attributes.
- *
- * Similarly, we MUST NOT flatten the attributes after
- * decoding, or before encoding. The code should handle everything correctly.
- */
- if (config->tmpl_tokenize_all_nested) {
- config->flatten_after_decode = false;
- config->flatten_before_encode = false;
-
- config->unflatten_after_decode = false;
- config->unflatten_before_encode = false;
- }
-
/*
* If there was no log destination set on the command line,
* set it now.
/*
* Migration tools
*/
- bool unflatten_after_decode; //!< the worker will call "unflatten" after protocol decoding
- bool unflatten_before_encode; //!< the worker will call "unflatten" before all encoding
- bool flatten_after_decode; //!< the worker will call "flatten" after protocol decoding
- bool flatten_before_encode; //!< the worker will call "flatten" before all encoding
bool tmpl_tokenize_all_nested; //!< tmpl_tokenize will create nested tmpls instead of flat ones
bool rewrite_update; //!< rewrite "update" to be new edit sections
bool forbid_update; //!< forbid "update" sections