[SR-Users] Strange core.tcp_list / tls.list output

Mikko Lehto mslehto at iki.fi
Wed Jun 3 20:27:08 CEST 2015


Hi, I noticed thath command core.tcp_list in kamcmd gives output that
does not make sense to me:
---
kamcmd> core.tcp_list
{
        id: 1
        type: TLS
        state: CONN_OK
        timeout: 3599
        ref_count: 1
        src_ip: 192.168.47.132
        src_port: 5061
        dst_ip: 10.10.235.9
        dst_port: 54769
}
{
        id: 2
        type: TLS
        state: CONN_OK
        timeout: 3599
        ref_count: 1
        src_ip: 192.168.47.132
        src_port: 32854
        dst_ip: 10.10.235.9
        dst_port: 5041
}
---

In my scenario I am connecting via TLS to host 192.168.47.132:5061.
And host 192.168.47.132 is connecting to my proxy host 10.10.235.9:5041.
pcap verifies this. Also tls.list gives similar output.

Values regarding incoming connection (id=2) makes total sense.
It seems that values regarding outgoing connection (id=1) have
dst_* values swapped with src_* values.


To debug, I placed this logging to tcp_main.c:
---
$ git diff tcp_main.c
diff --git a/tcp_main.c b/tcp_main.c
index 5830c8e..3717cf6 100644
--- a/tcp_main.c
+++ b/tcp_main.c
@@ -1207,6 +1207,7 @@ again:
        }
        from=&my_name; /* update from with the real "from" address */
        su2ip_addr(&ip, &my_name);
+       LM_WARN("after getsockname()  my_name=%s server=%s ip=%s\n",
		su2a(&my_name, sizeof(my_name)), su2a(server, sizeof(*server)),
		ip_addr2a(&ip));
 find_socket:
 #ifdef USE_TLS
        if (unlikely(type==PROTO_TLS))
@@ -1223,6 +1224,7 @@ find_socket:
                else *res_si=sendipv6_tcp;
        }
        *res_local_addr=*from;
+       LM_WARN("before return        my_name=%s server=%s ip=%s\n",
		su2a(&my_name, sizeof(my_name)), su2a(server, sizeof(*server)),
		ip_addr2a(&ip));
        return s;
 error:
        if (s!=-1) tcp_safe_close(s);
---

This gives following output:
WARNING: <core> [tcp_main.c:1210]: tcp_do_connect(): after getsockname() my_name=192.168.47.132:5061 server=192.168.47.132:5061 ip=10.10.235.9
WARNING: <core> [tcp_main.c:1227]: tcp_do_connect(): before return my_name=192.168.47.132:5061 server=192.168.47.132:5061 ip=10.10.235.9


Are tcp endpoint values really wrong way around or did I undertand
something wrong about their meaning?

I am running Kamailio 4.2.5 (x86_64/linux) 61d84c-dirty from git.

-- 
Mikko Lehto



More information about the sr-users mailing list