Esempio n. 1
0
void ims_pm_init(str node_name,char* type, char *file_name)
{
	log_prefix.len = 1+strlen(type)+1+node_name.len+1;
	log_prefix.s = pkg_malloc(log_prefix.len);
	if (!log_prefix.s) {
		LOG(L_ERR,"ERR:"M_NAME":ims_pm_init(): Error alocating %d bytes\n",log_prefix.len);
		log_prefix.len=0;
		return;
	}
	log_prefix.len=0;
	
	log_prefix.s[log_prefix.len++]=',';
	
	memcpy(log_prefix.s+log_prefix.len,type,strlen(type));			
	log_prefix.len+=strlen(type);
	
	log_prefix.s[log_prefix.len++]=',';
	
	memcpy(log_prefix.s+log_prefix.len,node_name.s,node_name.len);
	log_prefix.len+=node_name.len;
	
	log_prefix.s[log_prefix.len++]=',';
	
	fd_log = open(file_name,O_WRONLY|O_APPEND|O_CREAT|O_NONBLOCK);
	if (fd_log<0){
		LOG(L_ERR,"ERR:"M_NAME":ims_pm_init(): Error opening fd logger file %s : %s\n",file_name,strerror(errno));
		fd_log = 0;
		return;		
	}
	f_log = fdopen(fd_log,"a");	
	if (!f_log){
		LOG(L_ERR,"ERR:"M_NAME":ims_pm_init(): Error opening logger file %s : %s\n",file_name,strerror(errno));
		close(fd_log);
		fd_log=0;
		return;
	}
	
	log_header.len = strlen(log_header.s);
	
	if (write(fd_log,log_header.s,log_header.len)<0){
		LOG(L_ERR,"ERR:"M_NAME":ims_pm_init(): Error writing to IMS PM log file: %s\n",strerror(errno));
	}
	IMS_PM_LOG(OP_NodeStart);	
	
}
Esempio n. 2
0
void ims_pm_destroy()
{
	IMS_PM_LOG(OP_NodeStop);	
	if (fd_log) close(fd_log);
}
Esempio n. 3
0
int r_send_third_party_reg(r_third_party_registration *r,int expires)
{
        str h={0,0};
        str b={0,0};

        LOG(L_DBG,"DBG:"M_NAME":r_send_third_party_reg: REGISTER to <%.*s>\n",
                r->req_uri.len,r->req_uri.s);

        h.len = event_hdr.len+max_fwds_hdr.len;
        h.len += expires_s.len + 12 + expires_e.len;

        h.len += contact_s.len + isc_my_uri_sip.len + contact_e.len;

        if (r->pvni.len) h.len += p_visited_network_id_s.len +
                p_visited_network_id_e.len + r->pvni.len;

        if (r->pani.len) h.len += p_access_network_info_s.len +
                p_access_network_info_e.len + r->pani.len;

        if (r->cv.len) h.len += p_charging_vector_s.len +
                p_charging_vector_e.len + r->cv.len;

        h.s = pkg_malloc(h.len);
        if (!h.s){
			LOG(L_ERR,"ERR:"M_NAME":r_send_third_party_reg: Error allocating %d bytes\n",h.len);
			h.len = 0;
            return 0;
        }

        h.len = 0;
        STR_APPEND(h,event_hdr);
        
        STR_APPEND(h,max_fwds_hdr);

        STR_APPEND(h,expires_s);
        sprintf(h.s+h.len,"%d",expires);
        h.len += strlen(h.s+h.len);
        STR_APPEND(h,expires_e);

        STR_APPEND(h,contact_s);
        STR_APPEND(h,isc_my_uri_sip);
        STR_APPEND(h,contact_e);

        if (r->pvni.len) {
                STR_APPEND(h,p_visited_network_id_s);
                STR_APPEND(h,r->pvni);
                STR_APPEND(h,p_visited_network_id_e);
        }

        if (r->pani.len) {
                STR_APPEND(h,p_access_network_info_s);
                STR_APPEND(h,r->pani);
                STR_APPEND(h,p_access_network_info_e);
        }

        if (r->cv.len) {
                STR_APPEND(h,p_charging_vector_s);
                STR_APPEND(h,r->cv);
                STR_APPEND(h,p_charging_vector_e);
        }
        LOG(L_CRIT,"SRV INFO:<%.*s>\n",r->service_info.len, r->service_info.s);
		if (r->service_info.len){
			b.len = body_s.len+r->service_info.len+body_e.len;
	        b.s = pkg_malloc(b.len);
	        if (!b.s){
				LOG(L_ERR,"ERR:"M_NAME":r_send_third_party_reg: Error allocating %d bytes\n",b.len);
				b.len = 0;
	            return 0;
	        }
	
	        b.len = 0;
	        STR_APPEND(b,body_s);
	        STR_APPEND(b,r->service_info);	        
	        STR_APPEND(b,body_e);	        
		}
		

        if (isc_tmb.t_request(&method, &(r->req_uri), &(r->to), &(r->from), &h, &b, 0,
                 r_third_party_reg_response, &(r->req_uri))<0)
        {
                LOG(L_ERR,"ERR:"M_NAME":r_send_third_party_reg: Error sending in transaction\n");
                goto error;
        }
		#ifdef WITH_IMS_PM
			IMS_PM_LOG(UR_Att3rdPartyReg);
		#endif
        if (h.s) pkg_free(h.s);
        return 1;

error:
        if (h.s) pkg_free(h.s);
        return 0;
}