Merged revisions 132571 via svnmerge from
authorKevin P. Fleming <kpfleming@digium.com>
Mon, 21 Jul 2008 22:51:16 +0000 (22:51 +0000)
committerKevin P. Fleming <kpfleming@digium.com>
Mon, 21 Jul 2008 22:51:16 +0000 (22:51 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r132571 | kpfleming | 2008-07-21 17:45:16 -0500 (Mon, 21 Jul 2008) | 2 lines

teach chan_dahdi how to find the D-channel on BRI spans, and don't attempt to use channel 24 as a D-channel on spans of unexpected sizes

........

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

channels/chan_dahdi.c

index 88943be..63bf1ee 100644 (file)
@@ -8092,11 +8092,19 @@ static int pri_resolve_span(int *span, int channel, int offset, struct dahdi_spa
                        ast_log(LOG_WARNING, "Unable to use span %d implicitly since it is already part of trunk group %d\n", *span, pris[*span].mastertrunkgroup);
                        *span = -1;
                } else {
-                       if (si->totalchans == 31) { /* if it's an E1 */
+                       if (si->totalchans == 31) {
+                               /* E1 */
                                pris[*span].dchannels[0] = 16 + offset;
-                       } else { /* T1 or BRI: D Channel is the last Channel */
-                               pris[*span].dchannels[0] = 
-                                       si->totalchans + offset;
+                       } else if (si->totalchans == 24) {
+                               /* T1 or J1 */
+                               pris[*span].dchannels[0] = 24 + offset;
+                       } else if (si->totalchans == 3) {
+                               /* BRI */
+                               pris[*span].dchannels[0] = 3 + offset;
+                       } else {
+                               ast_log(LOG_WARNING, "Unable to use span %d, since the D-channel cannot be located (unexpected span size of %d channels)\n", *span, si->totalchans);
+                               *span = -1;
+                               return 0;
                        }
                        pris[*span].dchanavail[0] |= DCHAN_PROVISIONED;
                        pris[*span].offset = offset;