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
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174 #ifndef __OPAL_H225RAS_H
00175 #define __OPAL_H225RAS_H
00176
00177 #ifdef P_USE_PRAGMA
00178 #pragma interface
00179 #endif
00180
00181 #include "openh323buildopts.h"
00182 #include "transports.h"
00183 #include "h235auth.h"
00184 #include "h323trans.h"
00185
00186 #ifdef H323_H248
00187 #include "svcctrl.h"
00188 #endif
00189
00190 class PASN_Sequence;
00191 class PASN_Choice;
00192
00193 class H225_GatekeeperRequest;
00194 class H225_GatekeeperConfirm;
00195 class H225_GatekeeperReject;
00196 class H225_RegistrationRequest;
00197 class H225_RegistrationConfirm;
00198 class H225_RegistrationReject;
00199 class H225_UnregistrationRequest;
00200 class H225_UnregistrationConfirm;
00201 class H225_UnregistrationReject;
00202 class H225_AdmissionRequest;
00203 class H225_AdmissionConfirm;
00204 class H225_AdmissionReject;
00205 class H225_BandwidthRequest;
00206 class H225_BandwidthConfirm;
00207 class H225_BandwidthReject;
00208 class H225_DisengageRequest;
00209 class H225_DisengageConfirm;
00210 class H225_DisengageReject;
00211 class H225_LocationRequest;
00212 class H225_LocationConfirm;
00213 class H225_LocationReject;
00214 class H225_InfoRequest;
00215 class H225_InfoRequestResponse;
00216 class H225_NonStandardMessage;
00217 class H225_UnknownMessageResponse;
00218 class H225_RequestInProgress;
00219 class H225_ResourcesAvailableIndicate;
00220 class H225_ResourcesAvailableConfirm;
00221 class H225_InfoRequestAck;
00222 class H225_InfoRequestNak;
00223 class H225_ArrayOf_CryptoH323Token;
00224 class H225_FeatureSet;
00225
00226 class H323EndPoint;
00227 class H323RasPDU;
00228
00229
00230
00232
00235 class H225_RAS : public H323Transactor
00236 {
00237 PCLASSINFO(H225_RAS, H323Transactor);
00238 public:
00241 enum {
00242 DefaultRasMulticastPort = 1718,
00243 DefaultRasUdpPort = 1719
00244 };
00245
00248 H225_RAS(
00249 H323EndPoint & endpoint,
00250 H323Transport * transport
00251 );
00252
00255 ~H225_RAS();
00257
00262 void PrintOn(
00263 ostream & strm
00264 ) const;
00266
00271 virtual H323TransactionPDU * CreateTransactionPDU() const;
00272
00275 virtual BOOL HandleTransaction(
00276 const PASN_Object & rawPDU
00277 );
00278
00281 virtual void OnSendingPDU(
00282 PASN_Object & rawPDU
00283 );
00285
00288 virtual void OnSendGatekeeperRequest(H323RasPDU &, H225_GatekeeperRequest &);
00289 virtual void OnSendGatekeeperConfirm(H323RasPDU &, H225_GatekeeperConfirm &);
00290 virtual void OnSendGatekeeperReject(H323RasPDU &, H225_GatekeeperReject &);
00291 virtual void OnSendGatekeeperRequest(H225_GatekeeperRequest &);
00292 virtual void OnSendGatekeeperConfirm(H225_GatekeeperConfirm &);
00293 virtual void OnSendGatekeeperReject(H225_GatekeeperReject &);
00294 virtual BOOL OnReceiveGatekeeperRequest(const H323RasPDU &, const H225_GatekeeperRequest &);
00295 virtual BOOL OnReceiveGatekeeperConfirm(const H323RasPDU &, const H225_GatekeeperConfirm &);
00296 virtual BOOL OnReceiveGatekeeperReject(const H323RasPDU &, const H225_GatekeeperReject &);
00297 virtual BOOL OnReceiveGatekeeperRequest(const H225_GatekeeperRequest &);
00298 virtual BOOL OnReceiveGatekeeperConfirm(const H225_GatekeeperConfirm &);
00299 virtual BOOL OnReceiveGatekeeperReject(const H225_GatekeeperReject &);
00300
00301 virtual void OnSendRegistrationRequest(H323RasPDU &, H225_RegistrationRequest &);
00302 virtual void OnSendRegistrationConfirm(H323RasPDU &, H225_RegistrationConfirm &);
00303 virtual void OnSendRegistrationReject(H323RasPDU &, H225_RegistrationReject &);
00304 virtual void OnSendRegistrationRequest(H225_RegistrationRequest &);
00305 virtual void OnSendRegistrationConfirm(H225_RegistrationConfirm &);
00306 virtual void OnSendRegistrationReject(H225_RegistrationReject &);
00307 virtual BOOL OnReceiveRegistrationRequest(const H323RasPDU &, const H225_RegistrationRequest &);
00308 virtual BOOL OnReceiveRegistrationConfirm(const H323RasPDU &, const H225_RegistrationConfirm &);
00309 virtual BOOL OnReceiveRegistrationReject(const H323RasPDU &, const H225_RegistrationReject &);
00310 virtual BOOL OnReceiveRegistrationRequest(const H225_RegistrationRequest &);
00311 virtual BOOL OnReceiveRegistrationConfirm(const H225_RegistrationConfirm &);
00312 virtual BOOL OnReceiveRegistrationReject(const H225_RegistrationReject &);
00313
00314 virtual void OnSendUnregistrationRequest(H323RasPDU &, H225_UnregistrationRequest &);
00315 virtual void OnSendUnregistrationConfirm(H323RasPDU &, H225_UnregistrationConfirm &);
00316 virtual void OnSendUnregistrationReject(H323RasPDU &, H225_UnregistrationReject &);
00317 virtual void OnSendUnregistrationRequest(H225_UnregistrationRequest &);
00318 virtual void OnSendUnregistrationConfirm(H225_UnregistrationConfirm &);
00319 virtual void OnSendUnregistrationReject(H225_UnregistrationReject &);
00320 virtual BOOL OnReceiveUnregistrationRequest(const H323RasPDU &, const H225_UnregistrationRequest &);
00321 virtual BOOL OnReceiveUnregistrationConfirm(const H323RasPDU &, const H225_UnregistrationConfirm &);
00322 virtual BOOL OnReceiveUnregistrationReject(const H323RasPDU &, const H225_UnregistrationReject &);
00323 virtual BOOL OnReceiveUnregistrationRequest(const H225_UnregistrationRequest &);
00324 virtual BOOL OnReceiveUnregistrationConfirm(const H225_UnregistrationConfirm &);
00325 virtual BOOL OnReceiveUnregistrationReject(const H225_UnregistrationReject &);
00326
00327 virtual void OnSendAdmissionRequest(H323RasPDU &, H225_AdmissionRequest &);
00328 virtual void OnSendAdmissionConfirm(H323RasPDU &, H225_AdmissionConfirm &);
00329 virtual void OnSendAdmissionReject(H323RasPDU &, H225_AdmissionReject &);
00330 virtual void OnSendAdmissionRequest(H225_AdmissionRequest &);
00331 virtual void OnSendAdmissionConfirm(H225_AdmissionConfirm &);
00332 virtual void OnSendAdmissionReject(H225_AdmissionReject &);
00333 virtual BOOL OnReceiveAdmissionRequest(const H323RasPDU &, const H225_AdmissionRequest &);
00334 virtual BOOL OnReceiveAdmissionConfirm(const H323RasPDU &, const H225_AdmissionConfirm &);
00335 virtual BOOL OnReceiveAdmissionReject(const H323RasPDU &, const H225_AdmissionReject &);
00336 virtual BOOL OnReceiveAdmissionRequest(const H225_AdmissionRequest &);
00337 virtual BOOL OnReceiveAdmissionConfirm(const H225_AdmissionConfirm &);
00338 virtual BOOL OnReceiveAdmissionReject(const H225_AdmissionReject &);
00339
00340 virtual void OnSendBandwidthRequest(H323RasPDU &, H225_BandwidthRequest &);
00341 virtual void OnSendBandwidthConfirm(H323RasPDU &, H225_BandwidthConfirm &);
00342 virtual void OnSendBandwidthReject(H323RasPDU &, H225_BandwidthReject &);
00343 virtual void OnSendBandwidthRequest(H225_BandwidthRequest &);
00344 virtual void OnSendBandwidthConfirm(H225_BandwidthConfirm &);
00345 virtual void OnSendBandwidthReject(H225_BandwidthReject &);
00346 virtual BOOL OnReceiveBandwidthRequest(const H323RasPDU &, const H225_BandwidthRequest &);
00347 virtual BOOL OnReceiveBandwidthConfirm(const H323RasPDU &, const H225_BandwidthConfirm &);
00348 virtual BOOL OnReceiveBandwidthReject(const H323RasPDU &, const H225_BandwidthReject &);
00349 virtual BOOL OnReceiveBandwidthRequest(const H225_BandwidthRequest &);
00350 virtual BOOL OnReceiveBandwidthConfirm(const H225_BandwidthConfirm &);
00351 virtual BOOL OnReceiveBandwidthReject(const H225_BandwidthReject &);
00352
00353 virtual void OnSendDisengageRequest(H323RasPDU &, H225_DisengageRequest &);
00354 virtual void OnSendDisengageConfirm(H323RasPDU &, H225_DisengageConfirm &);
00355 virtual void OnSendDisengageReject(H323RasPDU &, H225_DisengageReject &);
00356 virtual void OnSendDisengageRequest(H225_DisengageRequest &);
00357 virtual void OnSendDisengageConfirm(H225_DisengageConfirm &);
00358 virtual void OnSendDisengageReject(H225_DisengageReject &);
00359 virtual BOOL OnReceiveDisengageRequest(const H323RasPDU &, const H225_DisengageRequest &);
00360 virtual BOOL OnReceiveDisengageConfirm(const H323RasPDU &, const H225_DisengageConfirm &);
00361 virtual BOOL OnReceiveDisengageReject(const H323RasPDU &, const H225_DisengageReject &);
00362 virtual BOOL OnReceiveDisengageRequest(const H225_DisengageRequest &);
00363 virtual BOOL OnReceiveDisengageConfirm(const H225_DisengageConfirm &);
00364 virtual BOOL OnReceiveDisengageReject(const H225_DisengageReject &);
00365
00366 virtual void OnSendLocationRequest(H323RasPDU &, H225_LocationRequest &);
00367 virtual void OnSendLocationConfirm(H323RasPDU &, H225_LocationConfirm &);
00368 virtual void OnSendLocationReject(H323RasPDU &, H225_LocationReject &);
00369 virtual void OnSendLocationRequest(H225_LocationRequest &);
00370 virtual void OnSendLocationConfirm(H225_LocationConfirm &);
00371 virtual void OnSendLocationReject(H225_LocationReject &);
00372 virtual BOOL OnReceiveLocationRequest(const H323RasPDU &, const H225_LocationRequest &);
00373 virtual BOOL OnReceiveLocationConfirm(const H323RasPDU &, const H225_LocationConfirm &);
00374 virtual BOOL OnReceiveLocationReject(const H323RasPDU &, const H225_LocationReject &);
00375 virtual BOOL OnReceiveLocationRequest(const H225_LocationRequest &);
00376 virtual BOOL OnReceiveLocationConfirm(const H225_LocationConfirm &);
00377 virtual BOOL OnReceiveLocationReject(const H225_LocationReject &);
00378
00379 virtual void OnSendInfoRequest(H323RasPDU &, H225_InfoRequest &);
00380 virtual void OnSendInfoRequestAck(H323RasPDU &, H225_InfoRequestAck &);
00381 virtual void OnSendInfoRequestNak(H323RasPDU &, H225_InfoRequestNak &);
00382 virtual void OnSendInfoRequestResponse(H323RasPDU &, H225_InfoRequestResponse &);
00383 virtual void OnSendInfoRequest(H225_InfoRequest &);
00384 virtual void OnSendInfoRequestAck(H225_InfoRequestAck &);
00385 virtual void OnSendInfoRequestNak(H225_InfoRequestNak &);
00386 virtual void OnSendInfoRequestResponse(H225_InfoRequestResponse &);
00387 virtual BOOL OnReceiveInfoRequest(const H323RasPDU &, const H225_InfoRequest &);
00388 virtual BOOL OnReceiveInfoRequestAck(const H323RasPDU &, const H225_InfoRequestAck &);
00389 virtual BOOL OnReceiveInfoRequestNak(const H323RasPDU &, const H225_InfoRequestNak &);
00390 virtual BOOL OnReceiveInfoRequestResponse(const H323RasPDU &, const H225_InfoRequestResponse &);
00391 virtual BOOL OnReceiveInfoRequest(const H225_InfoRequest &);
00392 virtual BOOL OnReceiveInfoRequestAck(const H225_InfoRequestAck &);
00393 virtual BOOL OnReceiveInfoRequestNak(const H225_InfoRequestNak &);
00394 virtual BOOL OnReceiveInfoRequestResponse(const H225_InfoRequestResponse &);
00395
00396 virtual void OnSendResourcesAvailableIndicate(H323RasPDU &, H225_ResourcesAvailableIndicate &);
00397 virtual void OnSendResourcesAvailableConfirm(H323RasPDU &, H225_ResourcesAvailableConfirm &);
00398 virtual void OnSendResourcesAvailableIndicate(H225_ResourcesAvailableIndicate &);
00399 virtual void OnSendResourcesAvailableConfirm(H225_ResourcesAvailableConfirm &);
00400 virtual BOOL OnReceiveResourcesAvailableIndicate(const H323RasPDU &, const H225_ResourcesAvailableIndicate &);
00401 virtual BOOL OnReceiveResourcesAvailableConfirm(const H323RasPDU &, const H225_ResourcesAvailableConfirm &);
00402 virtual BOOL OnReceiveResourcesAvailableIndicate(const H225_ResourcesAvailableIndicate &);
00403 virtual BOOL OnReceiveResourcesAvailableConfirm(const H225_ResourcesAvailableConfirm &);
00404
00405 #ifdef H323_H248
00406 virtual void OnSendServiceControlIndication(H323RasPDU &, H225_ServiceControlIndication &);
00407 virtual void OnSendServiceControlResponse(H323RasPDU &, H225_ServiceControlResponse &);
00408 virtual void OnSendServiceControlIndication(H225_ServiceControlIndication &);
00409 virtual void OnSendServiceControlResponse(H225_ServiceControlResponse &);
00410 virtual BOOL OnReceiveServiceControlIndication(const H323RasPDU &, const H225_ServiceControlIndication &);
00411 virtual BOOL OnReceiveServiceControlResponse(const H323RasPDU &, const H225_ServiceControlResponse &);
00412 virtual BOOL OnReceiveServiceControlIndication(const H225_ServiceControlIndication &);
00413 virtual BOOL OnReceiveServiceControlResponse(const H225_ServiceControlResponse &);
00414 #endif
00415
00416 virtual void OnSendNonStandardMessage(H323RasPDU &, H225_NonStandardMessage &);
00417 virtual void OnSendNonStandardMessage(H225_NonStandardMessage &);
00418 virtual BOOL OnReceiveNonStandardMessage(const H323RasPDU &, const H225_NonStandardMessage &);
00419 virtual BOOL OnReceiveNonStandardMessage(const H225_NonStandardMessage &);
00420
00421 virtual void OnSendUnknownMessageResponse(H323RasPDU &, H225_UnknownMessageResponse &);
00422 virtual void OnSendUnknownMessageResponse(H225_UnknownMessageResponse &);
00423 virtual BOOL OnReceiveUnknownMessageResponse(const H323RasPDU &, const H225_UnknownMessageResponse &);
00424 virtual BOOL OnReceiveUnknownMessageResponse(const H225_UnknownMessageResponse &);
00425
00426 virtual void OnSendRequestInProgress(H323RasPDU &, H225_RequestInProgress &);
00427 virtual void OnSendRequestInProgress(H225_RequestInProgress &);
00428 virtual BOOL OnReceiveRequestInProgress(const H323RasPDU &, const H225_RequestInProgress &);
00429 virtual BOOL OnReceiveRequestInProgress(const H225_RequestInProgress &);
00430
00431 virtual BOOL OnSendFeatureSet(unsigned, H225_FeatureSet &) const
00432 { return FALSE; }
00433
00434 virtual void OnReceiveFeatureSet(unsigned, const H225_FeatureSet &) const
00435 { }
00436
00439 virtual BOOL OnReceiveUnknown(
00440 const H323RasPDU & pdu
00441 );
00443
00450 const PString & GetIdentifier() const { return gatekeeperIdentifier; }
00451
00456 void SetIdentifier(const PString & id) { gatekeeperIdentifier = id; }
00458
00459 protected:
00460
00461 PString gatekeeperIdentifier;
00462 };
00463
00464
00465 #endif // __OPAL_H225RAS_H
00466
00467