X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=route.h;h=1606410998fb00112b3b15c86aabebccfa06d0e5;hp=c83ffcc69dfcfc6af0bdf0b4fc66429f47948e7d;hb=6e5729bfa4b70e57d1c735a0f31bed2bfca8fa17;hpb=ef3fc1931a2fa82f482d21fb1296735206463d3a diff --git a/route.h b/route.h index c83ffcc..1606410 100644 --- a/route.h +++ b/route.h @@ -32,6 +32,7 @@ enum { /* how to parse text file during startup */ COND_TYPE_IP, COND_TYPE_CAPABILITY, COND_TYPE_BMODE, + COND_TYPE_HLC, COND_TYPE_IFATTR, }; @@ -41,6 +42,7 @@ enum { /* what to check during runtime */ MATCH_PORT, MATCH_INTERFACE, MATCH_CALLERID, + MATCH_CALLERID2, MATCH_EXTENSION, MATCH_DIALING, MATCH_ENBLOCK, @@ -72,8 +74,8 @@ enum { /* what to check during runtime */ MATCH_UP, MATCH_BUSY, MATCH_IDLE, - MATCH_ASTERISK, - MATCH_NOTASTERISK, + MATCH_REMOTE, + MATCH_NOTREMOTE, }; enum { /* how to parse text file during startup */ @@ -83,11 +85,18 @@ enum { /* how to parse text file during startup */ PARAM_TYPE_YESNO, PARAM_TYPE_CAPABILITY, PARAM_TYPE_BMODE, + PARAM_TYPE_HLC, PARAM_TYPE_DIVERSION, PARAM_TYPE_DESTIN, PARAM_TYPE_PORTS, PARAM_TYPE_TYPE, PARAM_TYPE_CALLERIDTYPE, + PARAM_TYPE_ON, +}; + +enum { /* defines when a statement should be executed */ + INFO_ON_INIT, + INFO_ON_HANGUP, }; /* parameter ID bits */ @@ -131,10 +140,15 @@ enum { /* how to parse text file during startup */ #define PARAM_CALLERIDTYPE (1LL<<37) #define PARAM_CALLTO (1LL<<38) #define PARAM_ROOM (1LL<<39) -#define PARAM_TIMEOUT (1LL<<40) -#define PARAM_NOPASSWORD (1LL<<41) -#define PARAM_STRIP (1LL<<42) - +#define PARAM_JINGLE (1LL<<40) +#define PARAM_TIMEOUT (1LL<<41) +#define PARAM_NOPASSWORD (1LL<<42) +#define PARAM_STRIP (1LL<<43) +#define PARAM_APPLICATION (1LL<<44) +#define PARAM_CONTEXT (1LL<<45) +#define PARAM_EXTEN (1LL<<46) +#define PARAM_ON (1LL<<47) +#define PARAM_KEYPAD (1LL<<48) /* action index * NOTE: The given index is the actual entry number of action_defs[], so add/remove both lists!!! @@ -142,7 +156,7 @@ enum { /* how to parse text file during startup */ #define ACTION_EXTERNAL 0 #define ACTION_INTERNAL 1 #define ACTION_OUTDIAL 2 -#define ACTION_CHAN 3 +#define ACTION_REMOTE 3 #define ACTION_VBOX_RECORD 4 #define ACTION_PARTYLINE 5 #define ACTION_LOGIN 6 @@ -162,7 +176,7 @@ enum { /* how to parse text file during startup */ #define ACTION_GOTO 20 #define ACTION_MENU 21 #define ACTION_DISCONNECT 22 -#define ACTION_HELP 23 +#define ACTION_RELEASE 23 #define ACTION_DEFLECT 24 #define ACTION_SETFORWARD 25 #define ACTION_EXECUTE 26 @@ -210,40 +224,41 @@ struct route_rule { /* a rule has a list of items and actions */ int line; /* line parsed from */ struct route_cond *cond_first; /* link to condition list */ struct route_action *action_first; /* link to action list */ +// int temp_couldmatch; /* stores, if the dialing could match. this is used to make a list of rules, that could match */ }; struct route_ruleset { /* the ruleset is a list of rules */ struct route_ruleset *next; /* next item */ char file[128]; /* filename */ int line; /* line parsed from */ - char name[64]; /* name of rule */ + char name[64]; /* name of ruleset */ struct route_rule *rule_first; /* linke to rule list */ }; struct cond_defs { /* defintion of all conditions */ - char *name; /* item's name */ + const char *name; /* item's name */ int match; /* what to check */ int type; /* type of value (COND_TYPE) */ - char *doc; /* syntax */ - char *help; /* short help */ + const char *doc; /* syntax */ + const char *help; /* short help */ }; struct param_defs { /* definition of all options */ unsigned long long id; /* ID of parameter (just for checking) */ - char *name; /* name of parameter */ + const char *name; /* name of parameter */ int type; /* type of value (PARAM_TYPE_*) */ - char *doc; /* syntax */ - char *help; /* quick help */ + const char *doc; /* syntax */ + const char *help; /* quick help */ }; struct action_defs { /* definition of all actions */ int id; /* ID of parameter (just for checking) */ - char *name; + const char *name; void (EndpointAppPBX::*init_func)(void); void (EndpointAppPBX::*dialing_func)(void); void (EndpointAppPBX::*hangup_func)(void); unsigned long long params; - char *help; + const char *help; }; @@ -255,7 +270,7 @@ extern struct route_ruleset *ruleset_first; extern struct route_ruleset *ruleset_main; extern struct route_action action_external; extern struct route_action action_internal; -extern struct route_action action_chan; +extern struct route_action action_remote; extern struct route_action action_vbox; extern struct route_action action_partyline; extern struct route_action action_password; @@ -269,5 +284,5 @@ void ruleset_free(struct route_ruleset *ruleset_start); void ruleset_debug(struct route_ruleset *ruleset_start); extern char ruleset_error[256]; struct route_ruleset *ruleset_parse(void); -struct route_ruleset *getrulesetbyname(char *name); +struct route_ruleset *getrulesetbyname(const char *name);