Explicit/Implicit ds1 selection changes for NFAS
git-svn-id: https://origsvn.digium.com/svn/libpri/trunk@222 2fbb986a-6c06-0410-b554-c9c1f0a7f128
This commit is contained in:
parent
6341ab3c6e
commit
6e98b36cfb
9
q931.c
9
q931.c
@ -248,6 +248,7 @@ static void call_init(struct q931_call *c)
|
|||||||
c->slotmap = -1;
|
c->slotmap = -1;
|
||||||
c->channelno = -1;
|
c->channelno = -1;
|
||||||
c->ds1no = 0;
|
c->ds1no = 0;
|
||||||
|
c->ds1explicit = 0;
|
||||||
c->chanflags = 0;
|
c->chanflags = 0;
|
||||||
c->next = NULL;
|
c->next = NULL;
|
||||||
c->sentchannel = 0;
|
c->sentchannel = 0;
|
||||||
@ -360,7 +361,7 @@ static FUNC_SEND(transmit_channel_id)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (call->ds1no > 0) {
|
if ((call->ds1no > 0) || call->ds1explicit) {
|
||||||
/* Note that we are specifying the identifier */
|
/* Note that we are specifying the identifier */
|
||||||
ie->data[pos++] |= 0x40;
|
ie->data[pos++] |= 0x40;
|
||||||
/* We need to use the Channel Identifier Present thingy. Just specify it and we're done */
|
/* We need to use the Channel Identifier Present thingy. Just specify it and we're done */
|
||||||
@ -2621,6 +2622,7 @@ int q931_call_progress(struct pri *pri, q931_call *c, int channel, int info)
|
|||||||
{
|
{
|
||||||
if (channel) {
|
if (channel) {
|
||||||
c->ds1no = (channel & 0xff00) >> 8;
|
c->ds1no = (channel & 0xff00) >> 8;
|
||||||
|
c->ds1explicit = (channel & 0x10000) >> 16;
|
||||||
channel &= 0xff;
|
channel &= 0xff;
|
||||||
c->channelno = channel;
|
c->channelno = channel;
|
||||||
}
|
}
|
||||||
@ -2647,6 +2649,7 @@ int q931_call_proceeding(struct pri *pri, q931_call *c, int channel, int info)
|
|||||||
{
|
{
|
||||||
if (channel) {
|
if (channel) {
|
||||||
c->ds1no = (channel & 0xff00) >> 8;
|
c->ds1no = (channel & 0xff00) >> 8;
|
||||||
|
c->ds1explicit = (channel & 0x10000) >> 16;
|
||||||
channel &= 0xff;
|
channel &= 0xff;
|
||||||
c->channelno = channel;
|
c->channelno = channel;
|
||||||
}
|
}
|
||||||
@ -2692,6 +2695,7 @@ int q931_setup_ack(struct pri *pri, q931_call *c, int channel, int nonisdn)
|
|||||||
{
|
{
|
||||||
if (channel) {
|
if (channel) {
|
||||||
c->ds1no = (channel & 0xff00) >> 8;
|
c->ds1no = (channel & 0xff00) >> 8;
|
||||||
|
c->ds1explicit = (channel & 0x10000) >> 16;
|
||||||
channel &= 0xff;
|
channel &= 0xff;
|
||||||
c->channelno = channel;
|
c->channelno = channel;
|
||||||
}
|
}
|
||||||
@ -2763,6 +2767,7 @@ int q931_connect(struct pri *pri, q931_call *c, int channel, int nonisdn)
|
|||||||
{
|
{
|
||||||
if (channel) {
|
if (channel) {
|
||||||
c->ds1no = (channel & 0xff00) >> 8;
|
c->ds1no = (channel & 0xff00) >> 8;
|
||||||
|
c->ds1explicit = (channel & 0x10000) >> 16;
|
||||||
channel &= 0xff;
|
channel &= 0xff;
|
||||||
c->channelno = channel;
|
c->channelno = channel;
|
||||||
}
|
}
|
||||||
@ -2824,6 +2829,7 @@ int q931_restart(struct pri *pri, int channel)
|
|||||||
return -1;
|
return -1;
|
||||||
c->ri = 0;
|
c->ri = 0;
|
||||||
c->ds1no = (channel & 0xff00) >> 8;
|
c->ds1no = (channel & 0xff00) >> 8;
|
||||||
|
c->ds1explicit = (channel & 0x10000) >> 16;
|
||||||
channel &= 0xff;
|
channel &= 0xff;
|
||||||
c->channelno = channel;
|
c->channelno = channel;
|
||||||
c->chanflags &= ~FLAG_PREFERRED;
|
c->chanflags &= ~FLAG_PREFERRED;
|
||||||
@ -2871,6 +2877,7 @@ int q931_setup(struct pri *pri, q931_call *c, struct pri_sr *req)
|
|||||||
req->userl1 = PRI_LAYER_1_ULAW;
|
req->userl1 = PRI_LAYER_1_ULAW;
|
||||||
c->userl1 = req->userl1;
|
c->userl1 = req->userl1;
|
||||||
c->ds1no = (req->channel & 0xff00) >> 8;
|
c->ds1no = (req->channel & 0xff00) >> 8;
|
||||||
|
c->ds1explicit = (req->channel & 0x10000) >> 16;
|
||||||
req->channel &= 0xff;
|
req->channel &= 0xff;
|
||||||
if ((pri->localtype == PRI_CPE) && pri->subchannel) {
|
if ((pri->localtype == PRI_CPE) && pri->subchannel) {
|
||||||
req->channel = 0;
|
req->channel = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user