Asterisk - The Open Source Telephony Project GIT-master-27fb039
Loading...
Searching...
No Matches
Functions | Variables
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"
Include dependency graph for func_dialplan.c:

Go to the source code of this file.

Functions

static void __reg_module (void)
 
static void __unreg_module (void)
 
struct ast_moduleAST_MODULE_SELF_SYM (void)
 
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_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "Dialplan Context/Extension/Priority Checking Functions" , .key = ASTERISK_GPL_KEY , .buildopt_sum = AST_BUILDOPT_SUM, .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_APP_DEPEND, }
 
static const struct ast_module_infoast_module_info = &__mod_info
 
static struct ast_custom_function isexten_function
 

Detailed Description

Dialplan group functions check if a dialplan entry exists.

Author
Gregory Nietsky AKA irroot grego.nosp@m.ry@n.nosp@m.etwor.nosp@m.ksen.nosp@m.try.c.nosp@m.o.za
Russell Bryant russe.nosp@m.ll@d.nosp@m.igium.nosp@m..com

Definition in file func_dialplan.c.

Function Documentation

◆ __reg_module()

static void __reg_module ( void  )
static

Definition at line 133 of file func_dialplan.c.

◆ __unreg_module()

static void __unreg_module ( void  )
static

Definition at line 133 of file func_dialplan.c.

◆ AST_MODULE_SELF_SYM()

struct ast_module * AST_MODULE_SELF_SYM ( void  )

Definition at line 133 of file func_dialplan.c.

◆ isexten_function_read()

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.

59{
60 char *parse;
62 AST_APP_ARG(context);
63 AST_APP_ARG(exten);
65 );
66
67 strcpy(buf, "0");
68
69 if (ast_strlen_zero(data)) {
70 ast_log(LOG_ERROR, "DIALPLAN_EXISTS() requires an argument\n");
71 return -1;
72 }
73
74 parse = ast_strdupa(data);
76
77 if (!ast_strlen_zero(args.priority)) {
78 int priority_num;
79 if (sscanf(args.priority, "%30d", &priority_num) == 1 && priority_num > 0) {
80 int res;
81 res = ast_exists_extension(chan, args.context, args.exten, priority_num,
82 !chan ? NULL :
84 if (res)
85 strcpy(buf, "1");
86 } else {
87 int res;
88 res = ast_findlabel_extension(chan, args.context, args.exten, args.priority,
89 !chan ? NULL :
91 if (res > 0)
92 strcpy(buf, "1");
93 }
94 } else if (!ast_strlen_zero(args.exten)) {
95 int res;
96 res = ast_exists_extension(chan, args.context, args.exten, 1,
97 !chan ? NULL :
99 if (res)
100 strcpy(buf, "1");
101 } else if (!ast_strlen_zero(args.context)) {
102 if (ast_context_find(args.context))
103 strcpy(buf, "1");
104 } else {
105 ast_log(LOG_ERROR, "Invalid arguments provided to DIALPLAN_EXISTS\n");
106 return -1;
107 }
108
109 return 0;
110}
const char * str
Definition app_jack.c:150
enum queue_result id
Definition app_queue.c:1771
#define ast_strdupa(s)
duplicate a string in memory from the stack
Definition astmm.h:298
#define ast_log
Definition astobj2.c:42
static int priority
struct ast_party_caller * ast_channel_caller(struct ast_channel *chan)
char buf[BUFSIZE]
Definition eagi_proxy.c:66
#define AST_APP_ARG(name)
Define an application argument.
#define AST_DECLARE_APP_ARGS(name, arglist)
Declare a structure to hold an application's arguments.
#define AST_STANDARD_APP_ARGS(args, parse)
Performs the 'standard' argument separation process for an application.
#define LOG_ERROR
int ast_findlabel_extension(struct ast_channel *c, const char *context, const char *exten, const char *label, const char *callerid)
Find the priority of an extension that has the specified label.
Definition pbx.c:4201
struct ast_context * ast_context_find(const char *name)
Find a context.
Definition extconf.c:4170
int ast_exists_extension(struct ast_channel *c, const char *context, const char *exten, int priority, const char *callerid)
Determine whether an extension exists.
Definition pbx.c:4196
static struct @519 args
#define NULL
Definition resample.c:96
#define S_COR(a, b, c)
returns the equivalent of logic or for strings, with an additional boolean check: second one if not e...
Definition strings.h:87
static force_inline int attribute_pure ast_strlen_zero(const char *s)
Definition strings.h:65
Number structure.

References args, AST_APP_ARG, ast_channel_caller(), ast_context_find(), AST_DECLARE_APP_ARGS, ast_exists_extension(), ast_findlabel_extension(), ast_log, AST_STANDARD_APP_ARGS, ast_strdupa, ast_strlen_zero(), buf, ast_channel::context, LOG_ERROR, NULL, priority, and S_COR.

◆ load_module()

static int load_module ( void  )
static

Definition at line 123 of file func_dialplan.c.

124{
126}
static struct ast_custom_function isexten_function
#define ast_custom_function_register(acf)
Register a custom function.
Definition pbx.h:1562

References ast_custom_function_register, and isexten_function.

◆ unload_module()

static int unload_module ( void  )
static

Definition at line 118 of file func_dialplan.c.

119{
121}
int ast_custom_function_unregister(struct ast_custom_function *acf)
Unregister a custom function.

References ast_custom_function_unregister(), and isexten_function.

Variable Documentation

◆ __mod_info

struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "Dialplan Context/Extension/Priority Checking Functions" , .key = ASTERISK_GPL_KEY , .buildopt_sum = AST_BUILDOPT_SUM, .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_APP_DEPEND, }
static

Definition at line 133 of file func_dialplan.c.

◆ ast_module_info

const struct ast_module_info* ast_module_info = &__mod_info
static

Definition at line 133 of file func_dialplan.c.

◆ isexten_function

struct ast_custom_function isexten_function
static
Initial value:
= {
.name = "DIALPLAN_EXISTS",
.read_max = 2,
}
static int isexten_function_read(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t len)

Definition at line 112 of file func_dialplan.c.

112 {
113 .name = "DIALPLAN_EXISTS",
114 .read = isexten_function_read,
115 .read_max = 2,
116};

Referenced by load_module(), and unload_module().