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 #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
00458 PString gatekeeperIdentifier;
00459 };
00460
00461
00462 #endif // __OPAL_H225RAS_H
00463
00464