Index: channels/chan_dahdi.c =================================================================== --- channels/chan_dahdi.c (revision 160386) +++ channels/chan_dahdi.c (working copy) @@ -463,6 +463,7 @@ #ifdef HAVE_PRI_INBANDDISCONNECT unsigned int inbanddisconnect:1; /*!< Should we support inband audio after receiving DISCONNECT? */ #endif + unsigned int pmp_l1_check:1; /*!< Whether we should ignore the l1 up/down events on a PMP BRI port. */ time_t lastreset; /*!< time when unused channels were last reset */ long resetinterval; /*!< Interval (in seconds) for resetting unused channels */ int sig; @@ -827,6 +828,7 @@ .privateprefix = "", .unknownprefix = "", .resetinterval = -1, + .pmp_l1_check = -1, }, #endif #ifdef HAVE_SS7 @@ -8701,6 +8703,7 @@ pris[span].overlapdial = conf->pri.overlapdial; pris[span].qsigchannelmapping = conf->pri.qsigchannelmapping; pris[span].discardremoteholdretrieval = conf->pri.discardremoteholdretrieval; + pris[span].pmp_l1_check = (SIG_BRI_PTMP == chan_sig) ? conf->pri.pmp_l1_check : 1; #ifdef HAVE_PRI_INBANDDISCONNECT pris[span].inbanddisconnect = conf->pri.inbanddisconnect; #endif @@ -10822,7 +10825,7 @@ ast_verb(2, "%s D-Channel on span %d up\n", pri_order(which), pri->span); } pri->dchanavail[which] |= DCHAN_UP; - } else { + } else if (pri->pmp_l1_check) { if (pri->dchanavail[which] & DCHAN_UP) { ast_verb(2, "%s D-Channel on span %d down\n", pri_order(which), pri->span); } @@ -14120,6 +14123,10 @@ } else { mwisend_rpas = 0; } +#ifdef HAVE_PRI + } else if (!strcasecmp(v->name, "pmp_l1_check")) { + confp->pri.pmp_l1_check = ast_true(v->value); +#endif } else if (reload != 1) { if (!strcasecmp(v->name, "signalling") || !strcasecmp(v->name, "signaling")) { int orig_radio = confp->chan.radio;