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
-- Alastair Maw Systems Analyst Tel: +44 (0) 845 666 7778 http://www.mxtelecom.com
--- 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"))
