[asterisk-commits] kharwell: branch 13 r434527 - in /branches/13: ./ res/ res/res_pjsip/ res/res...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu Apr 9 17:03:23 CDT 2015


Author: kharwell
Date: Thu Apr  9 17:03:17 2015
New Revision: 434527

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=434527
Log:
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/

Modified:
    branches/13/CHANGES
    branches/13/res/res_pjsip.c
    branches/13/res/res_pjsip/config_global.c
    branches/13/res/res_pjsip/config_system.c
    branches/13/res/res_pjsip/include/res_pjsip_private.h

Modified: branches/13/CHANGES
URL: http://svnview.digium.com/svn/asterisk/branches/13/CHANGES?view=diff&rev=434527&r1=434526&r2=434527
==============================================================================
--- branches/13/CHANGES (original)
+++ branches/13/CHANGES Thu Apr  9 17:03:17 2015
@@ -20,6 +20,11 @@
    more information.  Defaults to 'no' as setting it to 'yes' can result in
    many unnecessary messages being sent to the caller.
 
+res_pjsip
+------------------
+ * A new CLI command has been added: "pjsip show settings", which shows
+   both the global and system configuration settings.
+
 res_ari_channels
 ------------------
  * Two new events, 'ChannelHold' and 'ChannelUnhold', have been added to the
@@ -34,7 +39,6 @@
    the hold initiator. Instead, AMI or ARI events are raised indicating that
    the channel wanted to place someone on hold. This allows external
    applications to implement their own custom hold/unhold logic.
-
 
 ------------------------------------------------------------------------------
 --- Functionality changes from Asterisk 13.2.0 to Asterisk 13.3.0 ------------

Modified: branches/13/res/res_pjsip.c
URL: http://svnview.digium.com/svn/asterisk/branches/13/res/res_pjsip.c?view=diff&rev=434527&r1=434526&r2=434527
==============================================================================
--- branches/13/res/res_pjsip.c (original)
+++ branches/13/res/res_pjsip.c Thu Apr  9 17:03:17 2015
@@ -37,6 +37,7 @@
 #include "asterisk/sorcery.h"
 #include "asterisk/file.h"
 #include "asterisk/cli.h"
+#include "asterisk/res_pjsip_cli.h"
 
 /*** MODULEINFO
 	<depend>pjproject</depend>
@@ -2141,7 +2142,39 @@
 #undef ENDPOINT_IDENTIFIER_FORMAT
 }
 
+static char *cli_show_settings(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
+{
+	struct ast_sip_cli_context context;
+
+	switch (cmd) {
+	case CLI_INIT:
+		e->command = "pjsip show settings";
+		e->usage = "Usage: pjsip show settings\n"
+		            "      Show global and system configuration options\n";
+		return NULL;
+	case CLI_GENERATE:
+		return NULL;
+	}
+
+	context.output_buffer = ast_str_create(256);
+	if (!context.output_buffer) {
+		ast_cli(a->fd, "Could not allocate output buffer.\n");
+		return CLI_FAILURE;
+	}
+
+	if (sip_cli_print_global(&context) || sip_cli_print_system(&context)) {
+		ast_free(context.output_buffer);
+		ast_cli(a->fd, "Error retrieving settings.\n");
+		return CLI_FAILURE;
+	}
+
+	ast_cli(a->fd, "%s", ast_str_buffer(context.output_buffer));
+	ast_free(context.output_buffer);
+	return CLI_SUCCESS;
+}
+
 static struct ast_cli_entry cli_commands[] = {
+        AST_CLI_DEFINE(cli_show_settings, "Show global and system configuration options"),
         AST_CLI_DEFINE(cli_show_endpoint_identifiers, "List registered endpoint identifiers")
 };
 

Modified: branches/13/res/res_pjsip/config_global.c
URL: http://svnview.digium.com/svn/asterisk/branches/13/res/res_pjsip/config_global.c?view=diff&rev=434527&r1=434526&r2=434527
==============================================================================
--- branches/13/res/res_pjsip/config_global.c (original)
+++ branches/13/res/res_pjsip/config_global.c Thu Apr  9 17:03:17 2015
@@ -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
@@ -212,6 +213,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)
 {

Modified: branches/13/res/res_pjsip/config_system.c
URL: http://svnview.digium.com/svn/asterisk/branches/13/res/res_pjsip/config_system.c?view=diff&rev=434527&r1=434526&r2=434527
==============================================================================
--- branches/13/res/res_pjsip/config_system.c (original)
+++ branches/13/res/res_pjsip/config_system.c Thu Apr  9 17:03:17 2015
@@ -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 @@
 	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);

Modified: branches/13/res/res_pjsip/include/res_pjsip_private.h
URL: http://svnview.digium.com/svn/asterisk/branches/13/res/res_pjsip/include/res_pjsip_private.h?view=diff&rev=434527&r1=434526&r2=434527
==============================================================================
--- branches/13/res/res_pjsip/include/res_pjsip_private.h (original)
+++ branches/13/res/res_pjsip/include/res_pjsip_private.h Thu Apr  9 17:03:17 2015
@@ -19,6 +19,7 @@
 
 struct ao2_container;
 struct ast_threadpool_options;
+struct ast_sip_cli_context;
 
 /*!
  * \internal
@@ -272,6 +273,24 @@
 
 /*!
  * \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);




More information about the asterisk-commits mailing list