Commit 4bc67e36 authored by François Grisez's avatar François Grisez

Add transport_SIP boolean parameter in "tunnel" of the configuration file

If this parameter is set to 1, SIP packets will pass through tunnels when the
tunnel mode is enabled. If set to 0, SIP packets will be directly sent to proxies
whatever the state of tunnels
parent b144ec98
......@@ -400,6 +400,10 @@ void TunnelManager::tunnelizeSipPackets(bool enable){
}
}
bool TunnelManager::tunnelizeSipPacketsEnabled() const {
return mTunnelizeSipPackets;
}
void TunnelManager::setHttpProxy(const char *host,int port, const char *username, const char *passwd){
mHttpUserName=username?username:"";
mHttpPasswd=passwd?passwd:"";
......
......@@ -122,7 +122,12 @@ class UdpMirrorClient;
* @param enable If set to TRUE, SIP packets will pass through the tunnel.
* If set to FALSE, SIP packets will pass by the configured proxies.
*/
void tunnelizeSipPackets(bool enable = true);
void tunnelizeSipPackets(bool enable);
/**
* @brief Check whether the tunnel manager is set to tunnelize SIP packets
* @return True, SIP packets pass through the tunnel
*/
bool tunnelizeSipPacketsEnabled() const;
/**
* @brief Destructor
*/
......
......@@ -328,6 +328,15 @@ bool_t linphone_tunnel_auto_detect_enabled(LinphoneTunnel *tunnel) {
return tunnel->auto_detect_enabled;
}
void linphone_tunnel_enable_sip_packets_transport(LinphoneTunnel *tunnel, bool_t enable) {
bcTunnel(tunnel)->tunnelizeSipPackets(enable);
lp_config_set_int(config(tunnel), "tunnel", "transport_SIP", (enable ? TRUE : FALSE));
}
bool_t linphone_tunnel_sip_packets_transport_is_enabled(const LinphoneTunnel *tunnel) {
return bcTunnel(tunnel)->tunnelizeSipPacketsEnabled() ? TRUE : FALSE;
}
static void my_ortp_logv(OrtpLogLevel level, const char *fmt, va_list args){
ortp_logv(level,fmt,args);
}
......@@ -338,8 +347,9 @@ static void my_ortp_logv(OrtpLogLevel level, const char *fmt, va_list args){
*/
void linphone_tunnel_configure(LinphoneTunnel *tunnel){
bool_t enabled=(bool_t)lp_config_get_int(config(tunnel),"tunnel","enabled",FALSE);
bool_t tunnelizeSIPPackets = (bool_t)lp_config_get_int(config(tunnel), "tunnel", "transport_SIP", TRUE);
linphone_tunnel_enable_logs_with_handler(tunnel,TRUE,my_ortp_logv);
linphone_tunnel_load_config(tunnel);
linphone_tunnel_enable_sip_packets_transport(tunnel, tunnelizeSIPPackets);
linphone_tunnel_enable(tunnel, enabled);
}
......@@ -196,6 +196,20 @@ LINPHONE_PUBLIC void linphone_tunnel_auto_detect(LinphoneTunnel *tunnel);
*/
LINPHONE_PUBLIC bool_t linphone_tunnel_auto_detect_enabled(LinphoneTunnel *tunnel);
/**
* @brief Set whether SIP packets must be directly sent to a UA or pass through a tunnel
* @param tunnel Tunnel to configure
* @param enable If true, SIP packets shall pass through a tunnel
*/
LINPHONE_PUBLIC void linphone_tunnel_enable_sip_packets_transport(LinphoneTunnel *tunnel, bool_t enable);
/**
* @brief Checks wether tunnel is set to transport SIP packets
* @param LinphoneTunnel
* @return tunnel True, SIP packets shall pass through a tunnel
*/
LINPHONE_PUBLIC bool_t linphone_tunnel_sip_packets_transport_is_enabled(const LinphoneTunnel *tunnel);
/**
* Set an optional http proxy to go through when connecting to tunnel server.
* @param tunnel LinphoneTunnel object
......
......@@ -85,3 +85,5 @@ void linphone_tunnel_auto_detect(LinphoneTunnel *tunnel){
void linphone_tunnel_configure(LinphoneTunnel *tunnel){
}
void linphone_tunnel_enable_sip_packets_transport(LinphoneTunnel *tunnel, bool_t enable) {}
bool_t linphone_tunnel_sip_packets_transport_is_enabled(const LinphoneTunnel *tunnel) {}
......@@ -1025,7 +1025,9 @@ static void linphone_core_start(LinphoneCore * lc) {
ui_config_read(lc);
#ifdef TUNNEL_ENABLED
lc->tunnel=linphone_core_tunnel_new(lc);
if (lc->tunnel) linphone_tunnel_configure(lc->tunnel);
if (lc->tunnel) {
linphone_tunnel_configure(lc->tunnel);
}
#endif
linphone_core_notify_display_status(lc,_("Ready"));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment