Открывает порты на каждом сетевом интерфейсе. Хотелось бы, чтобы открывала только на заданном.
Посмотрим, где это происходит
Для начала поставим gc++filt, если его еще нет
sudo pkg install pkg:/developer/gnu-binutils@2.25.1-2016.0.1.2
Запустим скрипт, а потом екигу
sudo dtrace -n 'syscall::so_socket:entry/execname=="ekiga"/{ if((arg0 == 2)&&(arg1 == 2)&&(arg2 == 0)){ustack(); printf("family = %d, type_w_flags = %d, protocol = %d\n", arg0, arg1, arg2);} }'|gc++filt
dtrace: description 'syscall::so_socket:entry' matched 5 probes
CPU ID FUNCTION:NAME
0 12832 so_socket:entry
libc.so.1`_so_socket+0x15
libsocket.so.1`__xnet_socket+0x23
libpt.so.2.10.11`PSocket::os_socket(int, int, int)+0x25
libpt.so.2.10.11`PTCPSocket::OpenSocket(int)+0x29
libpt.so.2.10.11`PIPSocket::Listen(PIPSocket::Address const&, unsigned int, unsigned short, PSocket::Reusability)+0x1fe
libpt.so.2.10.11`PTCPSocket::Listen(PIPSocket::Address const&, unsigned int, unsigned short, PSocket::Reusability)+0x2b
libopal.so.3.10.10`OpalListenerTCP::Open(PNotifierTemplate<int> const&, OpalListener::ThreadMode)+0x1e6
libopal.so.3.10.10`OpalEndPoint::StartListener(OpalListener*)+0xaf
libopal.so.3.10.10`OpalEndPoint::StartListener(OpalTransportAddress const&)+0x17b
libopal.so.3.10.10`OpalEndPoint::StartListeners(PStringArray const&)+0x104
libekiga.so`Opal::H323::EndPoint::set_listen_port(unsigned int)+0x11f
libekiga.so`Opal::H323::EndPoint::EndPoint(Opal::CallManager&, Ekiga::ServiceCore&, unsigned int, unsigned int)+0x1e2
libekiga.so`OPALSpark::try_initialize_more(Ekiga::ServiceCore&, int*, char***)+0x8da
libekiga.so`Ekiga::KickStart::kick(Ekiga::ServiceCore&, int*, char***)+0x2c0
libekiga.so`engine_init(boost::shared_ptr<Ekiga::ServiceCore>, int, char**)+0x838
ekiga`main+0x30e
ekiga`_start+0x83
family = 2, type_w_flags = 2, protocol = 0
COMPONENT_NAME=opal
COMPONENT_VERSION=3.10.10
COMPONENT_SRC=$(COMPONENT_NAME)-$(COMPONENT_VERSION)
COMPONENT_ARCHIVE= $(COMPONENT_SRC).tar.xz
wget
http://ftp.gnome.org/pub/GNOME/sources/$COMPONENT_NAME/3.10/$COMPONENT_ARCHIVE
wget
http://ftp.gnome.org/pub/GNOME/sources/ekiga/4.0/ekiga-4.0.1.tar.xzПротокол UDP
sudo soconfig -l
sudo dtrace -n 'syscall::so_socket:entry/execname=="ekiga"/{ if(((arg0 == 2)||(arg0 == 26))&&(arg1 == 1)){ustack(); printf("family = %d, type_w_flags = %d, protocol = %d\n", arg0, arg1, arg2);} }'|gc++filt
1 8082 so_socket:entry
libc.so.1`_so_socket+0x7
libsocket.so.1`__xnet_socket+0x23
libpt.so.2.10.11`PSocket::os_socket(int, int, int)+0x25
libpt.so.2.10.11`PUDPSocket::OpenSocket(int)+0x29
libpt.so.2.10.11`PUDPSocket::PUDPSocket(unsigned short, int)+0xfd
libpt.so.2.10.11`PMonitoredSockets::CreateSocket(PMonitoredSockets::SocketInfo&, PIPSocket::Address const&)+0x91
libpt.so.2.10.11`PMonitoredSocketBundle::OpenSocket(PString const&)+0x56
libpt.so.2.10.11`PMonitoredSocketBundle::Open(unsigned short)+0xc5
libopal.so.3.10.10`OpalListenerUDP::Open(PNotifierTemplate<int> const&, OpalListener::ThreadMode)+0x3c
libopal.so.3.10.10`OpalEndPoint::StartListener(OpalListener*)+0xaf
libopal.so.3.10.10`OpalEndPoint::StartListener(OpalTransportAddress const&)+0x17b
libopal.so.3.10.10`OpalEndPoint::StartListeners(PStringArray const&)+0x104
libekiga.so`Opal::Sip::EndPoint::set_listen_port(unsigned int)+0x13c
libekiga.so`Opal::Sip::EndPoint::EndPoint(Opal::CallManager&, Ekiga::ServiceCore&, unsigned int)+0x550
libekiga.so`OPALSpark::try_initialize_more(Ekiga::ServiceCore&, int*, char***)+0x811
libekiga.so`Ekiga::KickStart::kick(Ekiga::ServiceCore&, int*, char***)+0x2c0
libekiga.so`engine_init(boost::shared_ptr<Ekiga::ServiceCore>, int, char**)+0x838
ekiga`main+0x30e
ekiga`_start+0x83
family = 2, type_w_flags = 1, protocol = 0
Поменял тут: libekiga.so`Opal::Sip::EndPoint::set_listen_port(unsigned int)
ekiga-4.0.1/lib/engine/components/opal/sip-endpoint.cpp
Opal::Sip::EndPoint::set_listen_port (unsigned port)
{
unsigned udp_min, udp_max;
listen_iface.protocol = "udp";
listen_iface.voip_protocol = "sip";
listen_iface.id = "*";
manager.get_udp_ports (udp_min, udp_max);
if (port > 0) {
std::stringstream str;
RemoveListener (NULL);
str << "udp$192.168.1.1:" << port; //!
if (!StartListeners (PStringArray (str.str ()))) {
port = udp_min;
str << "udp$*:" << port;
while (port <= udp_max) {
if (StartListeners (PStringArray (str.str ()))) {
listen_iface.port = port;
return true;
}
port++;
}
}
else {
listen_iface.port = port;
return true;
}
}
return false;
}
Отключить STUN
#define NAT_KEY "/apps/" PACKAGE_NAME "/general/nat/"
else if (key == NAT_KEY "stun_server") {
gchar* stun_server = gm_conf_entry_get_string (entry);
manager.set_stun_server (stun_server ? stun_server : "stun.ekiga.net");
g_free (stun_server);
}
else if (key == NAT_KEY "enable_stun") {
manager.set_stun_enabled (gm_conf_entry_get_bool (entry));
}