4 * Copyright (C) 2008 iptelorg GmbH
6 * Permission to use, copy, modify, and distribute this software for any
7 * purpose with or without fee is hereby granted, provided that the above
8 * copyright notice and this permission notice appear in all copies.
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20 * @brief Generic fixup functions for module function parameter.
21 * (kamailio compatibility)
27 #include "sr_module.h"
30 #define GPARAM_TYPE_INT FPARAM_INT
31 #define GPARAM_TYPE_STR FPARAM_STR
32 #define GPARAM_TYPE_PVS FPARAM_PVS
33 #define GPARAM_TYPE_PVE FPARAM_PVE
36 * generic parameter that holds a string, an int, a pseudo-variable
37 * or a ser select, avp, or subst.
39 * Note: used only for compatibility with existing kamailio code,
40 * please use fparam_t directly in the future.
45 /* reuse ser fparam_t */
46 #define gparam_t fparam_t
48 typedef gparam_t *gparam_p;
50 int fixup_get_svalue(struct sip_msg* msg, gparam_p gp, str *val);
52 /** get a string value out of a fparam_t.
54 * Note: this macro/function is for kamailio compatibility
55 * (please use get_str_fparam() directly in the future)
57 * @param msg - pointer to the sip message
58 * @param fp - pointer to the fparam_t
59 * @param sval - pointer to str, used to store the result
60 * @return 0 on success, -1 on error
62 #define fixup_get_svalue(msg, fp, sval) get_str_fparam(sval, msg, fp)
64 /** get an int value out of a fparam_t.
66 * Note: this macro/function is for kamailio compatibility
67 * (please use get_int_fparam() directly in the future)
69 * @param msg - pointer to the sip message
70 * @param fp - pointer to the fparam_t
71 * @param ival - pointer to str, used to store the result
72 * @return 0 on success, -1 on error
74 #define fixup_get_ivalue(msg, fp, ival) get_int_fparam(ival, msg, fp)
76 int fixup_str_null(void** param, int param_no);
77 int fixup_str_str(void** param, int param_no);
79 int fixup_free_str_null(void** param, int param_no);
80 int fixup_free_str_str(void** param, int param_no);
82 int fixup_uint_null(void** param, int param_no);
83 int fixup_uint_uint(void** param, int param_no);
86 int fixup_regexp_null(void** param, int param_no);
87 int fixup_free_regexp_null(void** param, int param_no);
89 int fixup_regexp_none(void** param, int param_no);
90 int fixup_free_regexp_none(void** param, int param_no);
91 /* not implemened yet */
92 int fixup_regexpNL_null(void** param, int param_no);
93 int fixup_regexpNL_none(void** param, int param_no);
96 int fixup_pvar_null(void **param, int param_no);
97 int fixup_free_pvar_null(void** param, int param_no);
99 int fixup_pvar_pvar(void **param, int param_no);
100 int fixup_free_pvar_pvar(void** param, int param_no);
102 int fixup_pvar_str(void** param, int param_no);
103 int fixup_free_pvar_str(void** param, int param_no);
105 int fixup_pvar_str_str(void** param, int param_no);
106 int fixup_free_pvar_str_str(void** param, int param_no);
108 int fixup_igp_igp(void** param, int param_no);
109 int fixup_free_igp_igp(void** param, int param_no);
110 int fixup_igp_null(void** param, int param_no);
111 int fixup_free_igp_null(void** param, int param_no);
112 int fixup_get_ivalue(struct sip_msg* msg, gparam_p gp, int *val);
114 int fixup_igp_pvar(void** param, int param_no);
115 int fixup_free_igp_pvar(void** param, int param_no);
117 int fixup_igp_pvar_pvar(void** param, int param_no);
118 int fixup_free_igp_pvar_pvar(void** param, int param_no);
120 int fixup_spve_spve(void** param, int param_no);
121 int fixup_free_spve_spve(void** param, int param_no);
122 int fixup_spve_null(void** param, int param_no);
123 int fixup_free_spve_null(void** param, int param_no);
124 int fixup_spve_uint(void** param, int param_no);
125 int fixup_spve_str(void** param, int param_no);
126 int fixup_free_spve_str(void** param, int param_no);
129 /** get the corresp. free fixup function.*/
130 free_fixup_function mod_fix_get_fixup_free(fixup_function f);