/*! \brief * @params: domain, AOR, contact/domain */ static int fixup_remove(void** param, int param_no) { switch (param_no) { case 1: return domain_fixup(param); case 2: return fixup_spve(param); case 3: return fixup_spve(param); default: LM_ERR("maximum 3 params! given at least %d\n", param_no); return E_INVALID_PARAMS; } }
/** * 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 */ static int route_fixup(void ** param, int param_no) { enum hash_source my_hash_source; 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)){ /* prefix matching */ /* rewrite user */ if (pv_fixup(param) < 0) { LM_ERR("cannot fixup parameter %d\n", param_no); return -1; } } else if (param_no == 5) { /* hash source */ if ((my_hash_source = hash_fixup((char *)*param)) == shs_error) { LM_ERR("invalid hash source\n"); return -1; } pkg_free(*param); *param = (void *)my_hash_source; } 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; }
static int ro_fixup(void **param, int param_no) { str s; unsigned int num; if (param_no > 0 && param_no <= 4) { return fixup_var_str_12(param, param_no); } else if (param_no == 5) { /*convert to int */ s.s = (char*)*param; s.len = strlen(s.s); if (str2int(&s, &num)==0) { pkg_free(*param); *param = (void*)(unsigned long)num; return 0; } LM_ERR("Bad reservation units: <%s>n", (char*)(*param)); return E_CFG; } else if (param_no == 6) { return domain_fixup(param); } return 0; }