mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-11-08 12:34:53 +00:00
Merge branch 'master' of git://git.freeswitch.org/freeswitch
Conflicts: conf/autoload_configs/modules.conf.xml libs/freetdm/src/ftdm_sched.c libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c
This commit is contained in:
commit
8d66f38212
232 files changed
+57975
-3495
No files matched your search
@@ -11,6 +11,20 @@ config.*
|
||||
configure
|
||||
libtool
|
||||
aclocal.m4
|
||||
build/libtool.m4
|
||||
build/ltoptions.m4
|
||||
build/ltsugar.m4
|
||||
build/ltversion.m4
|
||||
build/lt~obsolete.m4
|
||||
|
||||
testanalog
|
||||
testapp
|
||||
testboost
|
||||
testcid
|
||||
testpri
|
||||
testr2
|
||||
testsangomaboost
|
||||
testtones
|
||||
|
||||
!/sample/boost/Makefile
|
||||
!/sample/dso/Makefile
|
||||
|
||||
+148
-182
@@ -29,29 +29,34 @@
|
||||
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
PREFIX = $(prefix)
|
||||
SRC = src
|
||||
ACLOCAL_AMFLAGS = -I build
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
|
||||
SRC = src
|
||||
|
||||
moddir = @modinstdir@
|
||||
libdir = @libdir@
|
||||
library_includedir = $(PREFIX)/include
|
||||
library_includedir = $(prefix)/include
|
||||
|
||||
INCS = -I$(FT_SRCDIR)/$(SRC)/include -I$(FT_SRCDIR)/$(SRC)/isdn/include -I$(FT_SRCDIR)/$(SRC)/include/private
|
||||
INCS += -I$(FT_SRCDIR)/$(SRC)/ftmod/ftmod_sangoma_boost
|
||||
if SNGSS7
|
||||
INCS += -I/usr/include/sng_ss7/
|
||||
endif
|
||||
if SNGISDN
|
||||
INCS += -I/usr/include/sng_isdn/
|
||||
INCS = -I$(FT_SRCDIR)/$(SRC)/include -I$(FT_SRCDIR)/$(SRC)/include/private
|
||||
INCS += -I$(FT_SRCDIR)/$(SRC)/ftmod/ftmod_sangoma_boost
|
||||
|
||||
if HAVE_SNG_SS7
|
||||
INCS += -I/usr/include/sng_ss7
|
||||
endif
|
||||
|
||||
MY_CFLAGS = $(INCS) $(FTDM_CFLAGS) -DFTDM_CONFIG_DIR=\"@confdir@\" -DFTDM_MOD_DIR=\"$(moddir)\" @COMP_VENDOR_CFLAGS@ @DEFS@
|
||||
COMPILE = $(CC) $(MY_CFLAGS) $(INCS)
|
||||
if HAVE_SNG_ISDN
|
||||
INCS += -I/usr/include/sng_isdn
|
||||
endif
|
||||
|
||||
FTDM_COMPAT_CFLAGS = $(INCS) -DFTDM_CONFIG_DIR=\"@confdir@\" -DFTDM_MOD_DIR=\"$(moddir)\" @COMP_VENDOR_COMPAT_CFLAGS@ @DEFS@
|
||||
FTDM_CFLAGS = $(INCS) -DFTDM_CONFIG_DIR=\"@confdir@\" -DFTDM_MOD_DIR=\"$(moddir)\" @COMP_VENDOR_CFLAGS@ @DEFS@
|
||||
COMPILE = $(CC) $(FTDM_CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(COMPILE)
|
||||
LINK = $(LIBTOOL) --mode=link --tag=CC $(CC) $(MY_CFLAGS) $(LDFLAGS) -o $@
|
||||
LINK = $(LIBTOOL) --mode=link --tag=CC $(CC) $(FTDM_CFLAGS) $(LDFLAGS) -o $@
|
||||
|
||||
if DEBUGDTMF
|
||||
MY_CFLAGS += -DFTDM_DEBUG_DTMF
|
||||
if WANT_DEBUGDTMF
|
||||
FTDM_CFLAGS += -DFTDM_DEBUG_DTMF
|
||||
endif
|
||||
|
||||
|
||||
@@ -68,265 +73,226 @@ pkgconfig_DATA = freetdm.pc
|
||||
# libfreetdm
|
||||
#
|
||||
libfreetdm_la_SOURCES = \
|
||||
$(SRC)/hashtable.c \
|
||||
$(SRC)/hashtable_itr.c \
|
||||
$(SRC)/ftdm_io.c \
|
||||
$(SRC)/ftdm_queue.c \
|
||||
$(SRC)/ftdm_sched.c \
|
||||
$(SRC)/ftdm_call_utils.c \
|
||||
$(SRC)/ftdm_config.c \
|
||||
$(SRC)/ftdm_callerid.c \
|
||||
$(SRC)/fsk.c \
|
||||
$(SRC)/uart.c \
|
||||
$(SRC)/g711.c \
|
||||
$(SRC)/libteletone_detect.c \
|
||||
$(SRC)/libteletone_generate.c \
|
||||
$(SRC)/ftdm_buffer.c \
|
||||
$(SRC)/ftdm_threadmutex.c \
|
||||
$(SRC)/ftdm_dso.c \
|
||||
$(SRC)/ftdm_cpu_monitor.c
|
||||
$(SRC)/hashtable.c \
|
||||
$(SRC)/hashtable_itr.c \
|
||||
$(SRC)/ftdm_io.c \
|
||||
$(SRC)/ftdm_queue.c \
|
||||
$(SRC)/ftdm_sched.c \
|
||||
$(SRC)/ftdm_call_utils.c \
|
||||
$(SRC)/ftdm_config.c \
|
||||
$(SRC)/ftdm_callerid.c \
|
||||
$(SRC)/fsk.c \
|
||||
$(SRC)/uart.c \
|
||||
$(SRC)/g711.c \
|
||||
$(SRC)/libteletone_detect.c \
|
||||
$(SRC)/libteletone_generate.c \
|
||||
$(SRC)/ftdm_buffer.c \
|
||||
$(SRC)/ftdm_threadmutex.c \
|
||||
$(SRC)/ftdm_dso.c \
|
||||
$(SRC)/ftdm_cpu_monitor.c
|
||||
|
||||
library_include_HEADERS = \
|
||||
$(SRC)/include/freetdm.h \
|
||||
$(SRC)/include/ftdm_declare.h \
|
||||
$(SRC)/include/ftdm_threadmutex.h \
|
||||
$(SRC)/include/ftdm_os.h \
|
||||
$(SRC)/include/ftdm_dso.h
|
||||
$(SRC)/include/freetdm.h \
|
||||
$(SRC)/include/ftdm_declare.h \
|
||||
$(SRC)/include/ftdm_threadmutex.h \
|
||||
$(SRC)/include/ftdm_os.h \
|
||||
$(SRC)/include/ftdm_dso.h
|
||||
|
||||
lib_LTLIBRARIES = libfreetdm.la
|
||||
libfreetdm_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
libfreetdm_la_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
libfreetdm_la_LDFLAGS = -version-info 1:0:0 $(AM_LDFLAGS)
|
||||
libfreetdm_la_LIBADD = $(LIBS)
|
||||
|
||||
MYLIB = libfreetdm.la
|
||||
|
||||
core: libfreetdm.la
|
||||
core-install: install-libLTLIBRARIES
|
||||
|
||||
#
|
||||
# tools & test programs
|
||||
#
|
||||
noinst_PROGRAMS = testtones detect_tones detect_dtmf testpri testr2 testanalog testapp testcid #testisdn
|
||||
if HAVE_SCTP
|
||||
noinst_PROGRAMS += testboost
|
||||
endif
|
||||
noinst_PROGRAMS = testtones detect_tones detect_dtmf testpri testr2 testanalog testapp testcid
|
||||
noinst_PROGRAMS += testsangomaboost
|
||||
|
||||
testapp_SOURCES = $(SRC)/testapp.c
|
||||
testapp_LDADD = libfreetdm.la
|
||||
testapp_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
testapp_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
|
||||
testcid_SOURCES = $(SRC)/testcid.c
|
||||
testcid_LDADD = libfreetdm.la
|
||||
testcid_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
testcid_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
|
||||
testtones_SOURCES = $(SRC)/testtones.c
|
||||
testtones_LDADD = libfreetdm.la
|
||||
testtones_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
testtones_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
|
||||
detect_tones_SOURCES = $(SRC)/detect_tones.c
|
||||
detect_tones_LDADD = libfreetdm.la
|
||||
detect_tones_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
detect_tones_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
|
||||
detect_dtmf_SOURCES = $(SRC)/detect_dtmf.c
|
||||
detect_dtmf_LDADD = libfreetdm.la
|
||||
detect_dtmf_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
detect_dtmf_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
|
||||
#testisdn_SOURCES = $(SRC)/testisdn.c
|
||||
#testisdn_LDADD = libfreetdm.la
|
||||
#testisdn_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
#testisdn_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
|
||||
testpri_SOURCES = $(SRC)/testpri.c
|
||||
testpri_LDADD = libfreetdm.la
|
||||
testpri_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
testpri_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
|
||||
testr2_SOURCES = $(SRC)/testr2.c
|
||||
testr2_LDADD = libfreetdm.la
|
||||
testr2_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
testr2_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
|
||||
if HAVE_SCTP
|
||||
noinst_PROGRAMS += testboost
|
||||
testboost_SOURCES = $(SRC)/testboost.c
|
||||
testboost_LDADD = libfreetdm.la
|
||||
testboost_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
testboost_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
endif
|
||||
|
||||
testsangomaboost_SOURCES = $(SRC)/testsangomaboost.c
|
||||
testsangomaboost_LDADD = libfreetdm.la
|
||||
testsangomaboost_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
testsangomaboost_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
|
||||
testanalog_SOURCES = $(SRC)/testanalog.c
|
||||
testanalog_LDADD = libfreetdm.la
|
||||
testanalog_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
testanalog_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
|
||||
#
|
||||
# ftmod modules
|
||||
#
|
||||
mod_LTLIBRARIES = ftmod_zt.la ftmod_skel.la ftmod_analog.la ftmod_analog_em.la #ftmod_isdn.la
|
||||
|
||||
|
||||
if HAVE_SCTP
|
||||
mod_LTLIBRARIES += ftmod_sangoma_boost.la
|
||||
endif
|
||||
|
||||
if LIBSANGOMA
|
||||
mod_LTLIBRARIES += ftmod_wanpipe.la
|
||||
endif
|
||||
|
||||
if LIBPRI
|
||||
mod_LTLIBRARIES += ftmod_libpri.la
|
||||
endif
|
||||
|
||||
if PRITAP
|
||||
mod_LTLIBRARIES += ftmod_pritap.la
|
||||
endif
|
||||
|
||||
if SNGSS7
|
||||
mod_LTLIBRARIES += ftmod_sangoma_ss7.la
|
||||
endif
|
||||
|
||||
if SNGISDN
|
||||
mod_LTLIBRARIES += ftmod_sangoma_isdn.la
|
||||
endif
|
||||
|
||||
if OPENR2
|
||||
mod_LTLIBRARIES += ftmod_r2.la
|
||||
endif
|
||||
mod_LTLIBRARIES = ftmod_zt.la ftmod_skel.la ftmod_analog.la ftmod_analog_em.la
|
||||
|
||||
ftmod_zt_la_SOURCES = $(SRC)/ftmod/ftmod_zt/ftmod_zt.c
|
||||
ftmod_zt_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
ftmod_zt_la_LDFLAGS = -module -avoid-version
|
||||
ftmod_zt_la_LIBADD = $(MYLIB)
|
||||
ftmod_zt_la_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
ftmod_zt_la_LDFLAGS = -shared -module -avoid-version
|
||||
ftmod_zt_la_LIBADD = libfreetdm.la
|
||||
|
||||
ftmod_skel_la_SOURCES = $(SRC)/ftmod/ftmod_skel/ftmod_skel.c
|
||||
ftmod_skel_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
ftmod_skel_la_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
ftmod_skel_la_LDFLAGS = -module -avoid-version
|
||||
ftmod_skel_la_LIBADD = $(MYLIB)
|
||||
|
||||
if LIBSANGOMA
|
||||
ftmod_wanpipe_la_SOURCES = $(SRC)/ftmod/ftmod_wanpipe/ftmod_wanpipe.c
|
||||
ftmod_wanpipe_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS) -D__LINUX__ -I/usr/include/wanpipe
|
||||
ftmod_wanpipe_la_LDFLAGS = -module -avoid-version -lsangoma
|
||||
ftmod_wanpipe_la_LIBADD = $(MYLIB)
|
||||
endif
|
||||
|
||||
#ftmod_isdn_la_SOURCES = \
|
||||
#$(SRC)/isdn/EuroISDNStateNT.c \
|
||||
#$(SRC)/isdn/EuroISDNStateTE.c \
|
||||
#$(SRC)/isdn/mfifo.c \
|
||||
#$(SRC)/isdn/Q921.c \
|
||||
#$(SRC)/isdn/Q931api.c \
|
||||
#$(SRC)/isdn/Q931.c \
|
||||
#$(SRC)/isdn/Q931ie.c \
|
||||
#$(SRC)/isdn/Q931mes.c \
|
||||
#$(SRC)/isdn/Q931StateNT.c \
|
||||
#$(SRC)/isdn/Q931StateTE.c \
|
||||
#$(SRC)/isdn/nationalmes.c \
|
||||
#$(SRC)/isdn/nationalStateNT.c \
|
||||
#$(SRC)/isdn/nationalStateTE.c \
|
||||
#$(SRC)/isdn/DMSmes.c \
|
||||
#$(SRC)/isdn/DMSStateNT.c \
|
||||
#$(SRC)/isdn/DMSStateTE.c \
|
||||
#$(SRC)/isdn/5ESSmes.c \
|
||||
#$(SRC)/isdn/5ESSStateNT.c \
|
||||
#$(SRC)/isdn/5ESSStateTE.c \
|
||||
#$(SRC)/isdn/Q932mes.c \
|
||||
#$(SRC)/ftmod/ftmod_isdn/ftmod_isdn.c
|
||||
|
||||
#ftmod_isdn_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS) -D_GNU_SOURCE
|
||||
#ftmod_isdn_la_LDFLAGS = $(PCAP_LIB_FLAGS) -module -avoid-version
|
||||
#ftmod_isdn_la_LIBADD = $(MYLIB)
|
||||
ftmod_skel_la_LIBADD = libfreetdm.la
|
||||
|
||||
ftmod_analog_la_SOURCES = $(SRC)/ftmod/ftmod_analog/ftmod_analog.c
|
||||
ftmod_analog_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
ftmod_analog_la_LDFLAGS = -module -avoid-version
|
||||
ftmod_analog_la_LIBADD = $(MYLIB)
|
||||
ftmod_analog_la_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
ftmod_analog_la_LDFLAGS = -shared -module -avoid-version
|
||||
ftmod_analog_la_LIBADD = libfreetdm.la
|
||||
|
||||
ftmod_analog_em_la_SOURCES = $(SRC)/ftmod/ftmod_analog_em/ftmod_analog_em.c
|
||||
ftmod_analog_em_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
ftmod_analog_em_la_LDFLAGS = -module -avoid-version
|
||||
ftmod_analog_em_la_LIBADD = $(MYLIB)
|
||||
ftmod_analog_em_la_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
ftmod_analog_em_la_LDFLAGS = -shared -module -avoid-version
|
||||
ftmod_analog_em_la_LIBADD = libfreetdm.la
|
||||
|
||||
if HAVE_LIBSANGOMA
|
||||
mod_LTLIBRARIES += ftmod_wanpipe.la
|
||||
ftmod_wanpipe_la_SOURCES = $(SRC)/ftmod/ftmod_wanpipe/ftmod_wanpipe.c
|
||||
#some structures within Wanpipe drivers are not c99 compatible, so we need to compile ftmod_wanpipe
|
||||
#without c99 flags
|
||||
ftmod_wanpipe_la_CFLAGS = $(AM_CFLAGS) $(FTDM_COMPAT_CFLAGS) -D__LINUX__ -I/usr/include/wanpipe
|
||||
ftmod_wanpipe_la_LDFLAGS = -shared -module -avoid-version -lsangoma
|
||||
ftmod_wanpipe_la_LIBADD = libfreetdm.la
|
||||
endif
|
||||
|
||||
if HAVE_LIBISDN
|
||||
mod_LTLIBRARIES += ftmod_isdn.la
|
||||
ftmod_isdn_la_SOURCES = $(SRC)/ftmod/ftmod_isdn/ftmod_isdn.c
|
||||
ftmod_isdn_la_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS) -D_GNU_SOURCE $(LIBISDN_CPPFLAGS) $(PCAP_CPPFLAGS)
|
||||
ftmod_isdn_la_LDFLAGS = -shared -module -avoid-version $(LIBISDN_LDFLAGS) $(PCAP_LDFLAGS)
|
||||
ftmod_isdn_la_LIBADD = libfreetdm.la $(LIBISDN_LIBS) $(PCAP_LIBS)
|
||||
endif
|
||||
|
||||
if HAVE_SCTP
|
||||
mod_LTLIBRARIES += ftmod_sangoma_boost.la
|
||||
ftmod_sangoma_boost_la_SOURCES = $(SRC)/ftmod/ftmod_sangoma_boost/sangoma_boost_client.c $(SRC)/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.c
|
||||
ftmod_sangoma_boost_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
ftmod_sangoma_boost_la_LDFLAGS = -module -avoid-version
|
||||
ftmod_sangoma_boost_la_LIBADD = $(MYLIB)
|
||||
ftmod_sangoma_boost_la_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
ftmod_sangoma_boost_la_LDFLAGS = -shared -module -avoid-version
|
||||
ftmod_sangoma_boost_la_LIBADD = libfreetdm.la
|
||||
endif
|
||||
|
||||
if LIBPRI
|
||||
if HAVE_LIBPRI
|
||||
mod_LTLIBRARIES += ftmod_libpri.la
|
||||
ftmod_libpri_la_SOURCES = $(SRC)/ftmod/ftmod_libpri/ftmod_libpri.c $(SRC)/ftmod/ftmod_libpri/lpwrap_pri.c
|
||||
ftmod_libpri_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
ftmod_libpri_la_LDFLAGS = -module -avoid-version -lpri
|
||||
ftmod_libpri_la_LIBADD = $(MYLIB)
|
||||
ftmod_libpri_la_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
ftmod_libpri_la_LDFLAGS = -shared -module -avoid-version -lpri
|
||||
ftmod_libpri_la_LIBADD = libfreetdm.la
|
||||
endif
|
||||
|
||||
if PRITAP
|
||||
if HAVE_PRITAP
|
||||
mod_LTLIBRARIES += ftmod_pritap.la
|
||||
ftmod_pritap_la_SOURCES = $(SRC)/ftmod/ftmod_pritap/ftmod_pritap.c
|
||||
ftmod_pritap_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
ftmod_pritap_la_LDFLAGS = -module -avoid-version -lpri
|
||||
ftmod_pritap_la_LIBADD = $(MYLIB)
|
||||
ftmod_pritap_la_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
ftmod_pritap_la_LDFLAGS = -shared -module -avoid-version -lpri
|
||||
ftmod_pritap_la_LIBADD = libfreetdm.la
|
||||
endif
|
||||
|
||||
if SNGSS7
|
||||
ftmod_sangoma_ss7_la_SOURCES = $(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_main.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_handle.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_in.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_out.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_cntrl.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_xml.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_timers.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_cli.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_cfg.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_sta.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_sts.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_logger.c
|
||||
ftmod_sangoma_ss7_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS) -D_GNU_SOURCE
|
||||
ftmod_sangoma_ss7_la_LDFLAGS = -module -avoid-version -lsng_ss7
|
||||
ftmod_sangoma_ss7_la_LIBADD = $(MYLIB)
|
||||
if HAVE_SNG_SS7
|
||||
mod_LTLIBRARIES += ftmod_sangoma_ss7.la
|
||||
ftmod_sangoma_ss7_la_SOURCES = \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_main.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_handle.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_in.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_out.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_cntrl.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_xml.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_timers.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_cli.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_cfg.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_sta.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_sts.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_logger.c
|
||||
|
||||
ftmod_sangoma_ss7_la_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS) -D_GNU_SOURCE
|
||||
ftmod_sangoma_ss7_la_LDFLAGS = -shared -module -avoid-version -lsng_ss7
|
||||
ftmod_sangoma_ss7_la_LIBADD = libfreetdm.la
|
||||
endif
|
||||
|
||||
if SNGISDN
|
||||
ftmod_sangoma_isdn_la_SOURCES = $(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cfg.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cntrl.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_trace.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_support.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cntrl.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cfg.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_rcv.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_hndl.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_out.c
|
||||
if HAVE_SNG_ISDN
|
||||
mod_LTLIBRARIES += ftmod_sangoma_isdn.la
|
||||
ftmod_sangoma_isdn_la_SOURCES = \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cfg.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cntrl.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_trace.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_support.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cntrl.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cfg.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_rcv.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_hndl.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_out.c
|
||||
|
||||
|
||||
ftmod_sangoma_isdn_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS) -D_GNU_SOURCE
|
||||
ftmod_sangoma_isdn_la_LDFLAGS = -module -avoid-version -lsng_isdn
|
||||
ftmod_sangoma_isdn_la_LIBADD = $(MYLIB)
|
||||
ftmod_sangoma_isdn_la_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS) -D_GNU_SOURCE
|
||||
ftmod_sangoma_isdn_la_LDFLAGS = -shared -module -avoid-version -lsng_isdn
|
||||
ftmod_sangoma_isdn_la_LIBADD = libfreetdm.la
|
||||
endif
|
||||
|
||||
if OPENR2
|
||||
if HAVE_OPENR2
|
||||
mod_LTLIBRARIES += ftmod_r2.la
|
||||
ftmod_r2_la_SOURCES = $(SRC)/ftmod/ftmod_r2/ftmod_r2.c
|
||||
ftmod_r2_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
ftmod_r2_la_LDFLAGS = -module -avoid-version -lopenr2
|
||||
ftmod_r2_la_LIBADD = $(MYLIB)
|
||||
ftmod_r2_la_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
ftmod_r2_la_LDFLAGS = -shared -module -avoid-version -lopenr2
|
||||
ftmod_r2_la_LIBADD = libfreetdm.la
|
||||
endif
|
||||
|
||||
dox doxygen:
|
||||
doxygen $(FT_SRCDIR)/docs/Doxygen.conf
|
||||
|
||||
mod_freetdm/mod_freetdm.$(DYNAMIC_LIB_EXTEN): $(MYLIB) mod_freetdm/mod_freetdm.c
|
||||
cd mod_freetdm && make
|
||||
mod_freetdm/mod_freetdm.$(DYNAMIC_LIB_EXTEN): libfreetdm.la mod_freetdm/mod_freetdm.c
|
||||
$(MAKE) -C mod_freetdm
|
||||
|
||||
mod_freetdm: mod_freetdm/mod_freetdm.$(DYNAMIC_LIB_EXTEN)
|
||||
|
||||
mod_freetdm-install: mod_freetdm
|
||||
cd mod_freetdm && make install
|
||||
$(MAKE) -C mod_freetdm install
|
||||
|
||||
mod_freetdm-clean:
|
||||
@if [ -f mod_freetdm/mod_freetdm.$(DYNAMIC_LIB_EXTEN) ] ; then cd mod_freetdm && make clean ; fi
|
||||
@if [ -f mod_freetdm/mod_freetdm.$(DYNAMIC_LIB_EXTEN) ] ; then \
|
||||
$(MAKE) -C mod_freetdm clean ; \
|
||||
fi
|
||||
|
||||
install-data-local:
|
||||
$(mkinstalldirs) $(DESTDIR)$(PREFIX)
|
||||
$(mkinstalldirs) $(DESTDIR)$(prefix)
|
||||
$(mkinstalldirs) $(DESTDIR)@confdir@
|
||||
@[ -f "$(DESTDIR)@confdir@/freetdm.conf" ] || ( cp conf/*.conf $(DESTDIR)@confdir@)
|
||||
@echo FreeTDM Installed
|
||||
@@ -0,0 +1,15 @@
|
||||
AC_DEFUN([AX_COMPILER_VENDOR],
|
||||
[
|
||||
AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor,
|
||||
[ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=unknown
|
||||
# note: don't check for gcc first since some other compilers define __GNUC__
|
||||
for ventest in intel:__ICC,__ECC,__INTEL_COMPILER ibm:__xlc__,__xlC__,__IBMC__,__IBMCPP__ gnu:__GNUC__ sun:__SUNPRO_C,__SUNPRO_CC hp:__HP_cc,__HP_aCC dec:__DECC,__DECCXX,__DECC_VER,__DECCXX_VER borland:__BORLANDC__,__TURBOC__ comeau:__COMO__ cray:_CRAYC kai:__KCC lcc:__LCC__ metrowerks:__MWERKS__ sgi:__sgi,sgi microsoft:_MSC_VER watcom:__WATCOMC__ portland:__PGI; do
|
||||
vencpp="defined("`echo $ventest | cut -d: -f2 | sed 's/,/) || defined(/g'`")"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[
|
||||
#if !($vencpp)
|
||||
thisisanerror;
|
||||
#endif
|
||||
])], [ax_cv_]_AC_LANG_ABBREV[_compiler_vendor=`echo $ventest | cut -d: -f1`; break])
|
||||
done
|
||||
])
|
||||
])
|
||||
@@ -2,6 +2,10 @@ dnl libpcap.m4--PCAP libraries and includes
|
||||
dnl Derrick Brashear
|
||||
dnl from KTH krb and Arla
|
||||
dnl $Id: libpcap.m4,v 1.4 2006/01/20 20:21:09 snsimon Exp $
|
||||
dnl 2010/10/31 (stkn):
|
||||
dnl rename: PCAP_INC_FLAGS -> PCAP_CPPFLAGS
|
||||
dnl rename: PCAP_LIB_FLAGS -> PCAP_LDFLAGS (-L flags only)
|
||||
dnl add: PCAP_LIBS (libs only)
|
||||
|
||||
AC_DEFUN([PCAP_INC_WHERE1], [
|
||||
ac_cv_found_pcap_inc=no
|
||||
@@ -129,12 +133,14 @@ AC_ARG_WITH(pcap-include,
|
||||
AC_MSG_RESULT(yes)
|
||||
PCAP_INC_DIR=$ac_cv_pcap_where_inc
|
||||
PCAP_LIB_DIR=$ac_cv_pcap_where_lib
|
||||
PCAP_INC_FLAGS="-I${PCAP_INC_DIR}"
|
||||
PCAP_LIB_FLAGS="-L${PCAP_LIB_DIR} -lpcap"
|
||||
PCAP_CPPFLAGS="-I${PCAP_INC_DIR}"
|
||||
PCAP_LDFLAGS="-L${PCAP_LIB_DIR}"
|
||||
PCAP_LIBS="-lpcap"
|
||||
AC_SUBST(PCAP_INC_DIR)
|
||||
AC_SUBST(PCAP_LIB_DIR)
|
||||
AC_SUBST(PCAP_INC_FLAGS)
|
||||
AC_SUBST(PCAP_LIB_FLAGS)
|
||||
AC_SUBST(PCAP_CPPFLAGS)
|
||||
AC_SUBST(PCAP_LDFLAGS)
|
||||
AC_SUBST(PCAP_LIBS)
|
||||
AC_DEFINE([HAVE_LIBPCAP],[1],[libpcap])
|
||||
else
|
||||
ac_cv_found_pcap=no
|
||||
|
||||
+290
-142
@@ -1,119 +1,120 @@
|
||||
# -*- Autoconf -*-
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ(2.59)
|
||||
AC_INIT([freetdm],[pre-alpha],[bugs@freeswitch.org])
|
||||
AC_PREREQ([2.59])
|
||||
AC_INIT([freetdm], [pre-alpha], [bugs@freeswitch.org])
|
||||
AC_CONFIG_SRCDIR([src/ftdm_io.c])
|
||||
|
||||
AC_CONFIG_AUX_DIR(build)
|
||||
AM_INIT_AUTOMAKE(libfreetdm,0.1)
|
||||
AC_CONFIG_AUX_DIR([build])
|
||||
AC_CONFIG_MACRO_DIR([build])
|
||||
AM_INIT_AUTOMAKE([libfreetdm], [0.1])
|
||||
|
||||
# >=automake-1.11
|
||||
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
||||
|
||||
# override some default libtool behavior and invoke AC_PROG_LIBTOOL
|
||||
# (see http://lists.gnu.org/archive/html/libtool/2007-03/msg00000.html)
|
||||
m4_defun([_LT_AC_LANG_F77_CONFIG], [:])
|
||||
m4_defun([_LT_AC_LANG_GCJ_CONFIG], [:])
|
||||
m4_defun([_LT_AC_LANG_RC_CONFIG], [:])
|
||||
|
||||
# Checks for programs.
|
||||
AC_PROG_CC
|
||||
AC_PROG_MAKE_SET
|
||||
AM_PROG_CC_C_O
|
||||
AC_PROG_LIBTOOL
|
||||
AC_PROG_INSTALL
|
||||
PKG_PROG_PKG_CONFIG
|
||||
|
||||
AC_PREFIX_DEFAULT(/usr/local/freetdm)
|
||||
# AC_PREFIX_DEFAULT does not get expanded until too late so we need to do this to use prefix in this script
|
||||
if test "x$prefix" = "xNONE" ; then
|
||||
prefix='/usr/local/freetdm'
|
||||
AX_COMPILER_VENDOR
|
||||
|
||||
# AC_PREFIX_DEFAULT does not get expanded until too late so we need
|
||||
# to do this to use prefix in this script
|
||||
AC_PREFIX_DEFAULT([/usr/local/freetdm])
|
||||
if test "x${prefix}" = "xNONE" ; then
|
||||
prefix='/usr/local/freetdm'
|
||||
fi
|
||||
|
||||
# Absolute source/build directory
|
||||
FT_SRCDIR=`(cd $srcdir && pwd)`
|
||||
ft_builddir=`pwd`
|
||||
AC_SUBST(FT_SRCDIR)
|
||||
AC_SUBST(ft_builddir)
|
||||
AC_SUBST([FT_SRCDIR])
|
||||
AC_SUBST([ft_builddir])
|
||||
|
||||
if test "$sysconfdir" = "\${prefix}/etc" ; then
|
||||
confdir="$prefix/conf"
|
||||
confdir="$prefix/conf"
|
||||
else
|
||||
confdir="$sysconfdir"
|
||||
confdir="$sysconfdir"
|
||||
fi
|
||||
|
||||
AC_SUBST(confdir)
|
||||
AC_SUBST([confdir])
|
||||
|
||||
#override some default libtool behavior and invoke AC_PROG_LIBTOOL (see http://lists.gnu.org/archive/html/libtool/2007-03/msg00000.html)
|
||||
m4_defun([_LT_AC_LANG_F77_CONFIG], [:])
|
||||
m4_defun([_LT_AC_LANG_GCJ_CONFIG], [:])
|
||||
m4_defun([_LT_AC_LANG_RC_CONFIG], [:])
|
||||
#AM_PROG_CC_C_O
|
||||
AC_PROG_LIBTOOL
|
||||
AC_PROG_INSTALL
|
||||
# Where to install the modules
|
||||
AC_ARG_WITH([modinstdir],
|
||||
[AS_HELP_STRING([--with-modinstdir=DIR], [Install modules into this location (default: ${prefix}/mod)])],
|
||||
[case "${withval}" in
|
||||
no|yes) AC_MSG_ERROR([Invalid value \"${withval}\", option requires a valid path]) ;;
|
||||
*) modinstdir="${withval}" ;;
|
||||
esac],
|
||||
[modinstdir="${prefix}/mod"]
|
||||
)
|
||||
AC_SUBST([modinstdir])
|
||||
|
||||
# Check for com;iler type
|
||||
AC_DEFUN([AX_COMPILER_VENDOR],
|
||||
[
|
||||
AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor,
|
||||
[ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=unknown
|
||||
# note: don't check for GCC first, since some other compilers define __GNUC__
|
||||
for ventest in intel:__ICC,__ECC,__INTEL_COMPILER ibm:__xlc__,__xlC__,__IBMC__,__IBMCPP__ gnu:__GNUC__ sun:__SUNPRO_C,__SUNPRO_CC hp:__HP_cc,__HP_aCC dec:__DECC,__DECCXX,__DECC_VER,__DECCXX_VER borland:__BORLANDC__,__TURBOC__ comeau:__COMO__ cray:_CRAYC kai:__KCC lcc:__LCC__ metrowerks:__MWERKS__ sgi:__sgi,sgi microsoft:_MSC_VER watcom:__WATCOMC__ portland:__PGI; do
|
||||
vencpp="defined("`echo $ventest | cut -d: -f2 | sed 's/,/) || defined(/g'`")"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[
|
||||
#if !($vencpp)
|
||||
thisisanerror;
|
||||
#endif
|
||||
])], [ax_cv_]_AC_LANG_ABBREV[_compiler_vendor=`echo $ventest | cut -d: -f1`; break])
|
||||
done
|
||||
])
|
||||
])
|
||||
AC_ARG_ENABLE([enable_64], [AS_HELP_STRING([--enable-64], [Enable 64bit compilation])], [enable_64="$enableval"], [enable_64="no"])
|
||||
|
||||
AX_COMPILER_VENDOR
|
||||
AC_ARG_ENABLE([enable_64],
|
||||
[AS_HELP_STRING([--enable-64], [Enable 64bit compilation])],
|
||||
[enable_64="${enableval}"],
|
||||
[enable_64="no"]
|
||||
)
|
||||
|
||||
case "${ax_cv_c_compiler_vendor}" in
|
||||
gnu)
|
||||
COMP_VENDOR_CFLAGS="-ffast-math -Wall -Werror -Wunused-variable -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -O0"
|
||||
;;
|
||||
COMP_VENDOR_CFLAGS="-ffast-math -Wall -Werror -Wunused-variable -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -O0"
|
||||
;;
|
||||
sun)
|
||||
COMP_VENDOR_CFLAGS="-xc99=all -mt -xCC -D__FUNCTION__=__func__ -xvpara"
|
||||
if test "$enable_64" = "yes" ; then
|
||||
COMP_VENDOR_CFLAGS="-m64 $COMP_VENDOR_CFLAGS"
|
||||
fi
|
||||
;;
|
||||
COMP_VENDOR_CFLAGS="-xc99=all -mt -xCC -D__FUNCTION__=__func__ -xvpara"
|
||||
if test "$enable_64" != "no" ; then
|
||||
COMP_VENDOR_CFLAGS="-m64 $COMP_VENDOR_CFLAGS"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
COMP_VENDOR_CFLAGS="-std=c99 -Wall -Wunused-variable -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes"
|
||||
;;
|
||||
COMP_VENDOR_COMPAT_CFLAGS="-Wall -Wunused-variable -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes"
|
||||
COMP_VENDOR_CFLAGS="-std=c99 $COMP_VENDOR_COMPAT_CFLAGS"
|
||||
;;
|
||||
esac
|
||||
AC_SUBST([COMP_VENDOR_COMPAT_CFLAGS])
|
||||
AC_SUBST([COMP_VENDOR_CFLAGS])
|
||||
|
||||
|
||||
#set SOLINK variable based on compiler and host
|
||||
if test "x${ax_cv_c_compiler_vendor}" = "xsun" ; then
|
||||
SOLINK="-Bdynamic -dy -G"
|
||||
elif test "x${ax_cv_c_compiler_vendor}" = "xgnu" ; then
|
||||
case "$host" in
|
||||
*darwin*)
|
||||
SOLINK="-dynamic -bundle -force-flat-namespace"
|
||||
;;
|
||||
*-solaris2*)
|
||||
SOLINK="-shared -Xlinker"
|
||||
;;
|
||||
*)
|
||||
SOLINK="-shared -Xlinker -x"
|
||||
;;
|
||||
esac
|
||||
else
|
||||
AC_ERROR([Please update configure.in with SOLINK values for your compiler])
|
||||
# Enable debugging
|
||||
AC_ARG_ENABLE([debug],
|
||||
[AC_HELP_STRING([--enable-debug], [build with debug information])],
|
||||
[enable_debug="${enableval}"],
|
||||
[enable_debug="yes"]
|
||||
)
|
||||
if test "${enable_debug}" != "no"; then
|
||||
AC_DEFINE([DEBUG], [], [Enable extra debugging.])
|
||||
|
||||
if test "x${ax_cv_c_compiler_vendor}" = "xgnu" ; then
|
||||
COMP_VENDOR_CFLAGS="$COMP_VENDOR_CFLAGS -g -ggdb"
|
||||
fi
|
||||
fi
|
||||
AC_SUBST([COMP_VENDOR_CFLAGS])
|
||||
|
||||
# set DYNAMIC_LIB_EXTEN
|
||||
# we should really be using libtool so we don't need to do this
|
||||
case "$host" in
|
||||
*cygwin* | *mingw*)
|
||||
DYNAMIC_LIB_EXTEN="dll"
|
||||
;;
|
||||
*)
|
||||
DYNAMIC_LIB_EXTEN="so"
|
||||
;;
|
||||
*cygwin* | *mingw*)
|
||||
DYNAMIC_LIB_EXTEN="dll"
|
||||
;;
|
||||
*)
|
||||
DYNAMIC_LIB_EXTEN="so"
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_SUBST(SOLINK)
|
||||
AC_SUBST(DYNAMIC_LIB_EXTEN)
|
||||
AC_SUBST([DYNAMIC_LIB_EXTEN])
|
||||
|
||||
AC_CHECK_LIB([dl], [dlopen])
|
||||
AC_CHECK_LIB([pthread], [pthread_create])
|
||||
AC_CHECK_LIB([m], [cos])
|
||||
AX_LIB_PCAP
|
||||
|
||||
AC_CHECK_HEADERS([netinet/sctp.h netdb.h sys/select.h])
|
||||
AM_CONDITIONAL([HAVE_SCTP],[test "${ac_cv_header_netinet_sctp_h}" = "yes"])
|
||||
@@ -121,105 +122,252 @@ AM_CONDITIONAL([HAVE_SCTP],[test "${ac_cv_header_netinet_sctp_h}" = "yes"])
|
||||
AC_CHECK_FUNC([gethostbyname_r],
|
||||
[], [AC_CHECK_LIB([nsl], [gethostbyname_r])]
|
||||
)
|
||||
if test "$ac_cv_func_gethostbyname_r" = "yes" -o "$ac_cv_lib_nsl_gethostbyname_r" = "yes" ; then
|
||||
if test "$ac_cv_func_gethostbyname_r" = "yes" -o "$ac_cv_lib_nsl_gethostbyname_r" = "yes"
|
||||
then
|
||||
AC_MSG_CHECKING([whether gethostbyname_r requires five arguments])
|
||||
|
||||
AC_MSG_CHECKING([whether gethostbyname_r requires five arguments])
|
||||
ac_cv_func_gethostbyname_r_five_args="no"
|
||||
|
||||
ac_cv_func_gethostbyname_r_five_args="no"
|
||||
AC_TRY_COMPILE([#include <netdb.h>],
|
||||
[char *name;
|
||||
struct hostent *he, *res;
|
||||
char buffer[2048];
|
||||
int buflen = 2048;
|
||||
(void)gethostbyname_r(name, he, buffer, buflen, &res)],
|
||||
[ac_cv_func_gethostbyname_r_five_args="yes"
|
||||
AC_DEFINE([HAVE_GETHOSTBYNAME_R_FIVE], [1], [gethostbyname_r has five arguments])]
|
||||
)
|
||||
|
||||
AC_TRY_COMPILE([#include <netdb.h>],
|
||||
[char *name;
|
||||
struct hostent *he, *res;
|
||||
char buffer[2048];
|
||||
int buflen = 2048;
|
||||
(void)gethostbyname_r(name, he, buffer, buflen, &res)],
|
||||
[ac_cv_func_gethostbyname_r_five_args="yes"
|
||||
AC_DEFINE([HAVE_GETHOSTBYNAME_R_FIVE], [1], [gethostbyname_r has five arguments])]
|
||||
)
|
||||
|
||||
AC_MSG_RESULT([$ac_cv_func_gethostbyname_r_five_args])
|
||||
AC_DEFINE([HAVE_GETHOSTBYNAME_R],[1],[threadsafe gethostbyname])
|
||||
AC_MSG_RESULT([$ac_cv_func_gethostbyname_r_five_args])
|
||||
AC_DEFINE([HAVE_GETHOSTBYNAME_R], [1], [threadsafe gethostbyname])
|
||||
fi
|
||||
|
||||
# Enable debugging
|
||||
AC_ARG_ENABLE(debug,
|
||||
[AC_HELP_STRING([--enable-debug],[build with debug information])],[enable_debug="$enableval"],[enable_debug="yes"])
|
||||
##
|
||||
## Modules and optional features
|
||||
##
|
||||
AC_MSG_RESULT([${as_nl}<<>> Modules and optional features])
|
||||
|
||||
if test "${enable_debug}" = "yes"; then
|
||||
AC_DEFINE([DEBUG],[],[Enable extra debugging.])
|
||||
|
||||
if test "x${ax_cv_c_compiler_vendor}" = "xgnu" ; then
|
||||
COMP_VENDOR_CFLAGS="$COMP_VENDOR_CFLAGS -g -ggdb"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Where to install the modules
|
||||
AC_ARG_WITH([modinstdir],
|
||||
[AS_HELP_STRING([--with-modinstdir=DIR], [Install modules into this location (default: $prefix/mod)])], [modinstdir="$withval"], [modinstdir="${prefix}/mod"])
|
||||
|
||||
AC_SUBST(modinstdir)
|
||||
|
||||
|
||||
# libpri?
|
||||
AC_ARG_WITH([libpri],
|
||||
[AS_HELP_STRING([--with-libpri], [Install ftmod_libpri])], [enable_libpri="yes"], [enable_libpri="no"])
|
||||
AC_SUBST(enable_libpri)
|
||||
|
||||
# pritap?
|
||||
##
|
||||
# pritap (TODO: add checks)
|
||||
#
|
||||
HAVE_PRITAP="no"
|
||||
AC_ARG_WITH([pritap],
|
||||
[AS_HELP_STRING([--with-pritap], [Install ftmod_pritap])], [enable_pritap="yes"], [enable_pritap="no"])
|
||||
AC_SUBST(enable_pritap)
|
||||
[AS_HELP_STRING([--with-pritap], [Install ftmod_pritap])],
|
||||
[case "${withval}" in
|
||||
no) enable_pritap="no" ;;
|
||||
*) enable_pritab="yes" ;;
|
||||
esac],
|
||||
[enable_pritap="no"]
|
||||
)
|
||||
HAVE_PRITAP="${enable_pritap}"
|
||||
AM_CONDITIONAL([HAVE_PRITAP],[test "${enable_pritap}" = "yes"])
|
||||
|
||||
# debug dtmf?
|
||||
AC_ARG_WITH([debugdtmf],
|
||||
[AS_HELP_STRING([--with-debugdtmf], [Debug DTMF])], [enable_debugdtmf="yes"], [enable_debugdtmf="no"])
|
||||
AC_SUBST(enable_debugdtmf)
|
||||
[AS_HELP_STRING([--with-debugdtmf], [Debug DTMF])],
|
||||
[case "${withval}" in
|
||||
no) enable_debugdtmf="no" ;;
|
||||
*) enable_debugdtmf="yes" ;;
|
||||
esac],
|
||||
[enable_debugdtmf="no"]
|
||||
)
|
||||
AM_CONDITIONAL([WANT_DEBUGDTMF], [test "${enable_debugdtmf}" = "yes"])
|
||||
|
||||
AC_CHECK_LIB([sangoma], [sangoma_span_chan_toif], [have_libsangoma="yes"])
|
||||
AM_CONDITIONAL([LIBSANGOMA],[test "${have_libsangoma}" = "yes"])
|
||||
##
|
||||
# OpenR2 stack
|
||||
#
|
||||
HAVE_OPENR2="no"
|
||||
AC_CHECK_LIB([openr2], [openr2_context_set_io_type], [HAVE_OPENR2="yes"])
|
||||
AC_MSG_RESULT([checking whether to build ftmod_r2... ${HAVE_OPENR2}])
|
||||
AM_CONDITIONAL([HAVE_OPENR2], [test "${HAVE_OPENR2}" = "yes"])
|
||||
|
||||
AM_CONDITIONAL([LIBPRI],[test "${enable_libpri}" = "yes"])
|
||||
##
|
||||
# Digium libpri (TODO: add checks)
|
||||
#
|
||||
HAVE_LIBPRI="no"
|
||||
AC_ARG_WITH([libpri],
|
||||
[AS_HELP_STRING([--with-libpri], [Install ftmod_libpri])],
|
||||
[case "${withval}" in
|
||||
no) enable_libpri="no" ;;
|
||||
*) enable_libpri="yes" ;;
|
||||
esac],
|
||||
[enable_libpri="no"]
|
||||
)
|
||||
if test "${enable_libpri}" != "no"
|
||||
then
|
||||
AC_MSG_RESULT([${as_nl}<<>> Digium libpri])
|
||||
|
||||
AM_CONDITIONAL([PRITAP],[test "${enable_pritap}" = "yes"])
|
||||
save_LIBS="${LIBS}"
|
||||
LIBS="${LIBS} -lpri"
|
||||
AC_MSG_CHECKING([whether libpri is usable])
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[#include <libpri.h>],
|
||||
[const char *version = pri_get_version();]
|
||||
)],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])
|
||||
AC_MSG_ERROR([libpri is not installed or unusable (see config.log for details)])]
|
||||
)
|
||||
|
||||
AM_CONDITIONAL([DEBUGDTMF],[test "${enable_debugdtmf}" = "yes"])
|
||||
AC_MSG_CHECKING([whether libpri has BRI support])
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[extern void pri_new_bri_cb(void);],
|
||||
[pri_new_bri_cb();]
|
||||
)],
|
||||
[AC_DEFINE([HAVE_LIBPRI_BRI], [1], [libpri has BRI support])
|
||||
AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])
|
||||
AC_MSG_NOTICE([You will need libpri-1.4.12_beta1 or newer for BRI support])]
|
||||
)
|
||||
|
||||
AC_CHECK_LIB([sng_ss7], [sng_isup_init], [have_sng_ss7="yes"])
|
||||
AM_CONDITIONAL([SNGSS7],[test "${have_sng_ss7}" = "yes"])
|
||||
AC_MSG_CHECKING([whether libpri has AOC event support])
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[extern void pri_aoc_events_enable(void);],
|
||||
[pri_aoc_events_enable();]
|
||||
)],
|
||||
[AC_DEFINE([HAVE_LIBPRI_AOC], [1], [libpri has AOC event support])
|
||||
AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])
|
||||
AC_MSG_NOTICE([You will need libpri-1.4.12_beta1 or newer for AOC event support])]
|
||||
)
|
||||
LIBS="${save_LIBS}"
|
||||
fi
|
||||
HAVE_LIBPRI="${enable_libpri}"
|
||||
AM_CONDITIONAL([HAVE_LIBPRI],[test "${enable_libpri}" = "yes"])
|
||||
|
||||
AC_CHECK_LIB([sng_isdn], [sng_isdn_init], [have_sng_isdn="yes"])
|
||||
AM_CONDITIONAL([SNGISDN],[test "${have_sng_isdn}" = "yes"])
|
||||
##
|
||||
# Sangoma Wanpipe
|
||||
#
|
||||
HAVE_LIBSANGOMA="no"
|
||||
AC_MSG_RESULT([${as_nl}<<>> Sangoma Wanpipe])
|
||||
AC_CHECK_LIB([sangoma], [sangoma_span_chan_toif], [HAVE_LIBSANGOMA="yes"])
|
||||
AC_MSG_RESULT([checking whether to build ftmod_wanpipe... ${HAVE_LIBSANGOMA}])
|
||||
AM_CONDITIONAL([HAVE_LIBSANGOMA], [test "${HAVE_LIBSANGOMA}" = "yes"])
|
||||
|
||||
AC_CHECK_LIB([openr2], [openr2_context_set_io_type], [have_openr2="yes"])
|
||||
AM_CONDITIONAL([OPENR2],[test "${have_openr2}" = "yes"])
|
||||
##
|
||||
# Sangoma ISDN stack
|
||||
#
|
||||
HAVE_SNG_ISDN="no"
|
||||
AC_MSG_RESULT([${as_nl}<<>> Sangoma ISDN stack])
|
||||
AC_CHECK_LIB([sng_isdn], [sng_isdn_init], [HAVE_SNG_ISDN="yes"])
|
||||
AC_MSG_RESULT([checking whether to build ftmod_sangoma_isdn... ${HAVE_SNG_ISDN}])
|
||||
AM_CONDITIONAL([HAVE_SNG_ISDN], [test "${HAVE_SNG_ISDN}" = "yes"])
|
||||
|
||||
if test "${have_sng_isdn}" = "yes"; then
|
||||
if test "${HAVE_SNG_ISDN}" = "yes"; then
|
||||
if test "${build}" == "${host}"
|
||||
then
|
||||
case "${host}" in
|
||||
x86_64-*)
|
||||
# X86_64 machines need additional flags when compiling against libsng_isdn
|
||||
CFLAGS="$CFLAGS -DBIT_64 -DALIGN_64BIT"
|
||||
;;
|
||||
# X86_64 machines need additional flags when compiling against libsng_isdn
|
||||
CFLAGS="$CFLAGS -DBIT_64 -DALIGN_64BIT"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "${have_sng_ss7}" = "yes"; then
|
||||
##
|
||||
# Sangoma SS7 stack
|
||||
#
|
||||
HAVE_SNG_SS7="no"
|
||||
AC_MSG_RESULT([${as_nl}<<>> Sangoma SS7 stack])
|
||||
AC_CHECK_LIB([sng_ss7], [sng_isup_init], [HAVE_SNG_SS7="yes"])
|
||||
AC_MSG_RESULT([checking whether to build ftmod_sangoma_ss7... ${HAVE_SNG_SS7}])
|
||||
AM_CONDITIONAL([HAVE_SNG_SS7], [test "${HAVE_SNG_SS7}" = "yes"])
|
||||
|
||||
if test "${HAVE_SNG_SS7}" = "yes"; then
|
||||
if test "${build}" == "${host}"
|
||||
then
|
||||
case "${host}" in
|
||||
x86_64-*)
|
||||
# X86_64 machines need additional flags when compiling against libsng_isdn
|
||||
CFLAGS="$CFLAGS -DBIT_64 -DALIGN_64BIT"
|
||||
;;
|
||||
# X86_64 machines need additional flags when compiling against libsng_isdn
|
||||
CFLAGS="$CFLAGS -DBIT_64 -DALIGN_64BIT"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
|
||||
COMP_VENDOR_CFLAGS="$COMP_VENDOR_CFLAGS"
|
||||
AC_SUBST(COMP_VENDOR_CFLAGS)
|
||||
AC_CONFIG_FILES([Makefile
|
||||
freetdm.pc
|
||||
mod_freetdm/Makefile])
|
||||
##
|
||||
# libisdn
|
||||
#
|
||||
HAVE_LIBISDN="no"
|
||||
AC_ARG_WITH([libisdn],
|
||||
[AS_HELP_STRING([--with-libisdn], [Install ftmod_isdn (libisdn stack)])],
|
||||
[case "${withval}" in
|
||||
no) with_libisdn="no" ;;
|
||||
*) with_libisdn="yes" ;;
|
||||
esac
|
||||
],
|
||||
[with_libisdn="no"]
|
||||
)
|
||||
if test "${with_libisdn}" != "no"
|
||||
then
|
||||
AC_MSG_RESULT([${as_nl}<<>> ftmod_isdn (libisdn stack)])
|
||||
PKG_CHECK_MODULES([libisdn],
|
||||
[libisdn >= 0.0.1],
|
||||
[AC_MSG_CHECKING([libisdn version])
|
||||
LIBISDN_VERSION="`${PKG_CONFIG} --modversion libisdn`"
|
||||
if test -z "${LIBISDN_VERSION}"; then
|
||||
AC_MSG_ERROR([Failed to retrieve libisdn version])
|
||||
fi
|
||||
AC_MSG_RESULT([${LIBISDN_VERSION}])
|
||||
|
||||
# check features
|
||||
AC_MSG_CHECKING([for new experimental API])
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[#include <libisdn/version.h>
|
||||
#if !LIBISDN_FEATURE(API2)
|
||||
#error "libisdn API v2 not available"
|
||||
#endif
|
||||
],
|
||||
[;]
|
||||
)],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])]
|
||||
)
|
||||
|
||||
HAVE_LIBISDN="yes"
|
||||
AC_DEFINE([HAVE_LIBISDN], [1], [libisdn support])
|
||||
AC_SUBST([LIBISDN_CFLAGS], [${libisdn_CFLAGS}])
|
||||
AC_SUBST([LIBISDN_CPPFLAGS],[${libisdn_CPPFLAGS}])
|
||||
AC_SUBST([LIBISDN_LDFLAGS], [${libisdn_LDFLAGS}])
|
||||
AC_SUBST([LIBISDN_LIBS], [${libisdn_LIBS}])
|
||||
AC_SUBST([LIBISDN_VERSION])
|
||||
],
|
||||
[AC_MSG_ERROR([Need libisdn-0.0.1 or higher])]
|
||||
)
|
||||
AX_LIB_PCAP
|
||||
fi
|
||||
AM_CONDITIONAL([HAVE_LIBISDN], [test "${HAVE_LIBISDN}" = "yes"])
|
||||
|
||||
AC_MSG_RESULT([${as_nl}<<>> Creating output files])
|
||||
AC_CONFIG_FILES([
|
||||
Makefile
|
||||
freetdm.pc
|
||||
mod_freetdm/Makefile
|
||||
])
|
||||
AC_OUTPUT
|
||||
|
||||
#
|
||||
# summary screen
|
||||
#
|
||||
AC_MSG_RESULT([
|
||||
============================ FreeTDM configuration ============================
|
||||
|
||||
+ Modules
|
||||
|
||||
Signalling:
|
||||
ftmod_isdn......................... ${HAVE_LIBISDN}
|
||||
ftmod_libpri....................... ${HAVE_LIBPRI}
|
||||
ftmod_sangoma_isdn................. ${HAVE_SNG_ISDN}
|
||||
ftmod_sangoma_ss7.................. ${HAVE_SNG_SS7}
|
||||
ftmod_r2........................... ${HAVE_OPENR2}
|
||||
ftmod_pritap....................... ${HAVE_PRITAP}
|
||||
I/O:
|
||||
ftmod_wanpipe...................... ${HAVE_LIBSANGOMA}
|
||||
|
||||
===============================================================================
|
||||
])
|
||||
@@ -657,7 +657,7 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch
|
||||
status = ftdm_channel_wait(tech_pvt->ftdmchan, &wflags, chunk);
|
||||
|
||||
if (status == FTDM_FAIL) {
|
||||
ftdm_log(FTDM_LOG_WARNING, "failed to wait for I/O\n");
|
||||
ftdm_log(FTDM_LOG_ERROR, "Failed to wait for I/O\n");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@@ -3088,85 +3088,44 @@ static switch_status_t load_config(void)
|
||||
|
||||
if ((spans = switch_xml_child(cfg, "libpri_spans"))) {
|
||||
for (myspan = switch_xml_child(spans, "span"); myspan; myspan = myspan->next) {
|
||||
char *id = (char *) switch_xml_attr(myspan, "id");
|
||||
char *name = (char *) switch_xml_attr(myspan, "name");
|
||||
ftdm_conf_parameter_t spanparameters[10];
|
||||
ftdm_status_t zstatus = FTDM_FAIL;
|
||||
const char *context = "default";
|
||||
const char *context = "default";
|
||||
const char *dialplan = "XML";
|
||||
|
||||
const char *o_node = "cpe";
|
||||
const char *o_switch = "dms100";
|
||||
const char *o_dp = "unknown";
|
||||
const char *o_l1 = "ulaw";
|
||||
const char *o_debug = "none";
|
||||
const char* opts = "none";
|
||||
|
||||
uint32_t span_id = 0;
|
||||
unsigned paramindex = 0;
|
||||
ftdm_span_t *span = NULL;
|
||||
uint32_t span_id = 0;
|
||||
|
||||
|
||||
for (param = switch_xml_child(myspan, "param"); param; param = param->next) {
|
||||
if (!name) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "span missing required attribute 'name'\n");
|
||||
continue;
|
||||
}
|
||||
|
||||
for (param = switch_xml_child(myspan, "param"); param && paramindex < 10; param = param->next) {
|
||||
char *var = (char *) switch_xml_attr_soft(param, "name");
|
||||
char *val = (char *) switch_xml_attr_soft(param, "value");
|
||||
|
||||
if (!strcasecmp(var, "node")) {
|
||||
o_node = val;
|
||||
} else if (!strcasecmp(var, "switch")) {
|
||||
o_switch = val;
|
||||
} else if (!strcasecmp(var, "dp")) {
|
||||
o_dp = val;
|
||||
} else if (!strcasecmp(var, "l1")) {
|
||||
o_l1 = val;
|
||||
} else if (!strcasecmp(var, "debug")) {
|
||||
o_debug = val;
|
||||
} else if (!strcasecmp(var, "context")) {
|
||||
if (!strcasecmp(var, "context")) {
|
||||
context = val;
|
||||
} else if (!strcasecmp(var, "opts")) {
|
||||
opts = val;
|
||||
} else if (!strcasecmp(var, "dialplan")) {
|
||||
dialplan = val;
|
||||
}
|
||||
}
|
||||
|
||||
if (!id && !name) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "span missing required param 'id'\n");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (name) {
|
||||
zstatus = ftdm_span_find_by_name(name, &span);
|
||||
} else {
|
||||
if (switch_is_number(id)) {
|
||||
span_id = atoi(id);
|
||||
zstatus = ftdm_span_find(span_id, &span);
|
||||
}
|
||||
|
||||
if (zstatus != FTDM_SUCCESS) {
|
||||
zstatus = ftdm_span_find_by_name(id, &span);
|
||||
} else {
|
||||
spanparameters[paramindex].var = var;
|
||||
spanparameters[paramindex].val = val;
|
||||
paramindex++;
|
||||
}
|
||||
}
|
||||
|
||||
zstatus = ftdm_span_find_by_name(name, &span);
|
||||
if (zstatus != FTDM_SUCCESS) {
|
||||
ftdm_log(FTDM_LOG_ERROR, "Error finding FreeTDM span id:%s name:%s\n", switch_str_nil(id), switch_str_nil(name));
|
||||
ftdm_log(FTDM_LOG_ERROR, "Error finding FreeTDM span %s\n", name);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!span_id) {
|
||||
span_id = ftdm_span_get_id(span);
|
||||
}
|
||||
|
||||
|
||||
if (ftdm_configure_span(span, "libpri", on_clear_channel_signal,
|
||||
"node", o_node,
|
||||
"switch", o_switch,
|
||||
"dp", o_dp,
|
||||
"l1", o_l1,
|
||||
"debug", o_debug,
|
||||
"opts", opts,
|
||||
FTDM_TAG_END) != FTDM_SUCCESS) {
|
||||
ftdm_log(FTDM_LOG_ERROR, "Error starting FreeTDM span %d node: %s switch: %s dp: %s l1: %s debug: %s error: %s\n",
|
||||
span_id, switch_str_nil(o_node), switch_str_nil(o_switch), switch_str_nil(o_dp), switch_str_nil(o_l1), switch_str_nil(o_debug),
|
||||
ftdm_span_get_last_error(span));
|
||||
span_id = ftdm_span_get_id(span);
|
||||
if (ftdm_configure_span_signaling(span, "libpri", on_clear_channel_signal, spanparameters) != FTDM_SUCCESS) {
|
||||
ftdm_log(FTDM_LOG_ERROR, "Error configuring FreeTDM span %s\n", name);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
+22
-13
@@ -1,23 +1,23 @@
|
||||
/*
|
||||
* Copyright (c) 2007, Anthony Minessale II
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
*
|
||||
* * Neither the name of the original author; nor the names of any contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
@@ -33,7 +33,6 @@
|
||||
|
||||
#ifndef FTDM_ISDN_H
|
||||
#define FTDM_ISDN_H
|
||||
#include "freetdm.h"
|
||||
|
||||
#define DEFAULT_DIGIT_TIMEOUT 10000 /* default overlap timeout: 10 seconds */
|
||||
|
||||
@@ -42,17 +41,23 @@ typedef enum {
|
||||
FTDM_ISDN_OPT_NONE = 0,
|
||||
FTDM_ISDN_OPT_SUGGEST_CHANNEL = (1 << 0),
|
||||
FTDM_ISDN_OPT_OMIT_DISPLAY_IE = (1 << 1), /*!< Do not send Caller name in outgoing SETUP message (= Display IE) */
|
||||
FTDM_ISDN_OPT_DISABLE_TONES = (1 << 2), /*!< Disable tone generating thread (NT mode) */
|
||||
FTDM_ISDN_OPT_DISABLE_TONES = (1 << 2), /*!< Disable tone generating thread (NT mode) */
|
||||
|
||||
FTDM_ISDN_OPT_MAX = (2 << 0)
|
||||
} ftdm_isdn_opts_t;
|
||||
|
||||
typedef enum {
|
||||
FTDM_ISDN_RUNNING = (1 << 0),
|
||||
FTDM_ISDN_TONES_RUNNING = (1 << 1),
|
||||
FTDM_ISDN_STOP = (1 << 2)
|
||||
FTDM_ISDN_RUNNING = (1 << 0),
|
||||
FTDM_ISDN_TONES_RUNNING = (1 << 1),
|
||||
FTDM_ISDN_STOP = (1 << 2),
|
||||
|
||||
FTDM_ISDN_CAPTURE = (1 << 3),
|
||||
FTDM_ISDN_CAPTURE_L3ONLY = (1 << 4)
|
||||
} ftdm_isdn_flag_t;
|
||||
|
||||
#ifdef HAVE_PCAP
|
||||
struct pcap_context;
|
||||
#endif
|
||||
|
||||
struct ftdm_isdn_data {
|
||||
Q921Data_t q921;
|
||||
@@ -60,6 +65,7 @@ struct ftdm_isdn_data {
|
||||
ftdm_channel_t *dchan;
|
||||
ftdm_channel_t *dchans[2];
|
||||
struct ftdm_sigmsg sigmsg;
|
||||
fio_signal_cb_t sig_cb;
|
||||
uint32_t flags;
|
||||
int32_t mode;
|
||||
int32_t digit_timeout;
|
||||
@@ -67,6 +73,9 @@ struct ftdm_isdn_data {
|
||||
ftdm_caller_data_t *outbound_crv[32768];
|
||||
ftdm_channel_t *channels_local_crv[32768];
|
||||
ftdm_channel_t *channels_remote_crv[32768];
|
||||
#ifdef HAVE_PCAP
|
||||
struct pcap_context *pcap;
|
||||
#endif
|
||||
};
|
||||
|
||||
typedef struct ftdm_isdn_data ftdm_isdn_data_t;
|
||||
@@ -75,7 +84,7 @@ typedef struct ftdm_isdn_data ftdm_isdn_data_t;
|
||||
/* b-channel private data */
|
||||
struct ftdm_isdn_bchan_data
|
||||
{
|
||||
L2ULONG digit_timeout;
|
||||
int32_t digit_timeout;
|
||||
};
|
||||
|
||||
typedef struct ftdm_isdn_bchan_data ftdm_isdn_bchan_data_t;
|
||||
@@ -91,6 +100,6 @@ typedef struct ftdm_isdn_bchan_data ftdm_isdn_bchan_data_t;
|
||||
* c-basic-offset:4
|
||||
* End:
|
||||
* For VIM:
|
||||
* vim:set softtabstop=4 shiftwidth=4 tabstop=4:
|
||||
* vim:set softtabstop=4 shiftwidth=4 tabstop=4 expandtab:
|
||||
*/
|
||||
|
||||
@@ -1,316 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8.00"
|
||||
Name="ftmod_isdn"
|
||||
ProjectGUID="{729344A5-D5E9-434D-8EE8-AF8C6C795D15}"
|
||||
RootNamespace="ftmod_isdn"
|
||||
Keyword="Win32Proj"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="2"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\isdn\include;..\..\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FTMOD_ISDN_EXPORTS;_CRT_SECURE_NO_WARNINGS"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
WarnAsError="true"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="2"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
AdditionalIncludeDirectories="..\..\isdn\include;..\..\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FTMOD_ISDN_EXPORTS;_CRT_SECURE_NO_WARNINGS"
|
||||
RuntimeLibrary="2"
|
||||
EnableFunctionLevelLinking="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
WarnAsError="true"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\isdn\5ESSmes.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\5ESSStateNT.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\5ESSStateTE.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\DMSmes.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\DMSStateNT.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\DMSStateTE.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\EuroISDNStateNT.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\EuroISDNStateTE.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\mfifo.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\nationalmes.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\nationalStateNT.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\nationalStateTE.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="ftmod_isdn.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\Q921.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\Q931.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\Q931api.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\Q931ie.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\Q931mes.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\Q931StateNT.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\Q931StateTE.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\Q932mes.c"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\isdn\include\5ESS.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\include\DMS.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\include\mfifo.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\include\national.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\include\Q921.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\include\Q921priv.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\include\Q931.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\include\Q931ie.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\include\Q932.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="ftdm_isdn.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
File diff suppressed because it is too large.
Load diff
@@ -42,8 +42,9 @@ typedef enum {
|
||||
FTMOD_LIBPRI_OPT_SUGGEST_CHANNEL = (1 << 0),
|
||||
FTMOD_LIBPRI_OPT_OMIT_DISPLAY_IE = (1 << 1),
|
||||
FTMOD_LIBPRI_OPT_OMIT_REDIRECTING_NUMBER_IE = (1 << 2),
|
||||
|
||||
FTMOD_LIBPRI_OPT_MAX = (1 << 3)
|
||||
FTMOD_LIBPRI_OPT_FACILITY_AOC = (1 << 3),
|
||||
|
||||
FTMOD_LIBPRI_OPT_MAX = (1 << 4)
|
||||
} ftdm_isdn_opts_t;
|
||||
|
||||
typedef enum {
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
/*
|
||||
* Copyright (c) 2009, Anthony Minessale II
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
*
|
||||
* * Neither the name of the original author; nor the names of any contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
@@ -35,8 +35,8 @@
|
||||
|
||||
#include "private/ftdm_core.h"
|
||||
#include "lpwrap_pri.h"
|
||||
#ifndef HAVE_GETTIMEOFDAY
|
||||
|
||||
#ifndef HAVE_GETTIMEOFDAY
|
||||
#ifdef WIN32
|
||||
#include <mmsystem.h>
|
||||
|
||||
@@ -92,7 +92,7 @@ static struct lpwrap_pri_event_list LPWRAP_PRI_EVENT_LIST[] = {
|
||||
{8, LPWRAP_PRI_EVENT_ANSWER, "ANSWER"},
|
||||
{9, LPWRAP_PRI_EVENT_HANGUP_ACK, "HANGUP_ACK"},
|
||||
{10, LPWRAP_PRI_EVENT_RESTART_ACK, "RESTART_ACK"},
|
||||
{11, LPWRAP_PRI_EVENT_FACNAME, "FACNAME"},
|
||||
{11, LPWRAP_PRI_EVENT_FACILITY, "FACILITY"},
|
||||
{12, LPWRAP_PRI_EVENT_INFO_RECEIVED, "INFO_RECEIVED"},
|
||||
{13, LPWRAP_PRI_EVENT_PROCEEDING, "PROCEEDING"},
|
||||
{14, LPWRAP_PRI_EVENT_SETUP_ACK, "SETUP_ACK"},
|
||||
@@ -106,7 +106,10 @@ static struct lpwrap_pri_event_list LPWRAP_PRI_EVENT_LIST[] = {
|
||||
#define LINE "--------------------------------------------------------------------------------"
|
||||
|
||||
const char *lpwrap_pri_event_str(lpwrap_pri_event_t event_id)
|
||||
{
|
||||
{
|
||||
if (event_id < 0 || event_id >= LPWRAP_PRI_EVENT_MAX)
|
||||
return "";
|
||||
|
||||
return LPWRAP_PRI_EVENT_LIST[event_id].name;
|
||||
}
|
||||
|
||||
@@ -114,8 +117,8 @@ static int __pri_lpwrap_read(struct pri *pri, void *buf, int buflen)
|
||||
{
|
||||
struct lpwrap_pri *spri = (struct lpwrap_pri *) pri_get_userdata(pri);
|
||||
ftdm_size_t len = buflen;
|
||||
int res;
|
||||
ftdm_status_t zst;
|
||||
int res;
|
||||
|
||||
if ((zst = ftdm_channel_read(spri->dchan, buf, &len)) != FTDM_SUCCESS) {
|
||||
if (zst == FTDM_FAIL) {
|
||||
@@ -124,31 +127,31 @@ static int __pri_lpwrap_read(struct pri *pri, void *buf, int buflen)
|
||||
} else {
|
||||
ftdm_log(FTDM_LOG_CRIT, "span %d D-READ TIMEOUT\n", spri->span->span_id);
|
||||
}
|
||||
|
||||
|
||||
ftdm_clear_flag(spri, LPWRAP_PRI_READY);
|
||||
return -1;
|
||||
}
|
||||
spri->errs = 0;
|
||||
res = (int)len;
|
||||
memset(&((unsigned char*)buf)[res],0,2);
|
||||
res+=2;
|
||||
|
||||
memset(&((unsigned char*)buf)[res], 0, 2);
|
||||
res += 2;
|
||||
|
||||
#ifdef IODEBUG
|
||||
{
|
||||
char bb[2048] = { 0 };
|
||||
|
||||
print_hex_bytes(buf, res - 2, bb, sizeof(bb));
|
||||
ftdm_log(FTDM_LOG_DEBUG, "READ %d\n", res-2);
|
||||
ftdm_log(FTDM_LOG_DEBUG, "READ %d\n", res - 2);
|
||||
}
|
||||
#endif
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
static int __pri_lpwrap_write(struct pri *pri, void *buf, int buflen)
|
||||
{
|
||||
struct lpwrap_pri *spri = (struct lpwrap_pri *) pri_get_userdata(pri);
|
||||
ftdm_size_t len = buflen -2;
|
||||
ftdm_size_t len = buflen - 2;
|
||||
|
||||
if (ftdm_channel_write(spri->dchan, buf, buflen, &len) != FTDM_SUCCESS) {
|
||||
ftdm_log(FTDM_LOG_CRIT, "span %d D-WRITE FAIL! [%s]\n", spri->span->span_id, spri->dchan->last_error);
|
||||
@@ -161,11 +164,10 @@ static int __pri_lpwrap_write(struct pri *pri, void *buf, int buflen)
|
||||
char bb[2048] = { 0 };
|
||||
|
||||
print_hex_bytes(buf, buflen - 2, bb, sizeof(bb));
|
||||
ftdm_log(FTDM_LOG_DEBUG, "WRITE %d\n", (int)buflen-2);
|
||||
ftdm_log(FTDM_LOG_DEBUG, "WRITE %d\n", (int)buflen - 2);
|
||||
}
|
||||
#endif
|
||||
|
||||
return (int) buflen;
|
||||
return (int)buflen;
|
||||
}
|
||||
|
||||
int lpwrap_init_pri(struct lpwrap_pri *spri, ftdm_span_t *span, ftdm_channel_t *dchan, int swtype, int node, int debug)
|
||||
@@ -173,21 +175,63 @@ int lpwrap_init_pri(struct lpwrap_pri *spri, ftdm_span_t *span, ftdm_channel_t *
|
||||
int ret = -1;
|
||||
|
||||
memset(spri, 0, sizeof(struct lpwrap_pri));
|
||||
|
||||
spri->dchan = dchan;
|
||||
spri->span = span;
|
||||
spri->span = span;
|
||||
|
||||
if (spri->dchan && (spri->pri = pri_new_cb(spri->dchan->sockfd, node, swtype, __pri_lpwrap_read, __pri_lpwrap_write, spri))){
|
||||
unsigned char buf[4] = { 0 };
|
||||
size_t buflen = sizeof(buf), len = 0;
|
||||
pri_set_debug(spri->pri, debug);
|
||||
ret = 0;
|
||||
|
||||
ftdm_channel_write(spri->dchan, buf, buflen, &len);
|
||||
} else {
|
||||
fprintf(stderr, "Unable to create PRI\n");
|
||||
if (!spri->dchan) {
|
||||
ftdm_log(FTDM_LOG_ERROR, "No D-Channel available, unable to create PRI\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
if ((spri->pri = pri_new_cb(spri->dchan->sockfd, node, swtype, __pri_lpwrap_read, __pri_lpwrap_write, spri))) {
|
||||
unsigned char buf[4] = { 0 };
|
||||
size_t buflen = sizeof(buf), len = 0;
|
||||
|
||||
pri_set_debug(spri->pri, debug);
|
||||
#ifdef HAVE_LIBPRI_AOC
|
||||
pri_aoc_events_enable(spri->pri, 1);
|
||||
#endif
|
||||
ftdm_channel_write(spri->dchan, buf, buflen, &len);
|
||||
|
||||
ret = 0;
|
||||
} else {
|
||||
ftdm_log(FTDM_LOG_ERROR, "Unable to create PRI\n");
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int lpwrap_init_bri(struct lpwrap_pri *spri, ftdm_span_t *span, ftdm_channel_t *dchan, int swtype, int node, int ptp, int debug)
|
||||
{
|
||||
int ret = -1;
|
||||
|
||||
#ifdef HAVE_LIBPRI_BRI
|
||||
memset(spri, 0, sizeof(struct lpwrap_pri));
|
||||
spri->dchan = dchan;
|
||||
spri->span = span;
|
||||
|
||||
if (!spri->dchan) {
|
||||
ftdm_log(FTDM_LOG_ERROR, "No D-Channel available, unable to create BRI\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
if ((spri->pri = pri_new_bri_cb(spri->dchan->sockfd, ptp, node, swtype, __pri_lpwrap_read, __pri_lpwrap_write, spri))) {
|
||||
unsigned char buf[4] = { 0 };
|
||||
size_t buflen = sizeof(buf), len = 0;
|
||||
|
||||
pri_set_debug(spri->pri, debug);
|
||||
#ifdef HAVE_LIBPRI_AOC
|
||||
pri_aoc_events_enable(spri->pri, 1);
|
||||
#endif
|
||||
ftdm_channel_write(spri->dchan, buf, buflen, &len);
|
||||
|
||||
ret = 0;
|
||||
} else {
|
||||
ftdm_log(FTDM_LOG_ERROR, "Unable to create BRI\n");
|
||||
}
|
||||
#else
|
||||
ftdm_log(FTDM_LOG_ERROR, "Installed libpri version (%s) has no BRI support\n",
|
||||
pri_get_version());
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -195,11 +239,11 @@ int lpwrap_init_pri(struct lpwrap_pri *spri, ftdm_span_t *span, ftdm_channel_t *
|
||||
int lpwrap_one_loop(struct lpwrap_pri *spri)
|
||||
{
|
||||
fd_set rfds, efds;
|
||||
struct timeval now = {0,0}, *next;
|
||||
pri_event *event;
|
||||
struct timeval now = {0,0}, *next = NULL;
|
||||
pri_event *event = NULL;
|
||||
event_handler handler;
|
||||
int sel;
|
||||
|
||||
int sel;
|
||||
|
||||
if (spri->on_loop) {
|
||||
if ((sel = spri->on_loop(spri)) < 0) {
|
||||
return sel;
|
||||
@@ -231,9 +275,6 @@ int lpwrap_one_loop(struct lpwrap_pri *spri)
|
||||
now.tv_usec = 100000;
|
||||
|
||||
sel = select(pri_fd(spri->pri) + 1, &rfds, NULL, &efds, &now);
|
||||
|
||||
event = NULL;
|
||||
|
||||
if (!sel) {
|
||||
if ((next = pri_schedule_next(spri->pri))) {
|
||||
gettimeofday(&now, NULL);
|
||||
@@ -248,46 +289,40 @@ int lpwrap_one_loop(struct lpwrap_pri *spri)
|
||||
|
||||
if (event) {
|
||||
/* 0 is catchall event handler */
|
||||
if ((handler = spri->eventmap[event->e] ? spri->eventmap[event->e] : spri->eventmap[0] ? spri->eventmap[0] : NULL)) {
|
||||
if (event->e < 0 || event->e >= LPWRAP_PRI_EVENT_MAX) {
|
||||
handler = spri->eventmap[0];
|
||||
} else if (spri->eventmap[event->e]) {
|
||||
handler = spri->eventmap[event->e];
|
||||
} else {
|
||||
handler = spri->eventmap[0];
|
||||
}
|
||||
|
||||
if (handler) {
|
||||
handler(spri, event->e, event);
|
||||
} else {
|
||||
ftdm_log(FTDM_LOG_CRIT, "No event handler found for event %d.\n", event->e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return sel;
|
||||
|
||||
|
||||
if ((handler = spri->eventmap[LPWRAP_PRI_EVENT_IO_FAIL] ? spri->eventmap[LPWRAP_PRI_EVENT_IO_FAIL] : spri->eventmap[0] ? spri->eventmap[0] : NULL)) {
|
||||
handler(spri, LPWRAP_PRI_EVENT_IO_FAIL, NULL);
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
int lpwrap_run_pri(struct lpwrap_pri *spri)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
for (;;){
|
||||
ret = lpwrap_one_loop(spri);
|
||||
|
||||
if (ret < 0) {
|
||||
|
||||
for (;;) {
|
||||
if ((ret = lpwrap_one_loop(spri)) < 0) {
|
||||
#ifndef WIN32 //This needs to be adressed fror WIN32 still
|
||||
if (errno == EINTR){
|
||||
/* Igonore an interrupted system call */
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
ftdm_log(FTDM_LOG_CRIT, "Error = %i [%s]\n", ret, strerror(errno));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
||||
}
|
||||
|
||||
/* For Emacs:
|
||||
@@ -300,4 +335,3 @@ int lpwrap_run_pri(struct lpwrap_pri *spri)
|
||||
* For VIM:
|
||||
* vim:set softtabstop=4 shiftwidth=4 tabstop=4:
|
||||
*/
|
||||
|
||||
@@ -51,7 +51,11 @@ typedef enum {
|
||||
LPWRAP_PRI_EVENT_ANSWER = PRI_EVENT_ANSWER,
|
||||
LPWRAP_PRI_EVENT_HANGUP_ACK = PRI_EVENT_HANGUP_ACK,
|
||||
LPWRAP_PRI_EVENT_RESTART_ACK = PRI_EVENT_RESTART_ACK,
|
||||
LPWRAP_PRI_EVENT_FACNAME = PRI_EVENT_FACNAME,
|
||||
#ifdef PRI_EVENT_FACILITY
|
||||
LPWRAP_PRI_EVENT_FACILITY = PRI_EVENT_FACILITY,
|
||||
#else
|
||||
LPWRAP_PRI_EVENT_FACILITY = PRI_EVENT_FACNAME,
|
||||
#endif
|
||||
LPWRAP_PRI_EVENT_INFO_RECEIVED = PRI_EVENT_INFO_RECEIVED,
|
||||
LPWRAP_PRI_EVENT_PROCEEDING = PRI_EVENT_PROCEEDING,
|
||||
LPWRAP_PRI_EVENT_SETUP_ACK = PRI_EVENT_SETUP_ACK,
|
||||
@@ -121,6 +125,8 @@ struct lpwrap_pri_event_list {
|
||||
const char *lpwrap_pri_event_str(lpwrap_pri_event_t event_id);
|
||||
int lpwrap_one_loop(struct lpwrap_pri *spri);
|
||||
int lpwrap_init_pri(struct lpwrap_pri *spri, ftdm_span_t *span, ftdm_channel_t *dchan, int swtype, int node, int debug);
|
||||
int lpwrap_init_bri(struct lpwrap_pri *spri, ftdm_span_t *span, ftdm_channel_t *dchan, int swtype, int node, int ptp, int debug);
|
||||
int lpwrap_run_pri(struct lpwrap_pri *spri);
|
||||
#define lpwrap_run_bri(x) lpwrap_run_pri(x)
|
||||
|
||||
#endif
|
||||
@@ -1176,6 +1176,11 @@ FIO_SPAN_NEXT_EVENT_FUNCTION(wanpipe_next_event)
|
||||
char tmp_dtmf[2] = { tdm_api.wp_tdm_cmd.event.wp_tdm_api_event_dtmf_digit, 0 };
|
||||
event_id = FTDM_OOB_NOOP;
|
||||
|
||||
if (tmp_dtmf[0] == 'f') {
|
||||
ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Ignoring wanpipe DTMF: %c, fax tones will be passed through!\n", tmp_dtmf[0]);
|
||||
break;
|
||||
}
|
||||
|
||||
if (tdm_api.wp_tdm_cmd.event.wp_tdm_api_event_dtmf_type == WAN_EC_TONE_PRESENT) {
|
||||
ftdm_set_flag_locked(ftdmchan, FTDM_CHANNEL_MUTE);
|
||||
}
|
||||
|
||||
@@ -867,7 +867,7 @@ static FIO_WAIT_FUNCTION(zt_wait)
|
||||
{
|
||||
int32_t inflags = 0;
|
||||
int result;
|
||||
struct pollfd pfds[1];
|
||||
struct pollfd pfds[1];
|
||||
|
||||
if (*flags & FTDM_READ) {
|
||||
inflags |= POLLIN;
|
||||
@@ -882,13 +882,14 @@ static FIO_WAIT_FUNCTION(zt_wait)
|
||||
}
|
||||
|
||||
|
||||
memset(&pfds[0], 0, sizeof(pfds[0]));
|
||||
pfds[0].fd = ftdmchan->sockfd;
|
||||
pfds[0].events = inflags;
|
||||
result = poll(pfds, 1, to);
|
||||
memset(&pfds[0], 0, sizeof(pfds[0]));
|
||||
pfds[0].fd = ftdmchan->sockfd;
|
||||
pfds[0].events = inflags;
|
||||
result = poll(pfds, 1, to);
|
||||
*flags = 0;
|
||||
|
||||
if (pfds[0].revents & POLLERR) {
|
||||
ftdm_log_chan_msg(ftdmchan, FTDM_LOG_ERROR, "DAHDI device got POLLERR\n");
|
||||
result = -1;
|
||||
}
|
||||
|
||||
@@ -900,6 +901,7 @@ static FIO_WAIT_FUNCTION(zt_wait)
|
||||
|
||||
if (result < 0){
|
||||
snprintf(ftdmchan->last_error, sizeof(ftdmchan->last_error), "Poll failed");
|
||||
ftdm_log_chan(ftdmchan, FTDM_LOG_ERROR, "Failed to poll DAHDI device: %s\n", strerror(errno));
|
||||
return FTDM_FAIL;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user