Compare commits

..

3 Commits

Author SHA1 Message Date
Leif Madsen
534cb73c2f Importing release summary for 1.4.12-beta1 release.
git-svn-id: https://origsvn.digium.com/svn/libpri/tags/1.4.12-beta1@1841 2fbb986a-6c06-0410-b554-c9c1f0a7f128
2010-07-26 18:48:00 +00:00
Leif Madsen
0230fa7e70 Importing files for 1.4.12-beta1 release.
git-svn-id: https://origsvn.digium.com/svn/libpri/tags/1.4.12-beta1@1840 2fbb986a-6c06-0410-b554-c9c1f0a7f128
2010-07-26 18:47:58 +00:00
Leif Madsen
ac03bb6b11 Creating tag for the release of libpri-1.4.12-beta1
git-svn-id: https://origsvn.digium.com/svn/libpri/tags/1.4.12-beta1@1839 2fbb986a-6c06-0410-b554-c9c1f0a7f128
2010-07-26 18:43:27 +00:00
11 changed files with 1366 additions and 1956 deletions

View File

@@ -1 +1 @@
1.4.12-beta2
1.4.12-beta1

127
ChangeLog
View File

@@ -1,130 +1,3 @@
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

View File

@@ -0,0 +1,172 @@
<!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">&lt;asteriskteam@digium.com&gt;</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>

View File

@@ -0,0 +1,219 @@
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(-)
----------------------------------------------------------------------

View File

@@ -1,93 +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-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">&lt;asteriskteam@digium.com&gt;</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>

View File

@@ -1,153 +0,0 @@
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
View File

@@ -497,33 +497,33 @@ char *pri_event2str(int id)
char *name;
} events[] = {
/* *INDENT-OFF* */
{ 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" },
{ 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" },
/* *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 < ARRAY_LEN(call->subcalls); ++idx) {
for (idx = 0; idx < Q931_MAX_TEI; ++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 < ARRAY_LEN(call->subcalls); ++idx) {
for (idx = 0; idx < Q931_MAX_TEI; ++idx) {
subcall = call->subcalls[idx];
if (subcall) {
subcall->redirecting.to = call->redirecting.to;
@@ -1162,6 +1162,26 @@ 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)

2157
q921.c

File diff suppressed because it is too large Load Diff

222
q931.c
View File

@@ -1003,12 +1003,7 @@ 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
* 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.
*/
/* Expect Slot Map */
call->slotmap = 0;
pos++;
for (x=0;x<3;x++) {
@@ -1090,26 +1085,22 @@ 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 (0 < call->channelno && call->channelno != 0xff) {
/* Channel number specified and preferred over slot map if we have one. */
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 */
++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;
}
}
@@ -3956,7 +3947,7 @@ void q931_destroycall(struct pri *ctrl, q931_call *c)
if (cur == c) {
slaveidx = -1;
if (slave) {
for (i = 0; i < ARRAY_LEN(cur->subcalls); ++i) {
for (i = 0; i < Q931_MAX_TEI; 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",
@@ -3971,7 +3962,7 @@ void q931_destroycall(struct pri *ctrl, q931_call *c)
}
slavesleft = 0;
for (i = 0; i < ARRAY_LEN(cur->subcalls); ++i) {
for (i = 0; i < Q931_MAX_TEI; i++) {
if (cur->subcalls[i]) {
if (ctrl->debug & PRI_DEBUG_Q931_STATE) {
pri_message(ctrl, "Subcall still present at %d\n", i);
@@ -3981,8 +3972,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 (no subcalls present)
* 2.) Sent outbound call, with responses (subcalls present)
* 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
* 3.) Outbound call connected, indicated by pri_winner > -1
*
* If chan_dahdi hangs up in phase:
@@ -4005,7 +3996,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 is only one call up, we mirror what it does.
* If there are only one call up, we mirror what it does.
*
* OR
*
@@ -4023,8 +4014,8 @@ void q931_destroycall(struct pri *ctrl, q931_call *c)
* call as dead and free it when the last subcall clears.
*/
if (slave && !slavesleft /* i.e., The last slave was just destroyed */
&& (cur->pri_winner < 0 || slaveidx != cur->pri_winner)) {
if ((slave && !slavesleft) &&
((cur->pri_winner < 0) || (slave && slaveidx != cur->pri_winner))) {
pri_create_fake_clearing(cur, ctrl);
return;
}
@@ -4157,85 +4148,6 @@ 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.
*
@@ -4255,19 +4167,46 @@ 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 ? '>' : '<';
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");
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 (q931_dump_header(ctrl, tei, h, len, c)) {
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;
}
/* Drop length of header, including call reference */
/* 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 */
len -= (h->crlen + 3);
codeset = cur_codeset = 0;
for (x = 0; x < len; x += r) {
@@ -4389,32 +4328,19 @@ 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;
}
@@ -4444,7 +4370,6 @@ 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,
@@ -4473,7 +4398,6 @@ 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. */
@@ -4490,7 +4414,7 @@ static int send_message(struct pri *ctrl, q931_call *call, int msgtype, int ies[
uiframe = 1;
break;
case Q931_FACILITY:
if (tei == Q921_TEI_GROUP) {
if (call->pri->tei == Q921_TEI_GROUP) {
/* Broadcast TEI. */
if (q931_is_dummy_call(call)) {
/*
@@ -4515,14 +4439,8 @@ 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, tei, h, len, 1, uiframe);
q931_xmit(call->pri, call->pri->tei, h, len, 1, uiframe);
call->acked = 1;
return 0;
}
@@ -4667,7 +4585,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 < ARRAY_LEN(call->subcalls); ++idx) {
for (idx = 0; idx < Q931_MAX_TEI; ++idx) {
subcall = call->subcalls[idx];
if (subcall) {
/* Send to all subcalls that have given a positive response. */
@@ -6057,7 +5975,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 < ARRAY_LEN(call->subcalls); ++i) {
for (i = 0; i < Q931_MAX_TEI; i++) {
if (call->subcalls[i]) {
slaves++;
if (i == call->master_call->pri_winner) {
@@ -6309,7 +6227,7 @@ static int q931_get_subcall_count(struct q931_call *call)
int i;
call = call->master_call;
for (i = 0; i < ARRAY_LEN(call->subcalls); ++i) {
for (i = 0; i < Q931_MAX_TEI; i++) {
if (call->subcalls[i])
count++;
}
@@ -6324,7 +6242,7 @@ static void q931_set_subcall_winner(struct q931_call *subcall)
int i;
/* Set the winner first */
for (i = 0; i < ARRAY_LEN(realcall->subcalls); ++i) {
for (i = 0; i < Q931_MAX_TEI; i++) {
if (realcall->subcalls[i] && realcall->subcalls[i] == subcall) {
realcall->pri_winner = i;
}
@@ -6335,7 +6253,7 @@ static void q931_set_subcall_winner(struct q931_call *subcall)
}
/* Start tear down of calls that were not chosen */
for (i = 0; i < ARRAY_LEN(realcall->subcalls); ++i) {
for (i = 0; i < Q931_MAX_TEI; 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);
@@ -6350,7 +6268,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 < ARRAY_LEN(master_call->subcalls); ++i) {
for (i = 0; i < Q931_MAX_TEI; i++) {
if (master_call->subcalls[i]) {
if (master_call->subcalls[i]->pri == ctrl) {
return master_call->subcalls[i];
@@ -6361,7 +6279,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",
(int) ARRAY_LEN(master_call->subcalls));
Q931_MAX_TEI);
return NULL;
}
@@ -6377,7 +6295,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 < ARRAY_LEN(cur->subcalls); ++i) {
for (i = 0; i < Q931_MAX_TEI; ++i) {
cur->subcalls[i] = NULL;
}
cur->t303_timer = 0;/* T303 should only be on on the master call */

45
rose.c
View File

@@ -761,21 +761,6 @@ 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* */
@@ -785,7 +770,7 @@ static const struct rose_convert_msg rose_qsig_msgs[] = {
* decode_invoke_args, decode_result_args
*/
/*
* localValue's from Q.SIG Name-Operations 4th edition
* localValue's from Q.SIG Name-Operations
* { iso(1) standard(0) pss1-name(13868) name-operations(0) }
*/
{
@@ -809,34 +794,6 @@ 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) }

View File

@@ -2837,42 +2837,6 @@ 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* */
@@ -3059,7 +3023,6 @@ int main(int argc, char *argv[])
{
unsigned index;
unsigned offset;
const char *str;
static struct pri dummy_ctrl;
pri_set_message(rose_pri_message);
@@ -3168,20 +3131,12 @@ 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) {
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, "%d: %s\n", index, rose_operation2str(index));
}
pri_message(&dummy_ctrl, "\n\n"
"************************************************************\n");
@@ -3191,12 +3146,7 @@ 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) {
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, "%d: %s\n", index, rose_error2str(index));
}
pri_message(&dummy_ctrl, "\n\n"
"************************************************************\n");