--- channels/chan_dahdi.c 2010-11-24 23:49:48.000000000 +0100 +++ channels/chan_dahdi.c 2011-02-11 12:10:24.000000000 +0100 @@ -570,6 +570,7 @@ int mastertrunkgroup; /*!< What trunk group is our master */ int prilogicalspan; /*!< Logical span number within trunk group */ struct sig_pri_span pri; + unsigned int bri_l1_check:1; }; static struct dahdi_pri pris[NUM_SPANS]; @@ -1353,6 +1354,7 @@ .localprefix = "", .privateprefix = "", .unknownprefix = "", + .bri_l1_check = -1, .resetinterval = -1, }, #endif @@ -12191,6 +12193,8 @@ pris[span].pri.minunused = conf->pri.pri.minunused; pris[span].pri.minidle = conf->pri.pri.minidle; pris[span].pri.overlapdial = conf->pri.pri.overlapdial; + pris[span].bri_l1_check = ((SIG_BRI == chan_sig) | (SIG_BRI_PTMP == chan_sig)) + ? conf->pri.bri_l1_check : 1; pris[span].pri.qsigchannelmapping = conf->pri.pri.qsigchannelmapping; pris[span].pri.discardremoteholdretrieval = conf->pri.pri.discardremoteholdretrieval; #if defined(HAVE_PRI_SERVICE_MESSAGES) @@ -16646,6 +16650,10 @@ confp->chan.hanguponpolarityswitch = ast_true(v->value); } else if (!strcasecmp(v->name, "sendcalleridafter")) { confp->chan.sendcalleridafter = atoi(v->value); +#ifdef HAVE_PRI + } else if (!strcasecmp(v->name, "bri_l1_check")) { + confp->pri.bri_l1_check = ast_true(v->value); +#endif } else if (!strcasecmp(v->name, "mwimonitornotify")) { ast_copy_string(mwimonitornotify, v->value, sizeof(mwimonitornotify)); } else if (ast_cc_is_config_param(v->name)) { --- channels/sig_pri.c 2010-11-12 03:45:22.000000000 +0100 +++ channels/sig_pri.c 2011-02-11 12:20:25.000000000 +0100 @@ -4378,7 +4378,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->bri_l1_check) { if (pri->dchanavail[which] & DCHAN_UP) { ast_verb(2, "%s D-Channel on span %d down\n", pri_order(which), pri->span); } --- channels/sig_pri.h 2010-11-24 23:49:48.000000000 +0100 +++ channels/sig_pri.h 2011-02-11 12:20:30.000000000 +0100 @@ -416,6 +416,7 @@ pthread_t master; /*!< Thread of master */ ast_mutex_t lock; /*!< libpri access Mutex */ time_t lastreset; /*!< time when unused channels were last reset */ + unsigned int bri_l1_check:1; struct sig_pri_callback *calls; /*! * \brief Congestion device state of the span.