Пример #1
0
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);
	}
}
Пример #2
0
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;
}
Пример #3
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);
	}
}
Пример #4
0
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());
	}
}
Пример #5
0
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;
}
Пример #6
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);
}