summaryrefslogtreecommitdiff
path: root/res/res_pjsip/config_global.c
diff options
context:
space:
mode:
authorDaniel Journo <dan@keshercommunications.com>2016-01-10 22:22:12 +0000
committerDaniel Journo <dan@keshercommunications.com>2016-01-13 11:42:20 -0600
commit8182146e850515084056acc9f3d7b0b6534af44e (patch)
tree7734e9484e70291de87eb191cf3c9d8958c7971d /res/res_pjsip/config_global.c
parentef57080b27cee39991a2bf501d6fadfe8bc61146 (diff)
pjsip: Add option global/regcontext
Added new global option (regcontext) to pjsip. When set, Asterisk will dynamically create and destroy a NoOp priority 1 extension for a given endpoint who registers or unregisters with us. ASTERISK-25670 #close Reported-by: Daniel Journo Change-Id: Ib1530c5b45340625805c057f8ff1fb240a43ea62
Diffstat (limited to 'res/res_pjsip/config_global.c')
-rw-r--r--res/res_pjsip/config_global.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/res/res_pjsip/config_global.c b/res/res_pjsip/config_global.c
index ef706f0b3..3d88ffc2a 100644
--- a/res/res_pjsip/config_global.c
+++ b/res/res_pjsip/config_global.c
@@ -35,6 +35,7 @@
#define DEFAULT_ENDPOINT_IDENTIFIER_ORDER "ip,username,anonymous"
#define DEFAULT_MAX_INITIAL_QUALIFY_TIME 0
#define DEFAULT_FROM_USER "asterisk"
+#define DEFAULT_REGCONTEXT ""
static char default_useragent[256];
@@ -42,6 +43,7 @@ struct global_config {
SORCERY_OBJECT(details);
AST_DECLARE_STRING_FIELDS(
AST_STRING_FIELD(useragent);
+ AST_STRING_FIELD(regcontext);
AST_STRING_FIELD(default_outbound_endpoint);
/*! Debug logging yes|no|host */
AST_STRING_FIELD(debug);
@@ -137,6 +139,23 @@ char *ast_sip_get_debug(void)
return res;
}
+char *ast_sip_get_regcontext(void)
+{
+ char *res;
+ struct global_config *cfg;
+
+ cfg = get_global_cfg();
+ if (!cfg) {
+ return ast_strdup(DEFAULT_REGCONTEXT);
+ }
+
+ res = ast_strdup(cfg->regcontext);
+ ao2_ref(cfg, -1);
+
+ return res;
+}
+
+
char *ast_sip_get_endpoint_identifier_order(void)
{
char *res;
@@ -310,6 +329,9 @@ int ast_sip_initialize_sorcery_global(void)
OPT_UINT_T, 0, FLDSET(struct global_config, max_initial_qualify_time));
ast_sorcery_object_field_register(sorcery, "global", "default_from_user", DEFAULT_FROM_USER,
OPT_STRINGFIELD_T, 0, STRFLDSET(struct global_config, default_from_user));
+ ast_sorcery_object_field_register(sorcery, "global", "regcontext", DEFAULT_REGCONTEXT,
+ OPT_STRINGFIELD_T, 0, STRFLDSET(struct global_config, regcontext));
+
if (ast_sorcery_instance_observer_add(sorcery, &observer_callbacks_global)) {
return -1;