[Asterisk-cvs] asterisk/channels chan_sip.c,1.810,1.811

kpfleming kpfleming
Mon Aug 22 21:42:24 CDT 2005


Update of /usr/cvsroot/asterisk/channels
In directory mongoose.digium.com:/tmp/cvs-serv11160/channels

Modified Files:
	chan_sip.c 
Log Message:
add 'sip show settings' CLI command (issue #4806)


Index: chan_sip.c
===================================================================
RCS file: /usr/cvsroot/asterisk/channels/chan_sip.c,v
retrieving revision 1.810
retrieving revision 1.811
diff -u -d -r1.810 -r1.811
--- chan_sip.c	23 Aug 2005 00:50:38 -0000	1.810
+++ chan_sip.c	23 Aug 2005 01:44:28 -0000	1.811
@@ -7091,6 +7091,24 @@
 	return RESULT_SUCCESS;
 }
 
+/*--- print_codec_to_cli: Print codec list from preference to CLI/manager */
+static void print_codec_to_cli(int fd, struct ast_codec_pref *pref) 
+{
+	int x, codec;
+
+	for(x = 0; x < 32 ; x++) {
+		codec = ast_codec_pref_index(pref, x);
+		if (!codec)
+			break;
+		ast_cli(fd, "%s", ast_getformatname(codec));
+		if (x < 31 && ast_codec_pref_index(pref, x + 1))
+			ast_cli(fd, ",");
+	}
+	if (!x)
+		ast_cli(fd, "none");
+}
+
+
 static char mandescr_show_peer[] = 
 "Description: Show one SIP peer with details on current status.\n"
 "  The XML format is under development, feedback welcome! /oej\n"
@@ -7223,18 +7241,8 @@
 		ast_getformatname_multiple(codec_buf, sizeof(codec_buf) -1, peer->capability);
 		ast_cli(fd, "%s\n", codec_buf);
 		ast_cli(fd, "  Codec Order  : (");
-		pref = &peer->prefs;
-		for(x = 0; x < 32 ; x++) {
-			codec = ast_codec_pref_index(pref,x);
-			if (!codec)
-				break;
-			ast_cli(fd, "%s", ast_getformatname(codec));
-			if (x < 31 && ast_codec_pref_index(pref, x+1))
-				ast_cli(fd, "|");
-		}
+		print_codec_to_cli(fd, &peer->prefs);
 
-		if (!x)
-			ast_cli(fd, "none");
 		ast_cli(fd, ")\n");
 
 		ast_cli(fd, "  Status       : ");
@@ -7418,6 +7426,89 @@
 #undef FORMAT2
 }
 
+/*--- sip_show_settings: List global settings for the SIP channel ---*/
+static int sip_show_settings(int fd, int argc, char *argv[])
+{
+	char tmp[BUFSIZ];
+	int realtimepeers = 0;
+	int realtimeusers = 0;
+
+	realtimepeers = ast_check_realtime("sippeers");
+	realtimeusers = ast_check_realtime("sipusers");
+
+	if (argc != 3)
+		return RESULT_SHOWUSAGE;
+	ast_cli(fd, "\n\nGlobal Settings:\n");
+	ast_cli(fd, "----------------\n");
+	ast_cli(fd, "  SIP Port:               %d\n", ntohs(bindaddr.sin_port));
+	ast_cli(fd, "  Bindaddress:            %s\n", ast_inet_ntoa(tmp, sizeof(tmp), bindaddr.sin_addr));
+	ast_cli(fd, "  Videosupport:           %s\n", videosupport ? "Yes" : "No");
+	ast_cli(fd, "  AutoCreatePeer:         %s\n", autocreatepeer ? "Yes" : "No");
+	ast_cli(fd, "  Allow unknown access:   %s\n", global_allowguest ? "Yes" : "No");
+	ast_cli(fd, "  Promsic. redir:         %s\n", ast_test_flag(&global_flags, SIP_PROMISCREDIR) ? "Yes" : "No");
+	ast_cli(fd, "  URI user is phone no:   %s\n", ast_test_flag(&global_flags, SIP_USEREQPHONE) ? "Yes" : "No");
+	ast_cli(fd, "  Our auth realm          %s\n", global_realm);
+	ast_cli(fd, "  Realm. auth:            %s\n", authl ? "Yes": "No");
+	ast_cli(fd, "  User Agent:             %s\n", default_useragent);
+	ast_cli(fd, "  MWI checking interval:  %d secs\n", global_mwitime);
+	ast_cli(fd, "  Reg. context:           %s\n", ast_strlen_zero(regcontext) ? "(not set)" : regcontext);
+	ast_cli(fd, "  Caller ID:              %s\n", default_callerid);
+	ast_cli(fd, "  From: Domain:           %s\n", default_fromdomain);
+	ast_cli(fd, "  Record SIP history:     %s\n", recordhistory ? "On" : "Off");
+	ast_cli(fd, "  Call Events:            %s\n", callevents ? "On" : "Off");
+	ast_cli(fd, "  IP ToS:                 0x%x\n", tos);
+#ifdef OSP_SUPPORT
+	ast_cli(fd, "  OSP Support:            Yes\n");
+#else
+	ast_cli(fd, "  OSP Support:            No\n");
+#endif
+	if (!realtimepeers && !realtimeusers)
+		ast_cli(fd, "  SIP realtime:           Disabled\n" );
+	else
+		ast_cli(fd, "  SIP realtime:           Enabled\n" );
+
+	ast_cli(fd, "\nGlobal Signalling Settings:\n");
+	ast_cli(fd, "---------------------------\n");
+	ast_cli(fd, "  Codecs:                 ");
+	print_codec_to_cli(fd, &prefs);
+	ast_cli(fd, "\n");
+	ast_cli(fd, "  Relax DTMF:             %s\n", relaxdtmf ? "Yes" : "No");
+	ast_cli(fd, "  Compact SIP headers:    %s\n", compactheaders ? "Yes" : "No");
+	ast_cli(fd, "  RTP Timeout:            %d %s\n", global_rtptimeout, global_rtptimeout ? "" : "(Disabled)" );
+	ast_cli(fd, "  RTP Hold Timeout:       %d %s\n", global_rtpholdtimeout, global_rtpholdtimeout ? "" : "(Disabled)");
+	ast_cli(fd, "  MWI NOTIFY mime type:   %s\n", default_notifymime);
+	ast_cli(fd, "  DNS SRV lookup:         %s\n", srvlookup ? "Yes" : "No");
+	ast_cli(fd, "  Pedantic SIP support:   %s\n", pedanticsipchecking ? "Yes" : "No");
+	ast_cli(fd, "  Reg. max duration:      %d secs\n", max_expiry);
+	ast_cli(fd, "  Reg. default duration:  %d secs\n", default_expiry);
+	ast_cli(fd, "  Outbound reg. timeout:  %d secs\n", global_reg_timeout);
+	ast_cli(fd, "  Outbound reg. attempts: %d\n", global_regattempts_max);
+	ast_cli(fd, "\nDefault Settings:\n");
+	ast_cli(fd, "-----------------\n");
+	ast_cli(fd, "  Context:                %s\n", default_context);
+	ast_cli(fd, "  Nat:                    %s\n", nat2str(ast_test_flag(&global_flags, SIP_NAT)));
+	ast_cli(fd, "  DTMF:                   %s\n", dtmfmode2str(ast_test_flag(&global_flags, SIP_DTMF)));
+	ast_cli(fd, "  Qualify:                %d\n", default_qualify);
+	ast_cli(fd, "  Use ClientCode:         %s\n", ast_test_flag(&global_flags, SIP_USECLIENTCODE) ? "Yes" : "No");
+	ast_cli(fd, "  Progress inband:        %s\n", (ast_test_flag(&global_flags, SIP_PROG_INBAND) == SIP_PROG_INBAND_NEVER) ? "Never" : (ast_test_flag(&global_flags, SIP_PROG_INBAND) == SIP_PROG_INBAND_NO) ? "No" : "Yes" );
+	ast_cli(fd, "  Language:               %s\n", ast_strlen_zero(default_language) ? "(Defaults to English)" : default_language);
+	ast_cli(fd, "  Musicclass:             %s\n", global_musicclass);
+
+	
+	if (realtimepeers || realtimeusers) {
+		ast_cli(fd, "\nRealtime SIP Settings:\n");
+		ast_cli(fd, "----------------------\n");
+		ast_cli(fd, "  Realtime Peers:         %s\n", realtimepeers ? "Yes" : "No");
+		ast_cli(fd, "  Realtime Users:         %s\n", realtimeusers ? "Yes" : "No");
+		ast_cli(fd, "  Cache Friends:          %s\n", ast_test_flag(&global_flags_page2, SIP_PAGE2_RTCACHEFRIENDS) ? "Yes" : "No");
+		ast_cli(fd, "  No update:              %s\n", ast_test_flag(&global_flags_page2, SIP_PAGE2_RTNOUPDATE) ? "Yes" : "No");
+		ast_cli(fd, "  Ignore Reg. Expire:     %s\n", ast_test_flag(&global_flags_page2, SIP_PAGE2_RTIGNOREREGEXPIRE) ? "Yes" : "No");
+		ast_cli(fd, "  Auto Clear:             %d\n", global_rtautoclear);
+	}
+	ast_cli(fd, "\n----\n");
+	return RESULT_SUCCESS;
+}
+
 /* Forward declaration */
 static int __sip_show_channels(int fd, int argc, char *argv[], int subscriptions);
 
@@ -8271,6 +8362,11 @@
 "Usage: sip show objects\n" 
 "       Shows status of known SIP objects\n";
 
+static char show_settings_usage[] = 
+"Usage: sip show settings\n"
+"       Provides detailed list of the configuration of the SIP channel.\n";
+
+
 
 /*--- func_header_read: Read SIP header (dialplan function) */
 static char *func_header_read(struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len) 
@@ -11747,6 +11843,7 @@
 	{ { "sip", "show", "channels", NULL }, sip_show_channels, "Show active SIP channels", show_channels_usage},
 	{ { "sip", "show", "channel", NULL }, sip_show_channel, "Show detailed SIP channel info", show_channel_usage, complete_sipch  },
 	{ { "sip", "show", "history", NULL }, sip_show_history, "Show SIP dialog history", show_history_usage, complete_sipch  },
+	{ { "sip", "show", "settings", NULL }, sip_show_settings, "Show SIP global settings", show_settings_usage  },
 	{ { "sip", "debug", NULL }, sip_do_debug, "Enable SIP debugging", debug_usage },
 	{ { "sip", "debug", "ip", NULL }, sip_do_debug, "Enable SIP debugging on IP", debug_usage },
 	{ { "sip", "debug", "peer", NULL }, sip_do_debug, "Enable SIP debugging on Peername", debug_usage, complete_sip_debug_peer },




More information about the svn-commits mailing list