Thu Sep 7 01:03:29 2017

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             !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 }


Variable Documentation

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

Definition at line 112 of file func_dialplan.c.


Generated on 7 Sep 2017 for Asterisk - The Open Source Telephony Project by  doxygen 1.6.1