work on chan_lcr
[lcr.git] / route.c
diff --git a/route.c b/route.c
index 8c158bf..f4dcd26 100644 (file)
--- a/route.c
+++ b/route.c
@@ -9,10 +9,6 @@
 **                                                                           **
 \*****************************************************************************/ 
 
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
 #include "main.h"
 
 
@@ -123,7 +119,7 @@ struct param_defs param_defs[] = {
          "capability=speech|audio|video|digital-restricted|digital-unrestricted|digital-unrestricted-tones", "Alter the service type of the call."},
        { PARAM_BMODE,
          "bmode",      PARAM_TYPE_BMODE,
-         "capability=transparent|hdlc", "Alter the bchannel mode of the call. Use hdlc for data calls."},
+         "bmode=transparent|hdlc", "Alter the bchannel mode of the call. Use hdlc for data calls."},
        { PARAM_INFO1,
          "infolayer1", PARAM_TYPE_INTEGER,
          "infolayer1=<value>", "Alter the layer 1 information of a call. Use 3 for ALAW or 2 for uLAW."},
@@ -220,6 +216,9 @@ struct param_defs param_defs[] = {
        { PARAM_ROOM,
          "room",       PARAM_TYPE_INTEGER,
          "room=<digits>", "Conference room number, must be greater 0, as in real life."},
+       { PARAM_JINGLE,
+         "jingle",     PARAM_TYPE_NULL,
+         "jingle", "Conference members will hear a jingle if a member joins."},
        { PARAM_TIMEOUT,
          "timeout",    PARAM_TYPE_INTEGER,
          "timeout=<seconds>", "Timeout before continue with next action."},
@@ -231,7 +230,10 @@ struct param_defs param_defs[] = {
          "strip", "Remove digits that were required to match this rule."},
        { PARAM_APPLICATION,
          "application",PARAM_TYPE_STRING,
-         "application", "Name of remote application to make call to."},
+         "application=<name>", "Name of remote application to make call to."},
+       { PARAM_EXTEN,
+         "exten",      PARAM_TYPE_STRING,
+         "exten=<extension>", "Give exten parameter to the remote application."},
        { 0, NULL, 0, NULL, NULL}
 };
 
@@ -250,7 +252,7 @@ struct action_defs action_defs[] = {
          "Same as 'extern'"},
        { ACTION_REMOTE,
          "remote",     &EndpointAppPBX::action_init_remote, &EndpointAppPBX::action_dialing_remote, &EndpointAppPBX::action_hangup_call,
-         PARAM_CONNECT | PARAM_APPLICATION | PARAM_TIMEOUT,
+         PARAM_CONNECT | PARAM_APPLICATION | PARAM_EXTEN | PARAM_TIMEOUT,
          "Call is routed to Remote application, like Asterisk."},
        { ACTION_VBOX_RECORD,
          "vbox-record",&EndpointAppPBX::action_init_call, &EndpointAppPBX::action_dialing_vbox_record, &EndpointAppPBX::action_hangup_call,
@@ -258,7 +260,7 @@ struct action_defs action_defs[] = {
          "Caller is routed to the voice box of given extension."},
        { ACTION_PARTYLINE,
          "partyline",&EndpointAppPBX::action_init_partyline, NULL, &EndpointAppPBX::action_hangup_call,
-         PARAM_ROOM,
+         PARAM_ROOM | PARAM_JINGLE,
          "Caller is participating the conference with the given room number."},
        { ACTION_LOGIN,
          "login",      NULL, &EndpointAppPBX::action_dialing_login, NULL,
@@ -283,7 +285,7 @@ struct action_defs action_defs[] = {
        { ACTION_REPLY,
          "reply",      &EndpointAppPBX::action_init_redial_reply, &EndpointAppPBX::action_dialing_reply, NULL,
          PARAM_CONNECT | PARAM_SELECT,
-         "Caller replies. (last incomming call(s))"},
+         "Caller replies. (last incoming call(s))"},
        { ACTION_POWERDIAL,
          "powerdial",  NULL, &EndpointAppPBX::action_dialing_powerdial, NULL,
          PARAM_CONNECT | PARAM_DELAY | PARAM_LIMIT | PARAM_TIMEOUT,
@@ -329,11 +331,6 @@ struct action_defs action_defs[] = {
          "disconnect", NULL, &EndpointAppPBX::action_dialing_disconnect, NULL,
          PARAM_CONNECT | PARAM_CAUSE | PARAM_LOCATION | PARAM_SAMPLE | PARAM_DISPLAY,
          "Caller gets disconnected optionally with given cause and given sample and given display text."},
-       { ACTION_HELP,
-         "help",       NULL, &EndpointAppPBX::action_dialing_help, NULL,
-         PARAM_CONNECT | PARAM_TIMEOUT,
-         NULL},
-//       "Caller will be able to select from current rules that would match. (using * and #)"},
        { ACTION_DEFLECT,
          "deflect",    NULL, &EndpointAppPBX::action_dialing_deflect, NULL,
          PARAM_DEST,
@@ -1968,8 +1965,8 @@ struct route_action *EndpointAppPBX::route(struct route_ruleset *ruleset)
        e_match_timeout = 0; /* no timeout */
        e_match_to_action = NULL;
 
-       SCPY(callerid, numberrize_callerinfo(e_callerinfo.id, e_callerinfo.ntype));
-       SCPY(redirid, numberrize_callerinfo(e_redirinfo.id, e_redirinfo.ntype));
+       SCPY(callerid, numberrize_callerinfo(e_callerinfo.id, e_callerinfo.ntype, options.national, options.international));
+       SCPY(redirid, numberrize_callerinfo(e_redirinfo.id, e_redirinfo.ntype, options.national, options.international));
        
        PDEBUG(DEBUG_ROUTE, "parsing ruleset '%s'\n", ruleset->name);
        while(rule)
@@ -2147,7 +2144,7 @@ struct route_action *EndpointAppPBX::route(struct route_ruleset *ruleset)
                                        if (mISDNport->ifport)
                                        if (strlen(mISDNport->ifport->interface->name) == comp_len)
                                        if (!strncasecmp(mISDNport->ifport->interface->name, cond->string_value, comp_len)) 
-                                       if (!mISDNport->ptp || mISDNport->l2link)
+                                       if (!mISDNport->l2hold || mISDNport->l2link)
                                        {
                                                j = 0;
                                                jj = mISDNport->b_num;
@@ -2179,7 +2176,7 @@ struct route_action *EndpointAppPBX::route(struct route_ruleset *ruleset)
                                {
                                        if (mISDNport->ifport)
                                        if (!strcasecmp(mISDNport->ifport->interface->name, cond->string_value)) 
-                                       if (!mISDNport->ptp || mISDNport->l2link) /* break if one is up */
+                                       if (!mISDNport->l2hold || mISDNport->l2link)
                                                break;
                                        mISDNport = mISDNport->next;
                                }
@@ -2193,7 +2190,7 @@ struct route_action *EndpointAppPBX::route(struct route_ruleset *ruleset)
                                {
                                        if (mISDNport->ifport)
                                        if (!strcasecmp(mISDNport->ifport->interface->name, cond->string_value)) 
-                                       if (!mISDNport->ptp || mISDNport->l2link) /* break if one is up */
+                                       if (!mISDNport->l2hold || mISDNport->l2link)
                                                break;
                                        
                                        mISDNport = mISDNport->next;