1 /* 2 * Copyright (C) 2008 iptelorg GmbH 3 * 4 * Permission to use, copy, modify, and distribute this software for any 5 * purpose with or without fee is hereby granted, provided that the above 6 * copyright notice and this permission notice appear in all copies. 7 * 8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 */ 16 17 /** 18 * @file mod_fix.h 19 * @brief Kamailio core :: Generic fixup functions for module function parameter. 20 * (kamailio compatibility) 21 * @ingroup core 22 * Module: \ref core 23 */ 24 25 #ifndef _mod_fix_h_ 26 #define _mod_fix_h_ 27 28 #include "sr_module.h" 29 #include "pvar.h" 30 31 #define GPARAM_TYPE_INT FPARAM_INT 32 #define GPARAM_TYPE_STR FPARAM_STR 33 #define GPARAM_TYPE_PVS FPARAM_PVS 34 #define GPARAM_TYPE_PVE FPARAM_PVE 35 36 /** 37 * generic parameter that holds a string, an int, a pseudo-variable 38 * or a ser select, avp, or subst. 39 * 40 * Note: used only for compatibility with existing kamailio code, 41 * please use fparam_t directly in the future. 42 * 43 * @see fparam_t 44 */ 45 46 /* reuse ser fparam_t */ 47 #define gparam_t fparam_t 48 49 typedef gparam_t *gparam_p; 50 51 int fixup_get_svalue(struct sip_msg* msg, gparam_p gp, str *val); 52 53 /** get a string value out of a fparam_t. 54 * 55 * Note: this macro/function is for kamailio compatibility 56 * (please use get_str_fparam() directly in the future) 57 * 58 * @param msg - pointer to the sip message 59 * @param fp - pointer to the fparam_t 60 * @param sval - pointer to str, used to store the result 61 * @return 0 on success, -1 on error 62 */ 63 #define fixup_get_svalue(msg, fp, sval) get_str_fparam(sval, msg, fp) 64 65 /** get an int value out of a fparam_t. 66 * 67 * Note: this macro/function is for kamailio compatibility 68 * (please use get_int_fparam() directly in the future) 69 * 70 * @param msg - pointer to the sip message 71 * @param fp - pointer to the fparam_t 72 * @param ival - pointer to str, used to store the result 73 * @return 0 on success, -1 on error 74 */ 75 #define fixup_get_ivalue(msg, fp, ival) get_int_fparam(ival, msg, fp) 76 77 int fixup_str_null(void** param, int param_no); 78 int fixup_str_str(void** param, int param_no); 79 80 int fixup_free_str_null(void** param, int param_no); 81 int fixup_free_str_str(void** param, int param_no); 82 83 int fixup_uint_null(void** param, int param_no); 84 int fixup_uint_uint(void** param, int param_no); 85 86 87 int fixup_regexp_null(void** param, int param_no); 88 int fixup_free_regexp_null(void** param, int param_no); 89 int fixup_regexp_regexp(void** param, int param_no); 90 int fixup_free_regexp_regexp(void** param, int param_no); 91 92 int fixup_pvar_null(void **param, int param_no); 93 int fixup_free_pvar_null(void** param, int param_no); 94 95 int fixup_pvar_none(void** param, int param_no); 96 int fixup_free_pvar_none(void** param, int param_no); 97 98 int fixup_pvar_pvar(void **param, int param_no); 99 int fixup_free_pvar_pvar(void** param, int param_no); 100 101 int fixup_pvar_pvar_pvar(void **param, int param_no); 102 int fixup_free_pvar_pvar_pvar(void** param, int param_no); 103 104 int fixup_pvar_str(void** param, int param_no); 105 int fixup_free_pvar_str(void** param, int param_no); 106 107 int fixup_pvar_str_str(void** param, int param_no); 108 int fixup_free_pvar_str_str(void** param, int param_no); 109 110 int fixup_pvar_uint(void** param, int param_no); 111 int fixup_free_pvar_uint(void** param, int param_no); 112 113 int fixup_igp_igp(void** param, int param_no); 114 int fixup_free_igp_igp(void** param, int param_no); 115 int fixup_igp_null(void** param, int param_no); 116 int fixup_free_igp_null(void** param, int param_no); 117 int fixup_get_ivalue(struct sip_msg* msg, gparam_p gp, int *val); 118 119 int fixup_igp_pvar(void** param, int param_no); 120 int fixup_free_igp_pvar(void** param, int param_no); 121 122 int fixup_igp_pvar_pvar(void** param, int param_no); 123 int fixup_free_igp_pvar_pvar(void** param, int param_no); 124 125 int fixup_igp_spve(void** param, int param_no); 126 int fixup_free_igp_spve(void** param, int param_no); 127 128 int fixup_pvar_all(void** param, int param_no); 129 int fixup_free_pvar_all(void** param, int param_no); 130 131 int fixup_spve_spve(void** param, int param_no); 132 int fixup_free_spve_spve(void** param, int param_no); 133 int fixup_spve_null(void** param, int param_no); 134 int fixup_free_spve_null(void** param, int param_no); 135 int fixup_spve_uint(void** param, int param_no); 136 int fixup_free_spve_uint(void** param, int param_no); 137 int fixup_spve_str(void** param, int param_no); 138 int fixup_free_spve_str(void** param, int param_no); 139 140 int fixup_spve_all(void** param, int param_no); 141 int fixup_free_spve_all(void** param, int param_no); 142 int fixup_igp_all(void** param, int param_no); 143 int fixup_free_igp_all(void** param, int param_no); 144 145 int fixup_spve_igp(void** param, int param_no); 146 int fixup_free_spve_igp(void** param, int param_no); 147 int fixup_spve_pvar(void** param, int param_no); 148 int fixup_free_spve_pvar(void** param, int param_no); 149 150 int fixup_spve_spve_igp(void** param, int param_no); 151 int fixup_free_spve_spve_igp(void** param, int param_no); 152 153 int fixup_none_spve(void** param, int param_no); 154 int fixup_free_none_spve(void** param, int param_no); 155 156 /** get the corresp. free fixup function.*/ 157 free_fixup_function mod_fix_get_fixup_free(fixup_function f); 158 159 int fixup_vstr_all(void** param, int param_no); 160 int fixup_free_vstr_all(void** param, int param_no); 161 int fixup_get_vstr_buf(sip_msg_t *msg, pv_elem_t *p, char *buf, int blen); 162 #endif 163