Compare commits
18 Commits
1.4.12-bet
...
1.4.12-bet
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
db3ed3a439 | ||
|
|
b4621337b6 | ||
|
|
ecc75a52aa | ||
|
|
ab32336b09 | ||
|
|
0089f4777a | ||
|
|
1fba74a1d5 | ||
|
|
da0b057536 | ||
|
|
e12b0913ec | ||
|
|
28b3a8f458 | ||
|
|
41115a1da6 | ||
|
|
0cada91336 | ||
|
|
b612ee46c1 | ||
|
|
b83fc0c33f | ||
|
|
b2e28bd1e4 | ||
|
|
9d1fa7f276 | ||
|
|
fc203e3101 | ||
|
|
5372776ef0 | ||
|
|
589ea41f86 |
127
ChangeLog
127
ChangeLog
@@ -1,3 +1,130 @@
|
||||
2010-08-30 Leif Madsen <lmadsen@digium.com>
|
||||
|
||||
* libpri 1.4.12-beta2 released.
|
||||
|
||||
2010-08-30 20:49 +0000 [r1918-1929] Richard Mudgett <rmudgett@digium.com>
|
||||
|
||||
* q921.c: Reduced fake MDL-ERROR (Z) message severity to be visible
|
||||
only when debugging enabled.
|
||||
|
||||
* q921.c, q931.c: Q.921/Q.931 message debug output improvements.
|
||||
The Q.931 message decode debug output now will follow the correct
|
||||
Q.921 header decode if Q.921 message dumping is enabled. Also the
|
||||
Q.931 message decode will happen when the message actually goes
|
||||
out on the line instead of when Q.931 passes the message to
|
||||
Q.921. Q.921 may have to request a TEI, bring the connection up,
|
||||
or retransmit previous frames before it can actually send the new
|
||||
message.
|
||||
|
||||
* q921.c: Q.921 improvements from comparing Q.921 SDL diagrams with
|
||||
implementation. * Handle sending and receiving DM response frames
|
||||
as needed. * Added handling of received FRMR frames. * Completed
|
||||
implementation of Q921_AWAITING_RELEASE state. (State is
|
||||
currently unreachable since we have no API to initiate sending
|
||||
the DISC message.) * Better NT PTMP TEI allocation. * Reduced
|
||||
more ERROR level severity messages so users will stop panicking
|
||||
when they see ERROR. This is especially true for the Q.921
|
||||
MDL-ERROR messages. * Added better Q.921 visibility when normal
|
||||
debug message level is enabled.
|
||||
|
||||
* q921.c: ISDN BRI does not recover from line faults Q.921 was
|
||||
getting stuck in state 2 (Q921_ASSIGN_AWAITING_TEI). For some
|
||||
reason the network was removing the TEI. Libpri then immediately
|
||||
tried to get a new TEI assigned. The network did not reply to the
|
||||
N202(3) attempts to get a new TEI. Libpri then just gave up
|
||||
trying but did not leave the state. Some paths in Q.921 Figure
|
||||
B.3 were not implemented. Q.921 now transitions to the
|
||||
Q921_TEI_UNASSIGNED state when the N202 count is exceeded. Q.921
|
||||
will wait there until an incoming or outgoing call is attempted.
|
||||
* Fixed initializing the n202_counter. Not initializing the
|
||||
n202_counter would cause the Q921_TEI_IDENTITY_REQUEST to
|
||||
unexpectedly not go out and due to how state transitions were
|
||||
done, Q.921 would get stuck in the Q921_ASSIGN_AWAITING_TEI
|
||||
state. * Fixed start T202 timer fail causing Q.921 to get stuck
|
||||
in the Q921_ASSIGN_AWAITING_TEI state if the network did not
|
||||
respond to the request. * Fixed handling of
|
||||
Q921_TEI_IDENTITY_REMOVE to do the MDL-REMOVE primitive
|
||||
(q921_mdl_remove()) instead of transitioning directly to the
|
||||
Q921_TEI_UNASSIGNED state. Necessary state clean-up was not
|
||||
getting done. * Minor tweaks to q921_mdl_remove(). The worst
|
||||
problem was erroneously generating an error message. * Fixed
|
||||
potential for sending I-frames with an invalid TEI. The I-frame
|
||||
could have been queued when Q.921 did not have an assigned TEI. *
|
||||
Fixed testing of the q931_receive() return value when a UI-frame
|
||||
is received. (closes issue #17570) Reported by: jcovert Patches:
|
||||
issue17570_v1.4.11.3_v3.patch uploaded by rmudgett (license 664)
|
||||
issue17570_v1.4_v3.patch uploaded by rmudgett (license 664)
|
||||
Tested by: jcovert, rmudgett
|
||||
|
||||
2010-08-27 23:37 +0000 [r1894-1912] Richard Mudgett <rmudgett@digium.com>
|
||||
|
||||
* pri.c, q931.c: Convert most references of Q931_MAX_TEI to use
|
||||
ARRAY_LEN(). * Minor comment correction in q931_destroycall(). *
|
||||
Redundant logic removal q931_destroycall(). "W && X && (Y || W &&
|
||||
Z)" is the same as "W && X && (Y || Z)"
|
||||
|
||||
* rose.c, rosetest.c: Add support to receive ECMA-164 2nd edition
|
||||
OID name ROSE messages. NOTE: To add support to send the old
|
||||
style name messages will require implementing them as new ROSE
|
||||
operation message types. NOTE: To actually use them would likely
|
||||
require implementing another version of the Q.SIG switch type.
|
||||
Like (NI1 & NI2) and (4ess & 5ess) for example. Patches:
|
||||
libpri37.patch uploaded by rmudgett (license 664) JIRA SWP-2100
|
||||
JIRA LIBPRI-37
|
||||
|
||||
* pri.c: Make pri_dump_event() only print the event name.
|
||||
|
||||
2010-08-25 17:17 +0000 [r1883-1884] Richard Mudgett <rmudgett@digium.com>
|
||||
|
||||
* rosetest.c: Added gripe check to rosetest for invalid operation
|
||||
and error codes.
|
||||
|
||||
* q921.c: Don't silently fail to post our fake MDL-ERROR(Z).
|
||||
|
||||
2010-08-23 22:13 +0000 [r1878] Matthew Fredrickson <creslin@digium.com>
|
||||
|
||||
* q921.c: Add silly fake MDL error Z for kicking L2 to reactivate
|
||||
if a DISC or DM is received in proper states on PTP links.
|
||||
|
||||
2010-08-06 18:35 +0000 [r1852-1853] Richard Mudgett <rmudgett@digium.com>
|
||||
|
||||
* q931.c: No audio on inbound J1 calls. Incoming calls specifying
|
||||
the channel using a slot map could not negotiate a B channel
|
||||
correctly. Libpri historically has handled this as an any channel
|
||||
request. However, when chan_dahdi picked a new channel, libpri
|
||||
sent out the recorded slot map and not the new channel selected.
|
||||
Thus the two endpoints would be attached to different B channels
|
||||
and the parties would not hear anything or would hear the wrong
|
||||
parties. This patch restores the historical preference of sending
|
||||
out the channel id using the channel number method if a channel
|
||||
number is available. JIRA LIBPRI-35 Patches:
|
||||
libpri-35_v1.4.11.3.patch uploaded by rmudgett (license 664)
|
||||
libpri-35_v1.4.patch uploaded by rmudgett (license 664) Tested
|
||||
by: rmudgett
|
||||
|
||||
* q921.c: Learn (AGAIN!) why state 7 and state 8 transitions were
|
||||
suppressed.
|
||||
|
||||
2010-08-03 23:04 +0000 [r1842-1848] Richard Mudgett <rmudgett@digium.com>
|
||||
|
||||
* q921.c, q931.c: Improved Q.921/Q.931 debug output. * Debug output
|
||||
for a sent Q.931 message in TE PTMP now uses the best available
|
||||
TEI number instead of always using 127. It could still be wrong
|
||||
if layer 2 does not have a TEI assigned. * Q.921 debug output is
|
||||
grouped better so a decoded message is not split by a blank line.
|
||||
* The Q.921 state is also decoded to a name.
|
||||
|
||||
* q921.c: Q921_TIMER_RECOVERY SDL issue in q921_rnr_rx() Added
|
||||
missing code specified by Q.921 (Figure B.8 Page 85) when receive
|
||||
RNR in "Timer Recovery" state. (closes issue #16791) Reported by:
|
||||
alecdavis Patches: rnr_timer_recovery.diff.txt uploaded by
|
||||
alecdavis (license 585)
|
||||
|
||||
* q921.c: Renamed local struct pri *pri variables to struct pri
|
||||
*ctrl in q921.c. The context tagging for my editor is much
|
||||
happier now that the struct and the variable do not have the same
|
||||
name. (At least for this file.)
|
||||
|
||||
2010-07-26 Leif Madsen <lmadsen@digium.com>
|
||||
|
||||
* libpri 1.4.12-beta1 released
|
||||
|
||||
@@ -1,172 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Release Summary - libpri-1.4.12-beta1</title></head>
|
||||
<body>
|
||||
<h1 align="center"><a name="top">Release Summary</a></h1>
|
||||
<h3 align="center">libpri-1.4.12-beta1</h3>
|
||||
<h3 align="center">Date: 2010-07-26</h3>
|
||||
<h3 align="center"><asteriskteam@digium.com></h3>
|
||||
<hr/>
|
||||
<h2 align="center">Table of Contents</h2>
|
||||
<ol>
|
||||
<li><a href="#summary">Summary</a></li>
|
||||
<li><a href="#contributors">Contributors</a></li>
|
||||
<li><a href="#issues">Closed Issues</a></li>
|
||||
<li><a href="#commits">Other Changes</a></li>
|
||||
<li><a href="#diffstat">Diffstat</a></li>
|
||||
</ol>
|
||||
<hr/>
|
||||
<a name="summary"><h2 align="center">Summary</h2></a>
|
||||
<center><a href="#top">[Back to Top]</a></center><br/><p>This release includes only bug fixes. The changes included were made only to address problems that have been identified in this release series. Users should be able to safely upgrade to this version if this release series is already in use. Users considering upgrading from a previous release series are strongly encouraged to review the UPGRADE.txt document as well as the CHANGES document for information about upgrading to this release series.</p>
|
||||
<p>The data in this summary reflects changes that have been made since the previous release, libpri-1.4.11.</p>
|
||||
<hr/>
|
||||
<a name="contributors"><h2 align="center">Contributors</h2></a>
|
||||
<center><a href="#top">[Back to Top]</a></center><br/><p>This table lists the people who have submitted code, those that have tested patches, as well as those that reported issues on the issue tracker that were resolved in this release. For coders, the number is how many of their patches (of any size) were committed into this release. For testers, the number is the number of times their name was listed as assisting with testing a patch. Finally, for reporters, the number is the number of issues that they reported that were closed by commits that went into this release.</p>
|
||||
<table width="100%" border="0">
|
||||
<tr>
|
||||
<td width="33%"><h3>Coders</h3></td>
|
||||
<td width="33%"><h3>Testers</h3></td>
|
||||
<td width="33%"><h3>Reporters</h3></td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>
|
||||
13 rmudgett<br/>
|
||||
1 dvossel<br/>
|
||||
1 horape<br/>
|
||||
1 nic<br/>
|
||||
1 paravoid<br/>
|
||||
</td>
|
||||
<td>
|
||||
4 rmudgett<br/>
|
||||
1 ibercom<br/>
|
||||
1 jsmith<br/>
|
||||
1 paravoid<br/>
|
||||
1 patrol-cz<br/>
|
||||
</td>
|
||||
<td>
|
||||
1 horape<br/>
|
||||
1 ibercom<br/>
|
||||
1 jims8650<br/>
|
||||
1 jsmith<br/>
|
||||
1 kobaz<br/>
|
||||
1 nic_bellamy<br/>
|
||||
1 paravoid<br/>
|
||||
1 patrol-cz<br/>
|
||||
1 tomaso<br/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr/>
|
||||
<a name="issues"><h2 align="center">Closed Issues</h2></a>
|
||||
<center><a href="#top">[Back to Top]</a></center><br/><p>This is a list of all issues from the issue tracker that were closed by changes that went into this release.</p>
|
||||
<h3>Category: Channels/chan_dahdi</h3><br/>
|
||||
<a href="https://issues.asterisk.org/view.php?id=16915">#16915</a>: PRI: XXX Missing handling for mandatory IE 12<br/>
|
||||
Revision: <a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1818">1818</a><br/>
|
||||
Reporter: kobaz<br/>
|
||||
Coders: rmudgett<br/>
|
||||
<br/>
|
||||
<h3>Category: Channels/chan_dahdi/NewFeature</h3><br/>
|
||||
<a href="https://issues.asterisk.org/view.php?id=14292">#14292</a>: [patch] CCBS/CCNR support for QSIG (libpri & chan_dahdi)<br/>
|
||||
Revision: <a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1714">1714</a><br/>
|
||||
Reporter: tomaso<br/>
|
||||
Testers: rmudgett<br/>
|
||||
Coders: rmudgett<br/>
|
||||
<br/>
|
||||
<h3>Category: General</h3><br/>
|
||||
<a href="https://issues.asterisk.org/view.php?id=15265">#15265</a>: [patch] Inband disconnect setting does nothing<br/>
|
||||
Revision: <a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1794">1794</a><br/>
|
||||
Reporter: paravoid<br/>
|
||||
Testers: paravoid<br/>
|
||||
Coders: paravoid<br/>
|
||||
<br/>
|
||||
<a href="https://issues.asterisk.org/view.php?id=17274">#17274</a>: [patch] pritest hadn't been ported to DAHDI<br/>
|
||||
Revision: <a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1833">1833</a><br/>
|
||||
Reporter: horape<br/>
|
||||
Coders: horape<br/>
|
||||
<br/>
|
||||
<a href="https://issues.asterisk.org/view.php?id=17428">#17428</a>: [patch] Regression in libpri 1.4.11 - handling ROSE<br/>
|
||||
Revision: <a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1785">1785</a><br/>
|
||||
Reporter: patrol-cz<br/>
|
||||
Testers: rmudgett, patrol-cz<br/>
|
||||
Coders: rmudgett<br/>
|
||||
<br/>
|
||||
<a href="https://issues.asterisk.org/view.php?id=17458">#17458</a>: [patch] CallerID name not transmitted on versions of LibPRI after 1.4.10.2<br/>
|
||||
Revision: <a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1810">1810</a><br/>
|
||||
Reporter: jsmith<br/>
|
||||
Testers: rmudgett, jsmith<br/>
|
||||
Coders: rmudgett<br/>
|
||||
<br/>
|
||||
<a href="https://issues.asterisk.org/view.php?id=17495">#17495</a>: [patch] [regression] Calling Number assignment logic change in libpri 1.4.11.<br/>
|
||||
Revision: <a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1823">1823</a><br/>
|
||||
Reporter: ibercom<br/>
|
||||
Testers: ibercom<br/>
|
||||
Coders: rmudgett<br/>
|
||||
<br/>
|
||||
<a href="https://issues.asterisk.org/view.php?id=17619">#17619</a>: [patch] Calling name not successfully processed on inbound QSIG PRI calls from Mitel PBX<br/>
|
||||
Revision: <a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1828">1828</a><br/>
|
||||
Reporter: jims8650<br/>
|
||||
Testers: rmudgett<br/>
|
||||
Coders: rmudgett<br/>
|
||||
<br/>
|
||||
<h3>Category: NewFeature</h3><br/>
|
||||
<a href="https://issues.asterisk.org/view.php?id=16477">#16477</a>: [patch] Add pri_new_bri_cb() API - Create BRI D-channel with user defined I/O callbacks and data<br/>
|
||||
Revision: <a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1836">1836</a><br/>
|
||||
Reporter: nic_bellamy<br/>
|
||||
Coders: nic<br/>
|
||||
<br/>
|
||||
<hr/>
|
||||
<a name="commits"><h2 align="center">Commits Not Associated with an Issue</h2></a>
|
||||
<center><a href="#top">[Back to Top]</a></center><br/><p>This is a list of all changes that went into this release that did not directly close an issue from the issue tracker. The commits may have been marked as being related to an issue. If that is the case, the issue numbers are listed here, as well.</p>
|
||||
<table width="100%" border="1">
|
||||
<tr><td><b>Revision</b></td><td><b>Author</b></td><td><b>Summary</b></td><td><b>Issues Referenced</b></td></tr><tr><td><a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1723">1723</a></td><td>rmudgett</td><td>Added ETSI Explicit Call Transfer (ECT) support.</td>
|
||||
<td></td></tr><tr><td><a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1737">1737</a></td><td>rmudgett</td><td>ETSI Advice Of Charge (AOC) event reporting.</td>
|
||||
<td></td></tr><tr><td><a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1746">1746</a></td><td>rmudgett</td><td>ETSI Call Waiting support.</td>
|
||||
<td></td></tr><tr><td><a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1757">1757</a></td><td>rmudgett</td><td>ETSI Malicious Call ID support.</td>
|
||||
<td></td></tr><tr><td><a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1767">1767</a></td><td>rmudgett</td><td>ETSI Message Waiting Indication (MWI) support.</td>
|
||||
<td></td></tr><tr><td><a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1776">1776</a></td><td>dvossel</td><td>support for sending ETSI advice of charge</td>
|
||||
<td></td></tr><tr><td><a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1829">1829</a></td><td>rmudgett</td><td>Added a libpri version output line as a sanity check for rosetest.</td>
|
||||
<td></td></tr><tr><td><a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1830">1830</a></td><td>rmudgett</td><td>Only need to output one version of the version message.</td>
|
||||
<td></td></tr></table>
|
||||
<hr/>
|
||||
<a name="diffstat"><h2 align="center">Diffstat Results</h2></a>
|
||||
<center><a href="#top">[Back to Top]</a></center><br/><p>This is a summary of the changes to the source code that went into this release that was generated using the diffstat utility.</p>
|
||||
<pre>
|
||||
Makefile | 12
|
||||
doc/cc_ptmp_agent.fsm | 366 +
|
||||
doc/cc_ptmp_agent_flattened.fsm | 483 ++
|
||||
doc/cc_ptmp_monitor.fsm | 181
|
||||
doc/cc_ptmp_monitor_flattened.fsm | 225 +
|
||||
doc/cc_ptp_agent.fsm | 144
|
||||
doc/cc_ptp_agent_flattened.fsm | 191
|
||||
doc/cc_ptp_monitor.fsm | 168
|
||||
doc/cc_ptp_monitor_flattened.fsm | 217 +
|
||||
doc/cc_qsig_agent.fsm | 136
|
||||
doc/cc_qsig_agent_flattened.fsm | 183
|
||||
doc/cc_qsig_monitor.fsm | 249 +
|
||||
doc/cc_qsig_monitor_flattened.fsm | 327 +
|
||||
libpri.h | 776 +++
|
||||
pri.c | 248 +
|
||||
pri_aoc.c | 1765 ++++++++
|
||||
pri_cc.c | 7872 ++++++++++++++++++++++++++++++++++++++
|
||||
pri_facility.c | 1417 ++++++
|
||||
pri_facility.h | 85
|
||||
pri_internal.h | 398 +
|
||||
pri_q931.h | 8
|
||||
prisched.c | 148
|
||||
pritest.c | 83
|
||||
q931.c | 1038 ++++-
|
||||
rose.c | 437 ++
|
||||
rose.h | 856 ++++
|
||||
rose_etsi_aoc.c | 9
|
||||
rose_etsi_cc.c | 1853 ++++++++
|
||||
rose_etsi_mwi.c | 686 +++
|
||||
rose_internal.h | 205
|
||||
rose_qsig_cc.c | 984 ++++
|
||||
rose_qsig_mwi.c | 9
|
||||
rose_qsig_name.c | 1
|
||||
rosetest.c | 865 +++-
|
||||
34 files changed, 22060 insertions(+), 565 deletions(-)
|
||||
</pre><br/>
|
||||
<hr/>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,219 +0,0 @@
|
||||
Release Summary
|
||||
|
||||
libpri-1.4.12-beta1
|
||||
|
||||
Date: 2010-07-26
|
||||
|
||||
<asteriskteam@digium.com>
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Table of Contents
|
||||
|
||||
1. Summary
|
||||
2. Contributors
|
||||
3. Closed Issues
|
||||
4. Other Changes
|
||||
5. Diffstat
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Summary
|
||||
|
||||
[Back to Top]
|
||||
|
||||
This release includes only bug fixes. The changes included were made only
|
||||
to address problems that have been identified in this release series.
|
||||
Users should be able to safely upgrade to this version if this release
|
||||
series is already in use. Users considering upgrading from a previous
|
||||
release series are strongly encouraged to review the UPGRADE.txt document
|
||||
as well as the CHANGES document for information about upgrading to this
|
||||
release series.
|
||||
|
||||
The data in this summary reflects changes that have been made since the
|
||||
previous release, libpri-1.4.11.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Contributors
|
||||
|
||||
[Back to Top]
|
||||
|
||||
This table lists the people who have submitted code, those that have
|
||||
tested patches, as well as those that reported issues on the issue tracker
|
||||
that were resolved in this release. For coders, the number is how many of
|
||||
their patches (of any size) were committed into this release. For testers,
|
||||
the number is the number of times their name was listed as assisting with
|
||||
testing a patch. Finally, for reporters, the number is the number of
|
||||
issues that they reported that were closed by commits that went into this
|
||||
release.
|
||||
|
||||
Coders Testers Reporters
|
||||
13 rmudgett 4 rmudgett 1 horape
|
||||
1 dvossel 1 ibercom 1 ibercom
|
||||
1 horape 1 jsmith 1 jims8650
|
||||
1 nic 1 paravoid 1 jsmith
|
||||
1 paravoid 1 patrol-cz 1 kobaz
|
||||
1 nic_bellamy
|
||||
1 paravoid
|
||||
1 patrol-cz
|
||||
1 tomaso
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Closed Issues
|
||||
|
||||
[Back to Top]
|
||||
|
||||
This is a list of all issues from the issue tracker that were closed by
|
||||
changes that went into this release.
|
||||
|
||||
Category: Channels/chan_dahdi
|
||||
|
||||
#16915: PRI: XXX Missing handling for mandatory IE 12
|
||||
Revision: 1818
|
||||
Reporter: kobaz
|
||||
Coders: rmudgett
|
||||
|
||||
Category: Channels/chan_dahdi/NewFeature
|
||||
|
||||
#14292: [patch] CCBS/CCNR support for QSIG (libpri & chan_dahdi)
|
||||
Revision: 1714
|
||||
Reporter: tomaso
|
||||
Testers: rmudgett
|
||||
Coders: rmudgett
|
||||
|
||||
Category: General
|
||||
|
||||
#15265: [patch] Inband disconnect setting does nothing
|
||||
Revision: 1794
|
||||
Reporter: paravoid
|
||||
Testers: paravoid
|
||||
Coders: paravoid
|
||||
|
||||
#17274: [patch] pritest hadn't been ported to DAHDI
|
||||
Revision: 1833
|
||||
Reporter: horape
|
||||
Coders: horape
|
||||
|
||||
#17428: [patch] Regression in libpri 1.4.11 - handling ROSE
|
||||
Revision: 1785
|
||||
Reporter: patrol-cz
|
||||
Testers: rmudgett, patrol-cz
|
||||
Coders: rmudgett
|
||||
|
||||
#17458: [patch] CallerID name not transmitted on versions of LibPRI after
|
||||
1.4.10.2
|
||||
Revision: 1810
|
||||
Reporter: jsmith
|
||||
Testers: rmudgett, jsmith
|
||||
Coders: rmudgett
|
||||
|
||||
#17495: [patch] [regression] Calling Number assignment logic change in
|
||||
libpri 1.4.11.
|
||||
Revision: 1823
|
||||
Reporter: ibercom
|
||||
Testers: ibercom
|
||||
Coders: rmudgett
|
||||
|
||||
#17619: [patch] Calling name not successfully processed on inbound QSIG
|
||||
PRI calls from Mitel PBX
|
||||
Revision: 1828
|
||||
Reporter: jims8650
|
||||
Testers: rmudgett
|
||||
Coders: rmudgett
|
||||
|
||||
Category: NewFeature
|
||||
|
||||
#16477: [patch] Add pri_new_bri_cb() API - Create BRI D-channel with user
|
||||
defined I/O callbacks and data
|
||||
Revision: 1836
|
||||
Reporter: nic_bellamy
|
||||
Coders: nic
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Commits Not Associated with an Issue
|
||||
|
||||
[Back to Top]
|
||||
|
||||
This is a list of all changes that went into this release that did not
|
||||
directly close an issue from the issue tracker. The commits may have been
|
||||
marked as being related to an issue. If that is the case, the issue
|
||||
numbers are listed here, as well.
|
||||
|
||||
+------------------------------------------------------------------------+
|
||||
| Revision | Author | Summary | Issues Referenced |
|
||||
|----------+----------+------------------------------+-------------------|
|
||||
| 1723 | rmudgett | Added ETSI Explicit Call | |
|
||||
| | | Transfer (ECT) support. | |
|
||||
|----------+----------+------------------------------+-------------------|
|
||||
| 1737 | rmudgett | ETSI Advice Of Charge (AOC) | |
|
||||
| | | event reporting. | |
|
||||
|----------+----------+------------------------------+-------------------|
|
||||
| 1746 | rmudgett | ETSI Call Waiting support. | |
|
||||
|----------+----------+------------------------------+-------------------|
|
||||
| 1757 | rmudgett | ETSI Malicious Call ID | |
|
||||
| | | support. | |
|
||||
|----------+----------+------------------------------+-------------------|
|
||||
| 1767 | rmudgett | ETSI Message Waiting | |
|
||||
| | | Indication (MWI) support. | |
|
||||
|----------+----------+------------------------------+-------------------|
|
||||
| 1776 | dvossel | support for sending ETSI | |
|
||||
| | | advice of charge | |
|
||||
|----------+----------+------------------------------+-------------------|
|
||||
| | | Added a libpri version | |
|
||||
| 1829 | rmudgett | output line as a sanity | |
|
||||
| | | check for rosetest. | |
|
||||
|----------+----------+------------------------------+-------------------|
|
||||
| | | Only need to output one | |
|
||||
| 1830 | rmudgett | version of the version | |
|
||||
| | | message. | |
|
||||
+------------------------------------------------------------------------+
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Diffstat Results
|
||||
|
||||
[Back to Top]
|
||||
|
||||
This is a summary of the changes to the source code that went into this
|
||||
release that was generated using the diffstat utility.
|
||||
|
||||
Makefile | 12
|
||||
doc/cc_ptmp_agent.fsm | 366 +
|
||||
doc/cc_ptmp_agent_flattened.fsm | 483 ++
|
||||
doc/cc_ptmp_monitor.fsm | 181
|
||||
doc/cc_ptmp_monitor_flattened.fsm | 225 +
|
||||
doc/cc_ptp_agent.fsm | 144
|
||||
doc/cc_ptp_agent_flattened.fsm | 191
|
||||
doc/cc_ptp_monitor.fsm | 168
|
||||
doc/cc_ptp_monitor_flattened.fsm | 217 +
|
||||
doc/cc_qsig_agent.fsm | 136
|
||||
doc/cc_qsig_agent_flattened.fsm | 183
|
||||
doc/cc_qsig_monitor.fsm | 249 +
|
||||
doc/cc_qsig_monitor_flattened.fsm | 327 +
|
||||
libpri.h | 776 +++
|
||||
pri.c | 248 +
|
||||
pri_aoc.c | 1765 ++++++++
|
||||
pri_cc.c | 7872 ++++++++++++++++++++++++++++++++++++++
|
||||
pri_facility.c | 1417 ++++++
|
||||
pri_facility.h | 85
|
||||
pri_internal.h | 398 +
|
||||
pri_q931.h | 8
|
||||
prisched.c | 148
|
||||
pritest.c | 83
|
||||
q931.c | 1038 ++++-
|
||||
rose.c | 437 ++
|
||||
rose.h | 856 ++++
|
||||
rose_etsi_aoc.c | 9
|
||||
rose_etsi_cc.c | 1853 ++++++++
|
||||
rose_etsi_mwi.c | 686 +++
|
||||
rose_internal.h | 205
|
||||
rose_qsig_cc.c | 984 ++++
|
||||
rose_qsig_mwi.c | 9
|
||||
rose_qsig_name.c | 1
|
||||
rosetest.c | 865 +++-
|
||||
34 files changed, 22060 insertions(+), 565 deletions(-)
|
||||
|
||||
----------------------------------------------------------------------
|
||||
93
libpri-1.4.12-beta2-summary.html
Normal file
93
libpri-1.4.12-beta2-summary.html
Normal file
@@ -0,0 +1,93 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Release Summary - libpri-1.4.12-beta2</title></head>
|
||||
<body>
|
||||
<h1 align="center"><a name="top">Release Summary</a></h1>
|
||||
<h3 align="center">libpri-1.4.12-beta2</h3>
|
||||
<h3 align="center">Date: 2010-08-30</h3>
|
||||
<h3 align="center"><asteriskteam@digium.com></h3>
|
||||
<hr/>
|
||||
<h2 align="center">Table of Contents</h2>
|
||||
<ol>
|
||||
<li><a href="#summary">Summary</a></li>
|
||||
<li><a href="#contributors">Contributors</a></li>
|
||||
<li><a href="#issues">Closed Issues</a></li>
|
||||
<li><a href="#commits">Other Changes</a></li>
|
||||
<li><a href="#diffstat">Diffstat</a></li>
|
||||
</ol>
|
||||
<hr/>
|
||||
<a name="summary"><h2 align="center">Summary</h2></a>
|
||||
<center><a href="#top">[Back to Top]</a></center><br/><p>This release includes only bug fixes. The changes included were made only to address problems that have been identified in this release series. Users should be able to safely upgrade to this version if this release series is already in use. Users considering upgrading from a previous release series are strongly encouraged to review the UPGRADE.txt document as well as the CHANGES document for information about upgrading to this release series.</p>
|
||||
<p>The data in this summary reflects changes that have been made since the previous release, libpri-1.4.12-beta1.</p>
|
||||
<hr/>
|
||||
<a name="contributors"><h2 align="center">Contributors</h2></a>
|
||||
<center><a href="#top">[Back to Top]</a></center><br/><p>This table lists the people who have submitted code, those that have tested patches, as well as those that reported issues on the issue tracker that were resolved in this release. For coders, the number is how many of their patches (of any size) were committed into this release. For testers, the number is the number of times their name was listed as assisting with testing a patch. Finally, for reporters, the number is the number of issues that they reported that were closed by commits that went into this release.</p>
|
||||
<table width="100%" border="0">
|
||||
<tr>
|
||||
<td width="33%"><h3>Coders</h3></td>
|
||||
<td width="33%"><h3>Testers</h3></td>
|
||||
<td width="33%"><h3>Reporters</h3></td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>
|
||||
13 rmudgett<br/>
|
||||
1 alecdavis<br/>
|
||||
1 mattf<br/>
|
||||
</td>
|
||||
<td>
|
||||
1 jcovert<br/>
|
||||
1 rmudgett<br/>
|
||||
</td>
|
||||
<td>
|
||||
1 alecdavis<br/>
|
||||
1 jcovert<br/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr/>
|
||||
<a name="issues"><h2 align="center">Closed Issues</h2></a>
|
||||
<center><a href="#top">[Back to Top]</a></center><br/><p>This is a list of all issues from the issue tracker that were closed by changes that went into this release.</p>
|
||||
<h3>Category: General</h3><br/>
|
||||
<a href="https://issues.asterisk.org/view.php?id=16791">#16791</a>: [patch] q921_rnr_rx Q921_TIMER_RECOVERY SDL issue<br/>
|
||||
Revision: <a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1845">1845</a><br/>
|
||||
Reporter: alecdavis<br/>
|
||||
Coders: alecdavis<br/>
|
||||
<br/>
|
||||
<a href="https://issues.asterisk.org/view.php?id=17570">#17570</a>: [patch] ISDN BRI does not recover from line faults<br/>
|
||||
Revision: <a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1918">1918</a><br/>
|
||||
Reporter: jcovert<br/>
|
||||
Testers: jcovert, rmudgett<br/>
|
||||
Coders: rmudgett<br/>
|
||||
<br/>
|
||||
<hr/>
|
||||
<a name="commits"><h2 align="center">Commits Not Associated with an Issue</h2></a>
|
||||
<center><a href="#top">[Back to Top]</a></center><br/><p>This is a list of all changes that went into this release that did not directly close an issue from the issue tracker. The commits may have been marked as being related to an issue. If that is the case, the issue numbers are listed here, as well.</p>
|
||||
<table width="100%" border="1">
|
||||
<tr><td><b>Revision</b></td><td><b>Author</b></td><td><b>Summary</b></td><td><b>Issues Referenced</b></td></tr><tr><td><a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1842">1842</a></td><td>rmudgett</td><td>Renamed local struct pri *pri variables to struct pri *ctrl in q921.c.</td>
|
||||
<td></td></tr><tr><td><a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1848">1848</a></td><td>rmudgett</td><td>Improved Q.921/Q.931 debug output.</td>
|
||||
<td></td></tr><tr><td><a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1852">1852</a></td><td>rmudgett</td><td>Learn (AGAIN!) why state 7 and state 8 transitions were suppressed.</td>
|
||||
<td></td></tr><tr><td><a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1853">1853</a></td><td>rmudgett</td><td>No audio on inbound J1 calls.</td>
|
||||
<td></td></tr><tr><td><a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1878">1878</a></td><td>mattf</td><td>Add silly fake MDL error Z for kicking L2 to reactivate if a DISC or DM is received in proper states on PTP links.</td>
|
||||
<td></td></tr><tr><td><a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1883">1883</a></td><td>rmudgett</td><td>Don't silently fail to post our fake MDL-ERROR(Z).</td>
|
||||
<td></td></tr><tr><td><a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1884">1884</a></td><td>rmudgett</td><td>Added gripe check to rosetest for invalid operation and error codes.</td>
|
||||
<td></td></tr><tr><td><a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1894">1894</a></td><td>rmudgett</td><td>Make pri_dump_event() only print the event name.</td>
|
||||
<td></td></tr><tr><td><a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1904">1904</a></td><td>rmudgett</td><td>Add support to receive ECMA-164 2nd edition OID name ROSE messages.</td>
|
||||
<td></td></tr><tr><td><a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1912">1912</a></td><td>rmudgett</td><td>Convert most references of Q931_MAX_TEI to use ARRAY_LEN().</td>
|
||||
<td></td></tr><tr><td><a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1923">1923</a></td><td>rmudgett</td><td>Q.921 improvements from comparing Q.921 SDL diagrams with implementation.</td>
|
||||
<td></td></tr><tr><td><a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1928">1928</a></td><td>rmudgett</td><td>Q.921/Q.931 message debug output improvements.</td>
|
||||
<td></td></tr><tr><td><a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=1929">1929</a></td><td>rmudgett</td><td>Reduced fake MDL-ERROR (Z) message severity to be visible only when debugging enabled.</td>
|
||||
<td></td></tr></table>
|
||||
<hr/>
|
||||
<a name="diffstat"><h2 align="center">Diffstat Results</h2></a>
|
||||
<center><a href="#top">[Back to Top]</a></center><br/><p>This is a summary of the changes to the source code that went into this release that was generated using the diffstat utility.</p>
|
||||
<pre>
|
||||
pri.c | 78 --
|
||||
q921.c | 2135 ++++++++++++++++++++++++++++++++++++-------------------------
|
||||
q931.c | 180 +++--
|
||||
rose.c | 45 +
|
||||
rosetest.c | 54 +
|
||||
5 files changed, 1550 insertions(+), 942 deletions(-)
|
||||
</pre><br/>
|
||||
<hr/>
|
||||
</body>
|
||||
</html>
|
||||
153
libpri-1.4.12-beta2-summary.txt
Normal file
153
libpri-1.4.12-beta2-summary.txt
Normal file
@@ -0,0 +1,153 @@
|
||||
Release Summary
|
||||
|
||||
libpri-1.4.12-beta2
|
||||
|
||||
Date: 2010-08-30
|
||||
|
||||
<asteriskteam@digium.com>
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Table of Contents
|
||||
|
||||
1. Summary
|
||||
2. Contributors
|
||||
3. Closed Issues
|
||||
4. Other Changes
|
||||
5. Diffstat
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Summary
|
||||
|
||||
[Back to Top]
|
||||
|
||||
This release includes only bug fixes. The changes included were made only
|
||||
to address problems that have been identified in this release series.
|
||||
Users should be able to safely upgrade to this version if this release
|
||||
series is already in use. Users considering upgrading from a previous
|
||||
release series are strongly encouraged to review the UPGRADE.txt document
|
||||
as well as the CHANGES document for information about upgrading to this
|
||||
release series.
|
||||
|
||||
The data in this summary reflects changes that have been made since the
|
||||
previous release, libpri-1.4.12-beta1.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Contributors
|
||||
|
||||
[Back to Top]
|
||||
|
||||
This table lists the people who have submitted code, those that have
|
||||
tested patches, as well as those that reported issues on the issue tracker
|
||||
that were resolved in this release. For coders, the number is how many of
|
||||
their patches (of any size) were committed into this release. For testers,
|
||||
the number is the number of times their name was listed as assisting with
|
||||
testing a patch. Finally, for reporters, the number is the number of
|
||||
issues that they reported that were closed by commits that went into this
|
||||
release.
|
||||
|
||||
Coders Testers Reporters
|
||||
13 rmudgett 1 jcovert 1 alecdavis
|
||||
1 alecdavis 1 rmudgett 1 jcovert
|
||||
1 mattf
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Closed Issues
|
||||
|
||||
[Back to Top]
|
||||
|
||||
This is a list of all issues from the issue tracker that were closed by
|
||||
changes that went into this release.
|
||||
|
||||
Category: General
|
||||
|
||||
#16791: [patch] q921_rnr_rx Q921_TIMER_RECOVERY SDL issue
|
||||
Revision: 1845
|
||||
Reporter: alecdavis
|
||||
Coders: alecdavis
|
||||
|
||||
#17570: [patch] ISDN BRI does not recover from line faults
|
||||
Revision: 1918
|
||||
Reporter: jcovert
|
||||
Testers: jcovert, rmudgett
|
||||
Coders: rmudgett
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Commits Not Associated with an Issue
|
||||
|
||||
[Back to Top]
|
||||
|
||||
This is a list of all changes that went into this release that did not
|
||||
directly close an issue from the issue tracker. The commits may have been
|
||||
marked as being related to an issue. If that is the case, the issue
|
||||
numbers are listed here, as well.
|
||||
|
||||
+------------------------------------------------------------------------+
|
||||
| Revision | Author | Summary | Issues |
|
||||
| | | | Referenced |
|
||||
|----------+----------+-------------------------------------+------------|
|
||||
| | | Renamed local struct pri *pri | |
|
||||
| 1842 | rmudgett | variables to struct pri *ctrl in | |
|
||||
| | | q921.c. | |
|
||||
|----------+----------+-------------------------------------+------------|
|
||||
| 1848 | rmudgett | Improved Q.921/Q.931 debug output. | |
|
||||
|----------+----------+-------------------------------------+------------|
|
||||
| | | Learn (AGAIN!) why state 7 and | |
|
||||
| 1852 | rmudgett | state 8 transitions were | |
|
||||
| | | suppressed. | |
|
||||
|----------+----------+-------------------------------------+------------|
|
||||
| 1853 | rmudgett | No audio on inbound J1 calls. | |
|
||||
|----------+----------+-------------------------------------+------------|
|
||||
| | | Add silly fake MDL error Z for | |
|
||||
| 1878 | mattf | kicking L2 to reactivate if a DISC | |
|
||||
| | | or DM is received in proper states | |
|
||||
| | | on PTP links. | |
|
||||
|----------+----------+-------------------------------------+------------|
|
||||
| 1883 | rmudgett | Don't silently fail to post our | |
|
||||
| | | fake MDL-ERROR(Z). | |
|
||||
|----------+----------+-------------------------------------+------------|
|
||||
| 1884 | rmudgett | Added gripe check to rosetest for | |
|
||||
| | | invalid operation and error codes. | |
|
||||
|----------+----------+-------------------------------------+------------|
|
||||
| 1894 | rmudgett | Make pri_dump_event() only print | |
|
||||
| | | the event name. | |
|
||||
|----------+----------+-------------------------------------+------------|
|
||||
| 1904 | rmudgett | Add support to receive ECMA-164 2nd | |
|
||||
| | | edition OID name ROSE messages. | |
|
||||
|----------+----------+-------------------------------------+------------|
|
||||
| 1912 | rmudgett | Convert most references of | |
|
||||
| | | Q931_MAX_TEI to use ARRAY_LEN(). | |
|
||||
|----------+----------+-------------------------------------+------------|
|
||||
| | | Q.921 improvements from comparing | |
|
||||
| 1923 | rmudgett | Q.921 SDL diagrams with | |
|
||||
| | | implementation. | |
|
||||
|----------+----------+-------------------------------------+------------|
|
||||
| 1928 | rmudgett | Q.921/Q.931 message debug output | |
|
||||
| | | improvements. | |
|
||||
|----------+----------+-------------------------------------+------------|
|
||||
| | | Reduced fake MDL-ERROR (Z) message | |
|
||||
| 1929 | rmudgett | severity to be visible only when | |
|
||||
| | | debugging enabled. | |
|
||||
+------------------------------------------------------------------------+
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Diffstat Results
|
||||
|
||||
[Back to Top]
|
||||
|
||||
This is a summary of the changes to the source code that went into this
|
||||
release that was generated using the diffstat utility.
|
||||
|
||||
pri.c | 78 --
|
||||
q921.c | 2135 ++++++++++++++++++++++++++++++++++++-------------------------
|
||||
q931.c | 180 +++--
|
||||
rose.c | 45 +
|
||||
rosetest.c | 54 +
|
||||
5 files changed, 1550 insertions(+), 942 deletions(-)
|
||||
|
||||
----------------------------------------------------------------------
|
||||
78
pri.c
78
pri.c
@@ -497,33 +497,33 @@ char *pri_event2str(int id)
|
||||
char *name;
|
||||
} events[] = {
|
||||
/* *INDENT-OFF* */
|
||||
{ PRI_EVENT_DCHAN_UP, "D-Channel Up" },
|
||||
{ PRI_EVENT_DCHAN_DOWN, "D-channel Down" },
|
||||
{ PRI_EVENT_RESTART, "Restart channel" },
|
||||
{ PRI_EVENT_CONFIG_ERR, "Configuration Error" },
|
||||
{ PRI_EVENT_RING, "Ring" },
|
||||
{ PRI_EVENT_HANGUP, "Hangup" },
|
||||
{ PRI_EVENT_RINGING, "Ringing" },
|
||||
{ PRI_EVENT_ANSWER, "Answer" },
|
||||
{ PRI_EVENT_HANGUP_ACK, "Hangup ACK" },
|
||||
{ PRI_EVENT_RESTART_ACK, "Restart ACK" },
|
||||
{ PRI_EVENT_FACILITY, "Facility" },
|
||||
{ PRI_EVENT_INFO_RECEIVED, "Info Received" },
|
||||
{ PRI_EVENT_PROCEEDING, "Proceeding" },
|
||||
{ PRI_EVENT_SETUP_ACK, "Setup ACK" },
|
||||
{ PRI_EVENT_HANGUP_REQ, "Hangup Req" },
|
||||
{ PRI_EVENT_NOTIFY, "Notify" },
|
||||
{ PRI_EVENT_PROGRESS, "Progress" },
|
||||
{ PRI_EVENT_KEYPAD_DIGIT, "Keypad Digit" },
|
||||
{ PRI_EVENT_SERVICE, "Service" },
|
||||
{ PRI_EVENT_SERVICE_ACK, "Service ACK" },
|
||||
{ PRI_EVENT_HOLD, "Hold" },
|
||||
{ PRI_EVENT_HOLD_ACK, "Hold Ack" },
|
||||
{ PRI_EVENT_HOLD_REJ, "Hold Rej" },
|
||||
{ PRI_EVENT_RETRIEVE, "Retrieve" },
|
||||
{ PRI_EVENT_RETRIEVE_ACK, "Retrieve ACK" },
|
||||
{ PRI_EVENT_RETRIEVE_REJ, "Retrieve Rej" },
|
||||
{ PRI_EVENT_CONNECT_ACK, "Connect ACK" },
|
||||
{ PRI_EVENT_DCHAN_UP, "PRI_EVENT_DCHAN_UP" },
|
||||
{ PRI_EVENT_DCHAN_DOWN, "PRI_EVENT_DCHAN_DOWN" },
|
||||
{ PRI_EVENT_RESTART, "PRI_EVENT_RESTART" },
|
||||
{ PRI_EVENT_CONFIG_ERR, "PRI_EVENT_CONFIG_ERR" },
|
||||
{ PRI_EVENT_RING, "PRI_EVENT_RING" },
|
||||
{ PRI_EVENT_HANGUP, "PRI_EVENT_HANGUP" },
|
||||
{ PRI_EVENT_RINGING, "PRI_EVENT_RINGING" },
|
||||
{ PRI_EVENT_ANSWER, "PRI_EVENT_ANSWER" },
|
||||
{ PRI_EVENT_HANGUP_ACK, "PRI_EVENT_HANGUP_ACK" },
|
||||
{ PRI_EVENT_RESTART_ACK, "PRI_EVENT_RESTART_ACK" },
|
||||
{ PRI_EVENT_FACILITY, "PRI_EVENT_FACILITY" },
|
||||
{ PRI_EVENT_INFO_RECEIVED, "PRI_EVENT_INFO_RECEIVED" },
|
||||
{ PRI_EVENT_PROCEEDING, "PRI_EVENT_PROCEEDING" },
|
||||
{ PRI_EVENT_SETUP_ACK, "PRI_EVENT_SETUP_ACK" },
|
||||
{ PRI_EVENT_HANGUP_REQ, "PRI_EVENT_HANGUP_REQ" },
|
||||
{ PRI_EVENT_NOTIFY, "PRI_EVENT_NOTIFY" },
|
||||
{ PRI_EVENT_PROGRESS, "PRI_EVENT_PROGRESS" },
|
||||
{ PRI_EVENT_KEYPAD_DIGIT, "PRI_EVENT_KEYPAD_DIGIT" },
|
||||
{ PRI_EVENT_SERVICE, "PRI_EVENT_SERVICE" },
|
||||
{ PRI_EVENT_SERVICE_ACK, "PRI_EVENT_SERVICE_ACK" },
|
||||
{ PRI_EVENT_HOLD, "PRI_EVENT_HOLD" },
|
||||
{ PRI_EVENT_HOLD_ACK, "PRI_EVENT_HOLD_ACK" },
|
||||
{ PRI_EVENT_HOLD_REJ, "PRI_EVENT_HOLD_REJ" },
|
||||
{ PRI_EVENT_RETRIEVE, "PRI_EVENT_RETRIEVE" },
|
||||
{ PRI_EVENT_RETRIEVE_ACK, "PRI_EVENT_RETRIEVE_ACK" },
|
||||
{ PRI_EVENT_RETRIEVE_REJ, "PRI_EVENT_RETRIEVE_REJ" },
|
||||
{ PRI_EVENT_CONNECT_ACK, "PRI_EVENT_CONNECT_ACK" },
|
||||
/* *INDENT-ON* */
|
||||
};
|
||||
|
||||
@@ -832,7 +832,7 @@ int pri_connected_line_update(struct pri *ctrl, q931_call *call, const struct pr
|
||||
|
||||
/* Update all subcalls with new local_id. */
|
||||
if (call->outboundbroadcast && call->master_call == call) {
|
||||
for (idx = 0; idx < Q931_MAX_TEI; ++idx) {
|
||||
for (idx = 0; idx < ARRAY_LEN(call->subcalls); ++idx) {
|
||||
subcall = call->subcalls[idx];
|
||||
if (subcall) {
|
||||
subcall->local_id = party_id;
|
||||
@@ -899,7 +899,7 @@ int pri_redirecting_update(struct pri *ctrl, q931_call *call, const struct pri_p
|
||||
* but update it just in case.
|
||||
*/
|
||||
if (call->outboundbroadcast && call->master_call == call) {
|
||||
for (idx = 0; idx < Q931_MAX_TEI; ++idx) {
|
||||
for (idx = 0; idx < ARRAY_LEN(call->subcalls); ++idx) {
|
||||
subcall = call->subcalls[idx];
|
||||
if (subcall) {
|
||||
subcall->redirecting.to = call->redirecting.to;
|
||||
@@ -1162,26 +1162,6 @@ void pri_dump_event(struct pri *pri, pri_event *e)
|
||||
if (!pri || !e)
|
||||
return;
|
||||
pri_message(pri, "Event type: %s (%d)\n", pri_event2str(e->gen.e), e->gen.e);
|
||||
switch(e->gen.e) {
|
||||
case PRI_EVENT_DCHAN_UP:
|
||||
case PRI_EVENT_DCHAN_DOWN:
|
||||
break;
|
||||
case PRI_EVENT_CONFIG_ERR:
|
||||
pri_message(pri, "Error: %s", e->err.err);
|
||||
break;
|
||||
case PRI_EVENT_RESTART:
|
||||
pri_message(pri, "Restart on channel %d\n", e->restart.channel);
|
||||
case PRI_EVENT_RING:
|
||||
pri_message(pri, "Calling number: %s (%s, %s)\n", e->ring.callingnum, pri_plan2str(e->ring.callingplan), pri_pres2str(e->ring.callingpres));
|
||||
pri_message(pri, "Called number: %s (%s)\n", e->ring.callednum, pri_plan2str(e->ring.calledplan));
|
||||
pri_message(pri, "Channel: %d (%s) Reference number: %d\n", e->ring.channel, e->ring.flexible ? "Flexible" : "Not Flexible", e->ring.cref);
|
||||
break;
|
||||
case PRI_EVENT_HANGUP:
|
||||
pri_message(pri, "Hangup, reference number: %d, reason: %s\n", e->hangup.cref, pri_cause2str(e->hangup.cause));
|
||||
break;
|
||||
default:
|
||||
pri_message(pri, "Don't know how to dump events of type %d\n", e->gen.e);
|
||||
}
|
||||
}
|
||||
|
||||
void pri_sr_init(struct pri_sr *req)
|
||||
|
||||
222
q931.c
222
q931.c
@@ -1003,7 +1003,12 @@ static int receive_channel_id(int full_ie, struct pri *ctrl, q931_call *call, in
|
||||
return -1;
|
||||
}
|
||||
if (ie->data[pos] & 0x10) {
|
||||
/* Expect Slot Map */
|
||||
/*
|
||||
* Expect Slot Map
|
||||
* Note that we are assuming only T1's use slot maps which is wrong
|
||||
* but oh well... We would need to know what type of line we are
|
||||
* connected with (T1 or E1) to interpret the map correctly anyway.
|
||||
*/
|
||||
call->slotmap = 0;
|
||||
pos++;
|
||||
for (x=0;x<3;x++) {
|
||||
@@ -1085,22 +1090,26 @@ static int transmit_channel_id(int full_ie, struct pri *ctrl, q931_call *call, i
|
||||
&& !(call->chanflags & FLAG_WHOLE_INTERFACE)) {
|
||||
/* The 3.2 and 3.3 octets need to be present */
|
||||
ie->data[pos] = 0x83;
|
||||
if (call->slotmap != -1) {
|
||||
int octet;
|
||||
|
||||
/* We have to send a channel map */
|
||||
ie->data[pos++] |= 0x10;
|
||||
for (octet = 3; octet--;) {
|
||||
ie->data[pos++] = (call->slotmap >> (8 * octet)) & 0xff;
|
||||
}
|
||||
} else {
|
||||
/* Channel number specified */
|
||||
if (0 < call->channelno && call->channelno != 0xff) {
|
||||
/* Channel number specified and preferred over slot map if we have one. */
|
||||
++pos;
|
||||
if (ctrl->chan_mapping_logical && call->channelno > 16) {
|
||||
ie->data[pos++] = 0x80 | (call->channelno - 1);
|
||||
} else {
|
||||
ie->data[pos++] = 0x80 | call->channelno;
|
||||
}
|
||||
} else if (call->slotmap != -1) {
|
||||
int octet;
|
||||
|
||||
/* We have to send a slot map */
|
||||
ie->data[pos++] |= 0x10;
|
||||
for (octet = 3; octet--;) {
|
||||
ie->data[pos++] = (call->slotmap >> (8 * octet)) & 0xff;
|
||||
}
|
||||
} else {
|
||||
pri_error(ctrl, "XXX We need either a channelno or slotmap but have neither!\n");
|
||||
/* Discard this malformed ie. */
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3947,7 +3956,7 @@ void q931_destroycall(struct pri *ctrl, q931_call *c)
|
||||
if (cur == c) {
|
||||
slaveidx = -1;
|
||||
if (slave) {
|
||||
for (i = 0; i < Q931_MAX_TEI; i++) {
|
||||
for (i = 0; i < ARRAY_LEN(cur->subcalls); ++i) {
|
||||
if (cur->subcalls[i] == slave) {
|
||||
if (ctrl->debug & PRI_DEBUG_Q931_STATE) {
|
||||
pri_message(ctrl, "Destroying subcall %p of call %p at %d\n",
|
||||
@@ -3962,7 +3971,7 @@ void q931_destroycall(struct pri *ctrl, q931_call *c)
|
||||
}
|
||||
|
||||
slavesleft = 0;
|
||||
for (i = 0; i < Q931_MAX_TEI; i++) {
|
||||
for (i = 0; i < ARRAY_LEN(cur->subcalls); ++i) {
|
||||
if (cur->subcalls[i]) {
|
||||
if (ctrl->debug & PRI_DEBUG_Q931_STATE) {
|
||||
pri_message(ctrl, "Subcall still present at %d\n", i);
|
||||
@@ -3972,8 +3981,8 @@ void q931_destroycall(struct pri *ctrl, q931_call *c)
|
||||
}
|
||||
|
||||
/* We have 3 different phases to deal with:
|
||||
* 1.) Sent outbound call, but no response, indicated by t203 present
|
||||
* 2.) Sent outbound call, with responses, indicated by lack of t203 and subcalls present
|
||||
* 1.) Sent outbound call, but no response (no subcalls present)
|
||||
* 2.) Sent outbound call, with responses (subcalls present)
|
||||
* 3.) Outbound call connected, indicated by pri_winner > -1
|
||||
*
|
||||
* If chan_dahdi hangs up in phase:
|
||||
@@ -3996,7 +4005,7 @@ void q931_destroycall(struct pri *ctrl, q931_call *c)
|
||||
* If, when the library user hangs up the master call, and there are more than one subcall up, we fake clear
|
||||
* regardless of whether or not we drop down to one subcall left in the clearing process.
|
||||
*
|
||||
* If there are only one call up, we mirror what it does.
|
||||
* If there is only one call up, we mirror what it does.
|
||||
*
|
||||
* OR
|
||||
*
|
||||
@@ -4014,8 +4023,8 @@ void q931_destroycall(struct pri *ctrl, q931_call *c)
|
||||
* call as dead and free it when the last subcall clears.
|
||||
*/
|
||||
|
||||
if ((slave && !slavesleft) &&
|
||||
((cur->pri_winner < 0) || (slave && slaveidx != cur->pri_winner))) {
|
||||
if (slave && !slavesleft /* i.e., The last slave was just destroyed */
|
||||
&& (cur->pri_winner < 0 || slaveidx != cur->pri_winner)) {
|
||||
pri_create_fake_clearing(cur, ctrl);
|
||||
return;
|
||||
}
|
||||
@@ -4148,6 +4157,85 @@ static char *disc2str(int disc)
|
||||
return code2str(disc, discs, sizeof(discs) / sizeof(discs[0]));
|
||||
}
|
||||
|
||||
/*!
|
||||
* \internal
|
||||
* \brief Dump the Q.931 message header.
|
||||
*
|
||||
* \param ctrl D channel controller.
|
||||
* \param tei TEI the packet is associated with.
|
||||
* \param h Q.931 packet contents/header.
|
||||
* \param len Received length of the Q.931 packet.
|
||||
* \param c Message direction prefix character.
|
||||
*
|
||||
* \retval 0 on success.
|
||||
* \retval -1 on error.
|
||||
*/
|
||||
static int q931_dump_header(struct pri *ctrl, int tei, q931_h *h, int len, char c)
|
||||
{
|
||||
q931_mh *mh;
|
||||
int cref;
|
||||
|
||||
pri_message(ctrl, "%c Protocol Discriminator: %s (%d) len=%d\n", c, disc2str(h->pd), h->pd, len);
|
||||
|
||||
if (len < 2 || len < 2 + h->crlen) {
|
||||
pri_message(ctrl, "%c Message too short for call reference. len=%d\n",
|
||||
c, len);
|
||||
return -1;
|
||||
}
|
||||
cref = q931_cr(h);
|
||||
pri_message(ctrl, "%c TEI=%d Call Ref: len=%2d (reference %d/0x%X) (%s)\n",
|
||||
c, tei, h->crlen, cref & ~Q931_CALL_REFERENCE_FLAG,
|
||||
cref & ~Q931_CALL_REFERENCE_FLAG, (cref == Q931_DUMMY_CALL_REFERENCE)
|
||||
? "Dummy"
|
||||
: (cref & Q931_CALL_REFERENCE_FLAG)
|
||||
? "Sent to originator" : "Sent from originator");
|
||||
|
||||
if (len < 3 + h->crlen) {
|
||||
pri_message(ctrl, "%c Message too short for supported protocols. len=%d\n",
|
||||
c, len);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Message header begins at the end of the call reference number */
|
||||
mh = (q931_mh *)(h->contents + h->crlen);
|
||||
switch (h->pd) {
|
||||
case MAINTENANCE_PROTOCOL_DISCRIMINATOR_1:
|
||||
case MAINTENANCE_PROTOCOL_DISCRIMINATOR_2:
|
||||
pri_message(ctrl, "%c Message Type: %s (%d)\n", c, maintenance_msg2str(mh->msg, h->pd), mh->msg);
|
||||
break;
|
||||
default:
|
||||
/* Unknown protocol discriminator but we will treat it as Q.931 anyway. */
|
||||
case GR303_PROTOCOL_DISCRIMINATOR:
|
||||
case Q931_PROTOCOL_DISCRIMINATOR:
|
||||
pri_message(ctrl, "%c Message Type: %s (%d)\n", c, msg2str(mh->msg), mh->msg);
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*!
|
||||
* \internal
|
||||
* \brief Q.931 is passing this message to Q.921 debug indication.
|
||||
*
|
||||
* \param ctrl D channel controller.
|
||||
* \param tei TEI the packet is associated with.
|
||||
* \param h Q.931 packet contents/header.
|
||||
* \param len Received length of the Q.931 packet
|
||||
*
|
||||
* \return Nothing
|
||||
*/
|
||||
static void q931_to_q921_passing_dump(struct pri *ctrl, int tei, q931_h *h, int len)
|
||||
{
|
||||
char c;
|
||||
|
||||
c = '>';
|
||||
|
||||
pri_message(ctrl, "\n");
|
||||
pri_message(ctrl, "%c DL-DATA request\n", c);
|
||||
q931_dump_header(ctrl, tei, h, len, c);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Debug dump the given Q.931 packet.
|
||||
*
|
||||
@@ -4167,46 +4255,19 @@ void q931_dump(struct pri *ctrl, int tei, q931_h *h, int len, int txrx)
|
||||
int r;
|
||||
int cur_codeset;
|
||||
int codeset;
|
||||
int cref;
|
||||
|
||||
c = txrx ? '>' : '<';
|
||||
|
||||
pri_message(ctrl, "%c Protocol Discriminator: %s (%d) len=%d\n", c, disc2str(h->pd), h->pd, len);
|
||||
|
||||
if (len < 2 || len < 2 + h->crlen) {
|
||||
pri_message(ctrl, "%c Message too short for call reference. len=%d\n",
|
||||
c, len);
|
||||
return;
|
||||
if (!(ctrl->debug & (PRI_DEBUG_Q921_DUMP | PRI_DEBUG_Q921_RAW))) {
|
||||
/* Put out a blank line if Q.921 is not dumping. */
|
||||
pri_message(ctrl, "\n");
|
||||
}
|
||||
cref = q931_cr(h);
|
||||
pri_message(ctrl, "%c TEI=%d Call Ref: len=%2d (reference %d/0x%X) (%s)\n",
|
||||
c, tei, h->crlen, cref & ~Q931_CALL_REFERENCE_FLAG,
|
||||
cref & ~Q931_CALL_REFERENCE_FLAG, (cref == Q931_DUMMY_CALL_REFERENCE)
|
||||
? "Dummy"
|
||||
: (cref & Q931_CALL_REFERENCE_FLAG)
|
||||
? "Sent to originator" : "Sent from originator");
|
||||
|
||||
if (len < 3 + h->crlen) {
|
||||
pri_message(ctrl, "%c Message too short for supported protocols. len=%d\n",
|
||||
c, len);
|
||||
if (q931_dump_header(ctrl, tei, h, len, c)) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* Message header begins at the end of the call reference number */
|
||||
mh = (q931_mh *)(h->contents + h->crlen);
|
||||
switch (h->pd) {
|
||||
case MAINTENANCE_PROTOCOL_DISCRIMINATOR_1:
|
||||
case MAINTENANCE_PROTOCOL_DISCRIMINATOR_2:
|
||||
pri_message(ctrl, "%c Message Type: %s (%d)\n", c, maintenance_msg2str(mh->msg, h->pd), mh->msg);
|
||||
break;
|
||||
default:
|
||||
/* Unknown protocol discriminator but we will treat it as Q.931 anyway. */
|
||||
case GR303_PROTOCOL_DISCRIMINATOR:
|
||||
case Q931_PROTOCOL_DISCRIMINATOR:
|
||||
pri_message(ctrl, "%c Message Type: %s (%d)\n", c, msg2str(mh->msg), mh->msg);
|
||||
break;
|
||||
}
|
||||
/* Drop length of header, including call reference */
|
||||
mh = (q931_mh *)(h->contents + h->crlen);
|
||||
len -= (h->crlen + 3);
|
||||
codeset = cur_codeset = 0;
|
||||
for (x = 0; x < len; x += r) {
|
||||
@@ -4328,19 +4389,32 @@ static void init_header(struct pri *ctrl, q931_call *call, unsigned char *buf, q
|
||||
|
||||
static int q931_xmit(struct pri *ctrl, int tei, q931_h *h, int len, int cr, int uiframe)
|
||||
{
|
||||
if (uiframe) {
|
||||
q921_transmit_uiframe(ctrl, h, len);
|
||||
} else {
|
||||
q921_transmit_iframe(ctrl, tei, h, len, cr);
|
||||
}
|
||||
/* The transmit operation might dump the q921 header, so logging the q931
|
||||
message body after the transmit puts the sections of the message in the
|
||||
right order in the log */
|
||||
if (ctrl->debug & PRI_DEBUG_Q931_DUMP)
|
||||
q931_dump(ctrl, tei, h, len, 1);
|
||||
#ifdef LIBPRI_COUNTERS
|
||||
ctrl->q931_txcount++;
|
||||
#endif
|
||||
if (uiframe) {
|
||||
q921_transmit_uiframe(ctrl, h, len);
|
||||
if (ctrl->debug & PRI_DEBUG_Q931_DUMP) {
|
||||
/*
|
||||
* The transmit operation might dump the Q.921 header, so logging
|
||||
* the Q.931 message body after the transmit puts the sections of
|
||||
* the message in the right order in the log,
|
||||
*/
|
||||
q931_dump(ctrl, tei, h, len, 1);
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
* Indicate passing the Q.931 message to Q.921 first. Q.921 may
|
||||
* have to request a TEI or bring the connection up before it can
|
||||
* actually send the message. Therefore, the Q.931 message may
|
||||
* actually get sent a few seconds later. Q.921 will dump the
|
||||
* Q.931 message as appropriate at that time.
|
||||
*/
|
||||
if (ctrl->debug & PRI_DEBUG_Q931_DUMP) {
|
||||
q931_to_q921_passing_dump(ctrl, tei, h, len);
|
||||
}
|
||||
q921_transmit_iframe(ctrl, tei, h, len, cr);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -4370,6 +4444,7 @@ static int send_message(struct pri *ctrl, q931_call *call, int msgtype, int ies[
|
||||
int x;
|
||||
int codeset;
|
||||
int uiframe;
|
||||
int tei;
|
||||
|
||||
if (call->outboundbroadcast && call->master_call == call && msgtype != Q931_SETUP) {
|
||||
pri_error(ctrl,
|
||||
@@ -4398,6 +4473,7 @@ static int send_message(struct pri *ctrl, q931_call *call, int msgtype, int ies[
|
||||
/* Invert the logic */
|
||||
len = sizeof(buf) - len;
|
||||
|
||||
tei = call->pri->tei;
|
||||
uiframe = 0;
|
||||
if (BRI_NT_PTMP(ctrl)) {
|
||||
/* NT PTMP is the only mode that can broadcast Q.931 messages. */
|
||||
@@ -4414,7 +4490,7 @@ static int send_message(struct pri *ctrl, q931_call *call, int msgtype, int ies[
|
||||
uiframe = 1;
|
||||
break;
|
||||
case Q931_FACILITY:
|
||||
if (call->pri->tei == Q921_TEI_GROUP) {
|
||||
if (tei == Q921_TEI_GROUP) {
|
||||
/* Broadcast TEI. */
|
||||
if (q931_is_dummy_call(call)) {
|
||||
/*
|
||||
@@ -4439,8 +4515,14 @@ static int send_message(struct pri *ctrl, q931_call *call, int msgtype, int ies[
|
||||
"Sending message for call %p on call->pri: %p with TEI/SAPI %d/%d\n",
|
||||
call, call->pri, call->pri->tei, call->pri->sapi);
|
||||
}
|
||||
} else if (call->pri->subchannel && BRI_TE_PTMP(ctrl)) {
|
||||
/*
|
||||
* Get the best available TEI value for the debug dump display.
|
||||
* We may not actually have a TEI assigned at the moment.
|
||||
*/
|
||||
tei = call->pri->subchannel->tei;
|
||||
}
|
||||
q931_xmit(call->pri, call->pri->tei, h, len, 1, uiframe);
|
||||
q931_xmit(call->pri, tei, h, len, 1, uiframe);
|
||||
call->acked = 1;
|
||||
return 0;
|
||||
}
|
||||
@@ -4585,7 +4667,7 @@ int q931_notify_redirection(struct pri *ctrl, q931_call *call, int notify, const
|
||||
|
||||
if (call->outboundbroadcast && call->master_call == call) {
|
||||
status = 0;
|
||||
for (idx = 0; idx < Q931_MAX_TEI; ++idx) {
|
||||
for (idx = 0; idx < ARRAY_LEN(call->subcalls); ++idx) {
|
||||
subcall = call->subcalls[idx];
|
||||
if (subcall) {
|
||||
/* Send to all subcalls that have given a positive response. */
|
||||
@@ -5975,7 +6057,7 @@ int q931_hangup(struct pri *ctrl, q931_call *call, int cause)
|
||||
int slaves = 0;
|
||||
|
||||
/* Master is called with hangup - initiate hangup with slaves */
|
||||
for (i = 0; i < Q931_MAX_TEI; i++) {
|
||||
for (i = 0; i < ARRAY_LEN(call->subcalls); ++i) {
|
||||
if (call->subcalls[i]) {
|
||||
slaves++;
|
||||
if (i == call->master_call->pri_winner) {
|
||||
@@ -6227,7 +6309,7 @@ static int q931_get_subcall_count(struct q931_call *call)
|
||||
int i;
|
||||
|
||||
call = call->master_call;
|
||||
for (i = 0; i < Q931_MAX_TEI; i++) {
|
||||
for (i = 0; i < ARRAY_LEN(call->subcalls); ++i) {
|
||||
if (call->subcalls[i])
|
||||
count++;
|
||||
}
|
||||
@@ -6242,7 +6324,7 @@ static void q931_set_subcall_winner(struct q931_call *subcall)
|
||||
int i;
|
||||
|
||||
/* Set the winner first */
|
||||
for (i = 0; i < Q931_MAX_TEI; i++) {
|
||||
for (i = 0; i < ARRAY_LEN(realcall->subcalls); ++i) {
|
||||
if (realcall->subcalls[i] && realcall->subcalls[i] == subcall) {
|
||||
realcall->pri_winner = i;
|
||||
}
|
||||
@@ -6253,7 +6335,7 @@ static void q931_set_subcall_winner(struct q931_call *subcall)
|
||||
}
|
||||
|
||||
/* Start tear down of calls that were not chosen */
|
||||
for (i = 0; i < Q931_MAX_TEI; i++) {
|
||||
for (i = 0; i < ARRAY_LEN(realcall->subcalls); ++i) {
|
||||
if (realcall->subcalls[i] && realcall->subcalls[i] != subcall) {
|
||||
initiate_hangup_if_needed(realcall->subcalls[i]->pri, realcall->subcalls[i],
|
||||
PRI_CAUSE_NONSELECTED_USER_CLEARING);
|
||||
@@ -6268,7 +6350,7 @@ static struct q931_call *q931_get_subcall(struct pri *ctrl, struct q931_call *ma
|
||||
int firstfree = -1;
|
||||
|
||||
/* First try to locate our subcall */
|
||||
for (i = 0; i < Q931_MAX_TEI; i++) {
|
||||
for (i = 0; i < ARRAY_LEN(master_call->subcalls); ++i) {
|
||||
if (master_call->subcalls[i]) {
|
||||
if (master_call->subcalls[i]->pri == ctrl) {
|
||||
return master_call->subcalls[i];
|
||||
@@ -6279,7 +6361,7 @@ static struct q931_call *q931_get_subcall(struct pri *ctrl, struct q931_call *ma
|
||||
}
|
||||
if (firstfree < 0) {
|
||||
pri_error(ctrl, "Tried to add more than %d TEIs to call and failed\n",
|
||||
Q931_MAX_TEI);
|
||||
(int) ARRAY_LEN(master_call->subcalls));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -6295,7 +6377,7 @@ static struct q931_call *q931_get_subcall(struct pri *ctrl, struct q931_call *ma
|
||||
cur->apdus = NULL;
|
||||
cur->bridged_call = NULL;
|
||||
//cur->master_call = master_call; /* We get this assignment for free. */
|
||||
for (i = 0; i < Q931_MAX_TEI; ++i) {
|
||||
for (i = 0; i < ARRAY_LEN(cur->subcalls); ++i) {
|
||||
cur->subcalls[i] = NULL;
|
||||
}
|
||||
cur->t303_timer = 0;/* T303 should only be on on the master call */
|
||||
|
||||
45
rose.c
45
rose.c
@@ -761,6 +761,21 @@ static const struct rose_convert_error rose_etsi_errors[] = {
|
||||
/* ------------------------------------------------------------------- */
|
||||
|
||||
|
||||
/*
|
||||
* Note the first value in oid.values[] is really the first two
|
||||
* OID subidentifiers. They are compressed using this formula:
|
||||
* First_Value = (First_Subidentifier * 40) + Second_Subidentifier
|
||||
*/
|
||||
|
||||
/*! \brief ECMA private-isdn-signalling-domain prefix. */
|
||||
static const struct asn1_oid rose_qsig_isdn_domain = {
|
||||
/* *INDENT-OFF* */
|
||||
/* {iso(1) identified-organization(3) icd-ecma(12) private-isdn-signalling-domain(9)} */
|
||||
3, { 43, 12, 9 }
|
||||
/* *INDENT-ON* */
|
||||
};
|
||||
|
||||
|
||||
/*! \brief Q.SIG specific invoke/result encode/decode message table */
|
||||
static const struct rose_convert_msg rose_qsig_msgs[] = {
|
||||
/* *INDENT-OFF* */
|
||||
@@ -770,7 +785,7 @@ static const struct rose_convert_msg rose_qsig_msgs[] = {
|
||||
* decode_invoke_args, decode_result_args
|
||||
*/
|
||||
/*
|
||||
* localValue's from Q.SIG Name-Operations
|
||||
* localValue's from Q.SIG Name-Operations 4th edition
|
||||
* { iso(1) standard(0) pss1-name(13868) name-operations(0) }
|
||||
*/
|
||||
{
|
||||
@@ -794,6 +809,34 @@ static const struct rose_convert_msg rose_qsig_msgs[] = {
|
||||
rose_dec_qsig_BusyName_ARG, NULL
|
||||
},
|
||||
|
||||
/*
|
||||
* globalValue's (OIDs) from Q.SIG Name-Operations 2nd edition
|
||||
* { iso(1) identified-organization(3) icd-ecma(12) standard(0) qsig-name(164) name-operations(0) }
|
||||
*
|
||||
* This older version of the Q.SIG switch is not supported.
|
||||
* However, we will accept receiving these messages anyway.
|
||||
*/
|
||||
{
|
||||
ROSE_QSIG_CallingName, &rose_qsig_isdn_domain, 0,
|
||||
rose_enc_qsig_CallingName_ARG, NULL,
|
||||
rose_dec_qsig_CallingName_ARG, NULL
|
||||
},
|
||||
{
|
||||
ROSE_QSIG_CalledName, &rose_qsig_isdn_domain, 1,
|
||||
rose_enc_qsig_CalledName_ARG, NULL,
|
||||
rose_dec_qsig_CalledName_ARG, NULL
|
||||
},
|
||||
{
|
||||
ROSE_QSIG_ConnectedName, &rose_qsig_isdn_domain, 2,
|
||||
rose_enc_qsig_ConnectedName_ARG, NULL,
|
||||
rose_dec_qsig_ConnectedName_ARG, NULL
|
||||
},
|
||||
{
|
||||
ROSE_QSIG_BusyName, &rose_qsig_isdn_domain, 3,
|
||||
rose_enc_qsig_BusyName_ARG, NULL,
|
||||
rose_dec_qsig_BusyName_ARG, NULL
|
||||
},
|
||||
|
||||
/*
|
||||
* localValue's from Q.SIG SS-AOC-Operations
|
||||
* { iso(1) standard(0) pss1-advice-of-charge(15050) advice-of-charge-operations(0) }
|
||||
|
||||
54
rosetest.c
54
rosetest.c
@@ -2837,6 +2837,42 @@ static unsigned char rose_qsig_name_alt_encode_msg[] = {
|
||||
/* *INDENT-ON* */
|
||||
};
|
||||
|
||||
static unsigned char rose_qsig_name_2nd_encode_msg[] = {
|
||||
/* *INDENT-OFF* */
|
||||
/*
|
||||
* Context Specific/C [10 0x0A] <AA> Len:6 <06>
|
||||
* Context Specific [0 0x00] <80> Len:1 <01>
|
||||
* <00> - "~"
|
||||
* Context Specific [2 0x02] <82> Len:1 <01>
|
||||
* <00> - "~"
|
||||
* Context Specific [11 0x0B] <8B> Len:1 <01>
|
||||
* <00> - "~"
|
||||
* Context Specific/C [1 0x01] <A1> Len:26 <1A>
|
||||
* Integer(2 0x02) <02> Len:1 <01>
|
||||
* <40> - "@"
|
||||
* OID(6 0x06) <06> Len:4 <04>
|
||||
* <2B 0C 09 00> - "+~~~"
|
||||
* Context Specific [0 0x00] <80> Len:15 <0F>
|
||||
* <4D 6F 64 65 6D 20 44 69-73 63 6F 42 61 6C 6C> - "Modem DiscoBall"
|
||||
*/
|
||||
0x91,
|
||||
0xaa, 0x06,
|
||||
0x80, 0x01,
|
||||
0x00,
|
||||
0x82, 0x01,
|
||||
0x00,
|
||||
0x8b, 0x01,
|
||||
0x00,
|
||||
0xa1, 0x1a,
|
||||
0x02, 0x01,
|
||||
0x40,
|
||||
0x06, 0x04,
|
||||
0x2b, 0x0c, 0x09, 0x00,
|
||||
0x80, 0x0f,
|
||||
0x4d, 0x6f, 0x64, 0x65, 0x6d, 0x20, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x42, 0x61, 0x6c, 0x6c
|
||||
/* *INDENT-ON* */
|
||||
};
|
||||
|
||||
|
||||
static const struct rose_message rose_dms100_msgs[] = {
|
||||
/* *INDENT-OFF* */
|
||||
@@ -3023,6 +3059,7 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
unsigned index;
|
||||
unsigned offset;
|
||||
const char *str;
|
||||
static struct pri dummy_ctrl;
|
||||
|
||||
pri_set_message(rose_pri_message);
|
||||
@@ -3131,12 +3168,20 @@ int main(int argc, char *argv[])
|
||||
rose_test_exception(&dummy_ctrl, "Alternate name encoded messages",
|
||||
rose_qsig_name_alt_encode_msg, sizeof(rose_qsig_name_alt_encode_msg));
|
||||
|
||||
rose_test_exception(&dummy_ctrl, "2nd edition name encoded messages",
|
||||
rose_qsig_name_2nd_encode_msg, sizeof(rose_qsig_name_2nd_encode_msg));
|
||||
|
||||
/* ------------------------------------------------------------------- */
|
||||
|
||||
pri_message(&dummy_ctrl, "\n\n"
|
||||
"List of operation codes:\n");
|
||||
for (index = 0; index < ROSE_Num_Operation_Codes; ++index) {
|
||||
pri_message(&dummy_ctrl, "%d: %s\n", index, rose_operation2str(index));
|
||||
str = rose_operation2str(index);
|
||||
if (!strncmp(str, "Invalid code:", 13)) {
|
||||
pri_error(&dummy_ctrl, "%d: %s\n", index, str);
|
||||
} else {
|
||||
pri_message(&dummy_ctrl, "%d: %s\n", index, str);
|
||||
}
|
||||
}
|
||||
pri_message(&dummy_ctrl, "\n\n"
|
||||
"************************************************************\n");
|
||||
@@ -3146,7 +3191,12 @@ int main(int argc, char *argv[])
|
||||
pri_message(&dummy_ctrl, "\n\n"
|
||||
"List of error codes:\n");
|
||||
for (index = 0; index < ROSE_ERROR_Num_Codes; ++index) {
|
||||
pri_message(&dummy_ctrl, "%d: %s\n", index, rose_error2str(index));
|
||||
str = rose_error2str(index);
|
||||
if (!strncmp(str, "Invalid code:", 13)) {
|
||||
pri_error(&dummy_ctrl, "%d: %s\n", index, str);
|
||||
} else {
|
||||
pri_message(&dummy_ctrl, "%d: %s\n", index, str);
|
||||
}
|
||||
}
|
||||
pri_message(&dummy_ctrl, "\n\n"
|
||||
"************************************************************\n");
|
||||
|
||||
Reference in New Issue
Block a user