From 220ab39310a4873f17bdc9b8ed66adbddc3d7a05 Mon Sep 17 00:00:00 2001 From: sabina Date: Tue, 27 Nov 2018 12:57:17 +0000 Subject: [PATCH] Added files for wiresniff module. Identical to Rev. 2213 git-svn-id: http://yate.null.ro/svn/yate/trunk@6331 acf43c95-373e-0410-b603-e72c3f656dc1 --- Makefile.in | 6 +- conf.d/wiresniff.conf.sample | 29 ++++ modules/Makefile.in | 89 +++++++++++- modules/wiresniff.cpp | 263 +++++++++++++++++++++++++++++++++++ packing/rpm/yate.spec.in | 71 +++++++++- yatewiresniff.h | 33 +++++ 6 files changed, 482 insertions(+), 9 deletions(-) create mode 100644 conf.d/wiresniff.conf.sample create mode 100644 modules/wiresniff.cpp create mode 100644 yatewiresniff.h diff --git a/Makefile.in b/Makefile.in index 7c71c80d..983d7294 100644 --- a/Makefile.in +++ b/Makefile.in @@ -29,10 +29,12 @@ SLIBS:= $(YLIB) libyate.so \ libyatesig.so.@PACKAGE_VERSION@ libyatesig.so \ libyateasn.so.@PACKAGE_VERSION@ libyateasn.so \ libyateradio.so.@PACKAGE_VERSION@ libyateradio.so \ + libyatemapcamel.so.@PACKAGE_VERSION@ libyatemapcamel.so \ libyatemgcp.so.@PACKAGE_VERSION@ libyatemgcp.so \ - libyatejabber.so.@PACKAGE_VERSION@ libyatejabber.so + libyatejabber.so.@PACKAGE_VERSION@ libyatejabber.so \ + libyatecodecutils.so.@PACKAGE_VERSION@ libyatecodecutils.so ILIBS:= yscript yasn yradio -INCS := yateclass.h yatemime.h yatengine.h yatephone.h yatecbase.h yatexml.h yatemath.h +INCS := yateclass.h yatemime.h yatengine.h yatephone.h yatecbase.h yatexml.h yatemath.h yatewiresniff.h GENS := yateversn.h LIBS := MAN8 := yate.8 yate-config.8 diff --git a/conf.d/wiresniff.conf.sample b/conf.d/wiresniff.conf.sample new file mode 100644 index 00000000..cd49db33 --- /dev/null +++ b/conf.d/wiresniff.conf.sample @@ -0,0 +1,29 @@ +[general] +; General settings for wiresniff module. + +; remote_host: ipaddr: IPv4 or IPv6 address where to send the packets. +; If empty the module won't process the messages +;remote_host= + +; remote_port: Remote port assigned to the remote_host. +; Mandatory to be set if remote_host is set +;remote_port= + +; local_host: ipaddr: Address of local interface, +; IPv4 default address is '0.0.0.0' and IPv6 default address is '::' +;local_host= + +; local_port: int: Local UDP port assigned to local_host +; Default value for local port is 0 +;local_port= + +; filter: regexp: Default filter to apply to message sniffer at initialization +; If empty it will match all messages +; Example for a filter matching all chan.Anything messages and engine.halt: +; filter=^\(chan\.\|engine\.halt$\) +;filter + + + + + diff --git a/modules/Makefile.in b/modules/Makefile.in index 4213853b..7c7e032b 100644 --- a/modules/Makefile.in +++ b/modules/Makefile.in @@ -37,6 +37,11 @@ OPENSSL_LIB := @OPENSSL_LIB@ HAVE_ZLIB := @HAVE_ZLIB@ ZLIB_INC := @ZLIB_INC@ ZLIB_LIB := @ZLIB_LIB@ +HAVE_CELLALGO := @HAVE_CELLALGO@ +HAVE_128EIA1 := @HAVE_128EIA1@ +CELLALGO_INC := @CELLALGO_INC@ +CELLALGO_LIB := @CELLALGO_LIB@ +CELLALGO_DEF := @CELLALGO_DEF@ HAVE_LIBUSB := @HAVE_LIBUSB@ LIBUSB_INC := @LIBUSB_INC@ LIBUSB_LIB := @LIBUSB_LIB@ @@ -55,7 +60,8 @@ INCFILES := @top_srcdir@/yateclass.h @top_srcdir@/yatengine.h @top_srcdir@/yatep JUSTSIG := server/ysigchan.yate server/analog.yate \ server/ciscosm.yate server/sigtransport.yate \ sig/isupmangler.yate sig/ss7_lnp_ansi.yate \ - sig/camel_map.yate + sig/camel_map.yate sig/camel_bcsm.yate sig/camel_bcsm_proxy.yate \ + sig/ussd_map.yate sig/camelmap.yate SUBDIRS := MKDEPS := ../config.status @@ -90,11 +96,14 @@ PROGS := cdrbuild.yate cdrcombine.yate cdrfile.yate regexroute.yate \ server/cache.yate \ server/eventlogs.yate \ client/jabberclient.yate \ - callgen.yate analyzer.yate rmanager.yate msgsniff.yate \ - radio/dummyradio.yate radio/radiotest.yate + callgen.yate analyzer.yate rmanager.yate msgsniff.yate wiresniff.yate\ + radio/dummyradio.yate radio/radiotest.yate \ + server/ysmpp.yate server/ydiameter.yate \ + mobile/gsmfeatures.yate \ + server/xml_tcp.yate LIBS := -DIRS := client server jabber qt4 sip sig radio +DIRS := client server jabber qt4 sip sig radio mobile ifneq ($(HAVE_PGSQL),no) PROGS := $(PROGS) server/pgsqldb.yate @@ -112,6 +121,13 @@ ifneq (@HAVE_RESOLV@,no) PROGS := $(PROGS) enumroute.yate endif +ifneq (@HAVE_IPV6@,no) +PROGS := $(PROGS) mobile/ys1ap.yate +ifneq (@HAVE_TUN@,no) +PROGS := $(PROGS) mobile/gtp.yate +endif +endif + ifneq (@HAVE_SOUNDCARD@,no) PROGS := $(PROGS) client/osschan.yate endif @@ -183,6 +199,10 @@ PROGS := $(PROGS) amrnbcodec.yate PROGS := $(PROGS) efrcodec.yate endif +ifneq (@HAVE_AMRWB@,no) +PROGS := $(PROGS) amrwbcodec.yate +endif + ifneq ($(HAVE_OPENSSL),no) PROGS := $(PROGS) openssl.yate endif @@ -204,6 +224,11 @@ ifneq (@HAVE_LIBUSB@,no) PROGS := $(PROGS) radio/ybladerf.yate endif +ifeq (@HAVE_CELLALGO@,yes) +ifeq (@HAVE_128EIA1@,yes) +PROGS := $(PROGS) mobile/nassession.yate +endif +endif LOCALFLAGS = LOCALLIBS = @@ -311,6 +336,9 @@ sig/%.yate: @srcdir@/sig/%.cpp $(MKDEPS) $(INCFILES) sip/%.yate: @srcdir@/sip/%.cpp $(MKDEPS) $(INCFILES) mkdir -p sip && $(MODCOMP) -o $@ $(LOCALFLAGS) $(EXTERNFLAGS) $< $(LOCALLIBS) $(YATELIBS) $(EXTERNLIBS) +mobile/%.yate: @srcdir@/mobile/%.cpp $(MKDEPS) $(INCFILES) + mkdir -p mobile && $(MODCOMP) -o $@ $(LOCALFLAGS) $(EXTERNFLAGS) $< $(LOCALLIBS) $(YATELIBS) $(EXTERNLIBS) + %.yate: @srcdir@/%.cpp $(MKDEPS) $(INCFILES) $(MODCOMP) -o $@ $(LOCALFLAGS) $(EXTERNFLAGS) $< $(LOCALLIBS) $(YATELIBS) $(EXTERNLIBS) @@ -329,6 +357,14 @@ sig/camel_map.yate: ../libs/yasn/libyasn.a sig/camel_map.yate: LOCALFLAGS = -I@top_srcdir@/libs/ysig -I@top_srcdir@/libs/yasn sig/camel_map.yate: LOCALLIBS = -lyatesig -lyateasn +sig/camelmap.yate: ../libyatemapcamel.so +sig/camelmap.yate: LOCALFLAGS = -I@top_srcdir@/libs/ysig -I@top_srcdir@/libs/yasn -I@top_srcdir@/libs/ymapcamel +sig/camelmap.yate: LOCALLIBS = -lyatemapcamel -lyatesig -lyateasn + +sig/camel_bcsm_proxy.yate sig/ussd_map.yate: ../libs/ytcapxml/libyatetcapxml.a +sig/camel_bcsm_proxy.yate sig/ussd_map.yate: LOCALFLAGS = -I../libs/ytcapxml +sig/camel_bcsm_proxy.yate sig/ussd_map.yate: LOCALLIBS = -L../libs/ytcapxml -lyatetcapxml + server/analogdetect.yate: ../libs/ymodem/libyatemodem.a server/analogdetect.yate: LOCALFLAGS = -I@top_srcdir@/libs/ymodem server/analogdetect.yate: LOCALLIBS = -L../libs/ymodem -lyatemodem @@ -393,6 +429,9 @@ speexcodec.yate: EXTERNLIBS = @SPEEX_LIB@ amrnbcodec.yate efrcodec.yate: EXTERNFLAGS = @AMRNB_INC@ amrnbcodec.yate efrcodec.yate: EXTERNLIBS = @AMRNB_LIB@ +amrwbcodec.yate: EXTERNFLAGS = @AMRWB_INC@ +amrwbcodec.yate: EXTERNLIBS = @AMRWB_LIB@ + faxchan.yate: EXTERNFLAGS = $(SPANDSP_INC) faxchan.yate: EXTERNLIBS = $(SPANDSP_LIB) @@ -424,6 +463,30 @@ server/ysnmpagent.yate: ../libyateasn.so ../libs/ysnmp/libysnmp.a server/ysnmpagent.yate: LOCALFLAGS = -I@top_srcdir@/libs/yasn -I@top_srcdir@/libs/ysnmp server/ysnmpagent.yate: LOCALLIBS = -L../libs/ysnmp -lysnmp -lyateasn +server/ysmpp.yate: ../libs/ysmpp/libyatesmpp.a ../libs/ycodecutils/libyatecodecutils.a +server/ysmpp.yate: LOCALFLAGS = -I@top_srcdir@/libs/ysmpp -I@top_srcdir@/libs/ycodecutils +server/ysmpp.yate: LOCALLIBS = -L../libs/ysmpp -lyatesmpp -L../libs/ycodecutils -lyatecodecutils + +server/ydiameter.yate: ../libs/ydiameter/libyatediameter.a +server/ydiameter.yate: LOCALFLAGS = -I@top_srcdir@/libs/ydiameter +server/ydiameter.yate: LOCALLIBS = -L../libs/ydiameter -lyatediameter + +mobile/gtp.yate: ../libs/ygtp/libyategtp.a +mobile/gtp.yate: LOCALFLAGS = -I@top_srcdir@/libs/ygtp +mobile/gtp.yate: LOCALLIBS = -L../libs/ygtp -lyategtp + +mobile/ys1ap.yate: ../libyateasn.so +mobile/ys1ap.yate: LOCALFLAGS = -I../libs/yasn +mobile/ys1ap.yate: LOCALLIBS = -lyateasn + +mobile/gsmfeatures.yate: ../libyateradio.so ../libyatecodecutils.so +mobile/gsmfeatures.yate: LOCALFLAGS = -I@top_srcdir@/libs/yradio -I@top_srcdir@/libs/ycodecutils +mobile/gsmfeatures.yate: LOCALLIBS = -lyateradio -L../libs/ycodecutils -lyatecodecutils + +mobile/nassession.yate: ../libyatescript.so ../libyateradio.so +mobile/nassession.yate: LOCALFLAGS = -I@top_srcdir@/libs/yscript -I@top_srcdir@/libs/yradio $(CELLALGO_DEF) $(CELLALGO_INC) +mobile/nassession.yate: LOCALLIBS = -lyatescript -lyateradio $(CELLALGO_LIB) + radio/ybladerf.yate radio/dummyradio.yate radio/radiotest.yate: ../libyateradio.so radio/ybladerf.yate radio/dummyradio.yate radio/radiotest.yate: LOCALFLAGS = -I@top_srcdir@/libs/yradio radio/ybladerf.yate radio/dummyradio.yate radio/radiotest.yate: LOCALLIBS = -lyateradio @@ -477,3 +540,21 @@ radio/ybladerf.yate: EXTERNLIBS = $(LIBUSB_LIB) ../libyateradio.so ../libs/yradio/libyateradio.a: @top_srcdir@/libs/yradio/yateradio.h $(MAKE) -C ../libs/yradio + +../libs/ytcapxml/libyatetcapxml.a: @top_srcdir@/libs/ytcapxml/yatetcapxml.h + $(MAKE) -C ../libs/ytcapxml + +../libs/ysmpp/libyatesmpp.a: @top_srcdir@/libs/ysmpp/yatesmpp.h + $(MAKE) -C ../libs/ysmpp + +../libs/ydiameter/libyatediameter.a: @top_srcdir@/libs/ydiameter/yatediameter.h + $(MAKE) -C ../libs/ydiameter + +../libs/ygtp/libyategtp.a: @top_srcdir@/libs/ygtp/yategtp.h + $(MAKE) -C ../libs/ygtp + +../libyatemapcamel.so ../libs/ysig/libyatemapcamel.a: @top_srcdir@/libs/ymapcamel/yatemapcamel.h + $(MAKE) -C ../libs/ymapcamel + +../libs/ycodecutils/libyatecodecutils.a: @top_srcdir@/libs/ycodecutils/yatecodecutils.h + $(MAKE) -C ../libs/ycodecutils diff --git a/modules/wiresniff.cpp b/modules/wiresniff.cpp new file mode 100644 index 00000000..6b57ee8a --- /dev/null +++ b/modules/wiresniff.cpp @@ -0,0 +1,263 @@ +/** + * wiresniff.cpp + * This file is part of the YATE Project http://YATE.null.ro + * + * Capture interface for YATE messages. + * + * Yet Another Telephony Engine - a fully featured software PBX and IVR + * Copyright (C) 2018 Null Team + * + * This software is distributed under multiple licenses; + * see the COPYING file in the main directory for licensing + * information for this specific distribution. + * + * This use of this software may be subject to additional restrictions. + * See the LEGAL file in the main directory for details. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + */ + + +#include +#include +#include +#include + +#define MAX_BUFFER_SIZE 65507 + +using namespace TelEngine; +namespace { //anonymous + +static Configuration s_cfg; +static Socket s_socket; +static SocketAddr addr; +static SocketAddr s_addr; +static Regexp s_filter; +static bool s_timer = false; +static Mutex s_mutex(false,"WireSniff"); + +class WireSniffPlugin : public Plugin +{ +public: + WireSniffPlugin(); + virtual void initialize(); +private: + bool m_first; +}; + +class WireSniffHandler : public MessageHandler +{ +public: + WireSniffHandler() : MessageHandler(0,0) { } + virtual bool received(Message &msg); +}; + +class WireSniffHook : public MessagePostHook +{ +public: + virtual void dispatched(const Message& msg, bool handled); +}; + +static void addTag(DataBlock& data, uint8_t tag, uint8_t length = 0, const void* value = 0) +{ + unsigned char buf[2]; + buf[0] = tag; + buf[1] = length; + data.append(buf,2); + if (length) + data.append(const_cast(value),length); +} + +static void addTag(DataBlock& data, uint8_t tag, const char* text) +{ + if (text && *text) + addTag(data,tag,::strlen(text),text); +} + +static void addTag(DataBlock& data, uint8_t tag, void* ptr) +{ + if (!ptr) + return; + intptr_t val = reinterpret_cast(ptr); + addTag(data,tag,sizeof(val),ptr); +} + + +static bool sendMessage(const Message& msg, bool result, bool handled) +{ + DataBlock buf; + String signature("yate-msg"); + buf.append(signature); + + uint8_t i = result ? 1: 0; + addTag(buf,YSNIFF_RESULT,1,&i); + + Thread* t = Thread::current(); + addTag(buf,YSNIFF_THREAD_ADDR,t); + + const char* name = Thread::currentName(); + addTag(buf,YSNIFF_THREAD_NAME,name); + + RefObject* data = msg.userData(); + addTag(buf, YSNIFF_DATA, data); + + uint8_t broadcast = msg.broadcast() ? 1 : 0; + addTag(buf,YSNIFF_BROADCAST,1,&broadcast); + + uint8_t finaltag = 0; + addTag(buf,YSNIFF_FINAL_TAG,1,&finaltag); + + + String id; + id.printf("%p",&msg); + if (result) + buf.append(msg.encode(handled,id)); + else + buf.append(msg.encode(id)); + + if (!(buf.length() < MAX_BUFFER_SIZE)) + DDebug(DebugWarn,"Buffer Overrun"); + + s_mutex.lock(); + unsigned int len = s_socket.sendTo(buf.data(),buf.length(),addr); + s_mutex.unlock(); + if (!len) + DDebug(DebugWarn,"Unable to send package"); + + return(len == buf.length()); +} + + +bool WireSniffHandler::received(Message &msg) +{ + if (!s_timer && (msg == YSTRING("engine.timer"))) + return false; + if (!s_socket.valid()) { + Debug(DebugWarn,"Socket %s is not valid", strerror(s_socket.error())); + return false; + } + if (!s_addr.valid()){ + Debug(DebugWarn,"SocketAddr is not valid"); + return false; + } + + if (s_filter && !s_filter.matches(msg)) + return false; + + sendMessage(msg,false,false); + + + return false; +} + +void WireSniffHook::dispatched(const Message& msg, bool handled) +{ + if ((!s_timer && (msg == YSTRING("engine.timer")))) + return; + + if (s_filter && !s_filter.matches(msg)) + return; + + sendMessage(msg,true,handled); +} + + +WireSniffPlugin::WireSniffPlugin() + : Plugin("wiresniff"), + m_first(true) +{ + Output("Loaded module WireSniff"); +} + +void WireSniffPlugin::initialize() +{ + Output("Initializing module WireSniff"); + s_mutex.lock(); + s_cfg = Engine::configFile("wiresniff"); + s_cfg.load(); + s_mutex.unlock(); + + String remoteName = s_cfg.getValue("general","remote_host"); + addr.host(remoteName); + addr.port(s_cfg.getIntValue("general","remote_port")); + + if(addr.valid() && addr.port()) { + DDebug(this,DebugNote,"Remote address '%s' and remote port '%u' are set", remoteName.c_str(), addr.port()); + } + + if(!(addr.host() && addr.port())) { + s_socket.terminate(); + Debug(this,DebugWarn,"Remote address and remote port are not configured"); + } + + if (!(addr.valid())) { + DDebug(this,DebugWarn,"Invalid address '%s'",remoteName.c_str()); + return; + } + + + if(addr.family() != SocketAddr::IPv6) + s_addr.host(s_cfg.getValue("general","local_host","0.0.0.0")); + else + s_addr.host(s_cfg.getValue("general","local_host","::")); + + s_addr.port(s_cfg.getIntValue("general","local_port",0)); + + if (!(s_addr.valid() && s_addr.host())) { + DDebug(this,DebugWarn,"Invalid address '%s'", s_addr.host().c_str()); + return; + + } + + if (s_addr.family() != addr.family()) { + Debug(this,DebugWarn,"Socket Addresses are not compatible"); + return; + } + + if (!s_socket.create(s_addr.family(),SOCK_DGRAM)) { + Debug(this,DebugWarn,"Could not create socket %s", strerror(s_socket.error())); + s_socket.terminate(); + } + + if (!s_socket.bind(s_addr)) { + Debug(this,DebugWarn,"Unable to bind to %s:%u : %s",s_addr.host().c_str(),s_addr.port(),strerror(s_socket.error())); + return; + } + + int val = 1; + if (!s_socket.setOption(IPPROTO_IP, IP_MTU_DISCOVER, &val, sizeof(val))) { + Debug(this,DebugWarn,"Socket %s option is not set!", strerror(s_socket.error())); + return; + } + + if (!s_socket.setBlocking(false)) { + Debug(DebugWarn,"Unable to set socket %s to nonblocking mode", strerror(s_socket.error())); + return; + } + if (!s_socket.getSockName(s_addr)) { + Debug(this,DebugWarn,"Error getting address: %s",strerror(s_socket.error())); + return; + } + + DDebug(this,DebugNote,"Socket bound to: %s:%u",s_addr.host().c_str(),s_addr.port()); + Debug(this,DebugNote,"Sending from %s:%u to %s:%u",s_addr.host().c_str(),s_addr.port(),addr.host().c_str(),addr.port()); + + if (m_first) { + m_first = false; + Engine::install(new WireSniffHandler); + Engine::self()->setHook(new WireSniffHook); + } + + s_mutex.lock(); + s_filter = s_cfg.getValue("general", "filter"); + s_mutex.unlock(); + + Output("WireSniff was initialized"); +} + + INIT_PLUGIN(WireSniffPlugin); +}; // anonymous namespace + +/* vi: set ts=8 sw=4 sts=4 noet: */ diff --git a/packing/rpm/yate.spec.in b/packing/rpm/yate.spec.in index 60fce8ed..a5a3d71d 100644 --- a/packing/rpm/yate.spec.in +++ b/packing/rpm/yate.spec.in @@ -12,6 +12,8 @@ # to disable the GUI clients run rpmbuild --define 'nogui 1' # to disable only Zaptel support run rpmbuild --define 'nozap 1' # to disable only TDMV support run rpmbuild --define 'notdm 1' +# to disable kernel GTP-U acceleration run rpmbuild --define 'nokgtpu 1' +# to disable cell algorithms run rpmbuild --define 'nocellalgo 1' %{!?systemd:%define systemd %(test -x /usr/bin/systemd && echo 1 || echo 0)} %{!?_unitdir:%define _unitdir /usr/lib/systemd/system} @@ -31,6 +33,8 @@ %{?nogui:%define no_gui 1} %{?nozap:%define no_zaptel 1} %{?notdm:%define no_tdmapi 1} +%{?nokgtpu:%define no_kgtpu 1} +%{?nocellalgo:%define no_cellalgo 1} %{!?debuginfo:%define debuginfo %{nil}} %if "%{debuginfo}" @@ -79,6 +83,7 @@ Source: http://yate.null.ro/tarballs/@PACKAGE_TARNAME@@PACKAGE_VERSION_MAJOR@/@ Group: Applications/Communication BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root URL: http://yate.null.ro/ +Provides: %{name}-commercial %{?extra_prov:Provides: %{?extra_prov}} %{?extra_reqs:Requires: %{?extra_reqs}} BuildRequires: gcc-c++ @@ -108,6 +113,8 @@ for small to large scale projects. %{_libdir}/libyateasn.so.* %{_libdir}/libyateradio.so.* %{_libdir}/libyatemgcp.so.* +%{_libdir}/libyatemapcamel.so.* +%{_libdir}/libyatecodecutils.so.* %{_bindir}/yate %{_mandir}/*/yate.* %if "%{systemd}" != "0" @@ -136,6 +143,7 @@ for small to large scale projects. %{_libdir}/yate/analyzer.yate %{_libdir}/yate/rmanager.yate %{_libdir}/yate/msgsniff.yate +%{_libdir}/yate/wiresniff.yate %{_libdir}/yate/mux.yate %{_libdir}/yate/pbx.yate %{_libdir}/yate/dumbchan.yate @@ -181,8 +189,11 @@ for small to large scale projects. %{_libdir}/yate/server/ccongestion.yate %{_libdir}/yate/server/monitoring.yate %{_libdir}/yate/server/ysnmpagent.yate +%{_libdir}/yate/server/ysmpp.yate %{_libdir}/yate/server/cache.yate +%{_libdir}/yate/server/ydiameter.yate %{_libdir}/yate/server/eventlogs.yate +%{_libdir}/yate/server/xml_tcp.yate %{_libdir}/yate/client/osschan.yate %{_libdir}/yate/client/jabberclient.yate %{_libdir}/yate/jabber/jabberserver.yate @@ -190,7 +201,14 @@ for small to large scale projects. %{_libdir}/yate/sig/isupmangler.yate %{_libdir}/yate/sig/ss7_lnp_ansi.yate %{_libdir}/yate/sig/camel_map.yate +%{_libdir}/yate/sig/camelmap.yate +%{_libdir}/yate/sig/camel_bcsm.yate +%{_libdir}/yate/sig/camel_bcsm_proxy.yate +%{_libdir}/yate/sig/ussd_map.yate %{_libdir}/yate/sip/sip_cnam_lnp.yate +%{_libdir}/yate/mobile/gtp.yate +%{_libdir}/yate/mobile/ys1ap.yate +%{_libdir}/yate/mobile/gsmfeatures.yate %{_libdir}/yate/radio/dummyradio.yate %{_libdir}/yate/radio/radiotest.yate %dir %{_sysconfdir}/yate @@ -238,8 +256,11 @@ for small to large scale projects. %config(noreplace) %{_sysconfdir}/yate/cpuload.conf %config(noreplace) %{_sysconfdir}/yate/ccongestion.conf %config(noreplace) %{_sysconfdir}/yate/monitoring.conf +%config(noreplace) %{_sysconfdir}/yate/wiresniff.conf %config(noreplace) %{_sysconfdir}/yate/ysnmpagent.conf +%config(noreplace) %{_sysconfdir}/yate/ysmpp.conf %config(noreplace) %{_sysconfdir}/yate/cache.conf +%config(noreplace) %{_sysconfdir}/yate/ydiameter.conf %config(noreplace) %{_sysconfdir}/yate/eventlogs.conf %config(noreplace) %{_sysconfdir}/yate/users.conf %config(noreplace) %{_sysconfdir}/yate/presence.conf @@ -250,7 +271,11 @@ for small to large scale projects. %config(noreplace) %{_sysconfdir}/yate/isupmangler.conf %config(noreplace) %{_sysconfdir}/yate/ss7_lnp_ansi.conf %config(noreplace) %{_sysconfdir}/yate/camel_map.conf +%config(noreplace) %{_sysconfdir}/yate/camel_bcsm.conf +%config(noreplace) %{_sysconfdir}/yate/camel_bcsm_proxy.conf +%config(noreplace) %{_sysconfdir}/yate/ussd_map.conf %config(noreplace) %{_sysconfdir}/yate/sip_cnam_lnp.conf +%config(noreplace) %{_sysconfdir}/yate/xml_tcp.conf %config(noreplace) %{_sysconfdir}/yate/dummyradio.conf %config %{_sysconfdir}/logrotate.d/yate @@ -300,16 +325,19 @@ Requires: %{name} = %{version}-%{release} %description amr GSM-AMR and GSM-EFR audio codecs for Yate. AMR is a multi-rate codec that provides moderate to high compression rate and good voice quality. EFR is just a different payload stucture -for 12.2 kbit/s AMR-NB. +for 12.2 kbit/s AMR-NB. AMR-WB provides wideband (16 kHz) audio with bitrates between 7 and +24 kbit/s. %files amr %{_libdir}/yate/amrnbcodec.yate +%{_libdir}/yate/amrwbcodec.yate %{_libdir}/yate/efrcodec.yate %config(noreplace) %{_sysconfdir}/yate/amrnbcodec.conf +%config(noreplace) %{_sysconfdir}/yate/amrwbcodec.conf %define conf_amr %{nil} %else -%define conf_amr --without-amrnb +%define conf_amr --without-amrnb --without-amrwb %endif @@ -627,6 +655,30 @@ The devel package must still be installed separately. %defattr(-,root,root) +%if "%{no_cellalgo}" != "1" + +%package ltenas +Summary: Yate LTE NAS session support +Group: Applications/Communication +Requires: %{name} = %{version}-%{release} + +%description ltenas +This package provides support for LTE NAS integrity check and ciphering. + +%files ltenas +%{_libdir}/yate/mobile/nassession.yate + +%define conf_cellalgo %{nil} +%else +%define conf_cellalgo --without-cellalgo +%endif + +%if "%{no_kgtpu}" == "1" +%define conf_gtpu --disable-gtpuacc +%else +%define conf_gtpu %{nil} +%endif + # disable unpackaged files check if we know we are going to skip some %if "%{no_pstn}" == "1" %define _unpackaged_files_terminate_build 0 @@ -689,7 +741,7 @@ chmod +x %{local_find_requires} %{local_find_provides} --libdir=%{_libdir} --mandir=%{_mandir} --with-archlib=%{_lib} \ --without-spandsp --without-coredumper \ %{conf_sctp} %{conf_h323} %{conf_amr} %{conf_pstn} %{conf_usb} %{conf_gui} \ - %{?extra_conf} + %{conf_gtpu} %{conf_cellalgo} %{?extra_conf} make %{stripped} %{?extra_make} %{?extra_step} @@ -717,9 +769,15 @@ rm -rf %{buildroot} %changelog +* Thu Aug 10 2017 Paul Chitescu +- Added AMR-WB codec to the yate-amr package + * Fri Nov 25 2016 Paul Chitescu - Added package for the AMR codec +* Mon Jan 25 2016 Marian Podgoreanu +- Added separate package for nassession + * Thu Nov 26 2015 Paul Chitescu - More tweaking to suppress unwanted dependencies in newer RPM @@ -729,6 +787,13 @@ rm -rf %{buildroot} * Wed Apr 01 2015 Paul Chitescu - Package the new dynamic libyateasn.so +* Wed Apr 01 2015 Marian Podgoreanu +- Added codec utils dynamic library + +* Tue Nov 11 2014 Ioana Stanciu +- Added MAP & CAMEL codec library and new camelmap module +- Added xml_tcp module + * Tue Apr 29 2014 Paul Chitescu - Added SQLite module and subpackage diff --git a/yatewiresniff.h b/yatewiresniff.h new file mode 100644 index 00000000..9456a2d1 --- /dev/null +++ b/yatewiresniff.h @@ -0,0 +1,33 @@ +/** + * wiresniff.h + * This file is part of the YATE Project http://YATE.null.ro + * + * Definition of the tags related to wiresniff module. + * + * Yet Another Telephony Engine - a fully featured software PBX and IVR + * Copyright (C) 2018 Null Team + * + * This software is distributed under multiple licenses; + * see the COPYING file in the main directory for licensing + * information for this specific distribution. + * + * This use of this software may be subject to additional restrictions. + * See the LEGAL file in the main directory for details. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + */ + +#ifndef __WIRESNIFF_H +#define __WIRESNIFF_H + +#define YSNIFF_RESULT 1 +#define YSNIFF_THREAD_ADDR 2 +#define YSNIFF_THREAD_NAME 3 +#define YSNIFF_DATA 4 +#define YSNIFF_BROADCAST 5 +#define YSNIFF_FINAL_TAG 0 + + +#endif /*__WIRESNIFF_H*/