Update changes to do US style point code parsing/formatting (xxx.xxx.xxx)
authorMatthew Fredrickson <creslin@digium.com>
Wed, 25 Oct 2006 19:14:23 +0000 (19:14 +0000)
committerMatthew Fredrickson <creslin@digium.com>
Wed, 25 Oct 2006 19:14:23 +0000 (19:14 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@46251 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_zap.c
configs/zapata.conf.sample

index 012a2f5..e64c8bb 100644 (file)
@@ -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")) {
index ee9bedf..a4568e5 100644 (file)
@@ -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