Add Masquerade manager event which trips when a masquerade happens (issue #7840 repor...
[asterisk/asterisk.git] / funcs / func_channel.c
index 66ea0d4..2a377b5 100644 (file)
  * 
  */
 
+#include "asterisk.h"
+
+ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
+
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
 #include <sys/types.h>
 
-#include "asterisk.h"
-
-ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #include "asterisk/module.h"
 #include "asterisk/channel.h"
 #include "asterisk/pbx.h"
@@ -38,6 +39,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #include "asterisk/app.h"
 #include "asterisk/indications.h"
 #include "asterisk/stringfields.h"
+
 #define locked_copy_string(chan, dest, source, len) \
        do { \
                ast_channel_lock(chan); \
@@ -108,7 +110,14 @@ static int func_channel_write(struct ast_channel *chan, char *function,
                locked_string_field_set(chan, language, value);
        else if (!strcasecmp(data, "musicclass"))
                locked_string_field_set(chan, musicclass, value);
-       else if (!strcasecmp(data, "callgroup"))
+       else if (!strcasecmp(data, "tonezone")) {
+               struct tone_zone *new_zone;
+               if (!(new_zone = ast_get_indication_zone(data))) {
+                       ast_log(LOG_ERROR, "Unknown country code for tonezone. Check indications.conf for available country codes.\n");
+                       ret = -1;       
+               } else 
+                       chan->zone = new_zone;
+       } else if (!strcasecmp(data, "callgroup"))
                chan->callgroup = ast_get_group(data);
        else if (!strcasecmp(data, "txgain")) {
                sscanf(value, "%hhd", &gainset);
@@ -149,7 +158,7 @@ static struct ast_custom_function channel_function = {
                "R/W    musicclass              class (from musiconhold.conf) for hold music\n"
                "R/W    rxgain                  set rxgain level on channel drivers that support it\n"
                "R/O    state                   state for channel\n"
-               "R/O    tonezone                zone for indications played\n"
+               "R/W    tonezone                zone for indications played\n"
                "R/W    txgain                  set txgain level on channel drivers that support it\n"
                "R/O    videonativeformat       format used natively for video\n"
                "\n"
@@ -162,26 +171,14 @@ static struct ast_custom_function channel_function = {
        .write = func_channel_write,
 };
 
-static char *tdesc = "Channel information dialplan function";
-
-static int unload_module(void *mod)
+static int unload_module(void)
 {
        return ast_custom_function_unregister(&channel_function);
 }
 
-static int load_module(void *mod)
+static int load_module(void)
 {
        return ast_custom_function_register(&channel_function);
 }
 
-static const char *description(void)
-{
-       return tdesc;
-}
-
-static const char *key(void)
-{
-       return ASTERISK_GPL_KEY;
-}
-
-STD_MOD(MOD_1 | NO_USECOUNT, NULL, NULL, NULL);
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Channel information dialplan function");