84{
87 char tmp[80];
88
89 snprintf(tmp,
sizeof(tmp),
"%d",
priority);
93 }
96 }
99 }
100
102
106}
107
109{
110 char *con;
111 char *pri;
112 *newpattern = strchr(
buf,
'/');
113 if (*newpattern)
114 *(*newpattern)++ = '\0';
115 con = strchr(
buf,
'@');
116 if (con) {
117 *con++ = '\0';
118 pri = strchr(con, ':');
119 } else
120 pri = strchr(
buf,
':');
124 *newcontext = con;
127}
128
130{
133 res = 0;
134 else
136 return res;
137}
138
140{
143 res = 0;
144 else
146 return res;
147}
148
150{
151 int found;
154 return res;
155}
156
158{
161 res = 0;
162 else
164 return res;
165}
166
168{
170 .description = "Loopback Dialplan Switch",
175};
176
178{
180 return 0;
181}
182
184{
188}
189
#define ast_var_assign(name, value)
void ast_var_delete(struct ast_var_t *var)
#define AST_LIST_HEAD_INIT_NOLOCK(head)
Initializes a list head structure.
#define AST_LIST_INSERT_HEAD(head, elm, field)
Inserts a list entry at the head of a list.
#define AST_LIST_REMOVE_HEAD(head, field)
Removes and returns the head entry from a list.
#define AST_MODULE_INFO_STANDARD(keystr, desc)
#define ASTERISK_GPL_KEY
The text the key() function should return.
@ AST_MODULE_LOAD_FAILURE
Module could not be loaded properly.
@ AST_MODULE_LOAD_SUCCESS
void pbx_substitute_variables_varshead(struct varshead *headp, const char *cp1, char *cp2, int count)
void ast_unregister_switch(struct ast_switch *sw)
Unregister an alternative switch.
int ast_register_switch(struct ast_switch *sw)
Register an alternative dialplan switch.
int ast_exists_extension(struct ast_channel *c, const char *context, const char *exten, int priority, const char *callerid)
Determine whether an extension exists.
int ast_canmatch_extension(struct ast_channel *c, const char *context, const char *exten, int priority, const char *callerid)
Looks for a valid matching extension.
int ast_spawn_extension(struct ast_channel *c, const char *context, const char *exten, int priority, const char *callerid, int *found, int combined_find_spawn)
Launch a new extension (i.e. new stack)
int ast_extension_match(const char *pattern, const char *extension)
Determine if a given extension matches a given pattern (in NXX format)
int ast_matchmore_extension(struct ast_channel *c, const char *context, const char *exten, int priority, const char *callerid)
Looks to see if adding anything to this extension might match something. (exists ^ canmatch)
static void loopback_parse(char **newexten, char **newcontext, int *priority, char **newpattern, char *buf)
static int loopback_exists(struct ast_channel *chan, const char *context, const char *exten, int priority, const char *callerid, const char *data)
static struct ast_switch loopback_switch
static int loopback_exec(struct ast_channel *chan, const char *context, const char *exten, int priority, const char *callerid, const char *data)
static int loopback_matchmore(struct ast_channel *chan, const char *context, const char *exten, int priority, const char *callerid, const char *data)
static int load_module(void)
static int unload_module(void)
static int loopback_canmatch(struct ast_channel *chan, const char *context, const char *exten, int priority, const char *callerid, const char *data)
static force_inline int attribute_pure ast_strlen_zero(const char *s)
Main Channel structure associated with a channel.