diff options
author | Kevin Harwell <kharwell@digium.com> | 2015-04-09 22:07:50 +0000 |
---|---|---|
committer | Kevin Harwell <kharwell@digium.com> | 2015-04-09 22:07:50 +0000 |
commit | 520b9f217402f036967d0b3dba8e24db6766ae93 (patch) | |
tree | fbf0e0dc378a31503d16070d81755753a4aa2964 /res/res_pjsip | |
parent | b2b1f24af6d0ad8bfd9569e135854857a7667f56 (diff) |
res_pjsip: add CLI command to show global and system configuration
Added a new CLI command for res_pjsip that shows both global and system
configuration settings: pjsip show settings
ASTERISK-24918 #close
Reported by: Scott Griepentrog
Review: https://reviewboard.asterisk.org/r/4597/
........
Merged revisions 434527 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434528 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'res/res_pjsip')
-rw-r--r-- | res/res_pjsip/config_global.c | 19 | ||||
-rw-r--r-- | res/res_pjsip/config_system.c | 35 | ||||
-rw-r--r-- | res/res_pjsip/include/res_pjsip_private.h | 19 |
3 files changed, 73 insertions, 0 deletions
diff --git a/res/res_pjsip/config_global.c b/res/res_pjsip/config_global.c index 682e3c0b1..2aa15838f 100644 --- a/res/res_pjsip/config_global.c +++ b/res/res_pjsip/config_global.c @@ -25,6 +25,7 @@ #include "include/res_pjsip_private.h" #include "asterisk/sorcery.h" #include "asterisk/ast_version.h" +#include "asterisk/res_pjsip_cli.h" #define DEFAULT_MAX_FORWARDS 70 #define DEFAULT_KEEPALIVE_INTERVAL 0 @@ -213,6 +214,24 @@ static const struct ast_sorcery_instance_observer observer_callbacks_global = { .object_type_loaded = global_loaded_observer, }; +int sip_cli_print_global(struct ast_sip_cli_context *context) +{ + struct global_config *cfg = get_global_cfg(); + + if (!cfg) { + cfg = ast_sorcery_alloc(ast_sip_get_sorcery(), "global", NULL); + if (!cfg) { + return -1; + } + } + + ast_str_append(&context->output_buffer, 0, "\nGlobal Settings:\n\n"); + ast_sip_cli_print_sorcery_objectset(cfg, context, 0); + + ao2_ref(cfg, -1); + return 0; +} + int ast_sip_destroy_sorcery_global(void) { struct ast_sorcery *sorcery = ast_sip_get_sorcery(); diff --git a/res/res_pjsip/config_system.c b/res/res_pjsip/config_system.c index a41af90ed..473eca818 100644 --- a/res/res_pjsip/config_system.c +++ b/res/res_pjsip/config_system.c @@ -26,6 +26,7 @@ #include "include/res_pjsip_private.h" #include "asterisk/threadpool.h" #include "asterisk/dns.h" +#include "asterisk/res_pjsip_cli.h" #define TIMER_T1_MIN 100 #define DEFAULT_TIMER_T1 500 @@ -112,6 +113,40 @@ static int system_apply(const struct ast_sorcery *system_sorcery, void *obj) return 0; } +static struct system_config *get_system_cfg(void) +{ + struct system_config *cfg; + struct ao2_container *systems; + systems = ast_sorcery_retrieve_by_fields(system_sorcery, "system", + AST_RETRIEVE_FLAG_MULTIPLE | AST_RETRIEVE_FLAG_ALL, NULL); + + if (!systems) { + return NULL; + } + + cfg = ao2_find(systems, NULL, 0); + ao2_ref(systems, -1); + return cfg; +} + +int sip_cli_print_system(struct ast_sip_cli_context *context) +{ + struct system_config *cfg = get_system_cfg(); + + if (!cfg) { + cfg = ast_sorcery_alloc(system_sorcery, "system", NULL); + if (!cfg) { + return -1; + } + } + + ast_str_append(&context->output_buffer, 0, "\nSystem Settings:\n\n"); + ast_sip_cli_print_sorcery_objectset(cfg, context, 0); + + ao2_ref(cfg, -1); + return 0; +} + int ast_sip_initialize_system(void) { RAII_VAR(struct ao2_container *, system_configs, NULL, ao2_cleanup); diff --git a/res/res_pjsip/include/res_pjsip_private.h b/res/res_pjsip/include/res_pjsip_private.h index 11d288771..bf428d5c5 100644 --- a/res/res_pjsip/include/res_pjsip_private.h +++ b/res/res_pjsip/include/res_pjsip_private.h @@ -19,6 +19,7 @@ struct ao2_container; struct ast_threadpool_options; +struct ast_sip_cli_context; /*! * \internal @@ -272,6 +273,24 @@ void ast_sip_destroy_cli(void); /*! * \internal + * \brief Add res_pjsip global configuration options to the cli context. + * + * \param context context to add options to + * \retval 0 Success, -1 on failure + */ +int sip_cli_print_global(struct ast_sip_cli_context *context); + +/*! + * \internal + * \brief Add res_pjsip system configuration options to the cli context. + * + * \param context context to add options to + * \retval 0 Success, -1 on failure + */ +int sip_cli_print_system(struct ast_sip_cli_context *context); + +/*! + * \internal * \brief Used by res_pjsip.so to register a service without adding a self reference */ int internal_sip_register_service(pjsip_module *module); |