added option to change the connected party number dialplan (ton)
authorChristian Richter <christian.richter@beronet.com>
Thu, 9 Mar 2006 18:01:27 +0000 (18:01 +0000)
committerChristian Richter <christian.richter@beronet.com>
Thu, 9 Mar 2006 18:01:27 +0000 (18:01 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@12481 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_misdn.c
channels/misdn/chan_misdn_config.h
channels/misdn/isdn_lib.c
channels/misdn/isdn_lib.h
channels/misdn/isdn_msg_parser.c
channels/misdn_config.c
configs/misdn.conf.sample

index d4a314b..4290a30 100644 (file)
@@ -648,13 +648,14 @@ static void print_bc_info (int fd, struct chan_list* help, struct misdn_bchannel
 {
        struct ast_channel *ast=help->ast;
        ast_cli(fd,
 {
        struct ast_channel *ast=help->ast;
        ast_cli(fd,
-               "* Pid:%d Prt:%d Ch:%d Mode:%s Org:%s dad:%s oad:%s ctx:%s state:%s\n",
+               "* Pid:%d Prt:%d Ch:%d Mode:%s Org:%s dad:%s oad:%s rad:%s ctx:%s state:%s\n",
 
                bc->pid, bc->port, bc->channel,
                bc->nt?"NT":"TE",
                help->orginator == ORG_AST?"*":"I",
                ast?ast->exten:NULL,
                ast?AST_CID_P(ast):NULL,
 
                bc->pid, bc->port, bc->channel,
                bc->nt?"NT":"TE",
                help->orginator == ORG_AST?"*":"I",
                ast?ast->exten:NULL,
                ast?AST_CID_P(ast):NULL,
+               bc->rad,
                ast?ast->context:NULL,
                misdn_get_ch_state(help)
                );
                ast?ast->context:NULL,
                misdn_get_ch_state(help)
                );
@@ -1340,26 +1341,47 @@ static int read_config(struct chan_list *ch, int orig) {
                        misdn_cfg_get( port, MISDN_CFG_LOCALDIALPLAN, &bc->onumplan, sizeof(int));
                        switch (bc->onumplan) {
                        case NUMPLAN_INTERNATIONAL:
                        misdn_cfg_get( port, MISDN_CFG_LOCALDIALPLAN, &bc->onumplan, sizeof(int));
                        switch (bc->onumplan) {
                        case NUMPLAN_INTERNATIONAL:
-                               chan_misdn_log(2, port, " --> TON: International\n");
+                               chan_misdn_log(2, port, " --> LTON: International\n");
                                break;
                        case NUMPLAN_NATIONAL:
                                break;
                        case NUMPLAN_NATIONAL:
-                               chan_misdn_log(2, port, " --> TON: National\n");
+                               chan_misdn_log(2, port, " --> LTON: National\n");
                                break;
                        case NUMPLAN_SUBSCRIBER:
                                break;
                        case NUMPLAN_SUBSCRIBER:
-                               chan_misdn_log(2, port, " --> TON: Subscriber\n");
+                               chan_misdn_log(2, port, " --> LTON: Subscriber\n");
                                break;
                        case NUMPLAN_UNKNOWN:
                                break;
                        case NUMPLAN_UNKNOWN:
-                               chan_misdn_log(2, port, " --> TON: Unknown\n");
+                               chan_misdn_log(2, port, " --> LTON: Unknown\n");
                                break;
                                /* Maybe we should cut off the prefix if present ? */
                        default:
                                        chan_misdn_log(0, port, " --> !!!! Wrong dialplan setting, please see the misdn.conf sample file\n ");
                                        break;
                        }
                                break;
                                /* Maybe we should cut off the prefix if present ? */
                        default:
                                        chan_misdn_log(0, port, " --> !!!! Wrong dialplan setting, please see the misdn.conf sample file\n ");
                                        break;
                        }
+
+                       misdn_cfg_get( port, MISDN_CFG_CPNDIALPLAN, &bc->cpnnumplan, sizeof(int));
+
+                       switch (bc->cpnnumplan) {
+                       case NUMPLAN_INTERNATIONAL:
+                               chan_misdn_log(2, port, " --> CTON: International\n");
+                               break;
+                       case NUMPLAN_NATIONAL:
+                               chan_misdn_log(2, port, " --> CTON: National\n");
+                               break;
+                       case NUMPLAN_SUBSCRIBER:
+                               chan_misdn_log(2, port, " --> CTON: Subscriber\n");
+                               break;
+                       case NUMPLAN_UNKNOWN:
+                               chan_misdn_log(2, port, " --> CTON: Unknown\n");
+                               break;
+                               /* Maybe we should cut off the prefix if present ? */
+                       default:
+                                       chan_misdn_log(0, port, " --> !!!! Wrong dialplan setting, please see the misdn.conf sample file\n ");
+                                       break;
+                       }
+
                }
 
                
                }
 
                
-                               
                
        } else { /** ORIGINATOR MISDN **/
                
                
        } else { /** ORIGINATOR MISDN **/
                
index 1c6bb10..d30e148 100644 (file)
@@ -34,6 +34,7 @@ enum misdn_cfg_elements {
        MISDN_CFG_METHOD,              /* char[] */
        MISDN_CFG_DIALPLAN,            /* int */
        MISDN_CFG_LOCALDIALPLAN,       /* int */
        MISDN_CFG_METHOD,              /* char[] */
        MISDN_CFG_DIALPLAN,            /* int */
        MISDN_CFG_LOCALDIALPLAN,       /* int */
+       MISDN_CFG_CPNDIALPLAN,       /* int */
        MISDN_CFG_NATPREFIX,           /* char[] */
        MISDN_CFG_INTERNATPREFIX,      /* char[] */
        MISDN_CFG_PRES,                /* int */
        MISDN_CFG_NATPREFIX,           /* char[] */
        MISDN_CFG_INTERNATPREFIX,      /* char[] */
        MISDN_CFG_PRES,                /* int */
index 37f0bfb..a699d7f 100644 (file)
@@ -463,6 +463,7 @@ void empty_bc(struct misdn_bchannel *bc)
        bc->dnumplan=NUMPLAN_UNKNOWN;
        bc->onumplan=NUMPLAN_UNKNOWN;
        bc->rnumplan=NUMPLAN_UNKNOWN;
        bc->dnumplan=NUMPLAN_UNKNOWN;
        bc->onumplan=NUMPLAN_UNKNOWN;
        bc->rnumplan=NUMPLAN_UNKNOWN;
+       bc->cpnnumplan=NUMPLAN_UNKNOWN;
        
 
        bc->active = 0;
        
 
        bc->active = 0;
index 4b5d17d..2c99d94 100644 (file)
@@ -210,6 +210,7 @@ struct misdn_bchannel {
        enum mISDN_NUMBER_PLAN dnumplan;
        enum mISDN_NUMBER_PLAN rnumplan;
        enum mISDN_NUMBER_PLAN onumplan;
        enum mISDN_NUMBER_PLAN dnumplan;
        enum mISDN_NUMBER_PLAN rnumplan;
        enum mISDN_NUMBER_PLAN onumplan;
+       enum mISDN_NUMBER_PLAN cpnnumplan;
 
        int progress_coding;
        int progress_location;
 
        int progress_coding;
        int progress_location;
index 5eb7e1f..7ae9a53 100644 (file)
@@ -359,7 +359,7 @@ msg_t *build_connect (struct isdn_msg msgs[], struct misdn_bchannel *bc, int nt)
        }
   
        {
        }
   
        {
-               int type=0, plan=1, present=2, screen=0;
+               int type=bc->cpnnumplan, plan=1, present=2, screen=0;
                enc_ie_connected_pn(&connect->CONNECT_PN, msg, type,plan, present, screen, (unsigned char*) bc->dad , nt , bc);
        }
 
                enc_ie_connected_pn(&connect->CONNECT_PN, msg, type,plan, present, screen, (unsigned char*) bc->dad , nt , bc);
        }
 
index 5936429..fa712d5 100644 (file)
@@ -95,6 +95,7 @@ static const struct misdn_cfg_spec port_spec[] = {
        { "method", MISDN_CFG_METHOD, MISDN_CTYPE_STR, "standard", NONE },
        { "dialplan", MISDN_CFG_DIALPLAN, MISDN_CTYPE_INT, "0", NONE },
        { "localdialplan", MISDN_CFG_LOCALDIALPLAN, MISDN_CTYPE_INT, "0", NONE },
        { "method", MISDN_CFG_METHOD, MISDN_CTYPE_STR, "standard", NONE },
        { "dialplan", MISDN_CFG_DIALPLAN, MISDN_CTYPE_INT, "0", NONE },
        { "localdialplan", MISDN_CFG_LOCALDIALPLAN, MISDN_CTYPE_INT, "0", NONE },
+       { "cpndialplan", MISDN_CFG_CPNDIALPLAN, MISDN_CTYPE_INT, "0", NONE },
        { "nationalprefix", MISDN_CFG_NATPREFIX, MISDN_CTYPE_STR, "0", NONE },
        { "internationalprefix", MISDN_CFG_INTERNATPREFIX, MISDN_CTYPE_STR, "00", NONE },
        { "presentation", MISDN_CFG_PRES, MISDN_CTYPE_INT, "-1", NONE },
        { "nationalprefix", MISDN_CFG_NATPREFIX, MISDN_CTYPE_STR, "0", NONE },
        { "internationalprefix", MISDN_CFG_INTERNATPREFIX, MISDN_CTYPE_STR, "00", NONE },
        { "presentation", MISDN_CFG_PRES, MISDN_CTYPE_INT, "-1", NONE },
index 8418230..d69e063 100644 (file)
@@ -176,6 +176,12 @@ method=standard
 ;
 ; dialplan means Type Of Number in ISDN Terms (for outgoing calls)
 ;
 ;
 ; dialplan means Type Of Number in ISDN Terms (for outgoing calls)
 ;
+; there are different types of the dialplan:
+;
+; dialplan -> outgoing Number
+; localdialplan -> callerid
+; cpndialplan -> connected party number
+;
 ; dialplan options: 
 ;
 ; 0 - unknown
 ; dialplan options: 
 ;
 ; 0 - unknown
@@ -189,6 +195,7 @@ method=standard
 ;
 dialplan=0
 localdialplan=0
 ;
 dialplan=0
 localdialplan=0
+cpndialplan=0