work around broken HOLD/UNHOLD handling on some SIP phones
[lcr.git] / lcradmin.c
index 042a4b0..1459aeb 100644 (file)
@@ -54,14 +54,14 @@ enum {
        MODE_TRACE,
 };
 
-char *text_interfaces[] = {
+const char *text_interfaces[] = {
        "off",
        "brief",
        "active channels",
        "all channels",
 };
 
-char *text_calls[] = {
+const char *text_calls[] = {
        "off",
        "brief",
        "structured",
@@ -450,7 +450,8 @@ int debug_join(struct admin_message *msg, struct admin_message *m, int line, int
 
        return(line);
 }
-char *admin_state(int sock, char *argv[])
+
+const char *admin_state(int sock, char *argv[])
 {
        struct admin_message    msg,
                                *m;
@@ -667,18 +668,24 @@ char *admin_state(int sock, char *argv[])
                        color(white);
                        if (m[i].u.i.block >= 2)
                        {
-                               SPRINT(buffer, "%s (%d)%s", m[i].u.i.interface_name, m[i].u.i.portnum, (m[i].u.i.extension)?" (extension)":"");
+                               if (m[i].u.i.portnum < 0)
+                                       SPRINT(buffer, "%s (port ?: %s)%s", m[i].u.i.interface_name, m[i].u.i.portname, (m[i].u.i.extension)?" extension":"");
+                               else
+                                       SPRINT(buffer, "%s (port %d: %s)%s", m[i].u.i.interface_name, m[i].u.i.portnum, m[i].u.i.portname, (m[i].u.i.extension)?" extension":"");
                                addstr(buffer);
                                color(red);
                                addstr("  not loaded");
                        } else
                        {
-                               SPRINT(buffer, "%s (%d) %s %s%s use:%d", m[i].u.i.interface_name, m[i].u.i.portnum, (m[i].u.i.ntmode)?"NT-mode":"TE-mode", (m[i].u.i.ptp)?"ptp ":"ptmp", (m[i].u.i.extension)?" extension":"", m[i].u.i.use);
+                               SPRINT(buffer, "%s (port %d: %s) %s %s%s use:%d", m[i].u.i.interface_name, m[i].u.i.portnum, m[i].u.i.portname, (m[i].u.i.ntmode)?"NT-mode":"TE-mode", (m[i].u.i.ptp)?"ptp ":"ptmp", (m[i].u.i.extension)?" extension":"", m[i].u.i.use);
                                addstr(buffer);
                                if (m[i].u.i.ptp || !m[i].u.i.ntmode)
                                {
-                                       color((m[i].u.i.l2link)?green:red);
-                                       addstr((m[i].u.i.l2link)?"  L2 UP":"  L2 down");
+                                       color((m[i].u.i.l2link > 0)?green:red);
+                                       if (m[i].u.i.l2link < 0)
+                                               addstr("  L2 unknown");
+                                       else
+                                               addstr((m[i].u.i.l2link)?"  L2 UP":"  L2 down");
                                }
                                color((m[i].u.i.l1link > 0)?green:blue);
                                if (m[i].u.i.l1link < 0)
@@ -1257,7 +1264,7 @@ char *admin_state(int sock, char *argv[])
 /*
  * Send command and show error message.
  */
-char *admin_cmd(int sock, int mode, char *extension, char *number)
+const char *admin_cmd(int sock, int mode, char *extension, char *number)
 {
        static struct admin_message msg;
 
@@ -1345,7 +1352,7 @@ char *admin_cmd(int sock, int mode, char *extension, char *number)
        gettimeofday(&now_tv, &now_tz); \
        now_d = ((double)(now_tv.tv_usec))/1000000 + now_tv.tv_sec; \
        }
-char *admin_testcall(int sock, int argc, char *argv[])
+const char *admin_testcall(int sock, int argc, char *argv[])
 {
        static struct admin_message msg;
        int ar = 2;
@@ -1555,7 +1562,7 @@ next:
 /*
  * makes a trace
  */
-char *admin_trace(int sock, int argc, char *argv[])
+const char *admin_trace(int sock, int argc, char *argv[])
 {
        static struct admin_message msg;
        int i;
@@ -1584,6 +1591,7 @@ char *admin_trace(int sock, int argc, char *argv[])
        memset(&msg, 0, sizeof(msg));
        msg.message = ADMIN_TRACE_REQUEST;
        msg.u.trace_req.detail = 3;
+       msg.u.trace_req.port = -1;
 
        /* parse args */
        i = 2;
@@ -1633,7 +1641,7 @@ int main(int argc, char *argv[])
        int mode;
        int sock, conn;
        struct sockaddr_un sock_address;
-       char *ret;
+       const char *ret;
 
 
        /* show options */