@ -116,6 +116,12 @@ generate_enum_string_prototypes(attest_level,
attest_level_C ,
) ;
/*
* unknown_tn_attest_level uses the same enum as attest_level .
*/
enum attest_level_enum unknown_tn_attest_level_from_str ( const char * value ) ;
const char * unknown_tn_attest_level_to_str ( enum attest_level_enum value ) ;
/*
* enum stir_shaken_failure_action is defined in
* res_stir_shaken . h because res_pjsip_stir_shaken needs it
@ -136,20 +142,23 @@ const char *stir_shaken_failure_action_to_str(
* are _to_str and _from_str functions defined elsewhere .
*
*/
# define generate_sorcery_enum_to_str (__struct, __substruct, __lc_param) \
# define generate_sorcery_enum_to_str _ex (__struct, __substruct, __lc_param, __base_enu m) \
static int sorcery_ # # __lc_param # # _to_str ( const void * obj , const intptr_t * args , char * * buf ) \
{ \
const struct __struct * cfg = obj ; \
* buf = ast_strdup ( __ lc_para m # # _to_str ( cfg - > __substruct __lc_param ) ) ; \
* buf = ast_strdup ( __ base_enu m # # _to_str ( cfg - > __substruct __lc_param ) ) ; \
return * buf ? 0 : - 1 ; \
}
# define generate_sorcery_enum_from_str_ex(__struct, __substruct, __lc_param, __unknown) \
# define generate_sorcery_enum_to_str(__struct, __substruct, __lc_param) \
generate_sorcery_enum_to_str_ex ( __struct , __substruct , __lc_param , __lc_param )
# define generate_sorcery_enum_from_str_ex(__struct, __substruct, __lc_param, __base_enum, __unknown) \
static int sorcery_ # # __lc_param # # _from_str ( const struct aco_option * opt , struct ast_variable * var , void * obj ) \
{ \
struct __struct * cfg = obj ; \
cfg - > __substruct __lc_param = __ lc_para m # # _from_str ( var - > value ) ; \
if ( cfg - > __substruct __lc_param = = __ unknown) { \
cfg - > __substruct __lc_param = __ base_enu m # # _from_str ( var - > value ) ; \
if ( cfg - > __substruct __lc_param = = __ base_enum # # _ # # __ unknown) { \
ast_log ( LOG_WARNING , " Unknown value '%s' specified for %s \n " , \
var - > value , var - > name ) ; \
return - 1 ; \
@ -158,7 +167,7 @@ static int sorcery_ ## __lc_param ## _from_str(const struct aco_option *opt, str
}
# define generate_sorcery_enum_from_str(__struct, __substruct, __lc_param, __unknown) \
generate_sorcery_enum_from_str_ex ( __struct , __substruct , __lc_param , __lc_param # # _ # # __unknown ) \
generate_sorcery_enum_from_str_ex ( __struct , __substruct , __lc_param , __lc_param , __unknown ) \
# define generate_sorcery_acl_to_str(__struct, __lc_param) \
@ -263,14 +272,18 @@ struct ast_acl_list *get_default_acl_list(void);
* Copy an enum from the source to the dest only if the source is
* neither NOT_SET nor UNKNOWN
*/
# define cfg_enum_copy (__cfg_dst, __cfg_src, __field) \
# define cfg_enum_copy _ex (__cfg_dst, __cfg_src, __field, __not_set, __unknown ) \
( { \
if ( __cfg_src - > __field ! = __ field # # _NOT_SET \
& & __cfg_src - > __field ! = __ field # # _UNKNOWN ) { \
if ( __cfg_src - > __field ! = __ not_set \
& & __cfg_src - > __field ! = __ unknown ) { \
__cfg_dst - > __field = __cfg_src - > __field ; \
} \
} )
# define cfg_enum_copy(__cfg_dst, __cfg_src, __field) \
cfg_enum_copy_ex ( __cfg_dst , __cfg_src , __field , __field # # _NOT_SET , __field # # _UNKNOWN )
/*!
* \ brief Attestation Service configuration for stir / shaken
*
@ -314,6 +327,7 @@ struct attestation_cfg {
*/
AST_DECLARE_STRING_FIELDS ( ) ;
struct attestation_cfg_common acfg_common ;
enum attest_level_enum unknown_tn_attest_level ;
int global_disable ;
} ;
@ -412,6 +426,7 @@ struct profile_cfg {
struct attestation_cfg_common acfg_common ;
struct verification_cfg_common vcfg_common ;
enum endpoint_behavior_enum endpoint_behavior ;
enum attest_level_enum unknown_tn_attest_level ;
struct profile_cfg * eprofile ;
} ;
@ -486,13 +501,13 @@ int tn_config_unload(void);
__stringify ( DEFAULT_ # # name ) , OPT_UINT_T , 0 , \
FLDSET ( struct object , field ) )
# define enum_option_register_ex(sorcery, CONFIG_TYPE, name, field, nodoc) \
# define enum_option_register_ex(sorcery, CONFIG_TYPE, name, field, function_prefix, nodoc) \
ast_sorcery_object_field_register_custom # # nodoc ( sorcery , CONFIG_TYPE , \
# name, f ield ## _to_str(DEFAULT_ ## field), \
# name, f unction_prefix ## _to_str(DEFAULT_ ## field), \
sorcery_ # # field # # _from_str , sorcery_ # # field # # _to_str , NULL , 0 , 0 )
# define enum_option_register(sorcery, CONFIG_TYPE, name, nodoc) \
enum_option_register_ex ( sorcery , CONFIG_TYPE , name , name , n odoc)
enum_option_register_ex ( sorcery , CONFIG_TYPE , name , name , n ame, n odoc)
# define register_common_verification_fields(sorcery, object, CONFIG_TYPE, nodoc) \
( { \
@ -510,7 +525,7 @@ int tn_config_unload(void);
uint_option_register ( sorcery , CONFIG_TYPE , object , max_cache_entry_age , vcfg_common . max_cache_entry_age , nodoc ) ; \
uint_option_register ( sorcery , CONFIG_TYPE , object , max_cache_size , vcfg_common . max_cache_size , nodoc ) ; \
\
enum_option_register_ex ( sorcery , CONFIG_TYPE , failure_action , stir_shaken_failure_action , nodoc) ; \
enum_option_register_ex ( sorcery , CONFIG_TYPE , failure_action , stir_shaken_failure_action , stir_shaken_failure_action, nodoc) ; \
enum_option_register ( sorcery , CONFIG_TYPE , use_rfc9410_responses , nodoc ) ; \
enum_option_register ( sorcery , CONFIG_TYPE , \
relax_x5u_port_scheme_restrictions , nodoc ) ; \