Mon May 14 04:49:18 2007

Asterisk developer's documentation


func_enum.c File Reference

ENUM Functions. More...

#include "asterisk.h"
#include <stdlib.h>
#include <stdio.h>
#include "asterisk/module.h"
#include "asterisk/channel.h"
#include "asterisk/pbx.h"
#include "asterisk/utils.h"
#include "asterisk/lock.h"
#include "asterisk/file.h"
#include "asterisk/logger.h"
#include "asterisk/options.h"
#include "asterisk/enum.h"
#include "asterisk/app.h"

Include dependency graph for func_enum.c:

Go to the source code of this file.

Functions

 AST_MODULE_INFO_STANDARD (ASTERISK_GPL_KEY,"ENUM related dialplan functions")
static int function_enum (struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len)
static int function_txtcidname (struct ast_channel *chan, 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 enum_function
static char * synopsis = "Syntax: ENUMLOOKUP(number[|Method-type[|options[|record#[|zone-suffix]]]])\n"
static struct ast_custom_function txtcidname_function


Detailed Description

ENUM Functions.

Author:
Mark Spencer <markster@digium.com>

Oleksiy Krivoshey <oleksiyk@gmail.com>

Russell Bryant <russelb@clemson.edu>

Definition in file func_enum.c.


Function Documentation

AST_MODULE_INFO_STANDARD ( ASTERISK_GPL_KEY  ,
"ENUM related dialplan functions"   
)

static int function_enum ( struct ast_channel chan,
char *  cmd,
char *  data,
char *  buf,
size_t  len 
) [static]

Definition at line 55 of file func_enum.c.

References AST_APP_ARG, AST_DECLARE_APP_ARGS, ast_get_enum(), ast_log(), AST_MAX_EXTENSION, ast_module_user_add, ast_module_user_remove, AST_STANDARD_APP_ARGS, ast_strlen_zero(), ast_module_user::chan, LOG_WARNING, s, and ast_channel::zone.

00057 {
00058    AST_DECLARE_APP_ARGS(args,
00059       AST_APP_ARG(number);
00060       AST_APP_ARG(tech);
00061       AST_APP_ARG(options);
00062       AST_APP_ARG(record);
00063       AST_APP_ARG(zone);
00064    );
00065    int res = 0;
00066    char tech[80];
00067    char dest[256] = "", tmp[2] = "", num[AST_MAX_EXTENSION] = "";
00068    struct ast_module_user *u;
00069    char *s, *p;
00070    unsigned int record = 1;
00071 
00072    buf[0] = '\0';
00073 
00074    if (ast_strlen_zero(data)) {
00075       ast_log(LOG_WARNING, synopsis);
00076       return -1;
00077    }
00078 
00079    AST_STANDARD_APP_ARGS(args, data);
00080 
00081    if (args.argc < 1) {
00082       ast_log(LOG_WARNING, synopsis);
00083       return -1;
00084    }
00085 
00086    u = ast_module_user_add(chan);
00087 
00088    ast_copy_string(tech, args.tech ? args.tech : "sip", sizeof(tech));
00089 
00090    if (!args.zone)
00091       args.zone = "e164.arpa";
00092 
00093    if (!args.options)
00094       args.options = "";
00095 
00096    if (args.record)
00097       record = atoi(args.record);
00098 
00099    /* strip any '-' signs from number */
00100    for (s = p = args.number; *s; s++) {
00101       if (*s != '-') {
00102          snprintf(tmp, sizeof(tmp), "%c", *s);
00103          strncat(num, tmp, sizeof(num));
00104       }
00105 
00106    }
00107 
00108    res = ast_get_enum(chan, num, dest, sizeof(dest), tech, sizeof(tech), args.zone,
00109             args.options, record);
00110 
00111    p = strchr(dest, ':');
00112    if (p && strcasecmp(tech, "ALL"))
00113       ast_copy_string(buf, p + 1, len);
00114    else
00115       ast_copy_string(buf, dest, len);
00116 
00117    ast_module_user_remove(u);
00118 
00119    return 0;
00120 }

static int function_txtcidname ( struct ast_channel chan,
char *  cmd,
char *  data,
char *  buf,
size_t  len 
) [static]

Definition at line 137 of file func_enum.c.

References ast_get_txt(), ast_log(), ast_module_user_add, ast_module_user_remove, ast_strlen_zero(), ast_module_user::chan, and LOG_WARNING.

00139 {
00140    int res;
00141    char tech[80];
00142    char txt[256] = "";
00143    char dest[80];
00144    struct ast_module_user *u;
00145 
00146    buf[0] = '\0';
00147 
00148 
00149    if (ast_strlen_zero(data)) {
00150       ast_log(LOG_WARNING, "TXTCIDNAME requires an argument (number)\n");
00151       return -1;
00152    }
00153 
00154    u = ast_module_user_add(chan);
00155 
00156    res = ast_get_txt(chan, data, dest, sizeof(dest), tech, sizeof(tech), txt,
00157            sizeof(txt));
00158 
00159    if (!ast_strlen_zero(txt))
00160       ast_copy_string(buf, txt, len);
00161 
00162    ast_module_user_remove(u);
00163 
00164    return 0;
00165 }

static int load_module ( void   )  [static]

Definition at line 190 of file func_enum.c.

References ast_custom_function_register(), enum_function, and txtcidname_function.

00191 {
00192    int res = 0;
00193 
00194    res |= ast_custom_function_register(&enum_function);
00195    res |= ast_custom_function_register(&txtcidname_function);
00196 
00197    return res;
00198 }

static int unload_module ( void   )  [static]

Definition at line 178 of file func_enum.c.

References ast_custom_function_unregister(), ast_module_user_hangup_all, enum_function, and txtcidname_function.

00179 {
00180    int res = 0;
00181 
00182    res |= ast_custom_function_unregister(&enum_function);
00183    res |= ast_custom_function_unregister(&txtcidname_function);
00184 
00185    ast_module_user_hangup_all();
00186 
00187    return res;
00188 }


Variable Documentation

struct ast_custom_function enum_function [static]

Definition at line 122 of file func_enum.c.

Referenced by load_module(), and unload_module().

char* synopsis = "Syntax: ENUMLOOKUP(number[|Method-type[|options[|record#[|zone-suffix]]]])\n" [static]

Definition at line 53 of file func_enum.c.

struct ast_custom_function txtcidname_function [static]

Definition at line 167 of file func_enum.c.

Referenced by load_module(), and unload_module().


Generated on Mon May 14 04:49:19 2007 for Asterisk - the Open Source PBX by  doxygen 1.5.1