5ESSmes.c

Go to the documentation of this file.
00001 /*****************************************************************************
00002 
00003   FileName:     5ESSmes.c
00004 
00005   Contents:     Pack/Unpack functions. These functions will unpack a 5ESS ISDN
00006                 message from the bit packed original format into structs
00007                 that contains variables sized by the user. It will also pack
00008                 the struct back into a Q.931 message as required.
00009 
00010                 See 5ESS.h for description. 
00011 
00012   License/Copyright:
00013 
00014   Copyright (c) 2007, Jan Vidar Berger, Case Labs, Ltd. All rights reserved.
00015   email:janvb@caselaboratories.com  
00016 
00017   Copyright (c) 2007, Michael Jerris. All rights reserved.
00018   email:mike@jerris.com
00019   
00020   Copyright (c) 2007, Michael S. Collins, All rights reserved.
00021   email:mcollins@fcnetwork.com
00022 
00023   Redistribution and use in source and binary forms, with or without 
00024   modification, are permitted provided that the following conditions are 
00025   met:
00026 
00027         * Redistributions of source code must retain the above copyright notice, 
00028         this list of conditions and the following disclaimer.
00029         * Redistributions in binary form must reproduce the above copyright notice, 
00030         this list of conditions and the following disclaimer in the documentation 
00031         and/or other materials provided with the distribution.
00032         * Neither the name of the Case Labs, Ltd nor the names of its contributors 
00033         may be used to endorse or promote products derived from this software 
00034         without specific prior written permission.
00035 
00036   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
00037   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
00038   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
00039   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 
00040   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
00041   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
00042   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
00043   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
00044   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
00045   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
00046   POSSIBILITY OF SUCH DAMAGE.
00047 
00048 *****************************************************************************/
00049 
00050 #define Q931PRIVATE
00051 
00052 #include "5ESS.h"
00053 
00054 /*
00055  *
00056  */
00057 struct Q931MessageIE ATT5ESSMessageIEs[] = {
00058         /*
00059          * AT&T 5ESS IE table
00060          */
00061 
00062         /*****************************************
00063          * Messages with Protocol Discriminator 8
00064          *****************************************/
00065 
00066         /* ALERTING */
00067         { Q931mes_ALERTING, 8, {
00068                         { Q931ie_CHANNEL_IDENTIFICATION,   4,  8, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH },
00069                         { Q931ie_REDIRECTING_NUMBER,       3, 20, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH },
00070                         { Q931ie_USER_USER,                3,131, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH },
00071 
00072                         /* Network / User IEs */
00073                         { 0, 0, 0, 0 },
00074         }},
00075 
00076         /* CALL PROCEEDING */
00077         { Q931mes_CALL_PROCEEDING, 8, {
00078                         { Q931ie_CHANNEL_IDENTIFICATION,   4,  8, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH | Q931_IEF_MANDATORY      },
00079                         { 0, 0, 0, 0 },
00080         }},
00081 
00082         /* CONGESTION CONTROL */
00083         { Q931mes_CONGESTION_CONTROL, 8, {
00084                         { Q931ie_CONGESTION_LEVEL, 1,  0, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH | Q931_IEF_MANDATORY },
00085                         { Q931ie_CAUSE,            4, 22, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH | Q931_IEF_MANDATORY },
00086                         { 0, 0, 0, 0 },
00087         }},
00088 
00089         /* CONNECT */
00090         { Q931mes_CONNECT, 8, {
00091                         { Q931ie_CONNECTED_NUMBER,         4,  8, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH },
00092                         { Q931ie_CHANNEL_IDENTIFICATION,   3, 18, Q931_IE_CODESET_0, Q931_IEF_TO_NET  },
00093                         { Q931ie_REDIRECTING_NUMBER,       3, 20, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH },
00094                         { Q931ie_USER_USER,                3,131, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH },
00095 
00096                         /* Network / User IEs */
00097                         { 0, 0, 0, 0 },
00098         }},
00099 
00100         /* CONNECT ACKNOWLEDGE */
00101         { Q931mes_CONNECT_ACKNOWLEDGE, 8, {
00102                         { 0, 0, 0, 0 },
00103         }},
00104 
00105         /* DISCONNECT */
00106         { Q931mes_DISCONNECT, 8, {
00107                         { Q931ie_CAUSE,              4, 22, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH | Q931_IEF_MANDATORY },
00108                         { Q931ie_USER_USER,          3,131, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH },
00109 
00110                         /* Network / User IEs */
00111 
00112                         { 0, 0, 0, 0 },
00113         }},
00114 
00115         /* PROGRESS */
00116         { Q931mes_PROGRESS, 8, {
00117                         { Q931ie_CAUSE,                    4, 22, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH },
00118                         { Q931ie_CHANNEL_IDENTIFICATION,   3, 18, Q931_IE_CODESET_0, Q931_IEF_TO_NET  },
00119                         { Q931ie_PROGRESS_INDICATOR,       4,  0, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH | Q931_IEF_MANDATORY },
00120                         { 0, 0, 0, 0 },
00121         }},
00122 
00123         /* RELEASE */
00124         { Q931mes_RELEASE, 8, {
00125                         { Q931ie_CAUSE,   4, 22, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH },
00126                         { 0, 0, 0, 0 },
00127         }},
00128 
00129         /* RELEASE COMPLETE */
00130         { Q931mes_RELEASE_COMPLETE, 8, {
00131                         { Q931ie_CAUSE,   4, 22, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH },
00132                         { 0, 0, 0, 0 },
00133         }},
00134 
00135         /* SETUP */
00136         { Q931mes_SETUP, 8, {
00137                         { Q931ie_BEARER_CAPABILITY,           4,  8, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH | Q931_IEF_MANDATORY },
00138                         { Q931ie_CHANNEL_IDENTIFICATION,      4,  8, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH | Q931_IEF_MANDATORY },
00139                         { Q931ie_NETWORK_SPECIFIC_FACILITIES, 4,  9, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH },
00140                         { Q931ie_CALLING_PARTY_NUMBER,        3, 19, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH },
00141                         { Q931ie_CALLING_PARTY_SUBADDRESS,    3, 23, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH },
00142                         { Q931ie_CALLED_PARTY_NUMBER,         3, 20, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH | Q931_IEF_MANDATORY },
00143                         { Q931ie_CALLED_PARTY_SUBADDRESS,     3, 23, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH },
00144                         { Q931ie_REDIRECTING_NUMBER,          3, 20, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH },
00145                         { Q931ie_TRANSIT_NETWORK_SELECTION,   7,  0, Q931_IE_CODESET_0, Q931_IEF_TO_NET },
00146                         { Q931ie_LOW_LAYER_COMPATIBILITY,     3, 16, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH },
00147                         { Q931ie_HIGH_LAYER_COMPATIBILITY,    3,  5, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH },
00148                         { Q931ie_USER_USER,                   3,131, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH },
00149 
00150                         /* Network / User defined IEs */
00151                         { Q931ie_FACILITY,                    3,131, Q931_IE_CODESET_6, Q931_IEF_TO_BOTH },
00152 /*                      { Q931ie_GENERIC_BILLING_DATA,        3,131, Q931_IE_CODESET_6, Q931_IEF_TO_BOTH }, */
00153 /*                      { Q931ie_ITEM,                        3,  0, Q931_IE_CODESET_6, Q931_IEF_TO_BOTH }, */
00154 /*                      { Q931ie_ORIGINATING_ACCESS_SERVICE_TYPE, 4,  0, Q931_IE_CODESET_6, Q931_IEF_TO_BOTH }, */
00155 /*                      { Q931ie_ORIGINATING_LINE_INFORMATION,    3,  0, Q931_IE_CODESET_6, Q931_IEF_TO_BOTH }, */
00156 /*                      { Q931ie_SPECIFIC_EVENT,                  3,  0, Q931_IE_CODESET_6, Q931_IEF_TO_BOTH }, */
00157 /*                      { Q931ie_USER_ENTERED_CODE,               3,131, Q931_IE_CODESET_6, Q931_IEF_TO_BOTH }, */
00158                         { 0, 0, 0, 0 },
00159         }},
00160 
00161         /* STATUS */
00162         { Q931mes_STATUS, 8, {
00163                         { Q931ie_CAUSE,      4, 22, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH | Q931_IEF_MANDATORY },
00164                         { Q931ie_CALL_STATE, 3,  0, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH | Q931_IEF_MANDATORY },
00165                         { 0, 0, 0, 0 },
00166         }},
00167 
00168         /* STATUS ENQUIRY */
00169         { Q931mes_STATUS_ENQUIRY, 8, {
00170                         { 0, 0, 0, 0 },
00171         }},
00172 
00173         /* USER INFORMATION */
00174         { Q931mes_USER_INFORMATION, 8, {
00175                         { Q931ie_MORE_DATA, 1,  0, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH },
00176                         { Q931ie_USER_USER, 3,131, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH | Q931_IEF_MANDATORY },
00177                         { 0, 0, 0, 0 },
00178         }},
00179 
00180         /* FACILITY */
00181         { Q931mes_FACILITY, 8, {
00182                         { Q931ie_CHANNEL_IDENTIFICATION,      4,  8, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH },
00183                         { Q931ie_NETWORK_SPECIFIC_FACILITIES, 4,  9, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH },
00184 
00185                         /* Codeset 6 IEs */
00186                         { Q931ie_FACILITY,                    3,131, Q931_IE_CODESET_6, Q931_IEF_TO_BOTH },
00187                         { 0, 0, 0, 0 },
00188         }},
00189 
00190         /* FACILITY ACKNOWLEDGE */
00191         { Q931mes_FACILITY_ACKNOWLEDGE, 8, {
00192                         { Q931ie_NETWORK_SPECIFIC_FACILITIES, 4,  9, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH },
00193                         { Q931ie_CALLING_PARTY_NUMBER,        3, 19, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH },
00194 
00195                         /* Codeset 6 IEs */
00196 /*                      { ATT5ESSie_OLI,                      3,  0, Q931_IE_CODESET_6, Q931_IEF_TO_USER }, */
00197                         { 0, 0, 0, 0 },
00198         }},
00199 
00200         /* FACILITY REJECT */
00201         { Q931mes_FACILITY_REJECT, 8, {
00202                         { Q931ie_CAUSE,                       4, 22, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH | Q931_IEF_MANDATORY },
00203                         { Q931ie_NETWORK_SPECIFIC_FACILITIES, 4,  9, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH },
00204                         { 0, 0, 0, 0 },
00205         }},
00206 
00207         /* REGISTER */
00208         { Q931mes_REGISTER, 8, {
00209                         /* Codeset 6 IEs */
00210                         { Q931ie_FACILITY,                    3,131, Q931_IE_CODESET_6, Q931_IEF_TO_BOTH },
00211                         { 0, 0, 0, 0 },
00212         }},
00213 
00214 
00215         /*****************************************
00216          * Messages with Protocol Discriminator 3
00217          *****************************************/
00218 
00219         /* SERVICE */
00220         { Q931mes_SERVICE, 3, {
00221                         { Q931ie_CHANGE_STATUS,          3, 0, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH | Q931_IEF_MANDATORY },
00222                         { Q931ie_CHANNEL_IDENTIFICATION, 3, 6, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH | Q931_IEF_MANDATORY },
00223                         { 0, 0, 0, 0 },
00224         }},
00225 
00226         /* SERVICE ACKNOWLEDGE */
00227         { Q931mes_SERVICE_ACKNOWLEDGE, 3, {
00228                         { Q931ie_CHANGE_STATUS,          3, 0, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH | Q931_IEF_MANDATORY },
00229                         { Q931ie_CHANNEL_IDENTIFICATION, 3, 6, Q931_IE_CODESET_0, Q931_IEF_TO_BOTH | Q931_IEF_MANDATORY },
00230                         { 0, 0, 0, 0 },
00231         }},
00232 
00233 
00234         /* <<< EOT >>> */
00235         { 0, 0, {{ 0, 0, 0, 0 }}},
00236 };

Generated on Tue Apr 7 17:38:18 2009 for mod_ssh by  doxygen 1.5.4