Added 'skinny show lines verbose'
authorMichiel van Baak <michiel@vanbaak.info>
Wed, 3 Sep 2008 18:06:35 +0000 (18:06 +0000)
committerMichiel van Baak <michiel@vanbaak.info>
Wed, 3 Sep 2008 18:06:35 +0000 (18:06 +0000)
This will print the subs and their status for every line (if any).

wedhorn did most of the work with his patch which introduced
'skinny show debug' but a discussion on IRC stated that it should be
added to 'skinny show lines'

Input on the output format by Qwell on IRC.

(closes issue #13344)
Reported by: wedhorn

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@140938 65c4cc65-6c06-0410-ace0-fbb531ad65f3

CHANGES
channels/chan_skinny.c

diff --git a/CHANGES b/CHANGES
index 6cdf26b..ea665c9 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -325,6 +325,7 @@ CLI Changes
     sorted into the different possible callbacks, with the number of entries
     currently scheduled for each. Gives you a feel for how busy the sip channel
     driver is.
+  * Added 'skinny show lines verbose' CLI command. This will show the subs for every channel.
 
 SIP changes
 -----------
index 18d5790..9ab3852 100644 (file)
@@ -2847,20 +2847,32 @@ static char *handle_skinny_show_lines(struct ast_cli_entry *e, int cmd, struct a
 {
        struct skinny_device *d;
        struct skinny_line *l;
+       struct skinny_subchannel *sub;
+       int verbose = 0;
 
        switch (cmd) {
        case CLI_INIT:
-               e->command = "skinny show lines";
+               e->command = "skinny show lines [verbose]";
                e->usage =
                        "Usage: skinny show lines\n"
-                       "       Lists all lines known to the Skinny subsystem.\n";
+                       "       Lists all lines known to the Skinny subsystem.\n"
+                       "       If 'verbose' is specified, the output includes\n"
+                       "       information about subs for each line.\n";
                return NULL;
        case CLI_GENERATE:
                return NULL;
        }
 
-       if (a->argc != 3)
+
+       if (a->argc == e->args) {
+               if (!strcasecmp(a->argv[e->args-1], "verbose")) {
+                       verbose = 1;
+               } else {
+                       return CLI_SHOWUSAGE;
+               }
+       } else if (a->argc != e->args - 1) {
                return CLI_SHOWUSAGE;
+       }
        
        
        ast_cli(a->fd, "Device Name          Instance Name                 Label               \n");
@@ -2873,6 +2885,15 @@ static char *handle_skinny_show_lines(struct ast_cli_entry *e, int cmd, struct a
                                l->instance,
                                l->name,
                                l->label);
+                       if (verbose) {
+                               AST_LIST_TRAVERSE(&l->sub, sub, list) {
+                                       ast_cli(a->fd, "  %s> %s to %s\n",
+                                               (sub == l->activesub?"Active  ":"Inactive"),
+                                               sub->owner->name,
+                                               (ast_bridged_channel(sub->owner)?ast_bridged_channel(sub->owner)->name:"")
+                                       );
+                               }
+                       }
                }
        }
        AST_LIST_UNLOCK(&devices);