diff options
Diffstat (limited to 'res/res_pjsip')
-rw-r--r-- | res/res_pjsip/config_global.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/res/res_pjsip/config_global.c b/res/res_pjsip/config_global.c index 1779c535d..21800850e 100644 --- a/res/res_pjsip/config_global.c +++ b/res/res_pjsip/config_global.c @@ -39,6 +39,8 @@ struct global_config { AST_STRING_FIELD(default_outbound_endpoint); /*! Debug logging yes|no|host */ AST_STRING_FIELD(debug); + /*! Order by which endpoint identifiers are checked (comma separated list) */ + AST_STRING_FIELD(endpoint_identifier_order); ); /* Value to put in Max-Forwards header */ unsigned int max_forwards; @@ -57,7 +59,7 @@ static void *global_alloc(const char *name) { struct global_config *cfg = ast_sorcery_generic_alloc(sizeof(*cfg), global_destructor); - if (!cfg || ast_string_field_init(cfg, 80)) { + if (!cfg || ast_string_field_init(cfg, 100)) { return NULL; } @@ -116,6 +118,21 @@ char *ast_sip_get_debug(void) return res; } +char *ast_sip_get_endpoint_identifier_order(void) +{ + char *res; + struct global_config *cfg = get_global_cfg(); + + if (!cfg) { + return ast_strdup("ip,username,anonymous"); + } + + res = ast_strdup(cfg->endpoint_identifier_order); + ao2_ref(cfg, -1); + + return res; +} + unsigned int ast_sip_get_keep_alive_interval(void) { unsigned int interval; @@ -152,6 +169,8 @@ int ast_sip_initialize_sorcery_global(void) OPT_STRINGFIELD_T, 0, STRFLDSET(struct global_config, default_outbound_endpoint)); ast_sorcery_object_field_register(sorcery, "global", "debug", "no", OPT_STRINGFIELD_T, 0, STRFLDSET(struct global_config, debug)); + ast_sorcery_object_field_register(sorcery, "global", "endpoint_identifier_order", "ip,username,anonymous", + OPT_STRINGFIELD_T, 0, STRFLDSET(struct global_config, endpoint_identifier_order)); ast_sorcery_object_field_register(sorcery, "global", "keep_alive_interval", "", OPT_UINT_T, 0, FLDSET(struct global_config, keep_alive_interval)); |