Commit Graph

71 Commits

Author SHA1 Message Date
Harald Welte 6622ed077c q931: If we're the network, channelID in ALERTING/CALL_PROC/CONNECT is mandatory
The user may suggest a given channel in the SETUP, but it's not legal
for the network to return a non-mandatory ChannelID.

See Q.931 Section 5.1.2 (B-channel selection - Originating):

The selected B-channel is indicated in the Channel identification information
element coded as "channel is indicated, no acceptable alternative" in the first
message returned by the network in response to the SETUP message (i.e. a SETUP
ACKNOWLEDGE or CALL PROCEEDING message)

In an earlier commit I had only fixed SETUP ACK, but missed that this is
a more general problem that needs addressing in whatever is the first
message containing a channelID yate sends in response to the SETUP.
2022-10-17 21:19:26 +02:00
Harald Welte dc005d1fad q931: If we're the network, channelID in SETUP ACK is mandatory
The user may suggest a given channel in the SETUP, but it's not legal
for the network to return a non-mandatory ChannelID.

See Q.931 Section 5.1.2 (B-channel selection - Originating):

The selected B-channel is indicated in the Channel identification information
element coded as "channel is indicated, no acceptable alternative" in the first
message returned by the network in response to the SETUP message (i.e. a SETUP
ACKNOWLEDGE or CALL PROCEEDING message)
2022-03-08 14:19:19 +01:00
Harald Welte 02ab7441ae preserve transfer-capability in Q.931 -> Q.931 calls
This is important so udi/rdi doesn't get converted to speech.
2022-03-08 08:26:42 +01:00
Harald Welte 4679853a20 q931: sendSetupAck: Don't encode a BRI channel selection in PRI
If yate is operating in the 'network' role of a PRI interface,
it must send a valid ChannelID InformationElement in the SETUP ACK.

However, current yate code is encoding the channel selection field
of said information element wrong, as it unconditionally looks up
the s_dict_channelIDSelect_BRI (instead of _PRI).

This fixes a regression introduced in 2009 in the following commit:

commit 05b717e0b9
Author: paulc <paulc@acf43c95-373e-0410-b603-e72c3f656dc1>
Date:   Mon Mar 2 18:51:30 2009 +0000

ISDN BRI support, most Andrei's (andrei@null.ro) work.
Fixes and new features throughout the signalling engine.
it-svn-id: http://yate.null.ro/svn/yate/trunk@2505 acf43c95-373e-0410-b603-e72c3f656dc1
2022-03-08 08:26:42 +01:00
paulc 37a72e4bc1 Added copyright notices to sources and scripts missing them.
Updated copyright notices for 2014.
Fixed end of lines in many files.


git-svn-id: http://yate.null.ro/svn/yate/trunk@5755 acf43c95-373e-0410-b603-e72c3f656dc1
2014-02-05 11:42:17 +00:00
paulc cf5d0fd71a Changed license terms in each source file to reference an external file.
git-svn-id: http://yate.null.ro/svn/yate/trunk@5609 acf43c95-373e-0410-b603-e72c3f656dc1
2013-08-06 13:38:10 +00:00
andrei 3dc84f2907 Fixed the way ysig components are initialized.
git-svn-id: http://yate.null.ro/svn/yate/trunk@5336 acf43c95-373e-0410-b603-e72c3f656dc1
2012-11-22 08:50:51 +00:00
paulc 0a09fb7e63 Honor the requested ISDN circuit code if possible before trying other circuits.
Added the possibility of setting the Channel Exclusive flag from configuration or routing.


git-svn-id: http://yate.null.ro/svn/yate/trunk@5294 acf43c95-373e-0410-b603-e72c3f656dc1
2012-10-15 11:50:33 +00:00
paulc 11206e5e57 Added default type in SignallingComponent constructor.
git-svn-id: http://yate.null.ro/svn/yate/trunk@5099 acf43c95-373e-0410-b603-e72c3f656dc1
2012-06-07 10:27:45 +00:00
paulc 1e5e891acf Added ability to limit how much to try to acquire a non-critical mutex.
This should reduce contention during high load and the chances to deadlock.


git-svn-id: http://yate.null.ro/svn/yate/trunk@4950 acf43c95-373e-0410-b603-e72c3f656dc1
2012-03-02 16:01:45 +00:00
paulc 15d6624260 Compute how long took for ISUP and ISDN circuits to connect, log a message if time is excessive.
git-svn-id: http://yate.null.ro/svn/yate/trunk@4436 acf43c95-373e-0410-b603-e72c3f656dc1
2011-06-04 13:18:50 +00:00
paulc 4325352987 Optimized const String usage in the ysig library.
git-svn-id: http://yate.null.ro/svn/yate/trunk@4428 acf43c95-373e-0410-b603-e72c3f656dc1
2011-06-03 14:25:17 +00:00
paulc 8a0ced911e Report textual status of call controllers (trunks).
git-svn-id: http://yate.null.ro/svn/yate/trunk@4163 acf43c95-373e-0410-b603-e72c3f656dc1
2011-03-07 14:57:07 +00:00
paulc a8c6c7d2b6 Constified all TokenDicts in the ysig library.
git-svn-id: http://yate.null.ro/svn/yate/trunk@4121 acf43c95-373e-0410-b603-e72c3f656dc1
2011-02-21 11:56:06 +00:00
oana cda9ed670f Added SNMP support.
git-svn-id: http://yate.null.ro/svn/yate/trunk@3776 acf43c95-373e-0410-b603-e72c3f656dc1
2010-11-03 16:27:30 +00:00
marian 307f20c1a5 Drop temporary ISDN call lock before deleting a sent event: avoid stray pointer.
git-svn-id: http://yate.null.ro/svn/yate/trunk@3653 acf43c95-373e-0410-b603-e72c3f656dc1
2010-09-15 07:56:53 +00:00
marian e377dcbce2 Support receiving overlapped dialing on ISUP.
Send extra Called Party Number digits in a SAM message.
The overlapped dialing script accepts an initial number.
Merged branch paulc/pstn -c 3485


git-svn-id: http://yate.null.ro/svn/yate/trunk@3493 acf43c95-373e-0410-b603-e72c3f656dc1
2010-08-21 18:34:01 +00:00
paulc 940d9a50ea Made more visible (but still only when compiled for debugging) the periodic circuit restarts.
git-svn-id: http://yate.null.ro/svn/yate/trunk@3422 acf43c95-373e-0410-b603-e72c3f656dc1
2010-07-09 09:29:22 +00:00
paulc 817b647002 Use a variable to keep the status of early media.
Add the inband indication to Alerting too, not only to Progress.


git-svn-id: http://yate.null.ro/svn/yate/trunk@3415 acf43c95-373e-0410-b603-e72c3f656dc1
2010-07-02 15:42:33 +00:00
paulc 9759aaeac3 Deal better with early media information in ISDN (in-band-info in Progress and Alerting).
git-svn-id: http://yate.null.ro/svn/yate/trunk@3412 acf43c95-373e-0410-b603-e72c3f656dc1
2010-07-01 15:24:31 +00:00
paulc 8a82307ba3 Added a "reset" control command to fast reset ISUP circuits.
Default reset interval for both ISUP and ISDN is 300s with 60s minimum.


git-svn-id: http://yate.null.ro/svn/yate/trunk@3404 acf43c95-373e-0410-b603-e72c3f656dc1
2010-06-25 14:48:29 +00:00
paulc a9a4088db4 Fixed ISDN PRI circuit allocation bugs introduced by Rev. 2505 (BRI support).
git-svn-id: http://yate.null.ro/svn/yate/trunk@2913 acf43c95-373e-0410-b603-e72c3f656dc1
2009-11-09 21:38:16 +00:00
paulc 5d8ff98ac0 Copy configuration subparameters to the child components.
git-svn-id: http://yate.null.ro/svn/yate/trunk@2812 acf43c95-373e-0410-b603-e72c3f656dc1
2009-08-31 14:43:22 +00:00
paulc ca829d943a Made some dangerous constructors explicit, fix potential problems exposed by this.
git-svn-id: http://yate.null.ro/svn/yate/trunk@2705 acf43c95-373e-0410-b603-e72c3f656dc1
2009-06-12 15:15:36 +00:00
paulc 0a6be5b4d1 Major rewrite of signalling components creation and configuration.
The creation of subcomponents is offloaded to each component to allow for proper building of the component stack.


git-svn-id: http://yate.null.ro/svn/yate/trunk@2650 acf43c95-373e-0410-b603-e72c3f656dc1
2009-05-26 13:43:24 +00:00
paulc 9cae20ecd2 Made CPE number filter act as prefix, not exact match. Documented.
git-svn-id: http://yate.null.ro/svn/yate/trunk@2609 acf43c95-373e-0410-b603-e72c3f656dc1
2009-05-05 07:27:06 +00:00
paulc 05b717e0b9 ISDN BRI support, most Andrei's (andrei@null.ro) work.
Fixes and new features throughout the signalling engine.


git-svn-id: http://yate.null.ro/svn/yate/trunk@2505 acf43c95-373e-0410-b603-e72c3f656dc1
2009-03-02 18:51:30 +00:00
paulc 101f72cddd Accept a comma separated list of links to try to send the call.
Detect early a congestion or network failure and attempt next link.


git-svn-id: http://yate.null.ro/svn/yate/trunk@2368 acf43c95-373e-0410-b603-e72c3f656dc1
2008-11-26 15:20:15 +00:00
paulc 30f29df371 Cosmetic: fixed typo in comments and debug messages.
git-svn-id: http://yate.null.ro/svn/yate/trunk@2335 acf43c95-373e-0410-b603-e72c3f656dc1
2008-11-12 16:48:31 +00:00
paulc 9ae794b803 Removed unnecessary ISDN layer 2 locks in monitor methods called from layer 2.
git-svn-id: http://yate.null.ro/svn/yate/trunk@2334 acf43c95-373e-0410-b603-e72c3f656dc1
2008-11-12 16:41:24 +00:00
paulc 4fca932e50 Fixed initialization of Q931 channel timers.
git-svn-id: http://yate.null.ro/svn/yate/trunk@2269 acf43c95-373e-0410-b603-e72c3f656dc1
2008-10-20 11:05:48 +00:00
paulc c94956ab69 Handle conflict when call is disconnected from both sides.
git-svn-id: http://yate.null.ro/svn/yate/trunk@2266 acf43c95-373e-0410-b603-e72c3f656dc1
2008-10-19 13:55:55 +00:00
paulc aa00978f7f Q.931 status reports now have local network as location.
git-svn-id: http://yate.null.ro/svn/yate/trunk@2247 acf43c95-373e-0410-b603-e72c3f656dc1
2008-10-01 12:57:42 +00:00
paulc 3d24db224a Recover from a Q.931 STATUS when call is established.
git-svn-id: http://yate.null.ro/svn/yate/trunk@2246 acf43c95-373e-0410-b603-e72c3f656dc1
2008-10-01 12:39:28 +00:00
paulc a08e61e6cc Fixed generation of mask for wrapping around Q.931 call identifiers.
git-svn-id: http://yate.null.ro/svn/yate/trunk@2225 acf43c95-373e-0410-b603-e72c3f656dc1
2008-09-19 17:41:43 +00:00
paulc 7b0784e34e Always decode call state names, it's usefull and not expensive.
git-svn-id: http://yate.null.ro/svn/yate/trunk@2222 acf43c95-373e-0410-b603-e72c3f656dc1
2008-09-19 15:25:53 +00:00
paulc 4fc327d0cb Unified dump file parameter name (layer2/layer3) between ISDN and SS7.
File type can be modified by extension (.hex/.txt/.raw)
Documented dump files in ysigchan.conf


git-svn-id: http://yate.null.ro/svn/yate/trunk@2211 acf43c95-373e-0410-b603-e72c3f656dc1
2008-09-18 14:18:25 +00:00
paulc 1d2788d89b Implemented generic signalling component control mechanism.
Protocol data dumping capability for several L2 and L3 components.
Data dumpers can be set at runtime from rmanager command with completion.


git-svn-id: http://yate.null.ro/svn/yate/trunk@2210 acf43c95-373e-0410-b603-e72c3f656dc1
2008-09-18 14:05:26 +00:00
paulc eba177f500 Added still incomplete support for capturing ISDN data at runtime.
git-svn-id: http://yate.null.ro/svn/yate/trunk@2205 acf43c95-373e-0410-b603-e72c3f656dc1
2008-09-16 19:28:32 +00:00
marian e4c83f2e06 ISDN is now using the SignallingUtils' methods to encode/decode Cause IE.
git-svn-id: http://yate.null.ro/svn/yate/trunk@1888 acf43c95-373e-0410-b603-e72c3f656dc1
2008-04-10 11:00:00 +00:00
marian c589c7a0c3 Fixed bug: now the ISDN call is using a destroyed flag instead of Null state to destroy itself.
git-svn-id: http://yate.null.ro/svn/yate/trunk@1887 acf43c95-373e-0410-b603-e72c3f656dc1
2008-04-10 09:10:46 +00:00
marian f01282a1cd Use TelEngine::destruct() instead of deref(). Added more debug.
git-svn-id: http://yate.null.ro/svn/yate/trunk@1886 acf43c95-373e-0410-b603-e72c3f656dc1
2008-04-10 08:46:27 +00:00
marian eff367371e Avoid double call release: may lead to crash.
git-svn-id: http://yate.null.ro/svn/yate/trunk@1858 acf43c95-373e-0410-b603-e72c3f656dc1
2008-03-27 14:42:01 +00:00
marian f960ce3b44 Fixed Restart IE encoding.
git-svn-id: http://yate.null.ro/svn/yate/trunk@1854 acf43c95-373e-0410-b603-e72c3f656dc1
2008-03-27 12:31:14 +00:00
marian 9449543500 Fixed channel id check when processing restart requests.
git-svn-id: http://yate.null.ro/svn/yate/trunk@1853 acf43c95-373e-0410-b603-e72c3f656dc1
2008-03-27 12:04:07 +00:00
marian baba46404d Fixed channel id check when receiving restart requests.
git-svn-id: http://yate.null.ro/svn/yate/trunk@1852 acf43c95-373e-0410-b603-e72c3f656dc1
2008-03-27 12:00:49 +00:00
marian acfe7a4543 Removed span's D-channel flag. Use the first span to process ISDN restart requests for single interfaces.
git-svn-id: http://yate.null.ro/svn/yate/trunk@1851 acf43c95-373e-0410-b603-e72c3f656dc1
2008-03-27 10:35:36 +00:00
marian 083d57c318 Added data to span to know if it contains a D-channel. Implemented ISDN response to restart requests for a single interface and all interfaces.
git-svn-id: http://yate.null.ro/svn/yate/trunk@1850 acf43c95-373e-0410-b603-e72c3f656dc1
2008-03-27 10:11:14 +00:00
marian 3e7cd52249 Added circuit range support to circuit group and ISUP. Fixed ISDN method call.
git-svn-id: http://yate.null.ro/svn/yate/trunk@1834 acf43c95-373e-0410-b603-e72c3f656dc1
2008-03-24 08:36:45 +00:00
marian 0adac40c6f Anyone can now obtain the list of circuits attached to a call controller.
git-svn-id: http://yate.null.ro/svn/yate/trunk@1805 acf43c95-373e-0410-b603-e72c3f656dc1
2008-03-18 17:02:31 +00:00