static int fixup_pl_check3(void** param, int param_no) { if(param_no==1) return fixup_spve_null(param, 1); if(param_no==2) return fixup_spve_null(param, 1); if(param_no==3) return fixup_igp_null(param, 1); return 0; }
static int fixup_presxml_check(void **param, int param_no) { if(param_no == 1) { return fixup_spve_null(param, 1); } else if(param_no == 2) { return fixup_spve_null(param, 1); } return 0; }
int fixup_update_subs(void** param, int param_no) { if (param_no == 1) { return fixup_spve_null(param, 1); } else if (param_no == 2) { return fixup_spve_null(param, 1); } return 0; }
static int fixup_has_subscribers(void** param, int param_no) { if(param_no==1) { return fixup_spve_null(param, 1); } else if(param_no==2) { return fixup_spve_null(param, 1); } return 0; }
/*! \brief * Convert char* parameter to udomain_t* pointer * Convert char* parameter to pv_elem_t* pointer */ static int unreg_fixup(void** param, int param_no) { if (param_no == 1) { return domain_fixup(param, 1); } else if (param_no == 2) { return fixup_spve_null(param, 1); } else if (param_no == 3) { return fixup_spve_null(param, 1); } return 0; }
static int fixup_core_hash(void **param, int param_no) { if (param_no == 1) return fixup_spve_null(param, 1); else if (param_no == 2) return fixup_spve_null(param, 1); else if (param_no == 3) return fixup_igp_null(param, 1); else return 0; }
static int fixup_xhttp_reply(void** param, int param_no) { if (param_no == 1) { return fixup_igp_null(param, 1); } else if (param_no == 2) { return fixup_spve_null(param, 1); } else if (param_no == 3) { return fixup_spve_null(param, 1); } else if (param_no == 4) { return fixup_spve_null(param, 1); } return 0; }
/* * Convert the char* parameters */ static int challenge_fixup_async(void** param, int param_no) { if (strlen((char*) *param) <= 0) { LM_ERR("empty parameter %d not allowed\n", param_no); return -1; } if (param_no == 1) { //route name - static or dynamic string (config vars) if (fixup_spve_null(param, param_no) < 0) return -1; return 0; } else if (param_no == 2) { if (fixup_var_str_12(param, 1) == -1) { LM_ERR("Error doing fixup on challenge"); return -1; } } else if (param_no == 3) /* algorithm */ { if (fixup_var_str_12(param, 1) == -1) { LM_ERR("Error doing fixup on challenge"); return -1; } } return 0; }
/** * fixes the module functions' parameters, i.e. it maps * the routing domain names to numbers for faster access * at runtime * * @param param the parameter * @param param_no the number of the parameter * * @return 0 on success, -1 on failure */ int cr_load_next_domain_fixup(void ** param, int param_no) { if (param_no == 1) { /* carrier */ if (carrier_fixup(param) < 0) { LM_ERR("cannot fixup parameter %d\n", param_no); return -1; } } else if (param_no == 2) { /* domain */ if (domain_fixup(param) < 0) { LM_ERR("cannot fixup parameter %d\n", param_no); return -1; } } else if ((param_no == 3) || (param_no == 4) || (param_no == 5)) { /* prefix matching, host, reply code */ if (fixup_spve_null(param, 1) != 0) { LM_ERR("cannot fixup parameter %d\n", param_no); return -1; } } else if (param_no == 6) { /* destination avp name */ if (avp_name_fixup(param) < 0) { LM_ERR("cannot fixup parameter %d\n", param_no); return -1; } } return 0; }
int fixup_cmd_erlang_rex(void** param, int param_no){ if (param_no <= 3) return fixup_spve_null(param, 1); if (param_no == 5) { return fixup_pvar_null(param, 1); } if (param_no == 4) { pv_elem_t *model=NULL; str s; s.s = (char*)(*param); s.len = strlen(s.s); if(s.len==0) { LM_ERR("cmd_erlang_rex: param %d is empty string! please use erlang empty list [].\n", param_no); return -1; } if(pv_parse_format(&s ,&model) || model==NULL) { LM_ERR("cmd_erlang_rex: wrong format [%s] for value param!\n", s.s); return -1; } *param = (void*)model; return 0; } LM_ERR("erlang_rex takes exactly 5 parameters.\n"); return -1; }
/* * Fix curl_connect params when posting (5 parameters): * connection (string/pvar), url (string with pvars), content-type, * data (string/pvar, pvar) */ static int fixup_curl_connect_post(void** param, int param_no) { if (param_no == 1 || param_no == 3) { /* We want char * strings */ return 0; } /* URL and data may contain pvar */ if (param_no == 2 || param_no == 4) { return fixup_spve_null(param, 1); } if (param_no == 5) { if (fixup_pvar_null(param, 1) != 0) { LM_ERR("failed to fixup result pseudo variable\n"); return -1; } if (((pv_spec_t *)(*param))->setf == NULL) { LM_ERR("result pvar is not writeable\n"); return -1; } return 0; } LM_ERR("invalid parameter number <%d>\n", param_no); return -1; }
/*! \brief * Fixup for "save" function - both domain and flags */ static int save_fixup(void** param, int param_no) { unsigned int flags; str s; if (param_no == 1) { return domain_fixup(param,param_no); } else if (param_no == 2) { s.s = (char*)*param; s.len = strlen(s.s); flags = 0; if ( (strno2int(&s, &flags )<0) || (flags>REG_SAVE_ALL_FL) ) { LM_ERR("bad flags <%s>\n", (char *)(*param)); return E_CFG; } if (ul.db_mode==DB_ONLY && flags®_SAVE_MEM_FL) { LM_ERR("MEM flag set while using the DB_ONLY mode in USRLOC\n"); return E_CFG; } pkg_free(*param); *param = (void*)(unsigned long int)flags; } else if (param_no == 3) { return fixup_spve_null(param, 1); } return 0; }
static int fixup_dlg_refer(void** param, int param_no) { char *val; int n = 0; if (param_no==1) { val = (char*)*param; if (strcasecmp(val,"caller")==0) { n = 1; } else if (strcasecmp(val,"callee")==0) { n = 2; } else { LM_ERR("invalid param \"%s\"\n", val); return E_CFG; } pkg_free(*param); *param=(void*)(long)n; } else if (param_no==2) { return fixup_spve_null(param, 1); } else { LM_ERR("called with parameter idx %d\n", param_no); return E_BUG; } return 0; }
/** * fixup for w_pres_refresh_watchers */ static int fixup_refresh_watchers(void** param, int param_no) { if(param_no==1) { return fixup_spve_null(param, 1); } else if(param_no==2) { return fixup_spve_null(param, 1); } else if(param_no==3) { return fixup_igp_null(param, 1); } else if(param_no==4) { return fixup_spve_null(param, 1); } else if(param_no==5) { return fixup_spve_null(param, 1); } return 0; }
/* * Convert the char* parameters */ static int auth_fixup(void** param, int param_no) { db_con_t* dbh = NULL; str name; if (param_no == 1) { return fixup_spve_null(param, 1); } else if (param_no == 2) { name.s = (char*)*param; name.len = strlen(name.s); dbh = auth_dbf.init(&db_url); if (!dbh) { LM_ERR("unable to open database connection\n"); return -1; } if(skip_version_check == 0 && db_check_table_version(&auth_dbf, dbh, &name, TABLE_VERSION) < 0) { LM_ERR("error during table version check.\n"); auth_dbf.close(dbh); return -1; } } auth_dbf.close(dbh); return 0; }
static int exec_avp_fixup(void** param, int param_no) { pvname_list_t *anlist = NULL; str s; s.s = (char*)(*param); if (param_no==1) { if(s.s==NULL) { LM_ERR("null format in P%d\n", param_no); return E_UNSPEC; } return fixup_spve_null(param, 1); } else if(param_no==2) { if(s.s==NULL) { LM_ERR("null format in P%d\n", param_no); return E_UNSPEC; } s.len = strlen(s.s); anlist = parse_pvname_list(&s, PVT_AVP); if(anlist==NULL) { LM_ERR("bad format in P%d [%s]\n", param_no, s.s); return E_UNSPEC; } *param = (void*)anlist; return 0; } return 0; }
static int fixup_notification(void** param, int param_no) { if (param_no <= 2) { return fixup_spve_null(param, 1); } LM_ERR("jsonrpc_notification takes exactly 2 parameters.\n"); return -1; }
static int fixup_dlg_remote_profile(void** param, int param_no) { if(param_no>=1 && param_no<=4) return fixup_spve_null(param, 1); if(param_no==5) return fixup_igp_null(param, 1); return 0; }
int fixup_spve_spve_igp(void** param, int param_no) { if(param_no==1 || param_no==2) return fixup_spve_null(param, 1); if(param_no==3) return fixup_igp_null(param, 1); return E_UNSPEC; }
int fixup_spve_pvar(void** param, int param_no) { if(param_no==1) return fixup_spve_null(param, 1); if(param_no==2) return fixup_pvar_null(param, 1); return E_UNSPEC; }
static int fixup_translate(void** param, int param_no) { if(param_no==1) return fixup_spve_null(param, 1); if(param_no==2) return fixup_igp_null(param, 1); return 0; }
static int fixup_ds_is_from_list(void** param, int param_no) { if(param_no==1 || param_no==2) return fixup_igp_null(param, 1); if(param_no==3) return fixup_spve_null(param, 1); return 0; }
static int fixup_mq_add(void** param, int param_no) { if(param_no==1 || param_no==2 || param_no==3) { return fixup_spve_null(param, 1); } LM_ERR("invalid parameter number %d\n", param_no); return E_UNSPEC; }
static int fixup_cpl_run_script3(void** param, int param_no) { if (param_no==1 || param_no==2) { return fixup_cpl_run_script(param, param_no); } else if (param_no==2) { return fixup_spve_null(param, 1); } return 0; }
static int fixup_request(void** param, int param_no) { if (param_no <= 4) { return fixup_spve_null(param, 1); } else if (param_no == 5) { return fixup_pvar_null(param, 1); } LM_ERR("jsonrpc_request takes exactly 5 parameters.\n"); return -1; }
static int fixup_dlg_bridge(void** param, int param_no) { if (param_no>=1 && param_no<=3) { return fixup_spve_null(param, 1); } else { LM_ERR("called with parameter idx %d\n", param_no); return E_BUG; } return 0; }
static int fixup_cancel_callid(void** param, int param_no) { if (param_no==1 || param_no==2) { return fixup_spve_null(param, 1); } if (param_no==3) { return fixup_igp_null(param, 1); } return 0; }
static int fixup_reply_callid(void** param, int param_no) { if (param_no==1 || param_no==2 || param_no==4) { return fixup_spve_null(param, 1); } if (param_no==3 || param_no==4) { return fixup_igp_null(param, 1); } return 0; }
static int fixup_allow_address(void** param, int param_no) { if(param_no==1) return fixup_igp_null(param, 1); if(param_no==2) return fixup_spve_null(param, 1); if(param_no==3) return fixup_igp_null(param, 1); return 0; }
static int fixup_mt_match(void** param, int param_no) { if(param_no==1 || param_no==2) { return fixup_spve_null(param, 1); } if (param_no != 3) { LM_ERR("invalid parameter number %d\n", param_no); return E_UNSPEC; } return fixup_igp_null(param, 1); }