int pv_get_sr_version(sip_msg_t *msg, pv_param_t *param, pv_value_t *res) { if(param==NULL) return -1; switch(param->pvn.u.isname.name.n) { case 1: return pv_get_strzval(msg, param, res, (char*)full_version); case 2: return pv_get_strzval(msg, param, res, (char*)ver_id); default: return pv_get_strzval(msg, param, res, (char*)ver_version); } }
static int sipt_get_redirection_number(struct sip_msg *msg, pv_param_t *param, pv_value_t *res) { static char sb_s_buf[26]; str body; body.s = get_body_part(msg, TYPE_APPLICATION,SUBTYPE_ISUP,&body.len); if(body.s == NULL) { LM_INFO("No ISUP Message Found"); return -1; } if((body.s[0] != ISUP_ACM) && (body.s[0] != ISUP_CPG)) { LM_DBG("message not an ACM or CPG\n"); return -1; } isup_get_redirection_number((unsigned char*)body.s, body.len, sb_s_buf); if (strlen(sb_s_buf) > 0) { pv_get_strzval(msg, param, res, sb_s_buf); } else { pv_get_sintval(msg, param, res, -1); } return 0; }
int pv_get_phonenum(struct sip_msg *msg, pv_param_t *param, pv_value_t *res) { phonenum_pv_t *gpv; if(msg == NULL || param == NULL) return -1; gpv = (phonenum_pv_t *)param->pvn.u.dname; if(gpv == NULL) return -1; if(gpv->item == NULL) return pv_get_null(msg, param, res); if(gpv->item->r.record==NULL) return pv_get_null(msg, param, res); switch(gpv->type) { case 1: /* normalized */ if(gpv->item->r.record->normalized==NULL) return pv_get_null(msg, param, res); return pv_get_strzval(msg, param, res, gpv->item->r.record->normalized); case 2: /* ltype */ if(gpv->item->r.record->ltype==NULL) return pv_get_null(msg, param, res); return pv_get_strzval(msg, param, res, gpv->item->r.record->ltype); case 3: /* ndesc */ if(gpv->item->r.record->ndesc==NULL) return pv_get_null(msg, param, res); return pv_get_strzval(msg, param, res, gpv->item->r.record->ndesc); case 4: /* error */ if(gpv->item->r.record->error==NULL) return pv_get_null(msg, param, res); return pv_get_strzval(msg, param, res, gpv->item->r.record->error); case 5: /* cctel */ return pv_get_sintval(msg, param, res, gpv->item->r.record->cctel); case 6: /* valid */ return pv_get_sintval(msg, param, res, gpv->item->r.record->valid); default: /* number */ if(gpv->item->r.record->number==NULL) return pv_get_null(msg, param, res); return pv_get_strzval(msg, param, res, gpv->item->r.record->number); } }
int pv_get_cfg(sip_msg_t *msg, pv_param_t *param, pv_value_t *res) { char *n; if(param==NULL) return -1; switch(param->pvn.u.isname.name.n) { case 1: n = get_cfg_crt_name(); if(n==0) return pv_get_null(msg, param, res); return pv_get_strzval(msg, param, res, n); default: return pv_get_sintval(msg, param, res, get_cfg_crt_line()); } }
int pv_get_evapi(sip_msg_t *msg, pv_param_t *param, pv_value_t *res) { evapi_env_t *evenv; if(param==NULL || res==NULL) return -1; evenv = (evapi_env_t*)msg->date; if(evenv==NULL || evenv->conidx<0 || evenv->conidx>=EVAPI_MAX_CLIENTS) return pv_get_null(msg, param, res); if(_evapi_clients[evenv->conidx].connected==0 && _evapi_clients[evenv->conidx].sock <= 0) return pv_get_null(msg, param, res); switch(param->pvn.u.isname.name.n) { case 0: return pv_get_sintval(msg, param, res, evenv->conidx); case 1: if(evenv->msg.s==NULL) return pv_get_null(msg, param, res); return pv_get_strval(msg, param, res, &evenv->msg); case 2: return pv_get_strzval(msg, param, res, _evapi_clients[evenv->conidx].src_addr); case 3: return pv_get_sintval(msg, param, res, _evapi_clients[evenv->conidx].src_port); default: return pv_get_null(msg, param, res); } return 0; }
int nsq_pv_get_event_payload(struct sip_msg *msg, pv_param_t *param, pv_value_t *res) { return eventData == NULL ? pv_get_null(msg, param, res) : pv_get_strzval(msg, param, res, eventData); }