[Asterisk-Users] PRI numbering plan
Michael Sandee
ms at zeelandnet.nl
Mon Jul 12 06:55:33 MST 2004
Oh I'm sorry... this setting was probably bri-stuff specific. I didn't
know... I've been using it for a while now and got used to it.
On most ISDN2/BRI lines you need the setting below to actually have a
correctly functioning line (with proper outgoing callerid). It is
probably why it was added for the quad/octobri's.
Considering the situation below it probably should be added in some way
or another.
Alastair Maw wrote:
> On 12/07/04 11:11, Michael Sandee wrote:
>
>> pridialplan=unknown
>> prilocaldialplan=national
>
>
> Not only is this that undocumented, but the string "prilocaldialplan"
> doesn't even show up in the latest CVS HEAD source code, so that's not
> going to work...
>
> On 12/07/04 13:36, Thomas wrote:
>
>> I have an E100P connected to our partner's PBX. They want the following:
>> Called number must have numbering plan/type set as:
>> unknown/unknown and calling number in: ISDN/national.
>
>
> Our telco requires exactly this same thing - different TON for the
> calling and called numbers. You want to apply a patch I wrote that
> allows you to configure them separately.
>
> It swaps the single setting "pridialplan" for two settings that take
> the same values as pridialplan: "calledpridialplan" and
> "callerpridialplan".
>
> I attach the patch (although it is against a pretty old version of
> chan_zap.c). I will also clean this up soon and add it to the bug
> tracker.
>
> Best regards,
>
> Al
>
>------------------------------------------------------------------------
>
>--- chan_zap.c.org 2004-02-20 16:53:31.000000000 +0000
>+++ chan_zap.c 2004-03-05 12:03:53.000000000 +0000
>@@ -282,7 +282,8 @@
> int minidle; /* Min # of "idling" calls to keep active */
> int nodetype; /* Node type */
> int switchtype; /* Type of switch to emulate */
>- int dialplan; /* Dialing plan */
>+ int callerdialplan; /* Caller dialing plan */
>+ int calleddialplan; /* Called dialing plan */
> int dchannel; /* What channel the dchannel is on */
> int channels; /* Num of chans in span (31 or 24) */
> int overlapdial; /* In overlap dialing mode */
>@@ -317,7 +318,8 @@
> }
>
> static int switchtype = PRI_SWITCH_NI2;
>-static int dialplan = PRI_NATIONAL_ISDN + 1;
>+static int callerdialplan = PRI_NATIONAL_ISDN + 1;
>+static int calleddialplan = PRI_NATIONAL_ISDN + 1;
>
> #endif
>
>@@ -1595,9 +1597,9 @@
> }
> p->digital = ast_test_flag(ast,AST_FLAG_DIGITAL);
> if (pri_call(p->pri->pri, p->call, p->digital ? PRI_TRANS_CAP_DIGITAL : PRI_TRANS_CAP_SPEECH,
>- p->prioffset, p->pri->nodetype == PRI_NETWORK ? 0 : 1, 1, l, p->pri->dialplan - 1, n,
>+ p->prioffset, p->pri->nodetype == PRI_NETWORK ? 0 : 1, 1, l, p->pri->callerdialplan - 1, n,
> l ? (ast->restrictcid ? PRES_PROHIB_USER_NUMBER_PASSED_SCREEN : (p->use_callingpres ? ast->callingpres : PRES_ALLOWED_USER_NUMBER_PASSED_SCREEN)) : PRES_NUMBER_NOT_AVAILABLE,
>- c + p->stripmsd, p->pri->dialplan - 1,
>+ c + p->stripmsd, p->pri->calleddialplan - 1,
> ((p->law == ZT_LAW_ALAW) ? PRI_LAYER_1_ALAW : PRI_LAYER_1_ULAW))) {
> ast_log(LOG_WARNING, "Unable to setup call to %s\n", c + p->stripmsd);
> return -1;
>@@ -5364,8 +5366,13 @@
> free(tmp);
> return NULL;
> }
>- if ((pris[span].dialplan) && (pris[span].dialplan != dialplan)) {
>- ast_log(LOG_ERROR, "Span %d is already a %s dialing plan\n", span + 1, pri_plan2str(pris[span].dialplan));
>+ if ((pris[span].calleddialplan) && (pris[span].calleddialplan != calleddialplan)) {
>+ ast_log(LOG_ERROR, "Span %d is already a %s called dialing plan\n", span + 1, pri_plan2str(pris[span].calleddialplan));
>+ free(tmp);
>+ return NULL;
>+ }
>+ if ((pris[span].callerdialplan) && (pris[span].callerdialplan != callerdialplan)) {
>+ ast_log(LOG_ERROR, "Span %d is already a %s caller dialing plan\n", span + 1, pri_plan2str(pris[span].callerdialplan));
> free(tmp);
> return NULL;
> }
>@@ -5391,7 +5398,8 @@
> }
> pris[span].nodetype = pritype;
> pris[span].switchtype = switchtype;
>- pris[span].dialplan = dialplan;
>+ pris[span].calleddialplan = calleddialplan;
>+ pris[span].callerdialplan = callerdialplan;
> pris[span].chanmask[offset] |= MASK_AVAIL;
> pris[span].pvt[offset] = tmp;
> pris[span].channels = numchans;
>@@ -7556,19 +7564,33 @@
> }
> #endif
> #ifdef ZAPATA_PRI
>- } else if (!strcasecmp(v->name, "pridialplan")) {
>+ } else if (!strcasecmp(v->name, "calledpridialplan")) {
>+ if (!strcasecmp(v->value, "national")) {
>+ calleddialplan = PRI_NATIONAL_ISDN + 1;
>+ } else if (!strcasecmp(v->value, "unknown")) {
>+ calleddialplan = PRI_UNKNOWN + 1;
>+ } else if (!strcasecmp(v->value, "private")) {
>+ calleddialplan = PRI_PRIVATE + 1;
>+ } else if (!strcasecmp(v->value, "international")) {
>+ calleddialplan = PRI_INTERNATIONAL_ISDN + 1;
>+ } else if (!strcasecmp(v->value, "local")) {
>+ calleddialplan = PRI_LOCAL_ISDN + 1;
>+ } else {
>+ ast_log(LOG_WARNING, "Unknown called PRI dialplan '%s' at line %d.\n", v->value, v->lineno);
>+ }
>+ } else if (!strcasecmp(v->name, "callerpridialplan")) {
> if (!strcasecmp(v->value, "national")) {
>- dialplan = PRI_NATIONAL_ISDN + 1;
>+ callerdialplan = PRI_NATIONAL_ISDN + 1;
> } else if (!strcasecmp(v->value, "unknown")) {
>- dialplan = PRI_UNKNOWN + 1;
>+ callerdialplan = PRI_UNKNOWN + 1;
> } else if (!strcasecmp(v->value, "private")) {
>- dialplan = PRI_PRIVATE + 1;
>+ callerdialplan = PRI_PRIVATE + 1;
> } else if (!strcasecmp(v->value, "international")) {
>- dialplan = PRI_INTERNATIONAL_ISDN + 1;
>+ callerdialplan = PRI_INTERNATIONAL_ISDN + 1;
> } else if (!strcasecmp(v->value, "local")) {
>- dialplan = PRI_LOCAL_ISDN + 1;
>+ callerdialplan = PRI_LOCAL_ISDN + 1;
> } else {
>- ast_log(LOG_WARNING, "Unknown PRI dialplan '%s' at line %d.\n", v->value, v->lineno);
>+ ast_log(LOG_WARNING, "Unknown caller PRI dialplan '%s' at line %d.\n", v->value, v->lineno);
> }
> } else if (!strcasecmp(v->name, "switchtype")) {
> if (!strcasecmp(v->value, "national"))
>
>
More information about the asterisk-users
mailing list