18 #define AFW_IMPLEMENTATION_ID "authorizationHandler"
22 impl_s_a_notApplicable_policy_id =
26 impl_authorization_decision_id_action_id_control = {
33 (
const afw_value_t *)& impl_authorization_decision_id_action_id_control;
37 impl_authorization_decision_id_action_id_create = {
44 (
const afw_value_t *)& impl_authorization_decision_id_action_id_create;
48 impl_authorization_decision_id_action_id_delete = {
55 (
const afw_value_t *)& impl_authorization_decision_id_action_id_delete;
59 impl_authorization_decision_id_action_id_modify = {
66 (
const afw_value_t *)& impl_authorization_decision_id_action_id_modify;
70 impl_authorization_decision_id_action_id_query = {
77 (
const afw_value_t *)& impl_authorization_decision_id_action_id_query;
80 impl_authorization_decision_id_action_id_read = {
87 (
const afw_value_t *)& impl_authorization_decision_id_action_id_read;
92 impl_authorization_decision_id_deny_value = {
99 (
const afw_value_t *)& impl_authorization_decision_id_deny_value;
103 impl_authorization_decision_id_indeterminate_value = {
110 (
const afw_value_t *)& impl_authorization_decision_id_indeterminate_value;
114 impl_authorization_decision_id_indeterminateD_value = {
121 (
const afw_value_t *)& impl_authorization_decision_id_indeterminateD_value;
125 impl_authorization_decision_id_indeterminateDP_value = {
132 (
const afw_value_t *)& impl_authorization_decision_id_indeterminateDP_value;
136 impl_authorization_decision_id_indeterminateP_value = {
143 (
const afw_value_t *)& impl_authorization_decision_id_indeterminateP_value;
147 impl_authorization_decision_id_notApplicable_value = {
154 (
const afw_value_t *)& impl_authorization_decision_id_notApplicable_value;
158 impl_authorization_decision_id_permit_value = {
165 (
const afw_value_t *)&impl_authorization_decision_id_permit_value;
170 impl_authorization_mode_id_core_value = {
177 (
const afw_value_t *)& impl_authorization_mode_id_core_value;
181 impl_authorization_mode_id_intermediate_value = {
188 (
const afw_value_t *)& impl_authorization_mode_id_intermediate_value;
192 impl_authorization_mode_id_user_value = {
199 (
const afw_value_t *)& impl_authorization_mode_id_user_value;
211 return ctx->requestId;
216 impl_current_variable_meta_requestId =
226 impl_current_variable_requestId = {
227 &impl_current_variable_meta_requestId,
228 "The id of the authorization check being processed.",
243 return ctx->resourceId;
248 impl_current_variable_meta_resourceId =
258 impl_current_variable_resourceId = {
259 &impl_current_variable_meta_resourceId,
260 "The id of the resource being accessed.",
280 impl_current_variable_meta_object =
290 impl_current_variable_object = {
291 &impl_current_variable_meta_object,
292 "The object being accessed.",
307 return ctx->actionId;
312 impl_current_variable_meta_actionId =
322 impl_current_variable_actionId = {
323 &impl_current_variable_meta_actionId,
324 "The id of the action being performed on the resource.",
331 impl_context_current_runtime_ctx[] = {
332 &impl_current_variable_requestId,
333 &impl_current_variable_resourceId,
334 &impl_current_variable_object,
335 &impl_current_variable_actionId,
341 afw_authorization_internal_set_control(
355 "afw_authorization_internal_set_control() already called",
360 deny_if_not_applicable =
false;
366 self->core_authorization_check =
368 &afw_s_coreAuthorizationCheck,
369 &afw_s_internal, NULL, p, xctx);
371 self->initial_authorization_check =
373 &afw_s_initialAuthorizationCheck,
374 &afw_s_internal, NULL, p, xctx);
377 object, &afw_s_checkIntermediateMode, &found, xctx);
380 object, &afw_s_denyIfNotApplicable, &found, xctx);
386 &afw_s__AdaptiveAuthorizationResult_, xctx);
388 ((deny_if_not_applicable)
392 self->not_applicable_decision_id =
393 (deny_if_not_applicable)
397 &impl_s_a_notApplicable_policy_id,
400 &afw_s_applicablePolicies, list, xctx);
434 const char * property_name;
439 if (!request_id_value) {
443 ctx.actionId = action_id_value;
446 final_result =
false;
448 ctx.object = object_value;
449 ctx.requestId = request_id_value;
450 ctx.resourceId = resource_id_value;
452 current_decider = &afw_s_none;
453 final_decider = &afw_s_none;
461 ctl = xctx->env->authorization_control;
464 afw_trace_fz(1, xctx->env->flag_index_trace_authorization_check_bypass,
470 "] call bypassed because there is no authorizationControl",
481 afw_trace_fz(1, xctx->env->flag_index_trace_authorization_check_bypass,
487 "] call bypassed because mode is core and there is no "
488 "coreAuthorizationCheck",
499 afw_trace_fz(1, xctx->env->flag_index_trace_authorization_check_bypass,
505 "] call bypassed because mode is intermediate and "
506 "checkIntermediateMode is false",
518 impl_context_current_runtime_ctx, &ctx,
521 afw_trace_fz(1, xctx->env->flag_index_trace_authorization_check,
534 xctx->env->flag_index_trace_authorization_check_detail, xctx))
543 property_name =
"coreAuthorizationCheck";
544 current_decider = &afw_s_coreAuthorizationCheck;
545 final_decider = &afw_s_coreAuthorizationCheck;
549 property_name =
"initialAuthorizationCheck";
550 current_decider = &afw_s_initialAuthorizationCheck;
551 final_decider = &afw_s_initialAuthorizationCheck;
559 decision_id = &afw_s_notApplicable;
564 "applicationControl.%s must return an "
565 "_AdaptiveAuthorizationDecision_ object", property_name);
569 &afw_s_decisionId, xctx);
572 "applicationControl.%s returned an "
573 "_AdaptiveAuthorizationDecision_ object with missing "
574 "decisionId property", property_name);
585 final_result =
false;
589 "applicationControl.%s returned an "
590 "_AdaptiveAuthorizationDecision_ object with invalid "
598 for (decision_id = &afw_s_notApplicable,
600 anchor = xctx->env->authorization_control->first_anchor;
606 current_decider = &ah->authorization_handler_id;
608 if (!ah->allow_permit_override) {
616 "] skipped because of a previous permit decision",
627 if (!ah->allow_deny_override) {
635 "] skipped because of a previous deny decision",
646 resource_id_value, object_value, action_id_value, p, xctx);
650 &afw_s_decisionId, xctx);
654 decision_id = decision_id2;
656 final_decider = &ah->authorization_handler_id;
682 current_decider = &afw_s_denyIfNotApplicable;
683 final_decider = &afw_s_denyIfNotApplicable;
694 &afw_s__AdaptiveAuthorizationResult_, xctx);
699 decision_id = &afw_s_indeterminate;
700 final_decider = current_decider;
703 xctx->env->flag_index_trace_authorization_decision, xctx))
706 afw_trace_fz(1, xctx->env->flag_index_trace_authorization_decision_detail,
728 afw_trace_fz(1, xctx->env->flag_index_trace_authorization_decision,
745 xctx->env->flag_index_trace_authorization_decision_detail, xctx))
817 afw_authorization_internal_register(
823 afw_authorization_internal_register_service_and_conf(xctx);
826 afw_authorization_internal_register_handler_type_script(xctx);
830 &afw_s_authorizationCheck,
832 "Qualified variables available during authorizationCheck processing",
833 &impl_context_current_runtime_ctx[0],
839 &afw_s_a_flag_trace_authorization_detail,
840 &afw_s_a_flag_trace_authorization_detail_brief,
841 &afw_s_a_flag_trace_authorization_detail_description,
842 &afw_s_a_flag_trace_detail,
847 &afw_s_a_flag_trace_authorization,
848 &afw_s_a_flag_trace_authorization_brief,
849 &afw_s_a_flag_trace_authorization_description,
853 &afw_s_a_flag_trace_authorization,
854 &afw_s_a_flag_trace_authorization_detail,
859 &afw_s_a_flag_trace_authorization_check_bypass,
860 &afw_s_a_flag_trace_authorization_check_bypass_brief,
861 &afw_s_a_flag_trace_authorization_check_bypass_description,
862 &afw_s_a_flag_trace_authorization,
866 &afw_s_a_flag_trace_authorization_check_bypass,
871 &afw_s_a_flag_trace_authorization_check_detail,
872 &afw_s_a_flag_trace_authorization_check_detail_brief,
873 &afw_s_a_flag_trace_authorization_check_detail_description,
874 &afw_s_a_flag_trace_authorization_detail,
878 &afw_s_a_flag_trace_authorization_check_detail,
883 &afw_s_a_flag_trace_authorization_check,
884 &afw_s_a_flag_trace_authorization_check_brief,
885 &afw_s_a_flag_trace_authorization_check_description,
886 &afw_s_a_flag_trace_authorization,
890 &afw_s_a_flag_trace_authorization_check,
893 &afw_s_a_flag_trace_authorization_check,
894 &afw_s_a_flag_trace_authorization_check_detail,
899 &afw_s_a_flag_trace_authorization_decision_detail,
900 &afw_s_a_flag_trace_authorization_decision_detail_brief,
901 &afw_s_a_flag_trace_authorization_decision_detail_description,
902 &afw_s_a_flag_trace_authorization_detail,
906 &afw_s_a_flag_trace_authorization_decision_detail,
911 &afw_s_a_flag_trace_authorization_decision,
912 &afw_s_a_flag_trace_authorization_decision_brief,
913 &afw_s_a_flag_trace_authorization_decision_description,
914 &afw_s_a_flag_trace_authorization,
918 &afw_s_a_flag_trace_authorization_decision,
921 &afw_s_a_flag_trace_authorization_decision,
922 &afw_s_a_flag_trace_authorization_decision_detail,
933 impl_set_instance_active(
954 control = afw_authorization_internal_set_control(NULL, xctx);
958 authorization_handler_id, xctx);
960 if (!authorization_handler) {
966 authorization_handler_id,
969 authorization_handler->service_id,
1005 if (!authorization_handler) {
1015 if (authorization_handler) {
1016 anchor->
properties = authorization_handler->properties;
1057 for (processing_order = 1,
1093 authorization_handler_id, xctx);
1118 instance = impl_get_reference(authorization_handler_id, xctx);
1123 &afw_s_authorizationHandler,
1124 &afw_s_a_dash, authorization_handler_id, NULL);
1126 instance = impl_get_reference(authorization_handler_id, xctx);
1130 " is not available",
1155 &instance->authorization_handler_id, xctx),
1156 previous_anchor = NULL;
1158 previous_anchor = anchor,
1166 if (!previous_anchor) {
1186 impl_authorization_conf_type_create_cede_p(
1197 &afw_s_authorizationHandlerId, xctx);
1198 if (!authorization_id) {
1201 "authorizationId properties is required",
1210 " is already running",
1211 source_location->len, source_location->s,
1212 authorization_id->len, authorization_id->s);
1217 conf, source_location, p, xctx);
1224 afw_authorization_internal_register_service_and_conf(
1231 &afw_s_authorizationHandler,
1232 impl_authorization_conf_type_create_cede_p,
1233 &afw_s_a_authorizationHandler_title,
1234 &afw_s_a_authorizationHandler_description,
1235 &afw_s_authorizationHandlerId,
1236 &afw_s_authorization_handler_id,
1237 &afw_s__AdaptiveAuthorizationHandler_,
1238 &afw_s_authorizationHandlerType,
1239 &afw_s_authorization_handler_type,
1240 &afw_s__AdaptiveAuthorizationHandlerType_,
1246 self->inf = &impl_afw_service_type_inf;
1249 &afw_s_authorizationHandler, xctx);
1250 if (!self->conf_type) {
1254 self->title = &afw_s_a_service_type_authorizationHandler_title;
1256 &afw_s_authorizationHandler, xctx);
1266 impl_afw_service_type_related_instance_count (
1305 impl_afw_service_type_start_cede_p (
1313 const afw_utf8_t *authorization_handler_type;
1316 properties, &afw_s_authorizationHandlerType, p, xctx);
1317 if (!authorization_handler_type) {
1319 "parameter authorizationHandlerType missing",
1324 authorization_handler_type, xctx);
1328 " is not a registered authorizationHandler type",
1333 authorization_handler =
1335 factory, properties, p, xctx);
1338 impl_set_instance_active(&authorization_handler->authorization_handler_id,
1339 authorization_handler, xctx);
1348 impl_afw_service_type_stop (
1353 impl_set_instance_active(
id, NULL, xctx);
1362 impl_afw_service_type_restart_cede_p (
1369 impl_afw_service_type_start_cede_p(instance, properties, p, xctx);
AFW_DEFINE(const afw_object_t *)
#define AFW_DEFINE_INTERNAL(type)
Define an internal function for /src/afw/ source*.c files.
#define AFW_DEFINE_INTERNAL_CONST_DATA(type)
Define an internal variable for /src/afw/ source*.c files.
#define AFW_DEFINE_CONST_DATA(type)
Define a public afw variable.
Adaptive Framework Core Internal.
Interface afw_interface implementation declares.
#define afw_authorization_handler_factory_create_authorization_handler_cede_p(instance, properties, p, xctx)
Call method create_authorization_handler_cede_p of interface afw_authorization_handler_factory.
#define afw_authorization_handler_destroy(instance, xctx)
Call method destroy of interface afw_authorization_handler.
#define afw_authorization_handler_check(instance, resource_id, object, action_id, p, xctx)
Call method check of interface afw_authorization_handler.
afw_authorization_action_id_read
actionId value read.
afw_authorization_action_id_create
actionId value create.
afw_authorization_handler_release(const afw_authorization_handler_t *instance, afw_xctx_t *xctx)
Release reference to authorization handler.
afw_authorization_decision_id_notApplicable_value
AdaptiveAuthorizationResult decisionId value notApplicable.
afw_authorization_handler_get_reference(const afw_utf8_t *authorization_handler_id, afw_xctx_t *xctx)
Get reference to authorization handler.
afw_authorization_decision_id_permit_value
AdaptiveAuthorizationResult decisionId value permit.
afw_authorization_action_id_query
actionId value retrieve.
afw_authorization_decision_id_indeterminateD_value
AdaptiveAuthorizationResult decisionId value indeterminateD.
afw_authorization_action_id_modify
actionId value modify.
afw_authorization_check(afw_boolean_t enforce, const afw_value_t *request_id_value, const afw_value_t *resource_id_value, const afw_value_t *object_value, const afw_value_t *action_id_value, const afw_pool_t *p, afw_xctx_t *xctx)
Perform authorization check.
afw_authorization_action_id_control
actionId value control.
afw_authorization_mode_id_core_value
AdaptiveAuthorizationMode core.
afw_authorization_decision_id_deny_value
AdaptiveAuthorizationResult decisionId value deny.
afw_authorization_decision_id_indeterminateP_value
AdaptiveAuthorizationResult decisionId value indeterminateP.
afw_authorization_action_id_delete
actionId value delete.
afw_authorization_mode_id_intermediate_value
AdaptiveAuthorizationMode intermediate.
afw_authorization_decision_id_indeterminate_value
AdaptiveAuthorizationResult decisionId value indeterminate.
afw_authorization_mode_id_user_value
AdaptiveAuthorizationMode user.
afw_authorization_decision_id_indeterminateDP_value
AdaptiveAuthorizationResult decisionId value indeterminateDP.
afw_data_type_anyURI
Data type struct for anyURI.
#define afw_object_old_get_property_as_boolean(object, property_name, found, xctx)
Get property function for data type boolean value.
afw_object_set_property_as_list(const afw_object_t *object, const afw_utf8_t *property_name, const afw_list_t *internal, afw_xctx_t *xctx)
Set property function for data type list values.
#define afw_value_is_null(A_VALUE)
Macro to determine if value is evaluated null.
#define afw_value_is_object(A_VALUE)
Macro to determine if value is evaluated object.
afw_value_create_object(const afw_object_t *internal, const afw_pool_t *p, afw_xctx_t *xctx)
Create function for unmanaged data type object value.
afw_data_type_object_direct
extern for data type object struct.
afw_value_evaluated_object_inf
Unmanaged evaluated value inf for data type object.
afw_data_type_string_direct
extern for data type string struct.
#define afw_object_old_get_property_as_string(object, property_name, xctx)
Get property function for data type string value.
afw_value_evaluated_string_inf
Unmanaged evaluated value inf for data type string.
afw_value_as_string(const afw_value_t *value, afw_xctx_t *xctx)
Typesafe cast of data type string.
#define AFW_UTF8_FMT_ARG(A_STRING)
Convenience Macro for use with AFW_UTF8_FMT to specify arg.
#define AFW_UTF8_LITERAL(A_STRING)
String literal initializer.
#define AFW_UTF8_CONTEXTUAL_LABEL_FMT
Format string used for source location.
#define AFW_UTF8_FMT
Format string specifier used for afw_utf8_t.
apr_int64_t afw_integer_t
typedef for big signed int.
afw_context_type_register_cb_variables(const afw_utf8_t *context_type_id, const afw_utf8_t *qualifier_id, const afw_utf8_octet_t *description_z, const afw_context_cb_variable_t *const *variables, int include_mask, afw_xctx_t *xctx)
Register context type id for array of current variable callbacks.
afw_context_push_cb_variables(const afw_utf8_t *qualifier_id, const afw_context_cb_variable_t *const *variables, void *data, const afw_pool_t *p, afw_xctx_t *xctx)
Push NULL terminated list of variable callback structs.
void afw_environment_register_authorization_handler_id(const afw_utf8_t *authorization_handler_id, const afw_authorization_handler_id_anchor_t *anchor, afw_xctx_t *xctx)
Register an authorization handler id anchor.
void afw_environment_register_service_type(const afw_utf8_t *service_type_id, const afw_service_type_t *service_type, afw_xctx_t *xctx)
Register a service type.
const afw_environment_conf_type_t * afw_environment_get_conf_type(const afw_utf8_t *type, afw_xctx_t *xctx)
Get the conf_type associated with type.
const afw_authorization_handler_id_anchor_t * afw_environment_get_authorization_handler_id(const afw_utf8_t *authorization_handler_id, afw_xctx_t *xctx)
Get the authorization handler id anchor associated with authorization handler id.
afw_environment_create_and_register_conf_type(const afw_utf8_t *conf_type_id, afw_environment_conf_type_create_cede_p_t create, const afw_utf8_t *title, const afw_utf8_t *description, const afw_utf8_t *id_property_name, const afw_utf8_t *id_registry_type_id, const afw_utf8_t *id_runtime_object_type_id, const afw_utf8_t *subtype_property_name, const afw_utf8_t *subtype_registry_type_id, const afw_utf8_t *subtype_runtime_object_type_id, afw_boolean_t is_unique, afw_xctx_t *xctx)
Create and register a configuration (conf) type.
const afw_flag_t * afw_environment_get_flag(const afw_utf8_t *flag_id, afw_xctx_t *xctx)
Get the flag instance associated with flag_id.
const afw_authorization_handler_factory_t * afw_environment_get_authorization_handler_type(const afw_utf8_t *authorization_handler_type, afw_xctx_t *xctx)
Get the authorization_handler factory instance associated with authorization handler type.
#define AFW_FINALLY
Always executed regardless of error.
#define AFW_CATCH_UNHANDLED
Catch an unhandled error that occurs in a AFW_TRY block.
#define AFW_ENDTRY
Ends an AFW try block.
#define AFW_TRY
Begin an AFW TRY block.
#define AFW_THROW_ERROR_FZ(code, xctx, format_z,...)
Macro used to set error and 0 rv in xctx and throw it.
afw_error_to_utf8(const afw_error_t *error, const afw_pool_t *p, afw_xctx_t *xctx)
Convert error to utf8.
#define AFW_ERROR_THROWN
Access the thrown error. See AFW_TRY.
#define AFW_THROW_ERROR_Z(code, message_z, xctx)
Macro used to set error and 0 rv in xctx and throw it.
#define afw_flag_is_active(flag_index, xctx)
Determine if flag for flag index is set in xctx.
void afw_flag_environment_register_flag(const afw_utf8_t *flag_id, const afw_utf8_t *brief, const afw_utf8_t *description, const afw_utf8_t *included_by_flag_id, afw_xctx_t *xctx)
Register a flag definition.
void afw_flag_add_included_by(const afw_utf8_t *flag_id, const afw_utf8_t *included_by_flag_id, afw_xctx_t *xctx)
Add another include_by flag to a registered flag.
afw_list_create_wrapper_for_array(const void *array, afw_boolean_t indirect, const afw_data_type_t *data_type, afw_size_t count, const afw_pool_t *p, afw_xctx_t *xctx)
Create a immutable list wrapper for an array.
#define AFW_LOCK_READ_END
Macro to end a read lock section for pool.
#define AFW_LOCK_WRITE_BEGIN(instance)
Macro to begin a write lock section.
#define AFW_LOCK_WRITE_END
Macro to end a write lock section.
#define AFW_LOCK_READ_BEGIN(instance)
Macro to begin a read lock section for pool.
#define afw_memory_copy(to, from)
Copy to preallocated memory of same type.
afw_object_old_get_property_as_utf8(const afw_object_t *instance, const afw_utf8_t *property_name, const afw_pool_t *p, afw_xctx_t *xctx)
Get an object's property value as a string in specified pool.
#define afw_object_create(p, xctx)
Create an empty unmanaged object in memory.
afw_object_old_get_property_as_compiled_hybrid(const afw_object_t *instance, const afw_utf8_t *property_name, const afw_utf8_t *source_location, const afw_compile_shared_t *shared, const afw_pool_t *p, afw_xctx_t *xctx)
Return a compiled hybrid property value.
afw_object_set_property(const afw_object_t *instance, const afw_utf8_t *property_name, const afw_value_t *value, afw_xctx_t *xctx)
Set the value of an object's property.
#define afw_pool_calloc_type(instance, type, xctx)
Macro to allocate cleared memory to hold type in pool.
afw_runtime_get_object(const afw_utf8_t *object_type_id, const afw_utf8_t *object_id, afw_xctx_t *xctx)
Get a runtime object.
afw_service_start_using_AdaptiveConf_cede_p(const afw_object_t *conf, const afw_utf8_t *source_location, const afw_pool_t *p, afw_xctx_t *xctx)
Start a service using AdaptiveConf object and cede p.
afw_service_start(const afw_utf8_t *service_id, afw_boolean_t manual_start, afw_xctx_t *xctx)
Start a service.
#define afw_trace_fz(trace_level, flag_index, instance, xctx, format_z,...)
If applicable, write trace using a printf style format.
const afw_utf8_t * afw_utf8_concat(const afw_pool_t *p, afw_xctx_t *xctx,...)
Concatenate strings with result in specifed pool.
afw_boolean_t afw_utf8_equal(const afw_utf8_t *s1, const afw_utf8_t *s2)
Check to see if a string equals another string.
const afw_utf8_t * afw_utf8_clone(const afw_utf8_t *string, const afw_pool_t *p, afw_xctx_t *xctx)
Clone a utf-8 string into a specific pool.
afw_uuid_create_string(const afw_pool_t *p, afw_xctx_t *xctx)
Create a UUID as a standard format UUID utf-8 string value.
#define afw_value_evaluate(value, p, xctx)
Evaluate value if needed using specific pool.
afw_xctx_get_qualifier_stack_top(afw_xctx_t *xctx)
Get qualifier stack top.
afw_xctx_set_qualifier_stack_top(int top, afw_xctx_t *xctx)
Set stack top index.
#define afw_xctx_calloc_type(type, xctx)
Macro to allocate cleared memory to hold type in xctx's pool.
Interface afw_authorization_handler_factory public struct.
Interface afw_authorization_handler public struct.
Self for authorization check context.
const afw_value_t * initial_authorization_check
Initial authorization check or NULL.
const afw_utf8_t * not_applicable_decision_id
Final notApplicable decision id.
const afw_value_t * not_applicable_result
Final notApplicable result.
const afw_authorization_handler_id_anchor_t * first_anchor
First authorization handler id anchor in priority order.
const afw_value_t * core_authorization_check
Core authorization check or NULL.
afw_boolean_t check_intermediate_mode
Check authorization for mode intermediate.
const afw_authorization_handler_id_anchor_t * next_anchor
Next authorization id anchor in priority order.
const afw_authorization_handler_t * authorization_handler
Authorization Handler instance or NULL.
afw_integer_t processing_order
Order this authorization handler will be processed.
const afw_utf8_t * service_id
Associated service id or NULL.
const afw_utf8_t * authorization_handler_id
Authorization Handler id.
afw_integer_t reference_count
Reference count for this instance of authorization handler.
const afw_object_t * properties
Associated properties.
afw_authorization_handler_id_anchor_t * stopping
First/next stopping authorization handler or NULL.
Struct used in afw_context_cb_variable_s.
Struct passed to afw_context_type_register_cb_variables()
Struct for typedef afw_environment_t defined in afw_common.h.
afw_size_t flag_index_trace_authorization_check_detail
Flag index of trace:authorization:check:detail.
const afw_pool_t * p
Pool used to hold environment.
afw_size_t flag_index_trace_authorization_check
Flag index of trace:authorization:check.
afw_size_t flag_index_trace_authorization_decision_detail
Flag index of trace:authorization:decision:detail.
afw_size_t flag_index_trace_authorization_decision
Flag index of trace:authorization:decision.
const afw_lock_rw_t * authorization_handler_id_anchor_rw_lock
Lock for protecting changes to authorization handler id anchors.
afw_size_t flag_index_trace_authorization_check_bypass
Flag index of trace:authorization:check:bypass.
const afw_authorization_control_t * authorization_control
Used by authorization.
afw_size_t flag_index
Index of this flag in flags array.
Interface afw_list public struct.
Interface afw_object public struct.
Interface afw_pool public struct.
Interface afw_service_type public struct.
NFC normalized UTF-8 string.
struct for data type object values.
Interface afw_value public struct.
struct for data type string values.
void * data
Data that will be passed to get/set.
Interface afw_xctx public struct.