Hello;

i want to force message to send over TCP and IPv6 . so it should be R/W variable. When i set $fs or force_send_socket() it gives error about mismatch protocol !

Thanks.

Yasin CANER

From: sr-users <sr-users-bounces@lists.kamailio.org> on behalf of YAS0 CANER <caner_yaso@hotmail.com>
Sent: Friday, December 14, 2018 4:27 PM
To: Kamailio (SER) - Users Mailing List
Subject: [SR-Users] Problem with selection Transport Protocol - MultiHomed Problem
 
Hello , 
i have trouble  about selection transport protocol. i have tried so many thing but couldnt find TM selected which IPv? and protocol type (TCP or UDP)


For example;
i have 2 interface ipv6 and ipv4.  i will route my message (INVITE-Register etc.) another node  that use TCP and IPV6 , domain name is test1.test. TM module or some module resolve this domain to IPV6:UDP  but i want to sent it over IPV6:TCP socket.  so i cannot know which protocol is resolved and cannot route the right socket. 

$du variable show only sip:ali@test1.test 

Conclusion : There isn't any pseudo value about which destination of IP version  will use.


Thanks 


Flow:

UAC (IPv4:UDP) ----------> Kamailio (MultiHomed)  ---->  (TCP:IPv6)Kamailio

----
Kamailo (multiHomed ) cfg
------
auto_bind_ipv6=1
dns_try_ipv6=yes
dns_retr_time=1
dns_retr_no=1
dns_cache_flags=4
mhomed=1
fork=yes
tcp_source_ipv6 = [fd61:c23c:b3b6::5]
listen=tcp:[fd61:c23c:b3b2::5]:5060
listen=udp:[fd61:c23c:b3b2::5]:5060
listen=udp:192.168.1.107:5060
listen=tcp:192.168.1.107:5060


route []{

  if($dP=="TCP"){
    xlog("L_INFO","[route] [TCP] 1\n");
    if (!t_relay_to_tcp()) {
      xlog("L_ERR", "Error t_relay  [route] \n");
      t_reply("500","Server - ERROR ");
      exit;
    }
  } else if($dP=="TCP"){
    xlog("L_INFO","[route] [TCP] 2\n");
    if (!t_relay_to_tcp()) {
      xlog("L_ERR", "Error t_relay  [route] \n");
      t_reply("500","Server - ERROR ");
      exit;
    }
  }else if($dP=="UDP"){
    xlog("L_INFO","[route] [UDP] 1\n");
    if (!t_relay_to_udp()) {
      xlog("L_ERR", "Error t_relay  [route] \n");
      t_reply("500","Server - ERROR ");
      exit;
    }
  }else{
    xlog("L_INFO","[route] [??] 1\n");
    if (!t_relay()) {
      xlog("L_ERR", "Error t_relay  [route] \n");
      t_reply("500","Server - ERROR ");
      exit;
    }
  }
}