Dialplan group functions check if a dialplan entry exists. More...
#include "asterisk.h"
#include "asterisk/module.h"
#include "asterisk/channel.h"
#include "asterisk/pbx.h"
#include "asterisk/app.h"
Go to the source code of this file.
Functions | |
AST_MODULE_INFO (ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER,"Dialplan Context/Extension/Priority Checking Functions",.load=load_module,.unload=unload_module,.load_pri=AST_MODPRI_APP_DEPEND,) | |
static int | isexten_function_read (struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t len) |
static int | load_module (void) |
static int | unload_module (void) |
Variables | |
static struct ast_custom_function | isexten_function |
Dialplan group functions check if a dialplan entry exists.
Definition in file func_dialplan.c.
AST_MODULE_INFO | ( | ASTERISK_GPL_KEY | , | |
AST_MODFLAG_LOAD_ORDER | , | |||
"Dialplan Context/Extension/Priority Checking Functions" | , | |||
. | load = load_module , |
|||
. | unload = unload_module , |
|||
. | load_pri = AST_MODPRI_APP_DEPEND | |||
) |
static int isexten_function_read | ( | struct ast_channel * | chan, | |
const char * | cmd, | |||
char * | data, | |||
char * | buf, | |||
size_t | len | |||
) | [static] |
Definition at line 57 of file func_dialplan.c.
References args, AST_APP_ARG, ast_context_find(), AST_DECLARE_APP_ARGS, ast_exists_extension(), ast_findlabel_extension(), ast_log(), AST_STANDARD_APP_ARGS, ast_strdupa, ast_strlen_zero(), ast_channel::caller, context, exten, ast_party_caller::id, LOG_ERROR, ast_party_id::number, parse(), S_COR, ast_party_number::str, and ast_party_number::valid.
00059 { 00060 char *parse; 00061 AST_DECLARE_APP_ARGS(args, 00062 AST_APP_ARG(context); 00063 AST_APP_ARG(exten); 00064 AST_APP_ARG(priority); 00065 ); 00066 00067 strcpy(buf, "0"); 00068 00069 if (ast_strlen_zero(data)) { 00070 ast_log(LOG_ERROR, "DIALPLAN_EXISTS() requires an argument\n"); 00071 return -1; 00072 } 00073 00074 parse = ast_strdupa(data); 00075 AST_STANDARD_APP_ARGS(args, parse); 00076 00077 if (!ast_strlen_zero(args.priority)) { 00078 int priority_num; 00079 if (sscanf(args.priority, "%30d", &priority_num) == 1 && priority_num > 0) { 00080 int res; 00081 res = ast_exists_extension(chan, args.context, args.exten, priority_num, 00082 !chan ? NULL : 00083 S_COR(chan->caller.id.number.valid, chan->caller.id.number.str, NULL)); 00084 if (res) 00085 strcpy(buf, "1"); 00086 } else { 00087 int res; 00088 res = ast_findlabel_extension(chan, args.context, args.exten, args.priority, 00089 !chan ? NULL : 00090 S_COR(chan->caller.id.number.valid, chan->caller.id.number.str, NULL)); 00091 if (res > 0) 00092 strcpy(buf, "1"); 00093 } 00094 } else if (!ast_strlen_zero(args.exten)) { 00095 int res; 00096 res = ast_exists_extension(chan, args.context, args.exten, 1, 00097 !chan ? NULL : 00098 S_COR(chan->caller.id.number.valid, chan->caller.id.number.str, NULL)); 00099 if (res) 00100 strcpy(buf, "1"); 00101 } else if (!ast_strlen_zero(args.context)) { 00102 if (ast_context_find(args.context)) 00103 strcpy(buf, "1"); 00104 } else { 00105 ast_log(LOG_ERROR, "Invalid arguments provided to DIALPLAN_EXISTS\n"); 00106 return -1; 00107 } 00108 00109 return 0; 00110 }
static int load_module | ( | void | ) | [static] |
Definition at line 123 of file func_dialplan.c.
References ast_custom_function_register.
00124 { 00125 return ast_custom_function_register(&isexten_function); 00126 }
static int unload_module | ( | void | ) | [static] |
Definition at line 118 of file func_dialplan.c.
References ast_custom_function_unregister().
00119 { 00120 return ast_custom_function_unregister(&isexten_function); 00121 }
struct ast_custom_function isexten_function [static] |
{ .name = "DIALPLAN_EXISTS", .read = isexten_function_read, .read_max = 2, }
Definition at line 112 of file func_dialplan.c.