static OrtpZrtpContext* createUserData(ZrtpContext *context) { OrtpZrtpContext *userData=ortp_new0(OrtpZrtpContext,1); userData->zrtpContext=context; userData->timerWillTriggerAt=0; userData->last_recv_zrtp_seq_number=0; userData->last_sent_zrtp_seq_number=rand()+1; // INT_MAX+1 (signed) userData->srtpRecv=NULL; userData->srtpSend=NULL; ortp_mutex_init(&userData->mutex,NULL); memset(&userData->zrtp_cb,0,sizeof(userData->zrtp_cb)); userData->zrtp_cb.zrtp_activateTimer=&ozrtp_activateTimer; userData->zrtp_cb.zrtp_cancelTimer=&ozrtp_cancelTimer; userData->zrtp_cb.zrtp_handleGoClear=&ozrtp_handleGoClear; userData->zrtp_cb.zrtp_rtpSecretsOn=&ozrtp_rtpSecretsOn; userData->zrtp_cb.zrtp_sendDataZRTP=&ozrtp_sendDataZRTP; userData->zrtp_cb.zrtp_sendInfo=&ozrtp_sendInfo; userData->zrtp_cb.zrtp_srtpSecretsOff=&ozrtp_srtpSecretsOff; userData->zrtp_cb.zrtp_srtpSecretsReady=&ozrtp_srtpSecretsReady; userData->zrtp_cb.zrtp_synchEnter=&ozrtp_synchEnter; userData->zrtp_cb.zrtp_synchLeave=&ozrtp_synchLeave; userData->zrtp_cb.zrtp_zrtpNegotiationFailed=&ozrtp_zrtpNegotiationFailed; userData->zrtp_cb.zrtp_zrtpNotSuppOther=&ozrtp_zrtpNotSuppOther; return userData; }
/** * Creates a pair of Secure-RTP/Secure-RTCP RtpTransport's. * oRTP relies on libsrtp (see http://srtp.sf.net ) for secure RTP encryption. * This function creates a RtpTransport object to be used to the RtpSession using * rtp_session_set_transport(). * @srtp: the srtp_t session to be used * **/ int srtp_transport_new(srtp_t srtp, RtpTransport **rtpt, RtpTransport **rtcpt ){ if (rtpt) { (*rtpt)=ortp_new0(RtpTransport,1); (*rtpt)->data=srtp; (*rtpt)->t_getsocket=srtp_getsocket; (*rtpt)->t_sendto=srtp_sendto; (*rtpt)->t_recvfrom=srtp_recvfrom; } if (rtcpt) { (*rtcpt)=ortp_new0(RtpTransport,1); (*rtcpt)->data=srtp; (*rtcpt)->t_getsocket=srtcp_getsocket; (*rtcpt)->t_sendto=srtcp_sendto; (*rtcpt)->t_recvfrom=srtcp_recvfrom; } return 0; }
PayloadType *payload_type_clone(PayloadType *payload) { PayloadType *newpayload=(PayloadType *)ortp_new0(PayloadType,1); memcpy(newpayload,payload,sizeof(PayloadType)); newpayload->mime_type=ortp_strdup(payload->mime_type); if (payload->recv_fmtp!=NULL) { newpayload->recv_fmtp=ortp_strdup(payload->recv_fmtp); } if (payload->send_fmtp!=NULL){ newpayload->send_fmtp=ortp_strdup(payload->send_fmtp); } newpayload->flags|=PAYLOAD_TYPE_ALLOCATED; return newpayload; }
RtpProfile * rtp_profile_new(const char *name) { RtpProfile *prof=(RtpProfile*)ortp_new0(RtpProfile,1); rtp_profile_set_name(prof,name); return prof; }
PayloadType *payload_type_new() { PayloadType *newpayload=(PayloadType *)ortp_new0(PayloadType,1); newpayload->flags|=PAYLOAD_TYPE_ALLOCATED; return newpayload; }
OList *o_list_new(void *data){ OList *new_elem=(OList*)ortp_new0(OList,1); new_elem->data=data; return new_elem; }