diff --git a/channels/chan_zap.c b/channels/chan_zap.c index ab46673f5573182ff0ce4117df450fcfa17de265..48e6cf2f0ce5bebd1ccb515e945df80ec908de26 100755 --- a/channels/chan_zap.c +++ b/channels/chan_zap.c @@ -319,6 +319,7 @@ struct zt_pri { int switchtype; /* Type of switch to emulate */ int nsf; /* Network-Specific Facilities */ int dialplan; /* Dialing plan */ + int localdialplan; /* Local dialing plan */ int dchannels[NUM_DCHANS]; /* What channel are the dchannels on */ int trunkgroup; /* What our trunkgroup is */ int mastertrunkgroup; /* What trunk group is our master */ @@ -359,6 +360,7 @@ static inline void pri_rel(struct zt_pri *pri) static int switchtype = PRI_SWITCH_NI2; static int nsf = PRI_NSF_NONE; static int dialplan = PRI_NATIONAL_ISDN + 1; +static int localdialplan = PRI_NATIONAL_ISDN + 1; #else /* Shut up the compiler */ @@ -1756,7 +1758,7 @@ static int zt_call(struct ast_channel *ast, char *rdest, int timeout) (p->digital ? -1 : ((p->law == ZT_LAW_ALAW) ? PRI_LAYER_1_ALAW : PRI_LAYER_1_ULAW))); pri_sr_set_called(sr, c + p->stripmsd, p->pri->dialplan - 1, s ? 1 : 0); - pri_sr_set_caller(sr, l, n, p->pri->dialplan - 1, + pri_sr_set_caller(sr, l, n, p->pri->localdialplan - 1, l ? (ast->restrictcid ? PRES_PROHIB_USER_NUMBER_PASSED_SCREEN : (p->use_callingpres ? ast->callingpres : PRES_ALLOWED_USER_NUMBER_PASSED_SCREEN)) : PRES_NUMBER_NOT_AVAILABLE); @@ -5927,6 +5929,7 @@ static struct zt_pvt *mkintf(int channel, int signalling, int radio, struct zt_p pris[span].switchtype = myswitchtype; pris[span].nsf = nsf; pris[span].dialplan = dialplan; + pris[span].localdialplan = localdialplan; pris[span].pvts[pris[span].numchans++] = tmp; pris[span].minunused = minunused; pris[span].minidle = minidle; @@ -8880,6 +8883,20 @@ static int setup_zap(void) } else { ast_log(LOG_WARNING, "Unknown PRI dialplan '%s' at line %d.\n", v->value, v->lineno); } + } else if (!strcasecmp(v->name, "prilocaldialplan")) { + if (!strcasecmp(v->value, "national")) { + localdialplan = PRI_NATIONAL_ISDN + 1; + } else if (!strcasecmp(v->value, "unknown")) { + localdialplan = PRI_UNKNOWN + 1; + } else if (!strcasecmp(v->value, "private")) { + localdialplan = PRI_PRIVATE + 1; + } else if (!strcasecmp(v->value, "international")) { + localdialplan = PRI_INTERNATIONAL_ISDN + 1; + } else if (!strcasecmp(v->value, "local")) { + localdialplan = PRI_LOCAL_ISDN + 1; + } else { + ast_log(LOG_WARNING, "Unknown PRI dialplan '%s' at line %d.\n", v->value, v->lineno); + } } else if (!strcasecmp(v->name, "switchtype")) { if (!strcasecmp(v->value, "national")) switchtype = PRI_SWITCH_NI2; diff --git a/configs/zapata.conf.sample b/configs/zapata.conf.sample index 0174b166fb5466732c5b12818370493b6cf4c7eb..564a71953e0da03cade24bbf6a270ef9a9732666 100755 --- a/configs/zapata.conf.sample +++ b/configs/zapata.conf.sample @@ -66,6 +66,16 @@ switchtype=national ; ;pridialplan=national ; +; PRI Local Dialplan: Only RARELY used for PRI (sets the calling number's numbering plan) +; +; unknown: Unknown +; private: Private ISDN +; local: Local ISDN +; national: National ISDN +; international: International ISDN +; +;prilocaldialplan=national +; ; Overlap dialing mode (sending overlap digits) ; ;overlapdial=yes