Mon Jul 14 17:25:22 2008

Asterisk developer's documentation


pbx_loopback.c File Reference

Loopback PBX Module. More...

#include "asterisk.h"
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include "asterisk/file.h"
#include "asterisk/logger.h"
#include "asterisk/channel.h"
#include "asterisk/config.h"
#include "asterisk/options.h"
#include "asterisk/pbx.h"
#include "asterisk/module.h"
#include "asterisk/frame.h"
#include "asterisk/cli.h"
#include "asterisk/lock.h"
#include "asterisk/md5.h"
#include "asterisk/linkedlists.h"
#include "asterisk/chanvars.h"
#include "asterisk/sched.h"
#include "asterisk/io.h"
#include "asterisk/utils.h"
#include "asterisk/crypto.h"
#include "asterisk/astdb.h"

Include dependency graph for pbx_loopback.c:

Go to the source code of this file.

Defines

#define LOOPBACK_COMMON

Functions

 AST_MODULE_INFO_STANDARD (ASTERISK_GPL_KEY,"Loopback Switch")
static int load_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 int loopback_exec (struct ast_channel *chan, const char *context, const char *exten, int priority, const char *callerid, const char *data)
static int loopback_exists (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 void loopback_parse (char **newexten, char **newcontext, int *priority, char **newpattern, char *buf)
static char * loopback_subst (char *buf, int buflen, const char *exten, const char *context, int priority, const char *data)
static int unload_module (void)

Variables

static struct ast_switch loopback_switch


Detailed Description

Loopback PBX Module.

Definition in file pbx_loopback.c.


Define Documentation

#define LOOPBACK_COMMON

Definition at line 80 of file pbx_loopback.c.

Referenced by loopback_canmatch(), loopback_exec(), loopback_exists(), and loopback_matchmore().


Function Documentation

AST_MODULE_INFO_STANDARD ( ASTERISK_GPL_KEY  ,
"Loopback Switch"   
)

static int load_module ( void   )  [static]

Definition at line 185 of file pbx_loopback.c.

References ast_register_switch(), and loopback_switch.

00186 {
00187    ast_register_switch(&loopback_switch);
00188    return 0;
00189 }

static int loopback_canmatch ( struct ast_channel chan,
const char *  context,
const char *  exten,
int  priority,
const char *  callerid,
const char *  data 
) [static]

Definition at line 144 of file pbx_loopback.c.

References ast_canmatch_extension(), ast_extension_match(), and LOOPBACK_COMMON.

00145 {
00146    LOOPBACK_COMMON;
00147    res = ast_canmatch_extension(chan, newcontext, newexten, newpriority, callerid);
00148    if (newpattern && !ast_extension_match(newpattern, exten))
00149       res = 0;
00150    return res;
00151 }

static int loopback_exec ( struct ast_channel chan,
const char *  context,
const char *  exten,
int  priority,
const char *  callerid,
const char *  data 
) [static]

Definition at line 153 of file pbx_loopback.c.

References ast_spawn_extension(), and LOOPBACK_COMMON.

00154 {
00155    LOOPBACK_COMMON;
00156    res = ast_spawn_extension(chan, newcontext, newexten, newpriority, callerid);
00157    return res;
00158 }

static int loopback_exists ( struct ast_channel chan,
const char *  context,
const char *  exten,
int  priority,
const char *  callerid,
const char *  data 
) [static]

Definition at line 135 of file pbx_loopback.c.

References ast_exists_extension(), ast_extension_match(), and LOOPBACK_COMMON.

00136 {
00137    LOOPBACK_COMMON;
00138    res = ast_exists_extension(chan, newcontext, newexten, newpriority, callerid);
00139    if (newpattern && !ast_extension_match(newpattern, exten))
00140       res = 0;
00141    return res;
00142 }

static int loopback_matchmore ( struct ast_channel chan,
const char *  context,
const char *  exten,
int  priority,
const char *  callerid,
const char *  data 
) [static]

Definition at line 160 of file pbx_loopback.c.

References ast_extension_match(), ast_matchmore_extension(), and LOOPBACK_COMMON.

00161 {
00162    LOOPBACK_COMMON;
00163    res = ast_matchmore_extension(chan, newcontext, newexten, newpriority, callerid);
00164    if (newpattern && !ast_extension_match(newpattern, exten))
00165       res = 0;
00166    return res;
00167 }

static void loopback_parse ( char **  newexten,
char **  newcontext,
int *  priority,
char **  newpattern,
char *  buf 
) [static]

Definition at line 114 of file pbx_loopback.c.

References ast_strlen_zero().

00115 {
00116    char *con;
00117    char *pri;
00118    *newpattern = strchr(buf, '/');
00119    if (*newpattern)
00120       *(*newpattern)++ = '\0';
00121    con = strchr(buf, '@');
00122    if (con) {
00123       *con++ = '\0';
00124       pri = strchr(con, ':');
00125    } else
00126       pri = strchr(buf, ':');
00127    if (!ast_strlen_zero(buf))
00128       *newexten = buf;
00129    if (!ast_strlen_zero(con))
00130       *newcontext = con;
00131    if (!ast_strlen_zero(pri))
00132       sscanf(pri, "%d", priority);
00133 }

static char* loopback_subst ( char *  buf,
int  buflen,
const char *  exten,
const char *  context,
int  priority,
const char *  data 
) [static]

Definition at line 91 of file pbx_loopback.c.

References AST_LIST_HEAD_INIT_NOLOCK, AST_LIST_INSERT_HEAD, AST_LIST_REMOVE_HEAD, ast_var_assign(), ast_var_delete(), and pbx_substitute_variables_varshead().

00092 {
00093    struct ast_var_t *newvariable;
00094    struct varshead headp;
00095    char tmp[80];
00096 
00097    snprintf(tmp, sizeof(tmp), "%d", priority);
00098    memset(buf, 0, buflen);
00099    AST_LIST_HEAD_INIT_NOLOCK(&headp);
00100    newvariable = ast_var_assign("EXTEN", exten);
00101    AST_LIST_INSERT_HEAD(&headp, newvariable, entries);
00102    newvariable = ast_var_assign("CONTEXT", context);
00103    AST_LIST_INSERT_HEAD(&headp, newvariable, entries);
00104    newvariable = ast_var_assign("PRIORITY", tmp);
00105    AST_LIST_INSERT_HEAD(&headp, newvariable, entries);
00106    /* Substitute variables */
00107    pbx_substitute_variables_varshead(&headp, data, buf, buflen);
00108    /* free the list */
00109    while ((newvariable = AST_LIST_REMOVE_HEAD(&headp, entries)))
00110                 ast_var_delete(newvariable);
00111    return buf;
00112 }

static int unload_module ( void   )  [static]

Definition at line 179 of file pbx_loopback.c.

References ast_unregister_switch(), and loopback_switch.

00180 {
00181    ast_unregister_switch(&loopback_switch);
00182    return 0;
00183 }


Variable Documentation

struct ast_switch loopback_switch [static]

Definition at line 169 of file pbx_loopback.c.

Referenced by load_module(), and unload_module().


Generated on Mon Jul 14 17:25:22 2008 for Asterisk - the Open Source PBX by  doxygen 1.5.1