Commit Graph

2059 Commits

Author SHA1 Message Date
Moises Silva 3b74246b16 freetdm: * Avoid acquiring the span mutex if the pendingchans queue is available for use *
* FreeTDM modules using the old FTDM_SPAN_STATE_CHANGE flag should be updated   *
         * until then, they are still vulnerable to deadlock situations                  *
         * Modules pending update: (ftmod_analog, ftmod_libpri, ftmod_isdn)              *
         * Fixes Sangoma redmine ticket #1791 0 FTDM span stop deadlock                  *
2011-10-24 12:49:36 -04:00
yannick 946f8af5a9 freetdm: resolve mtp2 on relay always down problem 2011-10-06 19:18:37 -04:00
James Zhang 3a44e4c186 freetdm: ss7 - fix cherry-pick conflict properly 2011-10-06 19:16:03 -04:00
root c0f988b292 freetdm: changing call reference to generic header; removing location area code 2011-10-06 19:08:25 -04:00
James Zhang 591cbe7857 fixing bug 1625 - relay status not reported properly in the cli 2011-10-06 19:08:00 -04:00
James Zhang 20abac2794 ftdm_ss7: Adding OPC and Call Reference Number to SIP x-headers 2011-10-06 19:07:05 -04:00
James Zhang edad46647b ftdm: change max_path length from 255 to 4096 2011-10-06 19:06:24 -04:00
Moises Silva e7ecb4d63a freetdm: Added SS7 variables for location number (pending SIP-X header integration) 2011-10-06 19:01:34 -04:00
James Zhang fb77b6c800 freetdm: ss7 - fixing reset on in-use channel causing signaling down in the receiving side 2011-10-06 18:58:35 -04:00
yannick bca480e667 ftdm: fixing reset on in-use channel causing infinite state loop. 2011-10-06 18:57:09 -04:00
Moises Silva 081e73d9f3 freetdm: ftmod_wanpipe - remove debug idle messages for good, not worth the noise 2011-10-06 17:56:16 -04:00
Moises Silva 3d456185e4 freetdm: Added SS7 variables for location number (pending SIP-X header integration) 2011-10-06 12:48:07 -04:00
David Yat Sin 2cf9b21e06 Added cid-name-in-display-ie option 2011-10-05 14:38:15 -04:00
David Yat Sin ba2b3fcabb Added cid-name-in-display-ie option 2011-10-05 14:37:14 -04:00
David Yat Sin 621337ff15 freetdm: Increased T310 to 120 sec on network side, added check for ces when handling Restarts 2011-10-04 13:20:58 -04:00
David Yat Sin 36619284e9 freetdm: typo in print 2011-09-30 17:15:36 -04:00
David Yat Sin 7a598e8f33 Added option for Dynamic TEI on BRI PTP 2011-09-30 16:45:46 -04:00
Moises Silva 5f0d27fdb4 freetdm: Fix SS7 ISUP T10 (Overlap digit timeout) - issue #1445 2011-09-28 19:18:34 -04:00
Moises Silva ac693947f9 freetdm: Fix SS7 T35 timer 2011-09-28 13:27:15 -04:00
Moises Silva b004bcfc6d Merge remote-tracking branch 'fsorig/master'
Conflicts:
	src/mod/endpoints/mod_sofia/mod_sofia.c
	src/mod/endpoints/mod_sofia/sofia_glue.c
2011-09-28 12:19:48 -04:00
Moises Silva 4c64d53efb freetdm: Manually merged relay code from branch jz.smg_ss7 (based on releases.3.3)
- Added relay and other misc commands
        - Misc fixes in hardware blocks, hw alarm etc
	- Fix crash on shutdown in relay
2011-09-21 15:32:48 -04:00
Moises Silva 8bf6312a0e freetdm: set proper flags when a given layer (ISUP, MTP3 etc) is started
and verify such flags on shutdown to avoid segfault when shutting down
         a layer that was never started - fix issue #741
2011-09-21 15:31:12 -04:00
David Yat Sin bb942e2329 freetdm: Fix for sending CPG without sending ACM prior to that 2011-09-20 19:15:05 -04:00
David Yat Sin 8df1872fbe freetdm:Support for transmission of Caller ID Name on NI-2 2011-09-19 13:51:41 -04:00
Anthony Minessale 2ad4f00c9f add missing break on begin detect 2011-09-19 08:08:55 -05:00
Stefan Knoblich 975ac0ac70 FreeTDM: Fix private/libteletone*.h includes
libteletone headers include each other, use #include ""
to look in the local dir rather than the include search path.

Unbreaking all of my (still) external FreeTDM projects.

Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2011-09-19 15:55:07 +02:00
Anthony Minessale 379c9fc41d fix messup in dtmf change 2011-09-16 17:23:15 -05:00
Anthony Minessale f7b40140bb fix messup in dtmf change 2011-09-16 17:07:48 -05:00
Anthony Minessale 995d7dcb02 dont clear token on SIGEVENT_STOP for ISDN legs, save it for the hangup handler 2011-09-16 16:44:15 -05:00
Anthony Minessale 42ff14d22a use index in this loop instead of the max val for the iteration 2011-09-16 15:53:49 -05:00
Anthony Minessale 8a3c292534 fix seg in recent change 2011-09-16 14:52:14 -05:00
Anthony Minessale dbd5d2575e fix build on freetdm 2011-09-16 14:50:46 -05:00
Anthony Minessale 44822df63d we need to fix this build system it masks errors 2011-09-16 12:13:25 -05:00
Anthony Minessale a65794fb5e FS-3570 receive side, update libteletone to track duration so it is less likely to double detect and push api changes down to freetdm 2011-09-16 10:06:04 -05:00
Moises Silva 25417d3ea8 freetdm: Verify that the uuid that is being hung up is still attached to the FreeTDM device
This avoids hanging up a device that is no longer attached to the session, in the
         weird situation where the FreeSWITCH core takes an awful lot of time (more than 3 seconds)
         to come around to acknowledge the SIGEVENT_STOP signal.
2011-09-15 19:42:39 -04:00
Moises Silva aa0a6c9222 freetdm: print span/chan identifiers on hangup 2011-09-15 13:50:42 -04:00
Moises Silva 4cdd74dccd freetdm: ss7 test pattern should be SANGOMA 2011-09-15 12:51:01 -04:00
Moises Silva 199e4397b5 freetdm: do not warn on io status changes, leave as debug messages 2011-09-15 12:50:30 -04:00
Moises Silva d6f3a02b94 freetdm: fix compile issue with previous commit (undeclared function) 2011-09-15 12:08:32 -04:00
Moises Silva 9aa887fe2b freetdm: SS7 - CIC value stored in freetdm_ss7_cic variable (cherry-picked from releases.3.3)
Conflicts:

	libs/freetdm/mod_freetdm/mod_freetdm.c
	libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_handle.c
2011-09-15 12:04:23 -04:00
Moises Silva b06f58a14b freetdm: do not warn on io status changes, leave as debug messages 2011-09-14 10:46:32 -04:00
Moises Silva 4ed900eb92 freetdm: add debug stacktrace to track spurious channel_on_hangup call 2011-09-12 18:13:10 -04:00
Moises Silva 23aba09f1b freetdm: mod_freetdm - fix len data type for 64bit systems 2011-09-12 15:48:28 -04:00
Moises Silva 4cdf9f2491 freetdm: ftmod_wanpipe - Added misc IO debugging code (define WP_DEBUG_IO to use) 2011-09-12 15:23:21 -04:00
Moises Silva 6c5132a507 freetdm: - Clear the IO flag when FreeSWITCH hangs up before notifying freetdm
- Misc fixes to log messages to aid debugging
         - Added ftdm ioread command to read media from the channel
         - Modified the ftdm_channel_open() API to return FTDM_EBUSY if the channel is already open
2011-09-12 15:21:23 -04:00
Stefan Knoblich f4facb0f65 [FreeTDM] Add missing newline in "Failed to configure span" error message in ftdm_configure_span_channels().
Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2011-09-12 13:07:50 +02:00
Moises Silva fb69d37592 freetdm: fix small bug reported in freeswitch-dev where the call_id member of sigmsg
is not being set for SIGEVENT_START event
2011-09-08 12:51:48 -04:00
Stefan Knoblich 09a61f5025 [FreeTDM] Add (experimental) ftmod_misdn
Add I/O plugin for mISDN stack that is included in the linux kernel
since version 2.6.27.

The in-kernel mISDN stack uses a socket based interface (AF_ISDN),
data and control commands are exchanged via datagram messages.

This makes writing a driver that doesn't use a separate (per-span)
thread to handle all incoming events a bit tricky, because responses
to control messages and incoming data are mixed and interfacing
with the synchronous FreeTDM I/O API is problematic.

B(*)/D-channel handling:

The current version uses misdn_wait() to poll() for activity on
the non-blocking channel sockets and misdn_read() to receive and
handle all pending events up to the first PH_DATA_IND (data) message
(which is what the caller of the read method is actually after).

In case no data has been received, misdn_read() returns FTDM_SUCCESS
with *datalen = 0, which is OK for all the signalling modules tested
(ftmod_libpri and (out-of-tree) ftmod_isdn).

To send data, misdn_write() is called, which just sends a PH_DATA_REQ
message to the mISDN channel socket.

(*) B-channels use a per-channel timerfd as a timing reference for
'ready-for-write' poll()ing in misdn_wait().

This is a workaround for a limitation of mISDN sockets, which do not
support POLLOUT waiting on b-channel sockets (in a useful way).

Sending/receiving of data works the same way as on d-channels, otherwise.

The module has received some minimal testing using a beronet
single-port HFC E1 and a HFC4-S quad-port BRI card on linux-3.0.x.

--- Limitations ---

 - Only the most basic features have been implemented (alarms,
   sending/receiving data/audio).

 - Spans are limited to E1 and BRI/BRI_PTMP trunk types.

 - D-Channels only work on 16 for PRI and 3 for BRI.

 - NT/TE mode information is not available from freetdm.conf /
   at configure_span()-time so the module assumes TE mode,
   which should be only a problem for cards that can change
   the port configuration (pin-out) from software.

 - Current design (b-channel timerfd / misdn_wait()/_read()/_write())
   should be fine for most SoHo use-cases
   (scalability / cpu usage / timing precision).

--- Requirements ---

 - mISDNif.h header (/usr/include/mISDN/mISDNif.h), provided by mISDNuser
   (http://isdn.eversberg.eu/download/lcr-1.7/mISDNuser-20100525.tar.gz).

 - Linux kernel with mISDN and timerfd enabled (>= 2.6.27)
   and libc with timerfd support.

mISDN options can be found in the:

"Device Drivers" -> "ISDN support" -> "Modular ISDN driver"

section of make menuconfig. Timerfd is usually enabled by default.

The FreeTDM configure script will check for missing mISDNif.h
header and timerfd support and print a message.

You should see the following in the summary screen on success:

	ftmod_misdn........................ yes

NOTE: Forcing mISDN support using the "--with-misdn" configure option,
      will cause the configure script to fail on the first missing
      dependency.

--- Usage ---

To use the module, make sure you have mISDN support in the kernel
(kernel modules loaded or kernel with built-in mISDN running),
the "misdn_info" application shipped with mISDNuser will output
a list of available mISDN ports on your system, e.g.:

Found 5 ports
  Port  0 'hfc-4s.1-1':      TE/NT-mode BRI S/T (for phone lines & phones)
                              2 B-channels: 1-2
                                B-protocols: RAW HDLC X75slp
  ...

  Port  4 'hfc-e1.2':        TE/NT-mode PRI E1  (for phone lines & E1 devices)
                             30 B-channels: 1-15 17-31
                                B-protocols: RAW HDLC X75slp

NOTE: ftmod_misdn will print an error message if mISDN support is not available,
      or if there are no ports installed.

- Example freetdm.conf settings

[span misdn BRI_1]
trunk_type => BRI_PTMP
b-channel => 0:1,2
d-channel => 0:3

[span misdn PRI_1]
trunk_type => E1
b-channel => hfc-e1.2:1-15,17-31
d-channel => hfc-e1.2:16

Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2011-09-08 00:16:02 +02:00
Stefan Knoblich e1a6fd27e0 ftmod_libpri: Always try to close the d-channel to avoid a possible deadlock in case something fails in the I/O module's channel open function.
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
2011-09-01 01:48:03 +02:00
Stefan Knoblich 41b956fd24 FreeTDM: Don't ftdm_safe_free() span information in ftdm_span_destroy() if span provides a custom span_destroy callback.
Doing so will cause a NULL-deref segfault while removing the current span from the
global hash (cur_span->name == NULL) in ftdm_global_destroy().

Remove all the ftdm_safe_free() calls in the custom callback part of ftdm_span_destroy() and
let ftdm_global_destroy() handle that.

NOTE: Also adds a missing ftdm_safe_free(cur_span->dtmf_hangup) to ftdm_global_destroy().

Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2011-09-01 01:48:03 +02:00