OpenH323 1.18.0
|
00001 /* 00002 * h323pdu.h 00003 * 00004 * H.323 protocol handler 00005 * 00006 * Open H323 Library 00007 * 00008 * Copyright (c) 1998-2000 Equivalence Pty. Ltd. 00009 * 00010 * The contents of this file are subject to the Mozilla Public License 00011 * Version 1.0 (the "License"); you may not use this file except in 00012 * compliance with the License. You may obtain a copy of the License at 00013 * http://www.mozilla.org/MPL/ 00014 * 00015 * Software distributed under the License is distributed on an "AS IS" 00016 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See 00017 * the License for the specific language governing rights and limitations 00018 * under the License. 00019 * 00020 * The Original Code is Open H323 Library. 00021 * 00022 * The Initial Developer of the Original Code is Equivalence Pty. Ltd. 00023 * 00024 * Portions of this code were written with the assisance of funding from 00025 * Vovida Networks, Inc. http://www.vovida.com. 00026 * 00027 * Contributor(s): ______________________________________. 00028 * 00029 * $Log: h323pdu.h,v $ 00030 * Revision 1.70 2005/11/30 13:05:01 csoutheren 00031 * Changed tags for Doxygen 00032 * 00033 * Revision 1.69 2005/06/30 01:57:39 csoutheren 00034 * Updated to H.245v11 00035 * 00036 * Revision 1.68 2005/03/04 03:21:20 csoutheren 00037 * Added local and remote addresses to all PDU logs to assist in debugging 00038 * 00039 * Revision 1.67 2005/01/24 00:10:48 csoutheren 00040 * Added function to set Q.931 info in PDU, thanks to Paul Nader 00041 * 00042 * Revision 1.66 2004/12/14 06:22:21 csoutheren 00043 * More OSP implementation 00044 * 00045 * Revision 1.65 2003/04/10 09:36:52 robertj 00046 * Added some more functions for converting to alias addresses. 00047 * 00048 * Revision 1.64 2003/04/01 03:11:01 robertj 00049 * Added function to get array of AliasAddress into PStringArray. 00050 * 00051 * Revision 1.63 2003/03/25 04:56:17 robertj 00052 * Fixed issues to do with multiple inheritence in transaction reply cache. 00053 * 00054 * Revision 1.62 2003/03/20 01:51:07 robertj 00055 * More abstraction of H.225 RAS and H.501 protocols transaction handling. 00056 * 00057 * Revision 1.61 2003/03/01 00:23:42 craigs 00058 * New PeerElement implementation 00059 * 00060 * Revision 1.60 2003/02/25 06:48:15 robertj 00061 * More work on PDU transaction abstraction. 00062 * 00063 * Revision 1.59 2003/02/21 05:28:39 craigs 00064 * Factored out code for user with peer elements 00065 * 00066 * Revision 1.58 2003/02/01 13:31:14 robertj 00067 * Changes to support CAT authentication in RAS. 00068 * 00069 * Revision 1.57 2002/11/28 04:41:44 robertj 00070 * Added support for RAS ServiceControlIndication command. 00071 * 00072 * Revision 1.56 2002/09/16 01:14:15 robertj 00073 * Added #define so can select if #pragma interface/implementation is used on 00074 * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. 00075 * 00076 * Revision 1.55 2002/09/03 06:19:37 robertj 00077 * Normalised the multi-include header prevention ifdef/define symbol. 00078 * 00079 * Revision 1.54 2002/08/12 05:38:21 robertj 00080 * Changes to the RAS subsystem to support ability to make requests to client 00081 * from gkserver without causing bottlenecks and race conditions. 00082 * 00083 * Revision 1.53 2002/08/05 10:03:47 robertj 00084 * Cosmetic changes to normalise the usage of pragma interface/implementation. 00085 * 00086 * Revision 1.52 2002/08/05 05:17:37 robertj 00087 * Fairly major modifications to support different authentication credentials 00088 * in ARQ to the logged in ones on RRQ. For both client and server. 00089 * Various other H.235 authentication bugs and anomalies fixed on the way. 00090 * 00091 * Revision 1.51 2002/07/25 10:55:40 robertj 00092 * Changes to allow more granularity in PDU dumps, hex output increasing 00093 * with increasing trace level. 00094 * 00095 * Revision 1.50 2002/07/11 07:04:12 robertj 00096 * Added build InfoRequest pdu type to RAS. 00097 * 00098 * Revision 1.49 2002/05/29 03:55:17 robertj 00099 * Added protocol version number checking infrastructure, primarily to improve 00100 * interoperability with stacks that are unforgiving of new features. 00101 * 00102 * Revision 1.48 2002/05/29 00:03:15 robertj 00103 * Fixed unsolicited IRR support in gk client and server, 00104 * including support for IACK and INAK. 00105 * 00106 * Revision 1.47 2002/05/07 03:18:12 robertj 00107 * Added application info (name/version etc) into registered endpoint data. 00108 * 00109 * Revision 1.46 2002/05/03 09:18:45 robertj 00110 * Added automatic retransmission of RAS responses to retried requests. 00111 * 00112 * Revision 1.45 2002/03/14 07:57:02 robertj 00113 * Added ability to specify alias type in H323SetAliasAddress, if not specified 00114 * then defaults to previous behaviour, thanks Nils Bokerman. 00115 * 00116 * Revision 1.44 2001/12/15 07:09:56 robertj 00117 * Added functions to get E.164 address from alias address or addresses. 00118 * 00119 * Revision 1.43 2001/12/14 06:38:47 robertj 00120 * Broke out conversion of Q.850 and H.225 release complete codes to 00121 * OpenH323 call end reasons enum. 00122 * 00123 * Revision 1.42 2001/12/13 10:56:04 robertj 00124 * Added build of request in progress pdu. 00125 * 00126 * Revision 1.41 2001/08/16 07:49:16 robertj 00127 * Changed the H.450 support to be more extensible. Protocol handlers 00128 * are now in separate classes instead of all in H323Connection. 00129 * 00130 * Revision 1.40 2001/08/10 11:03:49 robertj 00131 * Major changes to H.235 support in RAS to support server. 00132 * 00133 * Revision 1.39 2001/08/06 07:44:52 robertj 00134 * Fixed problems with building without SSL 00135 * 00136 * Revision 1.38 2001/08/06 03:08:11 robertj 00137 * Fission of h323.h to h323ep.h & h323con.h, h323.h now just includes files. 00138 * 00139 * Revision 1.37 2001/06/14 06:25:13 robertj 00140 * Added further H.225 PDU build functions. 00141 * Moved some functionality from connection to PDU class. 00142 * 00143 * Revision 1.36 2001/06/14 00:45:19 robertj 00144 * Added extra parameters for Q.931 fields, thanks Rani Assaf 00145 * 00146 * Revision 1.35 2001/05/30 23:34:54 robertj 00147 * Added functions to send TCS=0 for transmitter side pause. 00148 * 00149 * Revision 1.34 2001/04/11 03:01:27 robertj 00150 * Added H.450.2 (call transfer), thanks a LOT to Graeme Reid & Norwood Systems 00151 * 00152 * Revision 1.33 2001/03/24 00:34:35 robertj 00153 * Added read/write hook functions so don't have to duplicate code in 00154 * H323RasH235PDU descendant class of H323RasPDU. 00155 * 00156 * Revision 1.32 2001/03/21 04:52:40 robertj 00157 * Added H.235 security to gatekeepers, thanks Fürbass Franz! 00158 * 00159 * Revision 1.31 2001/02/09 05:16:24 robertj 00160 * Added #pragma interface for GNU C++. 00161 * 00162 * Revision 1.30 2001/01/19 01:20:38 robertj 00163 * Added non-const function to get access to Q.931 PDU in H323SignalPDU. 00164 * 00165 * Revision 1.29 2000/10/04 05:59:09 robertj 00166 * Minor reorganisation of the H.245 secondary channel start up to make it simpler 00167 * to override its behaviour. 00168 * 00169 * Revision 1.28 2000/09/25 06:47:54 robertj 00170 * Removed use of alias if there is no alias present, ie only have transport address. 00171 * 00172 * Revision 1.27 2000/09/22 01:35:02 robertj 00173 * Added support for handling LID's that only do symmetric codecs. 00174 * 00175 * Revision 1.26 2000/07/15 09:50:49 robertj 00176 * Changed adding of Q.931 party numbers to only occur in SETUP. 00177 * 00178 * Revision 1.25 2000/06/21 08:07:39 robertj 00179 * Added cause/reason to release complete PDU, where relevent. 00180 * 00181 * Revision 1.24 2000/05/23 11:32:27 robertj 00182 * Rewrite of capability table to combine 2 structures into one and move functionality into that class 00183 * allowing some normalisation of usage across several applications. 00184 * Changed H323Connection so gets a copy of capabilities instead of using endponts, allows adjustments 00185 * to be done depending on the remote client application. 00186 * 00187 * Revision 1.23 2000/05/08 14:07:26 robertj 00188 * Improved the provision and detection of calling and caller numbers, aliases and hostnames. 00189 * 00190 * Revision 1.22 2000/05/08 05:05:43 robertj 00191 * Fixed bug in H.245 close logical channel timeout, thanks XuPeili. 00192 * 00193 * Revision 1.21 2000/05/02 04:32:24 robertj 00194 * Fixed copyright notice comment. 00195 * 00196 * Revision 1.20 2000/04/10 20:39:30 robertj 00197 * Added support for more sophisticated DTMF and hook flash user indication. 00198 * Added function to extract E164 address from Q.931/H.225 PDU. 00199 * 00200 * Revision 1.19 2000/03/25 02:00:39 robertj 00201 * Added adjustable caller name on connection by connection basis. 00202 * 00203 * Revision 1.18 2000/03/21 01:22:01 robertj 00204 * Fixed incorrect call reference code being used in originated call. 00205 * 00206 * Revision 1.17 1999/12/11 02:20:58 robertj 00207 * Added ability to have multiple aliases on local endpoint. 00208 * 00209 * Revision 1.16 1999/09/10 03:36:48 robertj 00210 * Added simple Q.931 Status response to Q.931 Status Enquiry 00211 * 00212 * Revision 1.15 1999/08/31 12:34:18 robertj 00213 * Added gatekeeper support. 00214 * 00215 * Revision 1.14 1999/08/25 05:07:49 robertj 00216 * File fission (critical mass reached). 00217 * 00218 * Revision 1.13 1999/07/16 06:15:59 robertj 00219 * Corrected semantics for tunnelled master/slave determination in fast start. 00220 * 00221 * Revision 1.12 1999/07/16 02:15:30 robertj 00222 * Fixed more tunneling problems. 00223 * 00224 * Revision 1.11 1999/07/15 14:45:35 robertj 00225 * Added propagation of codec open error to shut down logical channel. 00226 * Fixed control channel start up bug introduced with tunnelling. 00227 * 00228 * Revision 1.10 1999/07/10 02:51:53 robertj 00229 * Added mutexing in H245 procedures. 00230 * 00231 * Revision 1.9 1999/07/09 06:09:49 robertj 00232 * Major implementation. An ENORMOUS amount of stuff added everywhere. 00233 * 00234 * Revision 1.8 1999/06/25 10:25:35 robertj 00235 * Added maintentance of callIdentifier variable in H.225 channel. 00236 * 00237 * Revision 1.7 1999/06/14 05:15:56 robertj 00238 * Changes for using RTP sessions correctly in H323 Logical Channel context 00239 * 00240 * Revision 1.6 1999/06/13 12:41:14 robertj 00241 * Implement logical channel transmitter. 00242 * Fixed H245 connect on receiving call. 00243 * 00244 * Revision 1.5 1999/06/09 05:26:20 robertj 00245 * Major restructuring of classes. 00246 * 00247 * Revision 1.4 1999/06/06 06:06:36 robertj 00248 * Changes for new ASN compiler and v2 protocol ASN files. 00249 * 00250 * Revision 1.3 1999/04/26 06:14:47 craigs 00251 * Initial implementation for RTP decoding and lots of stuff 00252 * As a whole, these changes are called "First Noise" 00253 * 00254 * Revision 1.2 1999/01/16 02:35:04 robertj 00255 * GNi compiler compatibility. 00256 * 00257 * Revision 1.1 1999/01/16 01:30:58 robertj 00258 * Initial revision 00259 * 00260 */ 00261 00262 #ifndef __OPAL_H323PDU_H 00263 #define __OPAL_H323PDU_H 00264 00265 #ifdef P_USE_PRAGMA 00266 #pragma interface 00267 #endif 00268 00269 00270 #include <ptlib/sockets.h> 00271 #include "h323con.h" 00272 #include "transports.h" 00273 #include "q931.h" 00274 #include "h225.h" 00275 #include "h245.h" 00276 #include "h323trans.h" 00277 00278 00279 class H225_RAS; 00280 00281 00282 #define H225_PROTOCOL_VERSION 4 00283 #define H245_PROTOCOL_VERSION 11 00284 00285 00287 00290 class H323SignalPDU : public H225_H323_UserInformation 00291 { 00292 PCLASSINFO(H323SignalPDU, H225_H323_UserInformation); 00293 00294 public: 00299 H323SignalPDU(); 00300 00303 H225_Setup_UUIE & BuildSetup( 00304 const H323Connection & connection, 00305 const H323TransportAddress & destAddr 00306 ); 00307 00310 H225_CallProceeding_UUIE & BuildCallProceeding( 00311 const H323Connection & connection 00312 ); 00313 00316 H225_Connect_UUIE & BuildConnect( 00317 const H323Connection & connection 00318 ); 00319 00322 H225_Connect_UUIE & BuildConnect( 00323 const H323Connection & connection, 00324 const PIPSocket::Address & h245Address, 00325 WORD port 00326 ); 00327 00330 H225_Alerting_UUIE & BuildAlerting( 00331 const H323Connection & connection 00332 ); 00333 00336 H225_Information_UUIE & BuildInformation( 00337 const H323Connection & connection 00338 ); 00339 00342 H225_ReleaseComplete_UUIE & BuildReleaseComplete( 00343 const H323Connection & connection 00344 ); 00345 00348 H225_Facility_UUIE * BuildFacility( 00349 const H323Connection & connection, 00350 BOOL empty 00351 ); 00352 00355 H225_Progress_UUIE & BuildProgress( 00356 const H323Connection & connection 00357 ); 00358 00361 H225_Status_UUIE & BuildStatus( 00362 const H323Connection & connection 00363 ); 00364 00367 H225_StatusInquiry_UUIE & BuildStatusInquiry( 00368 const H323Connection & connection 00369 ); 00370 00373 H225_SetupAcknowledge_UUIE & BuildSetupAcknowledge( 00374 const H323Connection & connection 00375 ); 00376 00379 H225_Notify_UUIE & BuildNotify( 00380 const H323Connection & connection 00381 ); 00383 00384 00389 void PrintOn( 00390 ostream & strm 00391 ) const; 00392 00395 BOOL Read( 00396 H323Transport & transport 00397 ); 00398 00401 BOOL Write( 00402 H323Transport & transport 00403 ); 00404 00407 const Q931 & GetQ931() const { return q931pdu; } 00408 00411 Q931 & GetQ931() { return q931pdu; } 00412 00415 void SetQ931(const Q931 & _q931pdu) { q931pdu = _q931pdu; } 00416 00421 void BuildQ931(); 00422 00427 PString GetSourceAliases( 00428 const H323Transport * transport = NULL 00429 ) const; 00430 00435 PString GetDestinationAlias( 00436 BOOL firstAliasOnly = FALSE 00437 ) const; 00438 00443 BOOL GetSourceE164( 00444 PString & number 00445 ) const; 00446 00451 BOOL GetDestinationE164( 00452 PString & number 00453 ) const; 00454 00458 unsigned GetDistinctiveRing() const; 00459 00464 void SetQ931Fields( 00465 const H323Connection & connection, 00466 BOOL insertPartyNumbers = FALSE, 00467 unsigned plan = 1, 00468 unsigned type = 0, 00469 int presentation = -1, 00470 int screening = -1 00471 ); 00472 00473 protected: 00474 // Even though we generally deal with the H323 protocol (H225) it is 00475 // actually contained within a field of the Q931 protocol. 00476 Q931 q931pdu; 00477 }; 00478 00479 00481 00484 class H323ControlPDU : public H245_MultimediaSystemControlMessage 00485 { 00486 PCLASSINFO(H323ControlPDU, H245_MultimediaSystemControlMessage); 00487 00488 public: 00489 H245_RequestMessage & Build(H245_RequestMessage ::Choices request); 00490 H245_ResponseMessage & Build(H245_ResponseMessage ::Choices response); 00491 H245_CommandMessage & Build(H245_CommandMessage ::Choices command); 00492 H245_IndicationMessage & Build(H245_IndicationMessage::Choices indication); 00493 00494 H245_MasterSlaveDetermination & BuildMasterSlaveDetermination( 00495 unsigned terminalType, 00496 unsigned statusDeterminationNumber 00497 ); 00498 H245_MasterSlaveDeterminationAck & BuildMasterSlaveDeterminationAck( 00499 BOOL isMaster 00500 ); 00501 H245_MasterSlaveDeterminationReject & BuildMasterSlaveDeterminationReject( 00502 unsigned cause 00503 ); 00504 00505 H245_TerminalCapabilitySet & BuildTerminalCapabilitySet( 00506 const H323Connection & connection, 00507 unsigned sequenceNumber, 00508 BOOL empty 00509 ); 00510 H245_TerminalCapabilitySetAck & BuildTerminalCapabilitySetAck( 00511 unsigned sequenceNumber 00512 ); 00513 H245_TerminalCapabilitySetReject & BuildTerminalCapabilitySetReject( 00514 unsigned sequenceNumber, 00515 unsigned cause 00516 ); 00517 00518 H245_OpenLogicalChannel & BuildOpenLogicalChannel( 00519 unsigned forwardLogicalChannelNumber 00520 ); 00521 H245_RequestChannelClose & BuildRequestChannelClose( 00522 unsigned channelNumber, 00523 unsigned reason 00524 ); 00525 H245_CloseLogicalChannel & BuildCloseLogicalChannel( 00526 unsigned channelNumber 00527 ); 00528 H245_OpenLogicalChannelAck & BuildOpenLogicalChannelAck( 00529 unsigned channelNumber 00530 ); 00531 H245_OpenLogicalChannelReject & BuildOpenLogicalChannelReject( 00532 unsigned channelNumber, 00533 unsigned cause 00534 ); 00535 H245_OpenLogicalChannelConfirm & BuildOpenLogicalChannelConfirm( 00536 unsigned channelNumber 00537 ); 00538 H245_CloseLogicalChannelAck & BuildCloseLogicalChannelAck( 00539 unsigned channelNumber 00540 ); 00541 H245_RequestChannelCloseAck & BuildRequestChannelCloseAck( 00542 unsigned channelNumber 00543 ); 00544 H245_RequestChannelCloseReject & BuildRequestChannelCloseReject( 00545 unsigned channelNumber 00546 ); 00547 H245_RequestChannelCloseRelease & BuildRequestChannelCloseRelease( 00548 unsigned channelNumber 00549 ); 00550 00551 H245_RequestMode & BuildRequestMode( 00552 unsigned sequenceNumber 00553 ); 00554 H245_RequestModeAck & BuildRequestModeAck( 00555 unsigned sequenceNumber, 00556 unsigned response 00557 ); 00558 H245_RequestModeReject & BuildRequestModeReject( 00559 unsigned sequenceNumber, 00560 unsigned cause 00561 ); 00562 00563 H245_RoundTripDelayRequest & BuildRoundTripDelayRequest( 00564 unsigned sequenceNumber 00565 ); 00566 H245_RoundTripDelayResponse & BuildRoundTripDelayResponse( 00567 unsigned sequenceNumber 00568 ); 00569 00570 H245_UserInputIndication & BuildUserInputIndication( 00571 const PString & value 00572 ); 00573 H245_UserInputIndication & BuildUserInputIndication( 00574 char tone, 00575 unsigned duration, 00576 unsigned logicalChannel, 00577 unsigned rtpTimestamp 00578 ); 00579 00580 H245_FunctionNotUnderstood & BuildFunctionNotUnderstood( 00581 const H323ControlPDU & pdu 00582 ); 00583 00584 H245_EndSessionCommand & BuildEndSessionCommand( 00585 unsigned reason 00586 ); 00587 }; 00588 00589 00591 00594 class H323RasPDU : public H225_RasMessage, public H323TransactionPDU 00595 { 00596 PCLASSINFO(H323RasPDU, H225_RasMessage); 00597 00598 public: 00599 H323RasPDU(); 00600 H323RasPDU( 00601 const H235Authenticators & authenticators 00602 ); 00603 00604 // overrides from PObject 00605 virtual PObject * Clone() const; 00606 00607 // overrides from H323TransactionPDU 00608 virtual PASN_Object & GetPDU(); 00609 virtual PASN_Choice & GetChoice(); 00610 virtual const PASN_Object & GetPDU() const; 00611 virtual const PASN_Choice & GetChoice() const; 00612 virtual unsigned GetSequenceNumber() const; 00613 virtual unsigned GetRequestInProgressDelay() const; 00614 #if PTRACING 00615 virtual const char * GetProtocolName() const; 00616 #endif 00617 virtual H323TransactionPDU * ClonePDU() const; 00618 virtual void DeletePDU(); 00619 00620 // new functions 00621 H225_GatekeeperRequest & BuildGatekeeperRequest(unsigned seqNum); 00622 H225_GatekeeperConfirm & BuildGatekeeperConfirm(unsigned seqNum); 00623 H225_GatekeeperReject & BuildGatekeeperReject(unsigned seqNum, unsigned reason = H225_GatekeeperRejectReason::e_undefinedReason); 00624 H225_RegistrationRequest & BuildRegistrationRequest(unsigned seqNum); 00625 H225_RegistrationConfirm & BuildRegistrationConfirm(unsigned seqNum); 00626 H225_RegistrationReject & BuildRegistrationReject(unsigned seqNum, unsigned reason = H225_RegistrationRejectReason::e_undefinedReason); 00627 H225_UnregistrationRequest & BuildUnregistrationRequest(unsigned seqNum); 00628 H225_UnregistrationConfirm & BuildUnregistrationConfirm(unsigned seqNum); 00629 H225_UnregistrationReject & BuildUnregistrationReject(unsigned seqNum, unsigned reason = H225_UnregRejectReason::e_undefinedReason); 00630 H225_LocationRequest & BuildLocationRequest(unsigned seqNum); 00631 H225_LocationConfirm & BuildLocationConfirm(unsigned seqNum); 00632 H225_LocationReject & BuildLocationReject(unsigned seqNum, unsigned reason = H225_LocationRejectReason::e_undefinedReason); 00633 H225_AdmissionRequest & BuildAdmissionRequest(unsigned seqNum); 00634 H225_AdmissionConfirm & BuildAdmissionConfirm(unsigned seqNum); 00635 H225_AdmissionReject & BuildAdmissionReject(unsigned seqNum, unsigned reason = H225_AdmissionRejectReason::e_undefinedReason); 00636 H225_DisengageRequest & BuildDisengageRequest(unsigned seqNum); 00637 H225_DisengageConfirm & BuildDisengageConfirm(unsigned seqNum); 00638 H225_DisengageReject & BuildDisengageReject(unsigned seqNum, unsigned reason = H225_DisengageRejectReason::e_securityDenial); 00639 H225_BandwidthRequest & BuildBandwidthRequest(unsigned seqNum); 00640 H225_BandwidthConfirm & BuildBandwidthConfirm(unsigned seqNum, unsigned bandwidth = 0); 00641 H225_BandwidthReject & BuildBandwidthReject(unsigned seqNum, unsigned reason = H225_BandRejectReason::e_undefinedReason); 00642 H225_InfoRequest & BuildInfoRequest(unsigned seqNum, unsigned callRef = 0, const OpalGloballyUniqueID * id = NULL); 00643 H225_InfoRequestResponse & BuildInfoRequestResponse(unsigned seqNum); 00644 H225_InfoRequestAck & BuildInfoRequestAck(unsigned seqNum); 00645 H225_InfoRequestNak & BuildInfoRequestNak(unsigned seqNum, unsigned reason = H225_InfoRequestNakReason::e_undefinedReason); 00646 H225_ServiceControlIndication& BuildServiceControlIndication(unsigned seqNum, const OpalGloballyUniqueID * id = NULL); 00647 H225_ServiceControlResponse & BuildServiceControlResponse(unsigned seqNum); 00648 H225_UnknownMessageResponse & BuildUnknownMessageResponse(unsigned seqNum); 00649 H225_RequestInProgress & BuildRequestInProgress(unsigned seqNum, unsigned delay); 00650 }; 00651 00652 00654 00655 void H323SetAliasAddresses(const H323TransportAddressArray & addresses, H225_ArrayOf_AliasAddress & aliases); 00656 void H323SetAliasAddresses(const PStringArray & names, H225_ArrayOf_AliasAddress & aliases, int tag = -1); 00657 void H323SetAliasAddresses(const PStringList & names, H225_ArrayOf_AliasAddress & aliases, int tag = -1); 00658 void H323SetAliasAddress(const H323TransportAddress & address, H225_AliasAddress & alias); 00659 void H323SetAliasAddress(const PString & name, H225_AliasAddress & alias, int tag = -1); 00660 PStringArray H323GetAliasAddressStrings(const H225_ArrayOf_AliasAddress & aliases); 00661 PString H323GetAliasAddressString(const H225_AliasAddress & alias); 00662 PString H323GetAliasAddressE164(const H225_AliasAddress & alias); 00663 PString H323GetAliasAddressE164(const H225_ArrayOf_AliasAddress & aliases); 00664 00665 H323Connection::CallEndReason H323TranslateToCallEndReason( 00666 Q931::CauseValues cause, 00667 const H225_ReleaseCompleteReason & reason 00668 ); 00669 Q931::CauseValues H323TranslateFromCallEndReason( 00670 H323Connection::CallEndReason endReason, 00671 H225_ReleaseCompleteReason & reason 00672 ); 00673 Q931::CauseValues H323TranslateFromCallEndReason( 00674 const H323Connection & connection, 00675 H225_ReleaseCompleteReason & rcReason 00676 ); 00677 00678 PString H323GetApplicationInfo(const H225_VendorIdentifier & vendor); 00679 00680 00681 #if PTRACING 00682 void H323TraceDumpPDU( 00683 const char * proto, 00684 BOOL writing, 00685 const PBYTEArray & rawData, 00686 const PASN_Object & pdu, 00687 const PASN_Choice & tag1, 00688 unsigned seqNum, 00689 const H323TransportAddress & locAddr, 00690 const H323TransportAddress & remAddr 00691 ); 00692 #else 00693 #define H323TraceDumpPDU(proto, writing, rawData, pdu, tag1, seqNum, locAddr, remAddr) 00694 #endif 00695 00696 00697 #endif // __OPAL_H323PDU_H 00698 00699