00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162 #ifndef __OPAL_H225RAS_H
00163 #define __OPAL_H225RAS_H
00164
00165 #ifdef P_USE_PRAGMA
00166 #pragma interface
00167 #endif
00168
00169
00170 #include "transports.h"
00171 #include "h235auth.h"
00172 #include "h323trans.h"
00173 #include "svcctrl.h"
00174
00175
00176 class PASN_Sequence;
00177 class PASN_Choice;
00178
00179 class H225_GatekeeperRequest;
00180 class H225_GatekeeperConfirm;
00181 class H225_GatekeeperReject;
00182 class H225_RegistrationRequest;
00183 class H225_RegistrationConfirm;
00184 class H225_RegistrationReject;
00185 class H225_UnregistrationRequest;
00186 class H225_UnregistrationConfirm;
00187 class H225_UnregistrationReject;
00188 class H225_AdmissionRequest;
00189 class H225_AdmissionConfirm;
00190 class H225_AdmissionReject;
00191 class H225_BandwidthRequest;
00192 class H225_BandwidthConfirm;
00193 class H225_BandwidthReject;
00194 class H225_DisengageRequest;
00195 class H225_DisengageConfirm;
00196 class H225_DisengageReject;
00197 class H225_LocationRequest;
00198 class H225_LocationConfirm;
00199 class H225_LocationReject;
00200 class H225_InfoRequest;
00201 class H225_InfoRequestResponse;
00202 class H225_NonStandardMessage;
00203 class H225_UnknownMessageResponse;
00204 class H225_RequestInProgress;
00205 class H225_ResourcesAvailableIndicate;
00206 class H225_ResourcesAvailableConfirm;
00207 class H225_InfoRequestAck;
00208 class H225_InfoRequestNak;
00209 class H225_ArrayOf_CryptoH323Token;
00210 class H225_FeatureSet;
00211
00212 class H323EndPoint;
00213 class H323RasPDU;
00214
00215
00216
00218
00221 class H225_RAS : public H323Transactor
00222 {
00223 PCLASSINFO(H225_RAS, H323Transactor);
00224 public:
00227 enum {
00228 DefaultRasMulticastPort = 1718,
00229 DefaultRasUdpPort = 1719
00230 };
00231
00234 H225_RAS(
00235 H323EndPoint & endpoint,
00236 H323Transport * transport
00237 );
00238
00241 ~H225_RAS();
00243
00248 void PrintOn(
00249 ostream & strm
00250 ) const;
00252
00257 virtual H323TransactionPDU * CreateTransactionPDU() const;
00258
00261 virtual BOOL HandleTransaction(
00262 const PASN_Object & rawPDU
00263 );
00264
00267 virtual void OnSendingPDU(
00268 PASN_Object & rawPDU
00269 );
00271
00274 virtual void OnSendGatekeeperRequest(H323RasPDU &, H225_GatekeeperRequest &);
00275 virtual void OnSendGatekeeperConfirm(H323RasPDU &, H225_GatekeeperConfirm &);
00276 virtual void OnSendGatekeeperReject(H323RasPDU &, H225_GatekeeperReject &);
00277 virtual void OnSendGatekeeperRequest(H225_GatekeeperRequest &);
00278 virtual void OnSendGatekeeperConfirm(H225_GatekeeperConfirm &);
00279 virtual void OnSendGatekeeperReject(H225_GatekeeperReject &);
00280 virtual BOOL OnReceiveGatekeeperRequest(const H323RasPDU &, const H225_GatekeeperRequest &);
00281 virtual BOOL OnReceiveGatekeeperConfirm(const H323RasPDU &, const H225_GatekeeperConfirm &);
00282 virtual BOOL OnReceiveGatekeeperReject(const H323RasPDU &, const H225_GatekeeperReject &);
00283 virtual BOOL OnReceiveGatekeeperRequest(const H225_GatekeeperRequest &);
00284 virtual BOOL OnReceiveGatekeeperConfirm(const H225_GatekeeperConfirm &);
00285 virtual BOOL OnReceiveGatekeeperReject(const H225_GatekeeperReject &);
00286
00287 virtual void OnSendRegistrationRequest(H323RasPDU &, H225_RegistrationRequest &);
00288 virtual void OnSendRegistrationConfirm(H323RasPDU &, H225_RegistrationConfirm &);
00289 virtual void OnSendRegistrationReject(H323RasPDU &, H225_RegistrationReject &);
00290 virtual void OnSendRegistrationRequest(H225_RegistrationRequest &);
00291 virtual void OnSendRegistrationConfirm(H225_RegistrationConfirm &);
00292 virtual void OnSendRegistrationReject(H225_RegistrationReject &);
00293 virtual BOOL OnReceiveRegistrationRequest(const H323RasPDU &, const H225_RegistrationRequest &);
00294 virtual BOOL OnReceiveRegistrationConfirm(const H323RasPDU &, const H225_RegistrationConfirm &);
00295 virtual BOOL OnReceiveRegistrationReject(const H323RasPDU &, const H225_RegistrationReject &);
00296 virtual BOOL OnReceiveRegistrationRequest(const H225_RegistrationRequest &);
00297 virtual BOOL OnReceiveRegistrationConfirm(const H225_RegistrationConfirm &);
00298 virtual BOOL OnReceiveRegistrationReject(const H225_RegistrationReject &);
00299
00300 virtual void OnSendUnregistrationRequest(H323RasPDU &, H225_UnregistrationRequest &);
00301 virtual void OnSendUnregistrationConfirm(H323RasPDU &, H225_UnregistrationConfirm &);
00302 virtual void OnSendUnregistrationReject(H323RasPDU &, H225_UnregistrationReject &);
00303 virtual void OnSendUnregistrationRequest(H225_UnregistrationRequest &);
00304 virtual void OnSendUnregistrationConfirm(H225_UnregistrationConfirm &);
00305 virtual void OnSendUnregistrationReject(H225_UnregistrationReject &);
00306 virtual BOOL OnReceiveUnregistrationRequest(const H323RasPDU &, const H225_UnregistrationRequest &);
00307 virtual BOOL OnReceiveUnregistrationConfirm(const H323RasPDU &, const H225_UnregistrationConfirm &);
00308 virtual BOOL OnReceiveUnregistrationReject(const H323RasPDU &, const H225_UnregistrationReject &);
00309 virtual BOOL OnReceiveUnregistrationRequest(const H225_UnregistrationRequest &);
00310 virtual BOOL OnReceiveUnregistrationConfirm(const H225_UnregistrationConfirm &);
00311 virtual BOOL OnReceiveUnregistrationReject(const H225_UnregistrationReject &);
00312
00313 virtual void OnSendAdmissionRequest(H323RasPDU &, H225_AdmissionRequest &);
00314 virtual void OnSendAdmissionConfirm(H323RasPDU &, H225_AdmissionConfirm &);
00315 virtual void OnSendAdmissionReject(H323RasPDU &, H225_AdmissionReject &);
00316 virtual void OnSendAdmissionRequest(H225_AdmissionRequest &);
00317 virtual void OnSendAdmissionConfirm(H225_AdmissionConfirm &);
00318 virtual void OnSendAdmissionReject(H225_AdmissionReject &);
00319 virtual BOOL OnReceiveAdmissionRequest(const H323RasPDU &, const H225_AdmissionRequest &);
00320 virtual BOOL OnReceiveAdmissionConfirm(const H323RasPDU &, const H225_AdmissionConfirm &);
00321 virtual BOOL OnReceiveAdmissionReject(const H323RasPDU &, const H225_AdmissionReject &);
00322 virtual BOOL OnReceiveAdmissionRequest(const H225_AdmissionRequest &);
00323 virtual BOOL OnReceiveAdmissionConfirm(const H225_AdmissionConfirm &);
00324 virtual BOOL OnReceiveAdmissionReject(const H225_AdmissionReject &);
00325
00326 virtual void OnSendBandwidthRequest(H323RasPDU &, H225_BandwidthRequest &);
00327 virtual void OnSendBandwidthConfirm(H323RasPDU &, H225_BandwidthConfirm &);
00328 virtual void OnSendBandwidthReject(H323RasPDU &, H225_BandwidthReject &);
00329 virtual void OnSendBandwidthRequest(H225_BandwidthRequest &);
00330 virtual void OnSendBandwidthConfirm(H225_BandwidthConfirm &);
00331 virtual void OnSendBandwidthReject(H225_BandwidthReject &);
00332 virtual BOOL OnReceiveBandwidthRequest(const H323RasPDU &, const H225_BandwidthRequest &);
00333 virtual BOOL OnReceiveBandwidthConfirm(const H323RasPDU &, const H225_BandwidthConfirm &);
00334 virtual BOOL OnReceiveBandwidthReject(const H323RasPDU &, const H225_BandwidthReject &);
00335 virtual BOOL OnReceiveBandwidthRequest(const H225_BandwidthRequest &);
00336 virtual BOOL OnReceiveBandwidthConfirm(const H225_BandwidthConfirm &);
00337 virtual BOOL OnReceiveBandwidthReject(const H225_BandwidthReject &);
00338
00339 virtual void OnSendDisengageRequest(H323RasPDU &, H225_DisengageRequest &);
00340 virtual void OnSendDisengageConfirm(H323RasPDU &, H225_DisengageConfirm &);
00341 virtual void OnSendDisengageReject(H323RasPDU &, H225_DisengageReject &);
00342 virtual void OnSendDisengageRequest(H225_DisengageRequest &);
00343 virtual void OnSendDisengageConfirm(H225_DisengageConfirm &);
00344 virtual void OnSendDisengageReject(H225_DisengageReject &);
00345 virtual BOOL OnReceiveDisengageRequest(const H323RasPDU &, const H225_DisengageRequest &);
00346 virtual BOOL OnReceiveDisengageConfirm(const H323RasPDU &, const H225_DisengageConfirm &);
00347 virtual BOOL OnReceiveDisengageReject(const H323RasPDU &, const H225_DisengageReject &);
00348 virtual BOOL OnReceiveDisengageRequest(const H225_DisengageRequest &);
00349 virtual BOOL OnReceiveDisengageConfirm(const H225_DisengageConfirm &);
00350 virtual BOOL OnReceiveDisengageReject(const H225_DisengageReject &);
00351
00352 virtual void OnSendLocationRequest(H323RasPDU &, H225_LocationRequest &);
00353 virtual void OnSendLocationConfirm(H323RasPDU &, H225_LocationConfirm &);
00354 virtual void OnSendLocationReject(H323RasPDU &, H225_LocationReject &);
00355 virtual void OnSendLocationRequest(H225_LocationRequest &);
00356 virtual void OnSendLocationConfirm(H225_LocationConfirm &);
00357 virtual void OnSendLocationReject(H225_LocationReject &);
00358 virtual BOOL OnReceiveLocationRequest(const H323RasPDU &, const H225_LocationRequest &);
00359 virtual BOOL OnReceiveLocationConfirm(const H323RasPDU &, const H225_LocationConfirm &);
00360 virtual BOOL OnReceiveLocationReject(const H323RasPDU &, const H225_LocationReject &);
00361 virtual BOOL OnReceiveLocationRequest(const H225_LocationRequest &);
00362 virtual BOOL OnReceiveLocationConfirm(const H225_LocationConfirm &);
00363 virtual BOOL OnReceiveLocationReject(const H225_LocationReject &);
00364
00365 virtual void OnSendInfoRequest(H323RasPDU &, H225_InfoRequest &);
00366 virtual void OnSendInfoRequestAck(H323RasPDU &, H225_InfoRequestAck &);
00367 virtual void OnSendInfoRequestNak(H323RasPDU &, H225_InfoRequestNak &);
00368 virtual void OnSendInfoRequestResponse(H323RasPDU &, H225_InfoRequestResponse &);
00369 virtual void OnSendInfoRequest(H225_InfoRequest &);
00370 virtual void OnSendInfoRequestAck(H225_InfoRequestAck &);
00371 virtual void OnSendInfoRequestNak(H225_InfoRequestNak &);
00372 virtual void OnSendInfoRequestResponse(H225_InfoRequestResponse &);
00373 virtual BOOL OnReceiveInfoRequest(const H323RasPDU &, const H225_InfoRequest &);
00374 virtual BOOL OnReceiveInfoRequestAck(const H323RasPDU &, const H225_InfoRequestAck &);
00375 virtual BOOL OnReceiveInfoRequestNak(const H323RasPDU &, const H225_InfoRequestNak &);
00376 virtual BOOL OnReceiveInfoRequestResponse(const H323RasPDU &, const H225_InfoRequestResponse &);
00377 virtual BOOL OnReceiveInfoRequest(const H225_InfoRequest &);
00378 virtual BOOL OnReceiveInfoRequestAck(const H225_InfoRequestAck &);
00379 virtual BOOL OnReceiveInfoRequestNak(const H225_InfoRequestNak &);
00380 virtual BOOL OnReceiveInfoRequestResponse(const H225_InfoRequestResponse &);
00381
00382 virtual void OnSendResourcesAvailableIndicate(H323RasPDU &, H225_ResourcesAvailableIndicate &);
00383 virtual void OnSendResourcesAvailableConfirm(H323RasPDU &, H225_ResourcesAvailableConfirm &);
00384 virtual void OnSendResourcesAvailableIndicate(H225_ResourcesAvailableIndicate &);
00385 virtual void OnSendResourcesAvailableConfirm(H225_ResourcesAvailableConfirm &);
00386 virtual BOOL OnReceiveResourcesAvailableIndicate(const H323RasPDU &, const H225_ResourcesAvailableIndicate &);
00387 virtual BOOL OnReceiveResourcesAvailableConfirm(const H323RasPDU &, const H225_ResourcesAvailableConfirm &);
00388 virtual BOOL OnReceiveResourcesAvailableIndicate(const H225_ResourcesAvailableIndicate &);
00389 virtual BOOL OnReceiveResourcesAvailableConfirm(const H225_ResourcesAvailableConfirm &);
00390
00391 virtual void OnSendServiceControlIndication(H323RasPDU &, H225_ServiceControlIndication &);
00392 virtual void OnSendServiceControlResponse(H323RasPDU &, H225_ServiceControlResponse &);
00393 virtual void OnSendServiceControlIndication(H225_ServiceControlIndication &);
00394 virtual void OnSendServiceControlResponse(H225_ServiceControlResponse &);
00395 virtual BOOL OnReceiveServiceControlIndication(const H323RasPDU &, const H225_ServiceControlIndication &);
00396 virtual BOOL OnReceiveServiceControlResponse(const H323RasPDU &, const H225_ServiceControlResponse &);
00397 virtual BOOL OnReceiveServiceControlIndication(const H225_ServiceControlIndication &);
00398 virtual BOOL OnReceiveServiceControlResponse(const H225_ServiceControlResponse &);
00399
00400 virtual void OnSendNonStandardMessage(H323RasPDU &, H225_NonStandardMessage &);
00401 virtual void OnSendNonStandardMessage(H225_NonStandardMessage &);
00402 virtual BOOL OnReceiveNonStandardMessage(const H323RasPDU &, const H225_NonStandardMessage &);
00403 virtual BOOL OnReceiveNonStandardMessage(const H225_NonStandardMessage &);
00404
00405 virtual void OnSendUnknownMessageResponse(H323RasPDU &, H225_UnknownMessageResponse &);
00406 virtual void OnSendUnknownMessageResponse(H225_UnknownMessageResponse &);
00407 virtual BOOL OnReceiveUnknownMessageResponse(const H323RasPDU &, const H225_UnknownMessageResponse &);
00408 virtual BOOL OnReceiveUnknownMessageResponse(const H225_UnknownMessageResponse &);
00409
00410 virtual void OnSendRequestInProgress(H323RasPDU &, H225_RequestInProgress &);
00411 virtual void OnSendRequestInProgress(H225_RequestInProgress &);
00412 virtual BOOL OnReceiveRequestInProgress(const H323RasPDU &, const H225_RequestInProgress &);
00413 virtual BOOL OnReceiveRequestInProgress(const H225_RequestInProgress &);
00414
00415 virtual BOOL OnSendFeatureSet(unsigned, H225_FeatureSet &) const
00416 { return FALSE; }
00417
00418 virtual void OnReceiveFeatureSet(unsigned, const H225_FeatureSet &) const
00419 { }
00420
00423 virtual BOOL OnReceiveUnknown(
00424 const H323RasPDU & pdu
00425 );
00427
00434 const PString & GetIdentifier() const { return gatekeeperIdentifier; }
00435
00440 void SetIdentifier(const PString & id) { gatekeeperIdentifier = id; }
00442
00443 protected:
00444
00445 PString gatekeeperIdentifier;
00446 };
00447
00448
00449 #endif // __OPAL_H225RAS_H
00450
00451