Tue Aug 20 16:35:04 2013

Asterisk developer's documentation


func_dialplan.c File Reference

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

Detailed Description

Dialplan group functions check if a dialplan entry exists.

Author:
Gregory Nietsky AKA irroot <gregory@networksentry.co.za>
Russell Bryant <russell@digium.com>

Definition in file func_dialplan.c.


Function Documentation

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             S_COR(chan->caller.id.number.valid, chan->caller.id.number.str, NULL));
00083          if (res)
00084             strcpy(buf, "1");
00085       } else {
00086          int res;
00087          res = ast_findlabel_extension(chan, args.context, args.exten, args.priority,
00088             S_COR(chan->caller.id.number.valid, chan->caller.id.number.str, NULL));
00089          if (res > 0)
00090             strcpy(buf, "1");
00091       }
00092    } else if (!ast_strlen_zero(args.exten)) {
00093       int res;
00094       res = ast_exists_extension(chan, args.context, args.exten, 1, 
00095          S_COR(chan->caller.id.number.valid, chan->caller.id.number.str, NULL));
00096       if (res)
00097          strcpy(buf, "1");
00098    } else if (!ast_strlen_zero(args.context)) {
00099       if (ast_context_find(args.context))
00100          strcpy(buf, "1");
00101    } else {
00102       ast_log(LOG_ERROR, "Invalid arguments provided to DIALPLAN_EXISTS\n");
00103       return -1;
00104    }
00105    
00106    return 0;
00107 }

static int load_module ( void   )  [static]

Definition at line 120 of file func_dialplan.c.

References ast_custom_function_register.

00121 {
00122    return ast_custom_function_register(&isexten_function);
00123 }

static int unload_module ( void   )  [static]

Definition at line 115 of file func_dialplan.c.

References ast_custom_function_unregister().

00116 {
00117    return ast_custom_function_unregister(&isexten_function);
00118 }


Variable Documentation

Initial value:
 {
   .name = "DIALPLAN_EXISTS",
   .read = isexten_function_read,
   .read_max = 2,
}

Definition at line 109 of file func_dialplan.c.


Generated on 20 Aug 2013 for Asterisk - The Open Source Telephony Project by  doxygen 1.6.1