--- chan_zap.c.old Mon Nov 1 23:09:13 2004 +++ chan_zap.c Mon Nov 1 23:11:53 2004 @@ -8615,6 +8615,109 @@ return RESULT_FAILURE; } +static char loopup_span_usage[] = + "Usage: zap span loopup \n" + "Put a Zaptel E1/T1 span into loopback\n"; + +static char loopdown_span_usage[] = + "Usage: zap span loopup \n" + "Take a Zaptel E1/T1 span out of loopback\n"; + +static int zap_loopup_span(int fd, int argc, char **argv) { + + int spanno; + int ctl; + int res; + struct zt_maintinfo m; + + if (argc != 5) + return RESULT_SHOWUSAGE; + + spanno = atoi(argv[4]); + + if (spanno < 1 || spanno > NUM_SPANS) { + ast_cli(fd, "Invalid span number %d\n", spanno); + return RESULT_FAILURE; + } + + ctl = open("/dev/zap/ctl",O_RDWR); + if (ctl < 0) { + ast_cli(fd,"Failed to open /dev/zap/ctl: %s\n", strerror(errno)); + return RESULT_FAILURE; + } + + m.spanno = spanno; + + m.command = ZT_MAINT_LOOPUP; + + ast_cli(fd,"Looping up span %d\n",spanno); + + res = ioctl(ctl, ZT_MAINT, &m); + + close(ctl); + + if (res == -1) { + ast_cli(fd,"Failed to place span %d into loopback\n", spanno); + return RESULT_FAILURE; + } else { + ast_cli(fd,"Span %d now in loopback\n", spanno); + return RESULT_SUCCESS; + } +} + +static int zap_loopdown_span(int fd, int argc, char **argv) { + + int spanno; + int ctl; + int res; + struct zt_maintinfo m; + + if (argc != 5) + return RESULT_SHOWUSAGE; + + spanno = atoi(argv[4]); + + if (spanno < 1 || spanno > NUM_SPANS) { + ast_cli(fd, "Invalid span number %d\n", spanno); + return RESULT_FAILURE; + } + + ctl = open("/dev/zap/ctl",O_RDWR); + if (ctl < 0) { + ast_cli(fd,"Failed to open /dev/zap/ctl: %s\n", strerror(errno)); + return RESULT_FAILURE; + } + + m.spanno = spanno; + + m.command = ZT_MAINT_LOOPDOWN; + + ast_cli(fd,"Looping down span %d\n",spanno); + + res = ioctl(ctl, ZT_MAINT, &m); + + close(ctl); + + if (res == -1) { + ast_cli(fd,"Failed to take span %d out of loopback\n", spanno); + return RESULT_FAILURE; + } else { + ast_cli(fd,"Span %d now out of loopback\n", spanno); + return RESULT_SUCCESS; + } + + return RESULT_SUCCESS; +} + +static struct ast_cli_entry cli_loopup_span = { + {"zap", "loop", "up", "span", NULL}, zap_loopup_span, "Loop up a span", loo +pup_span_usage, NULL }; + +static struct ast_cli_entry cli_loopdown_span = { + {"zap", "loop", "down", "span", NULL}, zap_loopdown_span, "Loop down a span +", loopdown_span_usage, NULL }; + + static char zap_show_cadences_help[] = "Usage: zap show cadences\n" " Shows all cadences currently defined\n"; @@ -9722,6 +9825,9 @@ ast_cli_register(&cli_show_channel); ast_cli_register(&cli_destroy_channel); ast_cli_register(&zap_show_cadences_cli); + ast_cli_register(&cli_loopup_span); + ast_cli_register(&cli_loopdown_span); + ast_register_application(app_callingpres, change_callingpres, synopsis_callingpres, descrip_callingpres); memset(round_robin, 0, sizeof(round_robin));