mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-01-28 16:49:20 +00:00
enable ice with tunnel
This commit is contained in:
parent
551cb17583
commit
d7437ef1f5
11 changed files with 101 additions and 74 deletions
|
|
@ -16,9 +16,6 @@
|
|||
#include "ortp/rtpsession.h"
|
||||
#include "linphonecore.h"
|
||||
#include "linphonecore_utils.h"
|
||||
#ifndef USE_BELLESIP
|
||||
#include "eXosip2/eXosip_transport_hook.h"
|
||||
#endif
|
||||
#include "private.h"
|
||||
|
||||
#ifdef ANDROID
|
||||
|
|
@ -97,7 +94,7 @@ RtpTransport *TunnelManager::createRtpTransport(int port){
|
|||
|
||||
void TunnelManager::startClient() {
|
||||
ms_message("TunnelManager: Starting tunnel client");
|
||||
mTunnelClient = new TunnelClient();
|
||||
mTunnelClient = new TunnelClient(TRUE);
|
||||
mTunnelClient->setCallback((TunnelClientController::StateCallback)tunnelCallback,this);
|
||||
list<ServerAddr>::iterator it;
|
||||
for(it=mServerAddrs.begin();it!=mServerAddrs.end();++it){
|
||||
|
|
@ -122,18 +119,16 @@ int TunnelManager::customSendto(struct _RtpTransport *t, mblk_t *msg , int flags
|
|||
}
|
||||
|
||||
int TunnelManager::customRecvfrom(struct _RtpTransport *t, mblk_t *msg, int flags, struct sockaddr *from, socklen_t *fromlen){
|
||||
memset(&msg->recv_addr,0,sizeof(msg->recv_addr));
|
||||
int err=((TunnelSocket*)t->data)->recvfrom(msg->b_wptr,msg->b_datap->db_lim-msg->b_datap->db_base,from,*fromlen);
|
||||
//to make ice happy
|
||||
inet_aton(((TunnelManager*)((TunnelSocket*)t->data)->getUserPointer())->mLocalAddr,&msg->recv_addr.addr.ipi_addr);
|
||||
if (err>0) return err;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
TunnelManager::TunnelManager(LinphoneCore* lc) :
|
||||
mCore(lc),
|
||||
#ifndef USE_BELLESIP
|
||||
mSipSocket(NULL),
|
||||
mExosipTransport(NULL),
|
||||
#endif
|
||||
mMode(LinphoneTunnelModeDisable),
|
||||
mState(disabled),
|
||||
mTunnelizeSipPackets(true),
|
||||
|
|
@ -153,6 +148,7 @@ TunnelManager::TunnelManager(LinphoneCore* lc) :
|
|||
mVTable = linphone_core_v_table_new();
|
||||
mVTable->network_reachable = networkReachableCb;
|
||||
linphone_core_add_listener(mCore, mVTable);
|
||||
linphone_core_get_local_ip_for(AF_INET, NULL, mLocalAddr);
|
||||
}
|
||||
|
||||
TunnelManager::~TunnelManager(){
|
||||
|
|
@ -371,6 +367,7 @@ void TunnelManager::networkReachableCb(LinphoneCore *lc, bool_t reachable) {
|
|||
tunnel->startAutoDetection();
|
||||
tunnel->mState = autodetecting;
|
||||
}
|
||||
linphone_core_get_local_ip_for(AF_INET, NULL,tunnel->mLocalAddr);
|
||||
}
|
||||
|
||||
bool TunnelManager::startAutoDetection() {
|
||||
|
|
|
|||
|
|
@ -200,6 +200,7 @@ namespace belledonnecomm {
|
|||
LinphoneRtpTransportFactories mTransportFactories;
|
||||
Mutex mMutex;
|
||||
std::queue<Event> mEvq;
|
||||
char mLocalAddr[64];
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -321,7 +321,7 @@ static void call_received(SalOp *h){
|
|||
linphone_core_add_call(lc,call);
|
||||
linphone_call_ref(call); /*prevent the call from being destroyed while we are notifying, if the user declines within the state callback */
|
||||
|
||||
if ((_linphone_core_get_firewall_policy(lc) == LinphonePolicyUseIce) && (call->ice_session != NULL)) {
|
||||
if ((linphone_core_get_firewall_policy(lc) == LinphonePolicyUseIce) && (call->ice_session != NULL)) {
|
||||
/* Defer ringing until the end of the ICE candidates gathering process. */
|
||||
ms_message("Defer ringing to gather ICE candidates");
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -698,7 +698,7 @@ static void linphone_call_get_local_ip(LinphoneCall *call, const LinphoneAddress
|
|||
}
|
||||
if (res != NULL) freeaddrinfo(res);
|
||||
}
|
||||
if (_linphone_core_get_firewall_policy(call->core)==LinphonePolicyUseNatAddress
|
||||
if (linphone_core_get_firewall_policy(call->core)==LinphonePolicyUseNatAddress
|
||||
&& (ip=linphone_core_get_nat_address_resolved(call->core))!=NULL){
|
||||
strncpy(call->localip,ip,LINPHONE_IPADDR_SIZE);
|
||||
return;
|
||||
|
|
@ -735,11 +735,11 @@ LinphoneCall * linphone_call_new_outgoing(struct _LinphoneCore *lc, LinphoneAddr
|
|||
linphone_call_init_common(call,from,to);
|
||||
call->params = linphone_call_params_copy(params);
|
||||
|
||||
if (_linphone_core_get_firewall_policy(call->core) == LinphonePolicyUseIce) {
|
||||
if (linphone_core_get_firewall_policy(call->core) == LinphonePolicyUseIce) {
|
||||
call->ice_session = ice_session_new();
|
||||
ice_session_set_role(call->ice_session, IR_Controlling);
|
||||
}
|
||||
if (_linphone_core_get_firewall_policy(call->core) == LinphonePolicyUseStun) {
|
||||
if (linphone_core_get_firewall_policy(call->core) == LinphonePolicyUseStun) {
|
||||
call->ping_time=linphone_core_run_stun_tests(call->core,call);
|
||||
}
|
||||
#ifdef BUILD_UPNP
|
||||
|
|
@ -841,7 +841,7 @@ LinphoneCall * linphone_call_new_incoming(LinphoneCore *lc, LinphoneAddress *fro
|
|||
// In this case WE chose the media parameters according to policy.
|
||||
linphone_call_set_compatible_incoming_call_parameters(call, md);
|
||||
}
|
||||
fpol=_linphone_core_get_firewall_policy(call->core);
|
||||
fpol=linphone_core_get_firewall_policy(call->core);
|
||||
/*create the ice session now if ICE is required*/
|
||||
if (fpol==LinphonePolicyUseIce){
|
||||
if (md){
|
||||
|
|
@ -1557,7 +1557,7 @@ static void port_config_set_random_choosed(LinphoneCall *call, int stream_index,
|
|||
|
||||
static void _linphone_call_prepare_ice_for_stream(LinphoneCall *call, int stream_index, bool_t create_checklist){
|
||||
MediaStream *ms=stream_index == 0 ? (MediaStream*)call->audiostream : (MediaStream*)call->videostream;
|
||||
if ((_linphone_core_get_firewall_policy(call->core) == LinphonePolicyUseIce) && (call->ice_session != NULL)){
|
||||
if ((linphone_core_get_firewall_policy(call->core) == LinphonePolicyUseIce) && (call->ice_session != NULL)){
|
||||
IceCheckList *cl;
|
||||
rtp_session_set_pktinfo(ms->sessions.rtp_session, TRUE);
|
||||
rtp_session_set_symmetric_rtp(ms->sessions.rtp_session, FALSE);
|
||||
|
|
@ -1578,7 +1578,7 @@ int linphone_call_prepare_ice(LinphoneCall *call, bool_t incoming_offer){
|
|||
SalMediaDescription *remote = NULL;
|
||||
bool_t has_video=FALSE;
|
||||
|
||||
if ((_linphone_core_get_firewall_policy(call->core) == LinphonePolicyUseIce) && (call->ice_session != NULL)){
|
||||
if ((linphone_core_get_firewall_policy(call->core) == LinphonePolicyUseIce) && (call->ice_session != NULL)){
|
||||
if (incoming_offer){
|
||||
remote=sal_call_get_remote_media_description(call->op);
|
||||
has_video=call->params->has_video && linphone_core_media_description_contains_video_stream(remote);
|
||||
|
|
@ -1699,13 +1699,16 @@ void linphone_call_init_audio_stream(LinphoneCall *call){
|
|||
audio_stream_set_features(audiostream,linphone_core_get_audio_features(lc));
|
||||
|
||||
if (lc->rtptf){
|
||||
RtpTransport *artp=lc->rtptf->audio_rtp_func(lc->rtptf->audio_rtp_func_data, call->media_ports[0].rtp_port);
|
||||
RtpTransport *artcp=lc->rtptf->audio_rtcp_func(lc->rtptf->audio_rtcp_func_data, call->media_ports[0].rtcp_port);
|
||||
RtpTransport *meta_rtp;
|
||||
RtpTransport *meta_rtcp;
|
||||
meta_rtp_transport_new(&meta_rtp,TRUE,artp, 0);
|
||||
meta_rtp_transport_new(&meta_rtcp,FALSE,artcp, 0);
|
||||
rtp_session_set_transports(audiostream->ms.sessions.rtp_session,meta_rtp,meta_rtcp);
|
||||
|
||||
rtp_session_get_transports(audiostream->ms.sessions.rtp_session,&meta_rtp,&meta_rtcp);
|
||||
if (meta_rtp_transport_get_endpoint(meta_rtp) == NULL) {
|
||||
meta_rtp_transport_set_endpoint(meta_rtp,lc->rtptf->audio_rtp_func(lc->rtptf->audio_rtp_func_data, call->media_ports[0].rtp_port));
|
||||
}
|
||||
if (meta_rtp_transport_get_endpoint(meta_rtcp) == NULL) {
|
||||
meta_rtp_transport_set_endpoint(meta_rtcp,lc->rtptf->audio_rtcp_func(lc->rtptf->audio_rtcp_func_data, call->media_ports[0].rtcp_port));
|
||||
}
|
||||
}
|
||||
|
||||
call->audiostream_app_evq = ortp_ev_queue_new();
|
||||
|
|
@ -1748,13 +1751,16 @@ void linphone_call_init_video_stream(LinphoneCall *call){
|
|||
video_stream_set_display_filter_name(call->videostream,display_filter);
|
||||
video_stream_set_event_callback(call->videostream,video_stream_event_cb, call);
|
||||
if (lc->rtptf){
|
||||
RtpTransport *vrtp=lc->rtptf->video_rtp_func(lc->rtptf->video_rtp_func_data, call->media_ports[1].rtp_port);
|
||||
RtpTransport *vrtcp=lc->rtptf->video_rtcp_func(lc->rtptf->video_rtcp_func_data, call->media_ports[1].rtcp_port);
|
||||
RtpTransport *meta_rtp;
|
||||
RtpTransport *meta_rtcp;
|
||||
meta_rtp_transport_new(&meta_rtp,TRUE,vrtp, 0);
|
||||
meta_rtp_transport_new(&meta_rtcp,FALSE,vrtcp, 0);
|
||||
rtp_session_set_transports(call->videostream->ms.sessions.rtp_session,meta_rtp,meta_rtcp);
|
||||
|
||||
rtp_session_get_transports(call->videostream->ms.sessions.rtp_session,&meta_rtp,&meta_rtcp);
|
||||
if (meta_rtp_transport_get_endpoint(meta_rtp) == NULL) {
|
||||
meta_rtp_transport_set_endpoint(meta_rtp,lc->rtptf->video_rtp_func(lc->rtptf->video_rtp_func_data, call->media_ports[1].rtp_port));
|
||||
}
|
||||
if (meta_rtp_transport_get_endpoint(meta_rtcp) == NULL) {
|
||||
meta_rtp_transport_set_endpoint(meta_rtcp,lc->rtptf->video_rtcp_func(lc->rtptf->video_rtcp_func_data, call->media_ports[1].rtcp_port));
|
||||
}
|
||||
}
|
||||
call->videostream_app_evq = ortp_ev_queue_new();
|
||||
rtp_session_register_event_queue(call->videostream->ms.sessions.rtp_session,call->videostream_app_evq);
|
||||
|
|
@ -3262,7 +3268,7 @@ static LinphoneAddress *get_fixed_contact(LinphoneCore *lc, LinphoneCall *call ,
|
|||
const char *localip=call->localip;
|
||||
|
||||
/* first use user's supplied ip address if asked*/
|
||||
if (_linphone_core_get_firewall_policy(lc)==LinphonePolicyUseNatAddress){
|
||||
if (linphone_core_get_firewall_policy(lc)==LinphonePolicyUseNatAddress){
|
||||
ctt=linphone_core_get_primary_contact_parsed(lc);
|
||||
linphone_address_set_domain(ctt,linphone_core_get_nat_address_resolved(lc));
|
||||
ret=ctt;
|
||||
|
|
|
|||
|
|
@ -3137,12 +3137,12 @@ LinphoneCall * linphone_core_invite_address_with_params(LinphoneCore *lc, const
|
|||
call->log->start_date_time=ms_time(NULL);
|
||||
linphone_call_init_media_streams(call);
|
||||
|
||||
if (_linphone_core_get_firewall_policy(call->core) == LinphonePolicyUseIce) {
|
||||
if (linphone_core_get_firewall_policy(call->core) == LinphonePolicyUseIce) {
|
||||
/* Defer the start of the call after the ICE gathering process. */
|
||||
if (linphone_call_prepare_ice(call,FALSE)==1)
|
||||
defer=TRUE;
|
||||
}
|
||||
else if (_linphone_core_get_firewall_policy(call->core) == LinphonePolicyUseUpnp) {
|
||||
else if (linphone_core_get_firewall_policy(call->core) == LinphonePolicyUseUpnp) {
|
||||
#ifdef BUILD_UPNP
|
||||
if (linphone_core_update_upnp(lc,call)<0) {
|
||||
/* uPnP port mappings failed, proceed with the call anyway. */
|
||||
|
|
@ -4965,23 +4965,8 @@ void linphone_core_set_firewall_policy(LinphoneCore *lc, LinphoneFirewallPolicy
|
|||
if (linphone_core_ready(lc))
|
||||
lp_config_set_string(lc->config,"net","firewall_policy",policy);
|
||||
}
|
||||
|
||||
LinphoneFirewallPolicy linphone_core_get_firewall_policy(const LinphoneCore *lc) {
|
||||
return _linphone_core_get_firewall_policy_with_lie(lc, FALSE);
|
||||
}
|
||||
|
||||
LinphoneFirewallPolicy _linphone_core_get_firewall_policy(const LinphoneCore *lc) {
|
||||
return _linphone_core_get_firewall_policy_with_lie(lc, TRUE);
|
||||
}
|
||||
|
||||
LinphoneFirewallPolicy _linphone_core_get_firewall_policy_with_lie(const LinphoneCore *lc, bool_t lie){
|
||||
LinphoneFirewallPolicy linphone_core_get_firewall_policy(const LinphoneCore *lc){
|
||||
const char *policy;
|
||||
if(lie) {
|
||||
LinphoneTunnel *tunnel = linphone_core_get_tunnel(lc);
|
||||
if(tunnel != NULL && linphone_tunnel_get_mode(tunnel)) {
|
||||
return LinphonePolicyNoFirewall;
|
||||
}
|
||||
}
|
||||
policy = lp_config_get_string(lc->config, "net", "firewall_policy", NULL);
|
||||
if ((policy == NULL) || (strcmp(policy, "0") == 0))
|
||||
return LinphonePolicyNoFirewall;
|
||||
|
|
|
|||
|
|
@ -298,20 +298,6 @@ void linphone_core_update_proxy_register(LinphoneCore *lc);
|
|||
void linphone_core_refresh_subscribes(LinphoneCore *lc);
|
||||
int linphone_core_abort_call(LinphoneCore *lc, LinphoneCall *call, const char *error);
|
||||
const char *linphone_core_get_nat_address_resolved(LinphoneCore *lc);
|
||||
/**
|
||||
* @brief Equivalent to _linphone_core_get_firewall_policy_with_lie(lc, TRUE)
|
||||
* @param lc LinphoneCore instance
|
||||
* @return Fairewall policy
|
||||
*/
|
||||
LinphoneFirewallPolicy _linphone_core_get_firewall_policy(const LinphoneCore *lc);
|
||||
/**
|
||||
* @brief Get the firwall policy which has been set.
|
||||
* @param lc Instance of LinphoneCore
|
||||
* @param lie If true, the configured firewall policy will be returned only if no tunnel are enabled.
|
||||
* Otherwise, NoFirewallPolicy value will be returned.
|
||||
* @return The firewall policy
|
||||
*/
|
||||
LinphoneFirewallPolicy _linphone_core_get_firewall_policy_with_lie(const LinphoneCore *lc, bool_t lie);
|
||||
|
||||
int linphone_proxy_config_send_publish(LinphoneProxyConfig *cfg, LinphonePresenceModel *presence);
|
||||
void linphone_proxy_config_set_state(LinphoneProxyConfig *cfg, LinphoneRegistrationState rstate, const char *message);
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit d2d7291eb0dece51a68dfd2b8d005618e945c73b
|
||||
Subproject commit 87cf71d765ae035ad5a1b6bdcaf2970410459c2d
|
||||
2
oRTP
2
oRTP
|
|
@ -1 +1 @@
|
|||
Subproject commit f4d6250a9de606025669f6caa6819c7d8d0cd77d
|
||||
Subproject commit 227f06f7256302404e29d2e2ab40dde00c5d1aca
|
||||
|
|
@ -32,7 +32,7 @@
|
|||
#endif
|
||||
|
||||
static void srtp_call(void);
|
||||
static void call_base(LinphoneMediaEncryption mode, bool_t enable_video,bool_t enable_relay,LinphoneFirewallPolicy policy);
|
||||
|
||||
static void disable_all_audio_codecs_except_one(LinphoneCore *lc, const char *mime, int rate);
|
||||
static char *create_filepath(const char *dir, const char *filename, const char *ext);
|
||||
|
||||
|
|
@ -1978,14 +1978,14 @@ static void simple_conference_with_ice(void) {
|
|||
}
|
||||
|
||||
static void srtp_call() {
|
||||
call_base(LinphoneMediaEncryptionSRTP,FALSE,FALSE,LinphonePolicyNoFirewall);
|
||||
call_base(LinphoneMediaEncryptionSRTP,FALSE,FALSE,LinphonePolicyNoFirewall,FALSE);
|
||||
}
|
||||
|
||||
static void zrtp_call() {
|
||||
call_base(LinphoneMediaEncryptionZRTP,FALSE,FALSE,LinphonePolicyNoFirewall);
|
||||
call_base(LinphoneMediaEncryptionZRTP,FALSE,FALSE,LinphonePolicyNoFirewall,FALSE);
|
||||
}
|
||||
static void zrtp_video_call() {
|
||||
call_base(LinphoneMediaEncryptionZRTP,TRUE,FALSE,LinphonePolicyNoFirewall);
|
||||
call_base(LinphoneMediaEncryptionZRTP,TRUE,FALSE,LinphonePolicyNoFirewall,FALSE);
|
||||
}
|
||||
|
||||
static void call_with_declined_srtp(void) {
|
||||
|
|
@ -2132,13 +2132,31 @@ end:
|
|||
}
|
||||
|
||||
|
||||
static void call_base(LinphoneMediaEncryption mode, bool_t enable_video,bool_t enable_relay,LinphoneFirewallPolicy policy) {
|
||||
void call_base(LinphoneMediaEncryption mode, bool_t enable_video,bool_t enable_relay,LinphoneFirewallPolicy policy,bool_t enable_tunnel) {
|
||||
LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc");
|
||||
LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc");
|
||||
if (enable_relay) {
|
||||
linphone_core_set_user_agent(marie->lc,"Natted Linphone",NULL);
|
||||
linphone_core_set_user_agent(pauline->lc,"Natted Linphone",NULL);
|
||||
}
|
||||
if (enable_tunnel) {
|
||||
int i;
|
||||
LinphoneTunnelConfig * tunnel_config = linphone_tunnel_config_new();
|
||||
linphone_tunnel_config_set_host(tunnel_config,"tunnel.linphone.org");
|
||||
linphone_tunnel_config_set_port(tunnel_config,443);
|
||||
linphone_tunnel_add_server(linphone_core_get_tunnel(marie->lc),tunnel_config);
|
||||
linphone_tunnel_enable_sip(linphone_core_get_tunnel(marie->lc),FALSE);
|
||||
linphone_tunnel_set_mode(linphone_core_get_tunnel(marie->lc),LinphoneTunnelModeEnable);
|
||||
for (i=0;i<10;i++) {
|
||||
if (linphone_tunnel_connected(linphone_core_get_tunnel(marie->lc))) {
|
||||
break;
|
||||
}
|
||||
linphone_core_iterate(marie->lc);
|
||||
ms_usleep(200000);
|
||||
}
|
||||
CU_ASSERT_TRUE(linphone_tunnel_connected(linphone_core_get_tunnel(marie->lc)));
|
||||
|
||||
}
|
||||
if (linphone_core_media_encryption_supported(marie->lc,mode)) {
|
||||
linphone_core_set_media_encryption(marie->lc,mode);
|
||||
linphone_core_set_media_encryption(pauline->lc,mode);
|
||||
|
|
@ -2172,7 +2190,7 @@ static void call_base(LinphoneMediaEncryption mode, bool_t enable_video,bool_t e
|
|||
}
|
||||
|
||||
if (policy == LinphonePolicyUseIce)
|
||||
CU_ASSERT_TRUE(check_ice(pauline,marie,LinphoneIceStateHostConnection));
|
||||
CU_ASSERT_TRUE(check_ice(pauline,marie,enable_tunnel?LinphoneIceStateReflexiveConnection:LinphoneIceStateHostConnection));
|
||||
#ifdef VIDEO_ENABLED
|
||||
if (enable_video) {
|
||||
int i=0;
|
||||
|
|
@ -2185,7 +2203,7 @@ static void call_base(LinphoneMediaEncryption mode, bool_t enable_video,bool_t e
|
|||
|
||||
add_video(pauline,marie);
|
||||
if (policy == LinphonePolicyUseIce)
|
||||
CU_ASSERT_TRUE(check_ice(pauline,marie,LinphoneIceStateHostConnection));
|
||||
CU_ASSERT_TRUE(check_ice(pauline,marie,enable_tunnel?LinphoneIceStateReflexiveConnection:LinphoneIceStateHostConnection));
|
||||
|
||||
liblinphone_tester_check_rtcp(marie,pauline);
|
||||
/*wait for ice to found the direct path*/
|
||||
|
|
@ -2208,25 +2226,24 @@ static void call_base(LinphoneMediaEncryption mode, bool_t enable_video,bool_t e
|
|||
linphone_core_manager_destroy(marie);
|
||||
linphone_core_manager_destroy(pauline);
|
||||
}
|
||||
|
||||
#ifdef VIDEO_ENABLED
|
||||
static void srtp_video_ice_call(void) {
|
||||
call_base(LinphoneMediaEncryptionSRTP,TRUE,FALSE,LinphonePolicyUseIce);
|
||||
call_base(LinphoneMediaEncryptionSRTP,TRUE,FALSE,LinphonePolicyUseIce,FALSE);
|
||||
}
|
||||
static void zrtp_video_ice_call(void) {
|
||||
call_base(LinphoneMediaEncryptionZRTP,TRUE,FALSE,LinphonePolicyUseIce);
|
||||
call_base(LinphoneMediaEncryptionZRTP,TRUE,FALSE,LinphonePolicyUseIce,FALSE);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void srtp_ice_call(void) {
|
||||
call_base(LinphoneMediaEncryptionSRTP,FALSE,FALSE,LinphonePolicyUseIce);
|
||||
call_base(LinphoneMediaEncryptionSRTP,FALSE,FALSE,LinphonePolicyUseIce,FALSE);
|
||||
}
|
||||
|
||||
static void zrtp_ice_call(void) {
|
||||
call_base(LinphoneMediaEncryptionZRTP,FALSE,FALSE,LinphonePolicyUseIce);
|
||||
call_base(LinphoneMediaEncryptionZRTP,FALSE,FALSE,LinphonePolicyUseIce,FALSE);
|
||||
}
|
||||
static void zrtp_ice_call_with_relay(void) {
|
||||
call_base(LinphoneMediaEncryptionZRTP,FALSE,TRUE,LinphonePolicyUseIce);
|
||||
call_base(LinphoneMediaEncryptionZRTP,FALSE,TRUE,LinphonePolicyUseIce,FALSE);
|
||||
}
|
||||
|
||||
static void early_media_call(void) {
|
||||
|
|
|
|||
|
|
@ -304,5 +304,6 @@ void cunit_android_trace_handler(int level, const char *fmt, va_list args) ;
|
|||
#endif
|
||||
int liblinphone_tester_fprintf(FILE * stream, const char * format, ...);
|
||||
|
||||
void call_base(LinphoneMediaEncryption mode, bool_t enable_video,bool_t enable_relay,LinphoneFirewallPolicy policy,bool_t enable_tunnel);
|
||||
#endif /* LIBLINPHONE_TESTER_H_ */
|
||||
|
||||
|
|
|
|||
|
|
@ -59,6 +59,8 @@ static char* get_public_contact_ip(LinphoneCore* lc) {
|
|||
ms_free(contact);
|
||||
return ms_strdup(contact_host_ip);
|
||||
}
|
||||
|
||||
|
||||
static void call_with_transport_base(LinphoneTunnelMode tunnel_mode, bool_t with_sip, LinphoneMediaEncryption encryption) {
|
||||
if (linphone_core_tunnel_available()){
|
||||
LinphoneCoreManager *pauline = linphone_core_manager_new( "pauline_rc");
|
||||
|
|
@ -131,6 +133,7 @@ static void call_with_transport_base(LinphoneTunnelMode tunnel_mode, bool_t with
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
static void call_with_tunnel(void) {
|
||||
call_with_transport_base(LinphoneTunnelModeEnable, TRUE, LinphoneMediaEncryptionNone);
|
||||
}
|
||||
|
|
@ -151,12 +154,43 @@ static void call_with_tunnel_auto_without_sip_with_srtp(void) {
|
|||
call_with_transport_base(LinphoneTunnelModeAuto, FALSE, LinphoneMediaEncryptionSRTP);
|
||||
}
|
||||
|
||||
#ifdef VIDEO_ENABLED
|
||||
static void tunnel_srtp_video_ice_call(void) {
|
||||
call_base(LinphoneMediaEncryptionSRTP,TRUE,FALSE,LinphonePolicyUseIce,TRUE);
|
||||
}
|
||||
static void tunnel_zrtp_video_ice_call(void) {
|
||||
call_base(LinphoneMediaEncryptionZRTP,TRUE,FALSE,LinphonePolicyUseIce,TRUE);
|
||||
}
|
||||
static void tunnel_video_ice_call(void) {
|
||||
call_base(LinphoneMediaEncryptionNone,TRUE,FALSE,LinphonePolicyUseIce,TRUE);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void tunnel_srtp_ice_call(void) {
|
||||
call_base(LinphoneMediaEncryptionSRTP,FALSE,FALSE,LinphonePolicyUseIce,TRUE);
|
||||
}
|
||||
|
||||
static void tunnel_zrtp_ice_call(void) {
|
||||
call_base(LinphoneMediaEncryptionZRTP,FALSE,FALSE,LinphonePolicyUseIce,TRUE);
|
||||
}
|
||||
|
||||
static void tunnel_ice_call(void) {
|
||||
call_base(LinphoneMediaEncryptionNone,FALSE,FALSE,LinphonePolicyUseIce,TRUE);
|
||||
}
|
||||
test_t transport_tests[] = {
|
||||
{ "Tunnel only", call_with_tunnel },
|
||||
{ "Tunnel with SRTP", call_with_tunnel_srtp },
|
||||
{ "Tunnel without SIP", call_with_tunnel_without_sip },
|
||||
{ "Tunnel in automatic mode", call_with_tunnel_auto },
|
||||
{ "Tunnel in automatic mode with SRTP without SIP", call_with_tunnel_auto_without_sip_with_srtp },
|
||||
{ "Tunnel ice call", tunnel_ice_call },
|
||||
{ "Tunnel SRTP ice call", tunnel_srtp_ice_call },
|
||||
{ "Tunnel ZRTP ice call", tunnel_zrtp_ice_call },
|
||||
#ifdef VIDEO_ENABLED
|
||||
{ "Tunnel ice video call", tunnel_video_ice_call },
|
||||
{ "Tunnel SRTP ice video call", tunnel_srtp_video_ice_call },
|
||||
{ "Tunnel ZRTP ice video call", tunnel_zrtp_video_ice_call },
|
||||
#endif
|
||||
};
|
||||
|
||||
test_suite_t transport_test_suite = {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue