--- chan_dahdi.c.old 2009-12-01 19:51:50.000000000 -0500 +++ chan_dahdi.c 2010-01-12 11:12:24.000000000 -0500 @@ -441,6 +441,9 @@ struct dahdi_pvt *pvts[MAX_CHANNELS]; /*!< Member channel pvt structs */ struct dahdi_pvt *crvs; /*!< Member CRV structs */ struct dahdi_pvt *crvend; /*!< Pointer to end of CRV structs */ + + char line1_spid[MAX_SPID_SIZE]; + char line2_spid[MAX_SPID_SIZE]; }; @@ -1112,6 +1115,8 @@ .privateprefix = "", .unknownprefix = "", .resetinterval = -1, + .line1_spid = "1", + .line2_spid = "2", }, #endif #ifdef HAVE_SS7 @@ -8963,6 +8968,8 @@ pris[span].inbanddisconnect = conf->pri.inbanddisconnect; #endif pris[span].facilityenable = conf->pri.facilityenable; + ast_copy_string(pris[span].line1_spid, conf->pri.line1_spid, sizeof(pris[span].line1_spid)); + ast_copy_string(pris[span].line2_spid, conf->pri.line2_spid, sizeof(pris[span].line2_spid)); ast_copy_string(pris[span].idledial, conf->pri.idledial, sizeof(pris[span].idledial)); ast_copy_string(pris[span].idleext, conf->pri.idleext, sizeof(pris[span].idleext)); ast_copy_string(pris[span].internationalprefix, conf->pri.internationalprefix, sizeof(pris[span].internationalprefix)); @@ -12063,8 +12070,17 @@ pri->dchans[i] = pri_new_bri(pri->fds[i], 1, pri->nodetype, pri->switchtype); break; case SIG_BRI_PTMP: - pri->dchans[i] = pri_new_bri(pri->fds[i], 0, pri->nodetype, pri->switchtype); + { + struct bri_services bri_services; + memset(&bri_services,0,sizeof(bri_services)); + ast_copy_string(bri_services.lines[0].spid,pri->line1_spid,sizeof(bri_services.lines[0].spid)); + bri_services.lines[0].channel_id = 1; + ast_copy_string(bri_services.lines[1].spid,pri->line2_spid,sizeof(bri_services.lines[1].spid)); + bri_services.lines[1].channel_id = 2; + + pri->dchans[i] = pri_new_bri_ex(pri->fds[i], 0, pri->nodetype, pri->switchtype, &bri_services); break; + } default: pri->dchans[i] = pri_new(pri->fds[i], pri->nodetype, pri->switchtype); } @@ -14658,7 +14674,8 @@ confp->chan.sig = SIG_BRI_PTMP; confp->pri.nodetype = PRI_CPE; } else if (!strcasecmp(v->value, "bri_net_ptmp")) { - ast_log(LOG_WARNING, "How cool would it be if someone implemented this mode! For now, sucks for you. (line %d)\n", v->lineno); + confp->chan.sig = SIG_BRI_PTMP; + confp->pri.nodetype = PRI_NETWORK; } else if (!strcasecmp(v->value, "gr303fxoks_net")) { confp->chan.sig = SIG_GR303FXOKS; confp->pri.nodetype = PRI_NETWORK; @@ -14821,6 +14838,10 @@ ast_copy_string(confp->pri.idleext, v->value, sizeof(confp->pri.idleext)); } else if (!strcasecmp(v->name, "idledial")) { ast_copy_string(confp->pri.idledial, v->value, sizeof(confp->pri.idledial)); + } else if (!strcasecmp(v->name, "line1_spid")) { + ast_copy_string(confp->pri.line1_spid, v->value, sizeof(confp->pri.line1_spid)); + } else if (!strcasecmp(v->name, "line2_spid")) { + ast_copy_string(confp->pri.line2_spid, v->value, sizeof(confp->pri.line2_spid)); } else if (!strcasecmp(v->name, "overlapdial")) { if (ast_true(v->value)) { confp->pri.overlapdial = DAHDI_OVERLAPDIAL_BOTH;