opensips/modules/enum/enum_mod.c

Wed, 10 Feb 2010 21:25:01 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 10 Feb 2010 21:25:01 +0100
changeset 18
8ec65b8f6e2c
parent 12
a3ac912f2857
permissions
-rw-r--r--

Extend uac_auth() of the UAC module to workaround CSEQ problems.
This logic is meant to complement that of changeset 17, which
added rich authentication credentials to the gw table and its
associated logic in the LCR module.

     1 /*
     2  * $Id: enum_mod.c 5976 2009-08-18 13:35:23Z bogdan_iancu $
     3  *
     4  * Enum module
     5  *
     6  * Copyright (C) 2002-2008 Juha Heinanen
     7  *
     8  * This file is part of opensips, a free SIP server.
     9  *
    10  * opensips is free software; you can redistribute it and/or modify
    11  * it under the terms of the GNU General Public License as published by
    12  * the Free Software Foundation; either version 2 of the License, or
    13  * (at your option) any later version
    14  *
    15  * opensips is distributed in the hope that it will be useful,
    16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    18  * GNU General Public License for more details.
    19  *
    20  * You should have received a copy of the GNU General Public License 
    21  * along with this program; if not, write to the Free Software 
    22  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    23  *
    24  * History:
    25  * -------
    26  * 2003-03-11: New module interface (janakj)
    27  * 2003-03-16: flags export parameter added (janakj)
    28  * 2003-12-15: added suffix parameter to enum_query (jh)
    29  */
    32 #include "enum_mod.h"
    33 #include <stdio.h>
    34 #include <stdlib.h>
    35 #include "../../sr_module.h"
    36 #include "../../error.h"
    37 #include "../../mod_fix.h"
    38 #include "enum.h"
    42 /*
    43  * Module initialization function prototype
    44  */
    45 static int mod_init(void);
    48 /*
    49  * Module parameter variables
    50  */
    51 char* domain_suffix = "e164.arpa.";
    52 char* tel_uri_params = "";
    54 char* branchlabel = "i";
    55 char* i_enum_suffix = "e164.arpa.";
    56 char* bl_algorithm = "cc";
    58 char* isn_suffix = "freenum.org.";
    61 /*
    62  * Internal module variables
    63  */
    64 str suffix;
    65 str param;
    66 str service;
    68 str i_suffix;
    69 str i_branchlabel;
    70 str i_bl_alg;
    72 str isnsuffix;
    75 /*
    76  * Exported functions
    77  */
    78 static cmd_export_t cmds[] = {
    79 	{"enum_query", (cmd_function)enum_query_0, 0, 0, 0, REQUEST_ROUTE},
    80 	{"enum_query", (cmd_function)enum_query_1, 1, fixup_str_null,
    81 	 fixup_free_str_null, REQUEST_ROUTE},
    82 	{"enum_query", (cmd_function)enum_query_2, 2, fixup_str_str, 
    83 	 fixup_free_str_str, REQUEST_ROUTE},
    84 	{"enum_pv_query", (cmd_function)enum_pv_query_1, 1, fixup_pvar_null,
    85 	 fixup_free_pvar_null, REQUEST_ROUTE},
    86 	{"enum_pv_query", (cmd_function)enum_pv_query_2, 2, fixup_pvar_str,
    87 	 fixup_free_pvar_str, REQUEST_ROUTE},
    88 	{"enum_pv_query", (cmd_function)enum_pv_query_3, 3,
    89 	 fixup_pvar_str_str, fixup_free_pvar_str_str, REQUEST_ROUTE},
    90 	{"is_from_user_enum", (cmd_function)is_from_user_enum_0, 0, 0, 0,
    91 	 REQUEST_ROUTE},
    92 	{"is_from_user_enum", (cmd_function)is_from_user_enum_1, 1,
    93 	 fixup_str_null, fixup_free_str_null, REQUEST_ROUTE},
    94 	{"is_from_user_enum", (cmd_function)is_from_user_enum_2, 2,
    95 	 fixup_str_str, fixup_free_str_str, REQUEST_ROUTE},
    96 	{"i_enum_query", (cmd_function)i_enum_query_0, 0, 0, 0, REQUEST_ROUTE},
    97 	{"i_enum_query", (cmd_function)i_enum_query_1, 1, fixup_str_null, 0,
    98 	 REQUEST_ROUTE},
    99 	{"i_enum_query", (cmd_function)i_enum_query_2, 2, fixup_str_str, 0,
   100 	 REQUEST_ROUTE},
   101 	{"isn_query", (cmd_function)isn_query_0, 0, 0, 0, REQUEST_ROUTE},
   102 	{"isn_query", (cmd_function)isn_query_1, 1, fixup_str_null,
   103 	 fixup_free_str_null, REQUEST_ROUTE},
   104 	{"isn_query", (cmd_function)isn_query_2, 2, fixup_str_str, 
   105 	 fixup_free_str_str, REQUEST_ROUTE},
   106 	{0, 0, 0, 0, 0, 0}
   107 };
   110 /*
   111  * Exported parameters
   112  */
   113 static param_export_t params[] = {
   114 	{"domain_suffix", STR_PARAM, &domain_suffix},
   115 	{"tel_uri_params", STR_PARAM, &tel_uri_params},
   116 	{"branchlabel", STR_PARAM, &branchlabel},
   117 	{"i_enum_suffix", STR_PARAM, &i_enum_suffix},
   118 	{"bl_algorithm", STR_PARAM, &bl_algorithm},
   119 	{"isn_suffix", STR_PARAM, &isn_suffix},
   120 	{0, 0, 0}
   121 };
   124 /*
   125  * Module parameter variables
   126  */
   127 struct module_exports exports = {
   128 	"enum", 
   129 	MODULE_VERSION,
   130 	DEFAULT_DLFLAGS, /* dlopen flags */
   131 	cmds,     /* Exported functions */
   132 	params,   /* Exported parameters */
   133 	0,        /* exported statistics */
   134 	0,        /* exported MI functions */
   135 	0,        /* exported pseudo-variables */
   136 	0,        /* extra processes */
   137 	mod_init, /* module initialization function */
   138 	0,        /* response function*/
   139 	0,        /* destroy function */
   140 	0         /* per-child init function */
   141 };
   144 static int mod_init(void)
   145 {
   146 	LM_DBG("Initializing\n");
   148 	suffix.s = domain_suffix;
   149 	suffix.len = strlen(suffix.s);
   151 	param.s = tel_uri_params;
   152 	param.len = strlen(param.s);
   154 	service.len = 0;
   156 	i_suffix.s = i_enum_suffix;
   157 	i_suffix.len = strlen(i_enum_suffix);
   159 	i_branchlabel.s = branchlabel;
   160 	i_branchlabel.len = strlen(branchlabel);
   162 	i_bl_alg.s = bl_algorithm;
   163 	i_bl_alg.len = strlen(bl_algorithm);
   165 	isnsuffix.s = isn_suffix;
   166 	isnsuffix.len = strlen(isnsuffix.s);
   168 	return 0;
   169 }

mercurial