static int fixup_get_info(void** param, int param_no) { pv_elem_t *model=NULL; pv_spec_t *sp; str s; int ret; if (param_no==1) { /* name of the dlg val to be returned */ return fixup_str(param); } else if (param_no==2) { /* var to store the dlg_val value */ ret = fixup_pvar(param); if (ret<0) return ret; sp = (pv_spec_t*)(*param); if (sp->type!=PVT_AVP && sp->type!=PVT_SCRIPTVAR) { LM_ERR("return must be an AVP or SCRIPT VAR!\n"); return E_SCRIPT; } } else if (param_no==3) { /* name of the dlg val to identify the dialog */ return fixup_str(param); } else if (param_no==4) { /* var to hold the value of the indeification dlg val */ s.s = (char*)*param; s.len = strlen(s.s); if(pv_parse_format(&s ,&model) || model==NULL) { LM_ERR("wrong format [%s] for value param!\n", s.s); return E_CFG; } *param = (void*)model; } return 0; }
static int fixup_diversion_params(void** param, int param_no) { if (param_no == 1) { /* diversion reason */ return fixup_str(param); } else if (param_no == 2) { /* diversion uri */ return fixup_spve(param); } else { /* diversion counter */ return fixup_uint(param); } }
static int fixup_dlg_fval(void** param, int param_no) { pv_spec_t *sp; int ret; if (param_no==1) { /* name of the value */ return fixup_str(param); } else if (param_no==2) { /* var to store the value */ ret = fixup_pvar(param); if (ret<0) return ret; sp = (pv_spec_t*)(*param); if (sp->type!=PVT_AVP && sp->type!=PVT_SCRIPTVAR) { LM_ERR("return must be an AVP or SCRIPT VAR!\n"); return E_SCRIPT; } } return 0; }
static int fixup_dlg_sval(void** param, int param_no) { pv_elem_t *model=NULL; str s; s.s = (char*)*param; s.len = strlen(s.s); if (param_no==1) { /* name of the value */ return fixup_str(param); } else if (param_no==2) { /* value */ if(pv_parse_format(&s ,&model) || model==NULL) { LM_ERR("wrong format [%s] for value param!\n", s.s); return E_CFG; } *param = (void*)model; } return 0; }