Asterisk - The Open Source Telephony Project
21.4.1
|
Compile symbolic Asterisk Extension Logic into Asterisk extensions, version 2. More...
#include "asterisk.h"
#include <sys/types.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include <regex.h>
#include <sys/stat.h>
#include "asterisk/pbx.h"
#include "asterisk/config.h"
#include "asterisk/module.h"
#include "asterisk/logger.h"
#include "asterisk/cli.h"
#include "asterisk/app.h"
#include "asterisk/channel.h"
#include "asterisk/callerid.h"
#include "asterisk/pval.h"
#include "asterisk/ael_structs.h"
#include "asterisk/utils.h"
Go to the source code of this file.
Macros | |
#define | ASTMM_LIBC ASTMM_REDIRECT |
#define | BUF_SIZE 2000 |
Functions | |
void | add_extensions (struct ael_extension *exten) |
void | ael2_print (char *fname, pval *tree) |
void | ael2_semantic_check (pval *item, int *arg_errs, int *arg_warns, int *arg_notes) |
int | ast_compile_ael2 (struct ast_context **local_contexts, struct ast_hashtab *local_table, struct pval *root) |
static void | attach_exten (struct ael_extension **list, struct ael_extension *newmem) |
static void | check_abstract_reference (pval *abstract_context) |
int | check_app_args (pval *appcall, pval *arglist, struct argapp *app) |
static int | check_break (pval *item) |
static void | check_context_names (void) |
static int | check_continue (pval *item) |
static void | check_day (pval *DAY) |
static void | check_dow (pval *DOW) |
get_dow: Get day of week | |
static void | check_expr2_input (pval *expr, char *str) |
static void | check_goto (pval *item) |
static void | check_includes (pval *includes) |
static void | check_label (pval *item) |
static void | check_macro_returns (pval *macro) |
static void | check_month (pval *MON) |
void | check_pval (pval *item, struct argapp *apps, int in_globals) |
void | check_pval_item (pval *item, struct argapp *apps, int in_globals) |
void | check_switch_expr (pval *item, struct argapp *apps) |
static void | check_timerange (pval *p) |
int | contains_switch (pval *item) |
static int | context_used (struct ael_extension *exten_list, struct ast_context *context) |
void | destroy_extensions (struct ael_extension *exten) |
void | destroy_pval (pval *item) |
void | destroy_pval_item (pval *item) |
static int | extension_matches (pval *here, const char *exten, const char *pattern) |
struct pval * | find_context (char *name) |
static struct pval * | find_first_label_in_current_context (char *label, pval *curr_cont) |
static struct pval * | find_label_in_current_context (char *exten, char *label, pval *curr_cont) |
static struct pval * | find_label_in_current_db (const char *context, const char *exten, const char *label) |
static struct pval * | find_label_in_current_extension (const char *label, pval *curr_ext) |
struct pval * | find_macro (char *name) |
static void | find_pval_goto_item (pval *item, int lev) |
static void | find_pval_gotos (pval *item, int lev) |
int | find_switch_item (pval *item) |
static void | fix_gotos_in_extensions (struct ael_extension *exten) |
static void | gen_match_to_pattern (char *pattern, char *result) |
static int | gen_prios (struct ael_extension *exten, char *label, pval *statement, struct ael_extension *mother_exten, struct ast_context *this_context) |
static pval * | get_contxt (pval *p) |
static pval * | get_extension_or_contxt (pval *p) |
static pval * | get_goto_target (pval *item) |
static struct pval * | in_context (pval *item) |
static struct pval * | in_macro (pval *item) |
int | is_empty (char *arg) |
int | is_float (char *arg) |
int | is_int (char *arg) |
static int | label_inside_case (pval *label) |
static void | linkexten (struct ael_extension *exten, struct ael_extension *add) |
void | linkprio (struct ael_extension *exten, struct ael_priority *prio, struct ael_extension *mother_exten) |
pval * | linku1 (pval *head, pval *tail) |
int | localized_pbx_load_module (void) |
struct pval * | match_pval (pval *item) |
static struct pval * | match_pval_item (pval *item) |
struct ael_extension * | new_exten (void) |
struct ael_priority * | new_prio (void) |
static void | print_pval (FILE *fin, pval *item, int depth) |
static void | print_pval_list (FILE *fin, pval *item, int depth) |
void | pvalAppCallAddArg (pval *p, pval *arg) |
char * | pvalAppCallGetAppName (pval *p) |
void | pvalAppCallSetAppName (pval *p, char *name) |
void | pvalAppCallSetArglist (pval *p, pval *arglist) |
pval * | pvalAppCallWalkArgs (pval *p, pval **args) |
void | pvalCasePatDefAddStatement (pval *p, pval *statement) |
pval * | pvalCasePatDefWalkStatements (pval *p, pval **statement) |
char * | pvalCasePatGetVal (pval *p) |
void | pvalCasePatSetVal (pval *p, char *val) |
char * | pvalCatchGetExtName (pval *p) |
pval * | pvalCatchGetStatement (pval *p) |
void | pvalCatchSetExtName (pval *p, char *name) |
void | pvalCatchSetStatement (pval *p, pval *statement) |
int | pvalCheckType (pval *p, char *funcname, pvaltype type) |
pval * | pvalConditionalGetElseStatement (pval *p) |
pval * | pvalConditionalGetThenStatement (pval *p) |
void | pvalConditionalSetElseStatement (pval *p, pval *statement) |
void | pvalConditionalSetThenStatement (pval *p, pval *statement) |
void | pvalContextAddStatement (pval *p, pval *statement) |
int | pvalContextGetAbstract (pval *p) |
char * | pvalContextGetName (pval *p) |
void | pvalContextSetAbstract (pval *p) |
void | pvalContextSetName (pval *p, char *name) |
void | pvalContextUnsetAbstract (pval *p) |
pval * | pvalContextWalkStatements (pval *p, pval **statements) |
pval * | pvalCreateNode (pvaltype type) |
void | pvalESwitchesAddSwitch (pval *p, char *name) |
char * | pvalESwitchesWalkNames (pval *p, pval **next_item) |
char * | pvalExtenGetHints (pval *p) |
char * | pvalExtenGetName (pval *p) |
int | pvalExtenGetRegexten (pval *p) |
pval * | pvalExtenGetStatement (pval *p) |
void | pvalExtenSetHints (pval *p, char *hints) |
void | pvalExtenSetName (pval *p, char *name) |
void | pvalExtenSetRegexten (pval *p) |
void | pvalExtenSetStatement (pval *p, pval *statement) |
void | pvalExtenUnSetRegexten (pval *p) |
char * | pvalForGetInc (pval *p) |
char * | pvalForGetInit (pval *p) |
pval * | pvalForGetStatement (pval *p) |
char * | pvalForGetTest (pval *p) |
void | pvalForSetInc (pval *p, char *inc) |
void | pvalForSetInit (pval *p, char *init) |
void | pvalForSetStatement (pval *p, pval *statement) |
void | pvalForSetTest (pval *p, char *test) |
void | pvalGlobalsAddStatement (pval *p, pval *statement) |
pval * | pvalGlobalsWalkStatements (pval *p, pval **next_statement) |
void | pvalGotoGetTarget (pval *p, char **context, char **exten, char **label) |
void | pvalGotoSetTarget (pval *p, char *context, char *exten, char *label) |
char * | pvalIfGetCondition (pval *p) |
void | pvalIfSetCondition (pval *p, char *expr) |
void | pvalIfTimeGetCondition (pval *p, char **hour_range, char **dow_range, char **dom_range, char **month_range) |
void | pvalIfTimeSetCondition (pval *p, char *hour_range, char *dow_range, char *dom_range, char *mon_range) |
char * | pvalIgnorePatGetPattern (pval *p) |
void | pvalIgnorePatSetPattern (pval *p, char *pat) |
void | pvalIncludeGetTimeConstraints (pval *p, char **hour_range, char **dom_range, char **dow_range, char **month_range) |
void | pvalIncludesAddInclude (pval *p, const char *include) |
void | pvalIncludesAddIncludeWithTimeConstraints (pval *p, const char *include, char *hour_range, char *dom_range, char *dow_range, char *month_range) |
char * | pvalIncludesWalk (pval *p, pval **next_item) |
char * | pvalLabelGetName (pval *p) |
void | pvalLabelSetName (pval *p, char *name) |
void | pvalMacroAddArg (pval *p, pval *arg) |
void | pvalMacroAddStatement (pval *p, pval *statement) |
void | pvalMacroCallAddArg (pval *p, pval *arg) |
char * | pvalMacroCallGetMacroName (pval *p) |
void | pvalMacroCallSetArglist (pval *p, pval *arglist) |
void | pvalMacroCallSetMacroName (pval *p, char *name) |
pval * | pvalMacroCallWalkArgs (pval *p, pval **args) |
char * | pvalMacroGetName (pval *p) |
void | pvalMacroSetArglist (pval *p, pval *arglist) |
void | pvalMacroSetName (pval *p, char *name) |
pval * | pvalMacroWalkArgs (pval *p, pval **arg) |
pval * | pvalMacroWalkStatements (pval *p, pval **next_statement) |
pvaltype | pvalObjectGetType (pval *p) |
char * | pvalRandomGetCondition (pval *p) |
void | pvalRandomSetCondition (pval *p, char *percent) |
void | pvalStatementBlockAddStatement (pval *p, pval *statement) |
pval * | pvalStatementBlockWalkStatements (pval *p, pval **next_statement) |
void | pvalSwitchAddCase (pval *p, pval *Case) |
void | pvalSwitchesAddSwitch (pval *p, char *name) |
char * | pvalSwitchesWalkNames (pval *p, pval **next_item) |
char * | pvalSwitchGetTestexpr (pval *p) |
void | pvalSwitchSetTestexpr (pval *p, char *expr) |
pval * | pvalSwitchWalkCases (pval *p, pval **next_case) |
void | pvalTopLevAddObject (pval *p, pval *contextOrObj) |
pval * | pvalTopLevWalkObjects (pval *p, pval **next_obj) |
char * | pvalVarDecGetValue (pval *p) |
char * | pvalVarDecGetVarname (pval *p) |
void | pvalVarDecSetValue (pval *p, char *value) |
void | pvalVarDecSetVarname (pval *p, char *name) |
char * | pvalWordGetString (pval *p) |
void | pvalWordSetString (pval *p, char *str) |
static void | remove_spaces_before_equals (char *str) |
void | set_priorities (struct ael_extension *exten) |
void | traverse_pval_item_template (pval *item, int depth) |
void | traverse_pval_template (pval *item, int depth) |
Variables | |
static int | control_statement_count |
static int | count_labels |
static pval * | current_context |
static pval * | current_db |
static pval * | current_extension |
static char * | days [] |
static int | errs |
static char | expr_output [2096] |
static int | in_abstract_context |
static int | label_count |
static pval * | last_matched_label |
static const char * | match_context |
static const char * | match_exten |
static const char * | match_label |
static char * | months [] |
static int | notes |
static char * | registrar = "pbx_ael" |
static int | return_on_context_match |
static int | warns |
Compile symbolic Asterisk Extension Logic into Asterisk extensions, version 2.
Definition in file utils/pval.c.