rem: str* _callid, int _cseq, int _rep, ucontact_t** _c)
add: str* _callid, int _cseq, int _rep, unsigned int _fl, ucontact_t** _c)
context: int new_ucontact(str* _dom, str* _aor, str* _contact, time_t _e, float _q,		 str* _callid, int _cseq, int _rep, ucontact_t** _c){	*_c = (ucontact_t*)shm_malloc(sizeof(ucontact_t));	if (!(*_c)) {	        LOG(L_ERR, "new_ucontact(): No memory left\n");		return -1;	}	(*_c)->domain = _dom;	(*_c)->aor = _aor;	(*_c)->c.s = (char*)shm_malloc(_contact->len);	if ((*_c)->c.s == 0) {		LOG(L_ERR, "new_ucontact(): No memory left 2\n");		shm_free(*_c);		return -2;	}	memcpy((*_c)->c.s, _contact->s, _contact->len);	(*_c)->c.len = _contact->len;	(*_c)->expires = _e;	(*_c)->q = _q;	(*_c)->callid.s = (char*)shm_malloc(_callid->len);	if ((*_c)->callid.s == 0) {		LOG(L_ERR, "new_ucontact(): No memory left 4\n");		shm_free((*_c)->c.s);		shm_free(*_c);		return -4;	}	memcpy((*_c)->callid.s, _callid->s, _callid->len);	(*_c)->callid.len = _callid->len;	(*_c)->cseq = _cseq;	(*_c)->replicate = _rep;	(*_c)->next = 0;	(*_c)->prev = 0;	(*_c)->state = CS_NEW;		return 0;}	