diff --git a/channels/chan_zap.c b/channels/chan_zap.c index 012a2f551..e64c8bb5d 100644 --- a/channels/chan_zap.c +++ b/channels/chan_zap.c @@ -7370,6 +7370,21 @@ static int pri_create_spanmap(int span, int trunkgroup, int logicalspan) #endif #ifdef HAVE_SS7 + +static unsigned int parse_pointcode(char *pcstring) +{ + unsigned int code1, code2, code3; + int numvals; + + numvals = sscanf(pcstring, "%d.%d.%d", &code1, &code2, &code3); + if (numvals == 1) + return code1; + if (numvals == 3) + return (code1 << 16) | (code2 << 8) | code3; + + return 0; +} + static struct zt_ss7 * ss7_resolve_linkset(int linkset) { if ((linkset < 0) || (linkset >= NUM_SPANS)) @@ -12073,11 +12088,11 @@ static int process_zap(struct ast_variable *v, int reload, int skipchannels) } else if (!strcasecmp(v->name, "linkset")) { cur_linkset = atoi(v->value); } else if (!strcasecmp(v->name, "pointcode")) { - cur_pointcode = atoi(v->value); + cur_pointcode = parse_pointcode(v->value); } else if (!strcasecmp(v->name, "adjpointcode")) { - cur_adjpointcode = atoi(v->value); + cur_adjpointcode = parse_pointcode(v->value); } else if (!strcasecmp(v->name, "defaultdpc")) { - cur_defaultdpc = atoi(v->value); + cur_defaultdpc = parse_pointcode(v->value); } else if (!strcasecmp(v->name, "cicbeginswith")) { cur_cicbeginswith = atoi(v->value); } else if (!strcasecmp(v->name, "networkindicator")) { diff --git a/configs/zapata.conf.sample b/configs/zapata.conf.sample index ee9bedfb7..a4568e571 100644 --- a/configs/zapata.conf.sample +++ b/configs/zapata.conf.sample @@ -666,15 +666,18 @@ ss7type = itu ; All settings apply to linkset 1 linkset = 1 -; Point code of the linkset +; Point code of the linkset. For ITU, this is the decimal number +; format of the point code. For ANSI, this can either be in decimal +; number format or in the xxx.xxx.xxx format pointcode = 1 ; Point code of node adjacent to this signaling link (Possibly the STP between you and -; your destination) +; your destination). Point code format follows the same rules as above. adjpointcode = 2 ; Default point code that you would like to assign to outgoing messages (in case of -; routing through STPs, or using A links) +; routing through STPs, or using A links). Point code format follows the same rules +; as above. defaultdpc = 3 ; Begin CIC (Circuit indication codes) count with this number