libisdn
Q931priv.h
Go to the documentation of this file.
00001 /*
00002  *
00003  *
00004  *
00005  */
00006 #ifndef _Q931_PRIVATE_H_
00007 #define _Q931_PRIVATE_H_
00008 
00009 /*
00010  * Private typedefs
00011  */
00012 struct Q931MesgErrors;
00013 
00014 typedef struct {
00015         L3INT           State;          
00016         L3INT           Message;        
00017         L3UCHAR         Flags;          
00018 } Q931State;
00019 
00020 typedef enum {
00021         Q931_MSG_FROM_L2 = 2,
00022         Q931_MSG_FROM_L4 = 4
00023 } q931_msg_from_t;
00024 
00025 typedef enum {
00026         Q931_MSG_INCOMING = 0,
00027         Q931_MSG_OUTGOING
00028 } q931_msg_direction_t;
00029 
00030 struct strstream;
00031 
00032 typedef L3INT (q931proc_func_t) (Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00033 
00034 typedef L3INT (q931umes_func_t) (Q931_TrunkInfo_t *trunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT IOff, L3INT Size, struct Q931MesgErrors *Errs);
00035 typedef L3INT (q931pmes_func_t) (Q931_TrunkInfo_t *trunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
00036 
00037 typedef L3INT (q931uie_func_t) (Q931_TrunkInfo_t *trunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
00038 typedef L3INT (q931pie_func_t) (Q931_TrunkInfo_t *trunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
00039 typedef L3INT (q931die_func_t) (Q931_TrunkInfo_t *trunk, Q931ie_Generic *ie, struct strstream *ostream);
00040 
00041 typedef L3INT (q931timeout_func_t) (Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00042 typedef L3ULONG q931timer_t;
00043 
00044 
00048 enum {
00049         Q931_IEF_NONE        = 0,               
00050         Q931_IEF_MANDATORY   = (1 << 0),        
00051         /* Direction of IE */
00052         Q931_IEF_TO_NET      = (1 << 14),       
00053         Q931_IEF_TO_USER     = (1 << 15),       
00054 };
00055 
00056 enum {
00057         /*
00058          * Codesets
00059          */
00060         Q931_IE_CODESET_0   = (1 << 0),         
00061         Q931_IE_CODESET_1   = (1 << 1),         
00062         Q931_IE_CODESET_2   = (1 << 2),         
00063         Q931_IE_CODESET_3   = (1 << 3),         
00064         Q931_IE_CODESET_4   = (1 << 4),         
00065         Q931_IE_CODESET_5   = (1 << 5),         
00066         Q931_IE_CODESET_6   = (1 << 6),         
00067         Q931_IE_CODESET_7   = (1 << 7),         
00068 };
00069 
00070 #define Q931_IEF_TO_BOTH    (Q931_IEF_TO_NET | Q931_IEF_TO_USER)
00071 #define Q931_IE_CODESET_ALL (Q931_IE_CODESET_0 | Q931_IE_CODESET_1 | Q931_IE_CODESET_2 | Q931_IE_CODESET_3 | Q931_IE_CODESET_4 | Q931_IE_CODESET_5 | Q931_IE_CODESET_6 | Q931_IE_CODESET_7)
00072 
00073 /*
00074  * TODO: better names...
00075  */
00076 struct Q931MessageIEEntry {
00077         const L3UCHAR id;       
00078         const L3UCHAR minsize;  
00079         const L3UCHAR maxsize;  
00080         const L3UCHAR codeset;  
00081         const L3INT   flags;    
00082 };
00083 
00084 struct Q931MessageIE {
00085         const L3UCHAR id;                               
00086         const L3UCHAR protdisc;                         
00087         const L3CHAR *name;                             
00088         const struct Q931MessageIEEntry ies[Q931MAXIE]; 
00089 };
00090 
00091 
00097 enum {
00098         MSGF_FROM_L2 = 2,
00099         MSGF_FROM_L4 = 4,
00100         MSGF_FROM_BOTH = 6,
00101 };
00102 
00107 enum {
00108         Q931_TFLAG_STATUS_ENQUIRY   = (1 <<  0),        
00110         Q931_TFLAG_AUTO_SETUP_ACK   = (1 << 16),        
00111         Q931_TFLAG_AUTO_SERVICE_ACK = (1 << 17),        
00112         Q931_TFLAG_AUTO_CONNECT_ACK = (1 << 18),        
00113         Q931_TFLAG_AUTO_RESTART_ACK = (1 << 19),        
00115         /*
00116          * Message check relaxation flags (use with care...)
00117          */
00118         Q931_TFLAG_IGNORE_UNKNOWN_MSG = (1 << 28),      
00120         /*
00121          * IE check relaxation flags (use with care...)
00122          */
00123         Q931_TFLAG_IGNORE_UNKNOWN_IE = (1 << 29),       
00124         Q931_TFLAG_IGNORE_ILLEGAL_IE = (1 << 30),       
00125 };
00126 
00127 void Q931TrunkSetFlag(Q931_TrunkInfo_t *trunk, const L3INT flag);
00128 void Q931TrunkClearFlag(Q931_TrunkInfo_t *trunk, L3INT flag);
00129 void Q931TrunkClearAllFlags(Q931_TrunkInfo_t *trunk);
00130 L3BOOL Q931TrunkIsSetFlag(const Q931_TrunkInfo_t *trunk, const L3INT flag);
00131 
00132 /*
00133  *
00134  */
00135 L3ULONG Q931GetTime(void);
00136 
00137 L3INT Q931Log(const Q931_TrunkInfo_t *trunk, Q931LogLevel_t level, const char *fmt, ...);
00138 L3INT Q931LogRaw(const Q931_TrunkInfo_t *trunk, Q931LogLevel_t level, const char *str);
00139 
00140 L3INT Q931GetUniqueCRV(Q931_TrunkInfo_t *trunk);
00141 
00142 L3INT Q931Tx34(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, int size);
00143 L3INT Q931Tx32(Q931_TrunkInfo_t *trunk, L3UCHAR bcast, Q931mes_Generic *msg, int size);
00144 
00145 L3INT Q931ProcUnknownMessage(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00146 L3INT Q931ProcUnexpectedMessage(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00147 
00148 L3INT Q931ProcDummy(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00149 L3INT Q931UmesDummy(Q931_TrunkInfo_t *trunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT IOff, L3INT Size, struct Q931MesgErrors *Errs);
00150 L3INT Q931PmesDummy(Q931_TrunkInfo_t *trunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
00151 L3INT Q931UieDummy(Q931_TrunkInfo_t *trunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
00152 L3INT Q931PieDummy(Q931_TrunkInfo_t *trunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
00153 L3INT Q931TxDummy(Q931_TrunkInfo_t *trunk, L3UCHAR * b, L3INT n);
00154 L3INT Q931TimeoutDummy(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00155 
00156 L3INT Q931MesgHeader(Q931_TrunkInfo_t *trunk, Q931mes_Generic *mes, L3UCHAR *OBuf, L3INT Size, L3INT *IOff);
00157 
00158 L3INT Q931StatusEnquiryResponse(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, L3UCHAR causeval);
00159 
00160 L3INT Q931Umes_Generic(Q931_TrunkInfo_t *trunk, L3UCHAR *IBuf, Q931mes_Generic *mes, L3INT IOff, L3INT Size, struct Q931MesgErrors *Errs);
00161 L3INT Q931Pmes_Generic(Q931_TrunkInfo_t *trunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
00162 L3INT Q931Dmes_Generic(Q931_TrunkInfo_t *trunk, Q931mes_Generic *msg, q931_msg_direction_t direction);
00163 
00164 
00169 enum {
00170         /* Order must match that of Q931MesgErrorNames in Q931mes.c! */
00171         Q931_MSGE_NONE = 0,
00172         Q931_MSGE_UNKNOWN,
00173         Q931_MSGE_OVERFLOW,
00174         Q931_MSGE_NOT_ALLOWED,
00175         Q931_MSGE_INVALID_DIRECTION,
00176         Q931_MSGE_INVALID_SIZE,
00177         Q931_MSGE_INVALID_CODESET,
00178         Q931_MSGE_MANDATORY_MISSING,
00179         Q931_MSGE_COUNT
00180 };
00181 
00182 #define Q931_MSGE_ERR_MAX       10
00183 
00187 struct Q931MesgErrors {
00188         char    id;                     
00189         int     nr_errors;              
00190         int     nr_overflow;            
00191         struct {
00192                 char    id;             
00193                 char    size;           
00194                 char    error;          
00195                 char    offset;         
00196         } ie_errors[Q931_MSGE_ERR_MAX]; 
00197 };
00198 
00199 L3INT Q931MesgErrorsInit(struct Q931MesgErrors *merrs, const char id);
00200 L3INT Q931MesgErrorsAddIE(struct Q931MesgErrors *merrs, const char id, const char size, const int offset, const int error);
00201 L3INT Q931MesgErrorsCount(struct Q931MesgErrors *merrs);
00202 L3INT Q931MesgErrorsPrint(Q931_TrunkInfo_t *trunk, const struct Q931MesgErrors *merrs, const unsigned char *IBuf, const int Size);
00203 
00204 /*
00205  * High-level
00206  */
00207 L3INT Q931Proc(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00208 L3INT Q931ProcInvalid(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00209 L3INT Q931Umes(Q931_TrunkInfo_t *trunk, L3UCHAR id, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT IOff, L3INT Size, struct Q931MesgErrors *Errs);
00210 L3INT Q931Pmes(Q931_TrunkInfo_t *trunk, L3UCHAR id, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
00211 L3INT Q931Uie(Q931_TrunkInfo_t *trunk, L3UCHAR id, Q931mes_Generic *pMes, L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *IOff, L3INT *OOff);
00212 L3INT Q931Pie(Q931_TrunkInfo_t *trunk, L3UCHAR id, L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
00213 L3INT Q931Die(Q931_TrunkInfo_t *trunk, Q931ie_Generic *ie, struct strstream *ostream);
00214 L3INT Q931Timeout(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, L3UCHAR timer);
00215 
00216 L3BOOL Q931UieIsNull(Q931_TrunkInfo_t *trunk, L3UCHAR id);
00217 L3BOOL Q931PieIsNull(Q931_TrunkInfo_t *trunk, L3UCHAR id);
00218 L3BOOL Q931DieIsNull(Q931_TrunkInfo_t *trunk, L3UCHAR id);
00219 
00220 #include "Q931dialect.h"
00221 
00222 /*
00223  * Q.931 base dialect
00224  */
00225 void Q931CreateTE(struct Q931Dialect *d);
00226 void Q931CreateNT(struct Q931Dialect *d);
00227 
00228 /*
00229  * TE-mode message handling
00230  */
00231 L3INT Q931ProcAlertingTE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00232 L3INT Q931ProcCallProceedingTE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00233 L3INT Q931ProcConnectTE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00234 L3INT Q931ProcConnectAckTE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00235 L3INT Q931ProcProgressTE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00236 L3INT Q931ProcSetupTE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00237 L3INT Q931ProcSetupAckTE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00238 L3INT Q931ProcResumeTE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00239 L3INT Q931ProcResumeAckTE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00240 L3INT Q931ProcResumeRejectTE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00241 L3INT Q931ProcSuspendTE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00242 L3INT Q931ProcSuspendAckTE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00243 L3INT Q931ProcSuspendRejectTE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00244 L3INT Q931ProcUserInformationTE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00245 L3INT Q931ProcDisconnectTE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00246 L3INT Q931ProcReleaseTE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00247 L3INT Q931ProcReleaseCompleteTE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00248 L3INT Q931ProcRestartTE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00249 L3INT Q931ProcRestartAckTE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00250 L3INT Q931ProcCongestionControlTE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00251 L3INT Q931ProcInformationTE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00252 L3INT Q931ProcNotifyTE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00253 L3INT Q931ProcStatusTE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00254 L3INT Q931ProcStatusEnquiryTE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00255 L3INT Q931ProcSegmentTE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00256 
00257 L3INT Q931ProcTimeoutT301TE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00258 L3INT Q931ProcTimeoutT302TE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00259 L3INT Q931ProcTimeoutT303TE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00260 L3INT Q931ProcTimeoutT304TE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00261 L3INT Q931ProcTimeoutT305TE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00262 L3INT Q931ProcTimeoutT308TE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00263 L3INT Q931ProcTimeoutT309TE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00264 L3INT Q931ProcTimeoutT310TE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00265 L3INT Q931ProcTimeoutT311TE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00266 L3INT Q931ProcTimeoutT313TE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00267 L3INT Q931ProcTimeoutT314TE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00268 L3INT Q931ProcTimeoutT316TE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00269 L3INT Q931ProcTimeoutT317TE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00270 L3INT Q931ProcTimeoutT318TE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00271 L3INT Q931ProcTimeoutT319TE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00272 L3INT Q931ProcTimeoutT321TE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00273 L3INT Q931ProcTimeoutT322TE(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00274 
00275 /*
00276  * NT-mode message handling
00277  */
00278 L3INT Q931ProcAlertingNT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00279 L3INT Q931ProcCallProceedingNT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00280 L3INT Q931ProcConnectNT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00281 L3INT Q931ProcConnectAckNT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00282 L3INT Q931ProcProgressNT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00283 L3INT Q931ProcSetupNT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00284 L3INT Q931ProcSetupAckNT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00285 L3INT Q931ProcResumeNT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00286 L3INT Q931ProcResumeAckNT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00287 L3INT Q931ProcResumeRejectNT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00288 L3INT Q931ProcSuspendNT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00289 L3INT Q931ProcSuspendAckNT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00290 L3INT Q931ProcSuspendRejectNT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00291 L3INT Q931ProcUserInformationNT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00292 L3INT Q931ProcDisconnectNT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00293 L3INT Q931ProcReleaseNT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00294 L3INT Q931ProcReleaseCompleteNT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00295 L3INT Q931ProcRestartNT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00296 L3INT Q931ProcRestartAckNT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00297 L3INT Q931ProcCongestionControlNT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00298 L3INT Q931ProcInformationNT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00299 L3INT Q931ProcNotifyNT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00300 L3INT Q931ProcStatusNT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00301 L3INT Q931ProcStatusEnquiryNT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00302 L3INT Q931ProcSegmentNT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call, Q931mes_Generic *msg, q931_msg_from_t from);
00303 
00304 L3INT Q931ProcTimeoutT301NT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00305 L3INT Q931ProcTimeoutT302NT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00306 L3INT Q931ProcTimeoutT303NT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00307 L3INT Q931ProcTimeoutT304NT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00308 L3INT Q931ProcTimeoutT305NT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00309 L3INT Q931ProcTimeoutT306NT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00310 L3INT Q931ProcTimeoutT307NT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00311 L3INT Q931ProcTimeoutT308NT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00312 L3INT Q931ProcTimeoutT309NT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00313 L3INT Q931ProcTimeoutT310NT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00314 L3INT Q931ProcTimeoutT312NT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00315 L3INT Q931ProcTimeoutT313NT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00316 L3INT Q931ProcTimeoutT314NT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00317 L3INT Q931ProcTimeoutT316NT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00318 L3INT Q931ProcTimeoutT317NT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00319 L3INT Q931ProcTimeoutT320NT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00320 L3INT Q931ProcTimeoutT321NT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00321 L3INT Q931ProcTimeoutT322NT(Q931_TrunkInfo_t *trunk, struct Q931_Call *call);
00322 
00323 /*****************************************************************************
00324 
00325   Q.931 Information Element Pack/Unpack functions. Implemented in Q931ie.c
00326 
00327 *****************************************************************************/
00328 L3INT Q931ReadExt(L3UCHAR * IBuf, L3INT Off);
00329 L3USHORT Q931Uie_CRV(Q931_TrunkInfo_t *pTrunk,L3UCHAR * IBuf, L3UCHAR *OBuf, L3INT *IOff, L3INT *OOff);
00330 
00331 L3INT Q931Uie_Generic(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *IOff, L3INT *OOff);
00332 L3INT Q931Pie_Generic(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
00333 L3INT Q931Die_Generic(Q931_TrunkInfo_t *pTrunk, Q931ie_Generic *ie, struct strstream *ostream);
00334 
00335 q931pie_func_t Q931Pie_ChangeStatus;
00336 q931pie_func_t Q931Pie_BearerCap;
00337 q931pie_func_t Q931Pie_ChanID;
00338 q931pie_func_t Q931Pie_ProgInd;
00339 q931pie_func_t Q931Pie_Display;
00340 q931pie_func_t Q931Pie_Signal;
00341 q931pie_func_t Q931Pie_HLComp;
00342 q931pie_func_t Q931Pie_Segment;
00343 q931pie_func_t Q931Pie_DateTime;
00344 q931pie_func_t Q931Pie_Cause;
00345 q931pie_func_t Q931Pie_SendComplete;
00346 q931pie_func_t Q931Pie_KeypadFac;
00347 q931pie_func_t Q931Pie_NotifInd;
00348 q931pie_func_t Q931Pie_CallID;
00349 q931pie_func_t Q931Pie_RepeatInd;
00350 q931pie_func_t Q931Pie_NetFac;
00351 q931pie_func_t Q931Pie_CallingNum;
00352 q931pie_func_t Q931Pie_CallingSub;
00353 q931pie_func_t Q931Pie_CalledNum;
00354 q931pie_func_t Q931Pie_CalledSub;
00355 q931pie_func_t Q931Pie_CalledNum;
00356 q931pie_func_t Q931Pie_TransNetSel;
00357 q931pie_func_t Q931Pie_LLComp;
00358 q931pie_func_t Q931Pie_CallState;
00359 q931pie_func_t Q931Pie_RestartInd;
00360 q931pie_func_t Q931Pie_UserUser;
00361 q931pie_func_t Q931Pie_GenericDigits;
00362 q931pie_func_t Q931Pie_CongLevel;
00363 q931pie_func_t Q931Pie_RevChargeInd;
00364 
00365 q931uie_func_t Q931Uie_ChangeStatus;
00366 q931uie_func_t Q931Uie_BearerCap;
00367 q931uie_func_t Q931Uie_ChanID;
00368 q931uie_func_t Q931Uie_ProgInd;
00369 q931uie_func_t Q931Uie_Display;
00370 q931uie_func_t Q931Uie_Signal;
00371 q931uie_func_t Q931Uie_HLComp;
00372 q931uie_func_t Q931Uie_Segment;
00373 q931uie_func_t Q931Uie_DateTime;
00374 q931uie_func_t Q931Uie_Cause;
00375 q931uie_func_t Q931Uie_SendComplete;
00376 q931uie_func_t Q931Uie_KeypadFac;
00377 q931uie_func_t Q931Uie_NotifInd;
00378 q931uie_func_t Q931Uie_CallID;
00379 q931uie_func_t Q931Uie_RepeatInd;
00380 q931uie_func_t Q931Uie_NetFac;
00381 q931uie_func_t Q931Uie_CallingNum;
00382 q931uie_func_t Q931Uie_CallingSub;
00383 q931uie_func_t Q931Uie_CalledNum;
00384 q931uie_func_t Q931Uie_CalledSub;
00385 q931uie_func_t Q931Uie_TransNetSel;
00386 q931uie_func_t Q931Uie_LLComp;
00387 q931uie_func_t Q931Uie_CallState;
00388 q931uie_func_t Q931Uie_RestartInd;
00389 q931uie_func_t Q931Uie_UserUser;
00390 q931uie_func_t Q931Uie_GenericDigits;
00391 q931uie_func_t Q931Uie_CongLevel;
00392 q931uie_func_t Q931Uie_RevChargeInd;
00393 
00394 q931die_func_t Q931Die_ChangeStatus;
00395 q931die_func_t Q931Die_BearerCap;
00396 q931die_func_t Q931Die_ChanID;
00397 q931die_func_t Q931Die_ProgInd;
00398 q931die_func_t Q931Die_Display;
00399 q931die_func_t Q931Die_Signal;
00400 q931die_func_t Q931Die_HLComp;
00401 q931die_func_t Q931Die_Segment;
00402 q931die_func_t Q931Die_DateTime;
00403 q931die_func_t Q931Die_Cause;
00404 q931die_func_t Q931Die_SendComplete;
00405 q931die_func_t Q931Die_KeypadFac;
00406 q931die_func_t Q931Die_NotifInd;
00407 q931die_func_t Q931Die_CallID;
00408 q931die_func_t Q931Die_RepeatInd;
00409 q931die_func_t Q931Die_NetFac;
00410 q931die_func_t Q931Die_CallingNum;
00411 q931die_func_t Q931Die_CallingSub;
00412 q931die_func_t Q931Die_CalledNum;
00413 q931die_func_t Q931Die_CalledSub;
00414 q931die_func_t Q931Die_TransNetSel;
00415 q931die_func_t Q931Die_LLComp;
00416 q931die_func_t Q931Die_CallState;
00417 q931die_func_t Q931Die_RestartInd;
00418 q931die_func_t Q931Die_UserUser;
00419 q931die_func_t Q931Die_GenericDigits;
00420 q931die_func_t Q931Die_CongLevel;
00421 q931die_func_t Q931Die_RevChargeInd;
00422 
00423 #endif /* _Q931_PRIVATE_H_ */