h225ras.h

Go to the documentation of this file.
00001 /*
00002  * h225ras.h
00003  *
00004  * H.225 RAS protocol handler
00005  *
00006  * Open H323 Library
00007  *
00008  * Copyright (c) 2001 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  * iFace, Inc. http://www.iface.com
00026  *
00027  * Contributor(s): ______________________________________.
00028  *
00029  * $Log: h225ras.h,v $
00030  * Revision 1.40  2005/11/30 13:05:01  csoutheren
00031  * Changed tags for Doxygen
00032  *
00033  * Revision 1.39  2005/01/03 14:03:20  csoutheren
00034  * Added new configure options and ability to disable/enable modules
00035  *
00036  * Revision 1.38  2005/01/03 06:25:52  csoutheren
00037  * Added extensive support for disabling code modules at compile time
00038  *
00039  * Revision 1.37  2004/09/07 22:50:55  rjongbloed
00040  * Changed usage of template function as MSVC6 will not compile it.
00041  *
00042  * Revision 1.36  2004/09/03 01:06:09  csoutheren
00043  * Added initial hooks for H.460 GEF
00044  * Thanks to Simon Horne and ISVO (Asia) Pte Ltd. for this contribution
00045  *
00046  * Revision 1.35  2003/04/01 01:05:39  robertj
00047  * Split service control handlers from H.225 RAS header.
00048  *
00049  * Revision 1.34  2003/03/20 01:51:07  robertj
00050  * More abstraction of H.225 RAS and H.501 protocols transaction handling.
00051  *
00052  * Revision 1.33  2003/03/01 00:23:42  craigs
00053  * New PeerElement implementation
00054  *
00055  * Revision 1.32  2003/02/21 07:23:18  robertj
00056  * Fixed up some comments
00057  *
00058  * Revision 1.31  2003/02/21 05:28:39  craigs
00059  * Factored out code for user with peer elements
00060  *
00061  * Revision 1.30  2003/02/01 13:31:14  robertj
00062  * Changes to support CAT authentication in RAS.
00063  *
00064  * Revision 1.29  2002/11/28 04:41:44  robertj
00065  * Added support for RAS ServiceControlIndication command.
00066  *
00067  * Revision 1.28  2002/11/27 06:54:52  robertj
00068  * Added Service Control Session management as per Annex K/H.323 via RAS
00069  *   only at this stage.
00070  * Added H.248 ASN and very primitive infrastructure for linking into the
00071  *   Service Control Session management system.
00072  * Added basic infrastructure for Annex K/H.323 HTTP transport system.
00073  * Added Call Credit Service Control to display account balances.
00074  *
00075  * Revision 1.27  2002/11/21 22:26:09  robertj
00076  * Changed promiscuous mode to be three way. Fixes race condition in gkserver
00077  *   which can cause crashes or more PDUs to be sent to the wrong place.
00078  *
00079  * Revision 1.26  2002/11/21 07:21:46  robertj
00080  * Improvements to alternate gatekeeper client code, thanks Kevin Bouchard
00081  *
00082  * Revision 1.25  2002/11/11 07:20:08  robertj
00083  * Minor clean up of API for doing RAS requests suing authentication.
00084  *
00085  * Revision 1.24  2002/11/04 11:52:08  robertj
00086  * Fixed comment
00087  *
00088  * Revision 1.23  2002/10/17 02:09:01  robertj
00089  * Backed out previous change for including PDU tag, doesn't work!
00090  *
00091  * Revision 1.22  2002/10/16 03:40:12  robertj
00092  * Added PDU tag to cache look up key.
00093  *
00094  * Revision 1.21  2002/09/19 09:15:56  robertj
00095  * Fixed problem with making (and assuring with multi-threading) IRQ and DRQ
00096  *   requests are sent to the correct endpoint address, thanks Martijn Roest.
00097  *
00098  * Revision 1.20  2002/09/16 01:14:15  robertj
00099  * Added #define so can select if #pragma interface/implementation is used on
00100  *   platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan.
00101  *
00102  * Revision 1.19  2002/09/03 05:37:17  robertj
00103  * Normalised the multi-include header prevention ifdef/define symbol.
00104  * Added RAS port constants to RAS clas name space.
00105  *
00106  * Revision 1.18  2002/08/12 06:29:55  robertj
00107  * Fixed problem with cached responses being aged before the RIP time which
00108  *   made retries by client appear as "new" requests when they were not.
00109  *
00110  * Revision 1.17  2002/08/12 05:38:20  robertj
00111  * Changes to the RAS subsystem to support ability to make requests to client
00112  *   from gkserver without causing bottlenecks and race conditions.
00113  *
00114  * Revision 1.16  2002/08/05 10:03:47  robertj
00115  * Cosmetic changes to normalise the usage of pragma interface/implementation.
00116  *
00117  * Revision 1.15  2002/08/05 05:17:37  robertj
00118  * Fairly major modifications to support different authentication credentials
00119  *   in ARQ to the logged in ones on RRQ. For both client and server.
00120  * Various other H.235 authentication bugs and anomalies fixed on the way.
00121  *
00122  * Revision 1.14  2002/07/29 11:36:08  robertj
00123  * Fixed race condition if RIP is followed very quickly by actual response.
00124  *
00125  * Revision 1.13  2002/06/26 03:47:45  robertj
00126  * Added support for alternate gatekeepers.
00127  *
00128  * Revision 1.12  2002/06/21 02:52:44  robertj
00129  * Fixed problem with double checking H.235 hashing, this causes failure as
00130  *   the authenticator thinks it is a replay attack.
00131  *
00132  * Revision 1.11  2002/06/12 03:49:56  robertj
00133  * Added PrintOn function for trace output of RAS channel.
00134  *
00135  * Revision 1.10  2002/05/03 09:18:45  robertj
00136  * Added automatic retransmission of RAS responses to retried requests.
00137  *
00138  * Revision 1.9  2001/10/09 08:04:59  robertj
00139  * Fixed unregistration so still unregisters if gk goes offline, thanks Chris Purvis
00140  *
00141  * Revision 1.8  2001/09/18 10:36:54  robertj
00142  * Allowed multiple overlapping requests in RAS channel.
00143  *
00144  * Revision 1.7  2001/09/12 03:12:36  robertj
00145  * Added ability to disable the checking of RAS responses against
00146  *   security authenticators.
00147  * Fixed bug in having multiple authentications if have a retry.
00148  *
00149  * Revision 1.6  2001/08/10 11:03:49  robertj
00150  * Major changes to H.235 support in RAS to support server.
00151  *
00152  * Revision 1.5  2001/08/06 07:44:52  robertj
00153  * Fixed problems with building without SSL
00154  *
00155  * Revision 1.4  2001/08/06 03:18:35  robertj
00156  * Fission of h323.h to h323ep.h & h323con.h, h323.h now just includes files.
00157  * Improved access to H.235 secure RAS functionality.
00158  * Changes to H.323 secure RAS contexts to help use with gk server.
00159  *
00160  * Revision 1.3  2001/06/25 01:06:40  robertj
00161  * Fixed resolution of RAS timeout so not rounded down to second.
00162  *
00163  * Revision 1.2  2001/06/22 00:21:10  robertj
00164  * Fixed bug in H.225 RAS protocol with 16 versus 32 bit sequence numbers.
00165  *
00166  * Revision 1.1  2001/06/18 06:23:47  robertj
00167  * Split raw H.225 RAS protocol out of gatekeeper client class.
00168  *
00169  */
00170 
00171 #ifndef __OPAL_H225RAS_H
00172 #define __OPAL_H225RAS_H
00173 
00174 #ifdef P_USE_PRAGMA
00175 #pragma interface
00176 #endif
00177 
00178 #include "openh323buildopts.h"
00179 #include "transports.h"
00180 #include "h235auth.h"
00181 #include "h323trans.h"
00182 
00183 #ifdef H323_H248
00184 #include "svcctrl.h"
00185 #endif
00186 
00187 class PASN_Sequence;
00188 class PASN_Choice;
00189 
00190 class H225_GatekeeperRequest;
00191 class H225_GatekeeperConfirm;
00192 class H225_GatekeeperReject;
00193 class H225_RegistrationRequest;
00194 class H225_RegistrationConfirm;
00195 class H225_RegistrationReject;
00196 class H225_UnregistrationRequest;
00197 class H225_UnregistrationConfirm;
00198 class H225_UnregistrationReject;
00199 class H225_AdmissionRequest;
00200 class H225_AdmissionConfirm;
00201 class H225_AdmissionReject;
00202 class H225_BandwidthRequest;
00203 class H225_BandwidthConfirm;
00204 class H225_BandwidthReject;
00205 class H225_DisengageRequest;
00206 class H225_DisengageConfirm;
00207 class H225_DisengageReject;
00208 class H225_LocationRequest;
00209 class H225_LocationConfirm;
00210 class H225_LocationReject;
00211 class H225_InfoRequest;
00212 class H225_InfoRequestResponse;
00213 class H225_NonStandardMessage;
00214 class H225_UnknownMessageResponse;
00215 class H225_RequestInProgress;
00216 class H225_ResourcesAvailableIndicate;
00217 class H225_ResourcesAvailableConfirm;
00218 class H225_InfoRequestAck;
00219 class H225_InfoRequestNak;
00220 class H225_ArrayOf_CryptoH323Token;
00221 class H225_FeatureSet;
00222 
00223 class H323EndPoint;
00224 class H323RasPDU;
00225 
00226 
00227 
00229 
00232 class H225_RAS : public H323Transactor
00233 {
00234   PCLASSINFO(H225_RAS, H323Transactor);
00235   public:
00238     enum {
00239       DefaultRasMulticastPort = 1718,
00240       DefaultRasUdpPort = 1719
00241     };
00242 
00245     H225_RAS(
00246       H323EndPoint & endpoint,  
00247       H323Transport * transport 
00248     );
00249 
00252     ~H225_RAS();
00254 
00259     void PrintOn(
00260       ostream & strm    
00261     ) const;
00263 
00268     virtual H323TransactionPDU * CreateTransactionPDU() const;
00269 
00272     virtual BOOL HandleTransaction(
00273       const PASN_Object & rawPDU
00274     );
00275 
00278     virtual void OnSendingPDU(
00279       PASN_Object & rawPDU
00280     );
00282 
00285     virtual void OnSendGatekeeperRequest(H323RasPDU &, H225_GatekeeperRequest &);
00286     virtual void OnSendGatekeeperConfirm(H323RasPDU &, H225_GatekeeperConfirm &);
00287     virtual void OnSendGatekeeperReject(H323RasPDU &, H225_GatekeeperReject &);
00288     virtual void OnSendGatekeeperRequest(H225_GatekeeperRequest &);
00289     virtual void OnSendGatekeeperConfirm(H225_GatekeeperConfirm &);
00290     virtual void OnSendGatekeeperReject(H225_GatekeeperReject &);
00291     virtual BOOL OnReceiveGatekeeperRequest(const H323RasPDU &, const H225_GatekeeperRequest &);
00292     virtual BOOL OnReceiveGatekeeperConfirm(const H323RasPDU &, const H225_GatekeeperConfirm &);
00293     virtual BOOL OnReceiveGatekeeperReject(const H323RasPDU &, const H225_GatekeeperReject &);
00294     virtual BOOL OnReceiveGatekeeperRequest(const H225_GatekeeperRequest &);
00295     virtual BOOL OnReceiveGatekeeperConfirm(const H225_GatekeeperConfirm &);
00296     virtual BOOL OnReceiveGatekeeperReject(const H225_GatekeeperReject &);
00297 
00298     virtual void OnSendRegistrationRequest(H323RasPDU &, H225_RegistrationRequest &);
00299     virtual void OnSendRegistrationConfirm(H323RasPDU &, H225_RegistrationConfirm &);
00300     virtual void OnSendRegistrationReject(H323RasPDU &, H225_RegistrationReject &);
00301     virtual void OnSendRegistrationRequest(H225_RegistrationRequest &);
00302     virtual void OnSendRegistrationConfirm(H225_RegistrationConfirm &);
00303     virtual void OnSendRegistrationReject(H225_RegistrationReject &);
00304     virtual BOOL OnReceiveRegistrationRequest(const H323RasPDU &, const H225_RegistrationRequest &);
00305     virtual BOOL OnReceiveRegistrationConfirm(const H323RasPDU &, const H225_RegistrationConfirm &);
00306     virtual BOOL OnReceiveRegistrationReject(const H323RasPDU &, const H225_RegistrationReject &);
00307     virtual BOOL OnReceiveRegistrationRequest(const H225_RegistrationRequest &);
00308     virtual BOOL OnReceiveRegistrationConfirm(const H225_RegistrationConfirm &);
00309     virtual BOOL OnReceiveRegistrationReject(const H225_RegistrationReject &);
00310 
00311     virtual void OnSendUnregistrationRequest(H323RasPDU &, H225_UnregistrationRequest &);
00312     virtual void OnSendUnregistrationConfirm(H323RasPDU &, H225_UnregistrationConfirm &);
00313     virtual void OnSendUnregistrationReject(H323RasPDU &, H225_UnregistrationReject &);
00314     virtual void OnSendUnregistrationRequest(H225_UnregistrationRequest &);
00315     virtual void OnSendUnregistrationConfirm(H225_UnregistrationConfirm &);
00316     virtual void OnSendUnregistrationReject(H225_UnregistrationReject &);
00317     virtual BOOL OnReceiveUnregistrationRequest(const H323RasPDU &, const H225_UnregistrationRequest &);
00318     virtual BOOL OnReceiveUnregistrationConfirm(const H323RasPDU &, const H225_UnregistrationConfirm &);
00319     virtual BOOL OnReceiveUnregistrationReject(const H323RasPDU &, const H225_UnregistrationReject &);
00320     virtual BOOL OnReceiveUnregistrationRequest(const H225_UnregistrationRequest &);
00321     virtual BOOL OnReceiveUnregistrationConfirm(const H225_UnregistrationConfirm &);
00322     virtual BOOL OnReceiveUnregistrationReject(const H225_UnregistrationReject &);
00323 
00324     virtual void OnSendAdmissionRequest(H323RasPDU &, H225_AdmissionRequest &);
00325     virtual void OnSendAdmissionConfirm(H323RasPDU &, H225_AdmissionConfirm &);
00326     virtual void OnSendAdmissionReject(H323RasPDU &, H225_AdmissionReject &);
00327     virtual void OnSendAdmissionRequest(H225_AdmissionRequest &);
00328     virtual void OnSendAdmissionConfirm(H225_AdmissionConfirm &);
00329     virtual void OnSendAdmissionReject(H225_AdmissionReject &);
00330     virtual BOOL OnReceiveAdmissionRequest(const H323RasPDU &, const H225_AdmissionRequest &);
00331     virtual BOOL OnReceiveAdmissionConfirm(const H323RasPDU &, const H225_AdmissionConfirm &);
00332     virtual BOOL OnReceiveAdmissionReject(const H323RasPDU &, const H225_AdmissionReject &);
00333     virtual BOOL OnReceiveAdmissionRequest(const H225_AdmissionRequest &);
00334     virtual BOOL OnReceiveAdmissionConfirm(const H225_AdmissionConfirm &);
00335     virtual BOOL OnReceiveAdmissionReject(const H225_AdmissionReject &);
00336 
00337     virtual void OnSendBandwidthRequest(H323RasPDU &, H225_BandwidthRequest &);
00338     virtual void OnSendBandwidthConfirm(H323RasPDU &, H225_BandwidthConfirm &);
00339     virtual void OnSendBandwidthReject(H323RasPDU &, H225_BandwidthReject &);
00340     virtual void OnSendBandwidthRequest(H225_BandwidthRequest &);
00341     virtual void OnSendBandwidthConfirm(H225_BandwidthConfirm &);
00342     virtual void OnSendBandwidthReject(H225_BandwidthReject &);
00343     virtual BOOL OnReceiveBandwidthRequest(const H323RasPDU &, const H225_BandwidthRequest &);
00344     virtual BOOL OnReceiveBandwidthConfirm(const H323RasPDU &, const H225_BandwidthConfirm &);
00345     virtual BOOL OnReceiveBandwidthReject(const H323RasPDU &, const H225_BandwidthReject &);
00346     virtual BOOL OnReceiveBandwidthRequest(const H225_BandwidthRequest &);
00347     virtual BOOL OnReceiveBandwidthConfirm(const H225_BandwidthConfirm &);
00348     virtual BOOL OnReceiveBandwidthReject(const H225_BandwidthReject &);
00349 
00350     virtual void OnSendDisengageRequest(H323RasPDU &, H225_DisengageRequest &);
00351     virtual void OnSendDisengageConfirm(H323RasPDU &, H225_DisengageConfirm &);
00352     virtual void OnSendDisengageReject(H323RasPDU &, H225_DisengageReject &);
00353     virtual void OnSendDisengageRequest(H225_DisengageRequest &);
00354     virtual void OnSendDisengageConfirm(H225_DisengageConfirm &);
00355     virtual void OnSendDisengageReject(H225_DisengageReject &);
00356     virtual BOOL OnReceiveDisengageRequest(const H323RasPDU &, const H225_DisengageRequest &);
00357     virtual BOOL OnReceiveDisengageConfirm(const H323RasPDU &, const H225_DisengageConfirm &);
00358     virtual BOOL OnReceiveDisengageReject(const H323RasPDU &, const H225_DisengageReject &);
00359     virtual BOOL OnReceiveDisengageRequest(const H225_DisengageRequest &);
00360     virtual BOOL OnReceiveDisengageConfirm(const H225_DisengageConfirm &);
00361     virtual BOOL OnReceiveDisengageReject(const H225_DisengageReject &);
00362 
00363     virtual void OnSendLocationRequest(H323RasPDU &, H225_LocationRequest &);
00364     virtual void OnSendLocationConfirm(H323RasPDU &, H225_LocationConfirm &);
00365     virtual void OnSendLocationReject(H323RasPDU &, H225_LocationReject &);
00366     virtual void OnSendLocationRequest(H225_LocationRequest &);
00367     virtual void OnSendLocationConfirm(H225_LocationConfirm &);
00368     virtual void OnSendLocationReject(H225_LocationReject &);
00369     virtual BOOL OnReceiveLocationRequest(const H323RasPDU &, const H225_LocationRequest &);
00370     virtual BOOL OnReceiveLocationConfirm(const H323RasPDU &, const H225_LocationConfirm &);
00371     virtual BOOL OnReceiveLocationReject(const H323RasPDU &, const H225_LocationReject &);
00372     virtual BOOL OnReceiveLocationRequest(const H225_LocationRequest &);
00373     virtual BOOL OnReceiveLocationConfirm(const H225_LocationConfirm &);
00374     virtual BOOL OnReceiveLocationReject(const H225_LocationReject &);
00375 
00376     virtual void OnSendInfoRequest(H323RasPDU &, H225_InfoRequest &);
00377     virtual void OnSendInfoRequestAck(H323RasPDU &, H225_InfoRequestAck &);
00378     virtual void OnSendInfoRequestNak(H323RasPDU &, H225_InfoRequestNak &);
00379     virtual void OnSendInfoRequestResponse(H323RasPDU &, H225_InfoRequestResponse &);
00380     virtual void OnSendInfoRequest(H225_InfoRequest &);
00381     virtual void OnSendInfoRequestAck(H225_InfoRequestAck &);
00382     virtual void OnSendInfoRequestNak(H225_InfoRequestNak &);
00383     virtual void OnSendInfoRequestResponse(H225_InfoRequestResponse &);
00384     virtual BOOL OnReceiveInfoRequest(const H323RasPDU &, const H225_InfoRequest &);
00385     virtual BOOL OnReceiveInfoRequestAck(const H323RasPDU &, const H225_InfoRequestAck &);
00386     virtual BOOL OnReceiveInfoRequestNak(const H323RasPDU &, const H225_InfoRequestNak &);
00387     virtual BOOL OnReceiveInfoRequestResponse(const H323RasPDU &, const H225_InfoRequestResponse &);
00388     virtual BOOL OnReceiveInfoRequest(const H225_InfoRequest &);
00389     virtual BOOL OnReceiveInfoRequestAck(const H225_InfoRequestAck &);
00390     virtual BOOL OnReceiveInfoRequestNak(const H225_InfoRequestNak &);
00391     virtual BOOL OnReceiveInfoRequestResponse(const H225_InfoRequestResponse &);
00392 
00393     virtual void OnSendResourcesAvailableIndicate(H323RasPDU &, H225_ResourcesAvailableIndicate &);
00394     virtual void OnSendResourcesAvailableConfirm(H323RasPDU &, H225_ResourcesAvailableConfirm &);
00395     virtual void OnSendResourcesAvailableIndicate(H225_ResourcesAvailableIndicate &);
00396     virtual void OnSendResourcesAvailableConfirm(H225_ResourcesAvailableConfirm &);
00397     virtual BOOL OnReceiveResourcesAvailableIndicate(const H323RasPDU &, const H225_ResourcesAvailableIndicate &);
00398     virtual BOOL OnReceiveResourcesAvailableConfirm(const H323RasPDU &, const H225_ResourcesAvailableConfirm &);
00399     virtual BOOL OnReceiveResourcesAvailableIndicate(const H225_ResourcesAvailableIndicate &);
00400     virtual BOOL OnReceiveResourcesAvailableConfirm(const H225_ResourcesAvailableConfirm &);
00401 
00402 #ifdef H323_H248
00403     virtual void OnSendServiceControlIndication(H323RasPDU &, H225_ServiceControlIndication &);
00404     virtual void OnSendServiceControlResponse(H323RasPDU &, H225_ServiceControlResponse &);
00405     virtual void OnSendServiceControlIndication(H225_ServiceControlIndication &);
00406     virtual void OnSendServiceControlResponse(H225_ServiceControlResponse &);
00407     virtual BOOL OnReceiveServiceControlIndication(const H323RasPDU &, const H225_ServiceControlIndication &);
00408     virtual BOOL OnReceiveServiceControlResponse(const H323RasPDU &, const H225_ServiceControlResponse &);
00409     virtual BOOL OnReceiveServiceControlIndication(const H225_ServiceControlIndication &);
00410     virtual BOOL OnReceiveServiceControlResponse(const H225_ServiceControlResponse &);
00411 #endif 
00412 
00413     virtual void OnSendNonStandardMessage(H323RasPDU &, H225_NonStandardMessage &);
00414     virtual void OnSendNonStandardMessage(H225_NonStandardMessage &);
00415     virtual BOOL OnReceiveNonStandardMessage(const H323RasPDU &, const H225_NonStandardMessage &);
00416     virtual BOOL OnReceiveNonStandardMessage(const H225_NonStandardMessage &);
00417 
00418     virtual void OnSendUnknownMessageResponse(H323RasPDU &, H225_UnknownMessageResponse &);
00419     virtual void OnSendUnknownMessageResponse(H225_UnknownMessageResponse &);
00420     virtual BOOL OnReceiveUnknownMessageResponse(const H323RasPDU &, const H225_UnknownMessageResponse &);
00421     virtual BOOL OnReceiveUnknownMessageResponse(const H225_UnknownMessageResponse &);
00422 
00423     virtual void OnSendRequestInProgress(H323RasPDU &, H225_RequestInProgress &);
00424     virtual void OnSendRequestInProgress(H225_RequestInProgress &);
00425     virtual BOOL OnReceiveRequestInProgress(const H323RasPDU &, const H225_RequestInProgress &);
00426     virtual BOOL OnReceiveRequestInProgress(const H225_RequestInProgress &);
00427 
00428     virtual BOOL OnSendFeatureSet(unsigned, H225_FeatureSet &) const
00429     { return FALSE; }
00430 
00431     virtual void OnReceiveFeatureSet(unsigned, const H225_FeatureSet &) const
00432     { }
00433 
00436     virtual BOOL OnReceiveUnknown(
00437       const H323RasPDU & pdu  
00438     );
00440 
00447     const PString & GetIdentifier() const { return gatekeeperIdentifier; }
00448 
00453     void SetIdentifier(const PString & id) { gatekeeperIdentifier = id; }
00455 
00456   protected:
00457     // Option variables
00458     PString gatekeeperIdentifier;
00459 };
00460 
00461 
00462 #endif // __OPAL_H225RAS_H
00463 
00464 

Generated on Tue May 8 19:55:19 2007 for OpenH323 by  doxygen 1.5.1