OPAL  Version 3.12.9
h225ras.h
Go to the documentation of this file.
1 /*
2  * h225ras.h
3  *
4  * H.225 RAS protocol handler
5  *
6  * Open H323 Library
7  *
8  * Copyright (c) 2001 Equivalence Pty. Ltd.
9  *
10  * The contents of this file are subject to the Mozilla Public License
11  * Version 1.0 (the "License"); you may not use this file except in
12  * compliance with the License. You may obtain a copy of the License at
13  * http://www.mozilla.org/MPL/
14  *
15  * Software distributed under the License is distributed on an "AS IS"
16  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
17  * the License for the specific language governing rights and limitations
18  * under the License.
19  *
20  * The Original Code is Open H323 Library.
21  *
22  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
23  *
24  * Portions of this code were written with the assisance of funding from
25  * iFace, Inc. http://www.iface.com
26  *
27  * Contributor(s): ______________________________________.
28  *
29  * $Revision: 26465 $
30  * $Author: rjongbloed $
31  * $Date: 2011-09-24 13:00:15 +1000 (Sat, 24 Sep 2011) $
32  */
33 
34 #ifndef OPAL_H323_H225RAS_H
35 #define OPAL_H323_H225RAS_H
36 
37 #ifdef P_USE_PRAGMA
38 #pragma interface
39 #endif
40 
41 #include <opal/buildopts.h>
42 
43 #if OPAL_H323
44 
45 #include <h323/transaddr.h>
46 #include <h323/h235auth.h>
47 #include <h323/h323trans.h>
48 #include <h323/svcctrl.h>
49 
50 
51 class PASN_Sequence;
52 class PASN_Choice;
53 
54 class H225_GatekeeperRequest;
55 class H225_GatekeeperConfirm;
56 class H225_GatekeeperReject;
57 class H225_RegistrationRequest;
58 class H225_RegistrationConfirm;
59 class H225_RegistrationReject;
60 class H225_UnregistrationRequest;
61 class H225_UnregistrationConfirm;
62 class H225_UnregistrationReject;
63 class H225_AdmissionRequest;
64 class H225_AdmissionConfirm;
65 class H225_AdmissionReject;
66 class H225_BandwidthRequest;
67 class H225_BandwidthConfirm;
68 class H225_BandwidthReject;
69 class H225_DisengageRequest;
70 class H225_DisengageConfirm;
71 class H225_DisengageReject;
72 class H225_LocationRequest;
73 class H225_LocationConfirm;
74 class H225_LocationReject;
75 class H225_InfoRequest;
76 class H225_InfoRequestResponse;
77 class H225_NonStandardMessage;
78 class H225_UnknownMessageResponse;
79 class H225_RequestInProgress;
80 class H225_ResourcesAvailableIndicate;
81 class H225_ResourcesAvailableConfirm;
82 class H225_InfoRequestAck;
83 class H225_InfoRequestNak;
84 class H225_ArrayOf_CryptoH323Token;
85 class H225_FeatureSet;
86 
87 class H323EndPoint;
88 class H323Connection;
89 class H323RasPDU;
90 
91 
93 
96 class H225_RAS : public H323Transactor
97 {
98  PCLASSINFO(H225_RAS, H323Transactor);
99  public:
102  enum {
105  };
106 
109  H225_RAS(
112  );
113 
116  ~H225_RAS();
118 
123  void PrintOn(
124  ostream & strm
125  ) const;
127 
132  virtual H323TransactionPDU * CreateTransactionPDU() const;
133 
136  virtual PBoolean HandleTransaction(
137  const PASN_Object & rawPDU
138  );
139 
142  virtual void OnSendingPDU(
143  PASN_Object & rawPDU
144  );
146 
149  virtual void OnSendGatekeeperRequest(H323RasPDU &, H225_GatekeeperRequest &);
150  virtual void OnSendGatekeeperConfirm(H323RasPDU &, H225_GatekeeperConfirm &);
151  virtual void OnSendGatekeeperReject(H323RasPDU &, H225_GatekeeperReject &);
152  virtual void OnSendGatekeeperRequest(H225_GatekeeperRequest &);
153  virtual void OnSendGatekeeperConfirm(H225_GatekeeperConfirm &);
154  virtual void OnSendGatekeeperReject(H225_GatekeeperReject &);
155  virtual PBoolean OnReceiveGatekeeperRequest(const H323RasPDU &, const H225_GatekeeperRequest &);
156  virtual PBoolean OnReceiveGatekeeperConfirm(const H323RasPDU &, const H225_GatekeeperConfirm &);
157  virtual PBoolean OnReceiveGatekeeperReject(const H323RasPDU &, const H225_GatekeeperReject &);
158  virtual PBoolean OnReceiveGatekeeperRequest(const H225_GatekeeperRequest &);
159  virtual PBoolean OnReceiveGatekeeperConfirm(const H225_GatekeeperConfirm &);
160  virtual PBoolean OnReceiveGatekeeperReject(const H225_GatekeeperReject &);
161 
162  virtual void OnSendRegistrationRequest(H323RasPDU &, H225_RegistrationRequest &);
163  virtual void OnSendRegistrationConfirm(H323RasPDU &, H225_RegistrationConfirm &);
164  virtual void OnSendRegistrationReject(H323RasPDU &, H225_RegistrationReject &);
165  virtual void OnSendRegistrationRequest(H225_RegistrationRequest &);
166  virtual void OnSendRegistrationConfirm(H225_RegistrationConfirm &);
167  virtual void OnSendRegistrationReject(H225_RegistrationReject &);
168  virtual PBoolean OnReceiveRegistrationRequest(const H323RasPDU &, const H225_RegistrationRequest &);
169  virtual PBoolean OnReceiveRegistrationConfirm(const H323RasPDU &, const H225_RegistrationConfirm &);
170  virtual PBoolean OnReceiveRegistrationReject(const H323RasPDU &, const H225_RegistrationReject &);
171  virtual PBoolean OnReceiveRegistrationRequest(const H225_RegistrationRequest &);
172  virtual PBoolean OnReceiveRegistrationConfirm(const H225_RegistrationConfirm &);
173  virtual PBoolean OnReceiveRegistrationReject(const H225_RegistrationReject &);
174 
175  virtual void OnSendUnregistrationRequest(H323RasPDU &, H225_UnregistrationRequest &);
176  virtual void OnSendUnregistrationConfirm(H323RasPDU &, H225_UnregistrationConfirm &);
177  virtual void OnSendUnregistrationReject(H323RasPDU &, H225_UnregistrationReject &);
178  virtual void OnSendUnregistrationRequest(H225_UnregistrationRequest &);
179  virtual void OnSendUnregistrationConfirm(H225_UnregistrationConfirm &);
180  virtual void OnSendUnregistrationReject(H225_UnregistrationReject &);
181  virtual PBoolean OnReceiveUnregistrationRequest(const H323RasPDU &, const H225_UnregistrationRequest &);
182  virtual PBoolean OnReceiveUnregistrationConfirm(const H323RasPDU &, const H225_UnregistrationConfirm &);
183  virtual PBoolean OnReceiveUnregistrationReject(const H323RasPDU &, const H225_UnregistrationReject &);
184  virtual PBoolean OnReceiveUnregistrationRequest(const H225_UnregistrationRequest &);
185  virtual PBoolean OnReceiveUnregistrationConfirm(const H225_UnregistrationConfirm &);
186  virtual PBoolean OnReceiveUnregistrationReject(const H225_UnregistrationReject &);
187 
188  virtual void OnSendAdmissionRequest(H323RasPDU &, H225_AdmissionRequest &);
189  virtual void OnSendAdmissionConfirm(H323RasPDU &, H225_AdmissionConfirm &);
190  virtual void OnSendAdmissionReject(H323RasPDU &, H225_AdmissionReject &);
191  virtual void OnSendAdmissionRequest(H225_AdmissionRequest &);
192  virtual void OnSendAdmissionConfirm(H225_AdmissionConfirm &);
193  virtual void OnSendAdmissionReject(H225_AdmissionReject &);
194  virtual PBoolean OnReceiveAdmissionRequest(const H323RasPDU &, const H225_AdmissionRequest &);
195  virtual PBoolean OnReceiveAdmissionConfirm(const H323RasPDU &, const H225_AdmissionConfirm &);
196  virtual PBoolean OnReceiveAdmissionReject(const H323RasPDU &, const H225_AdmissionReject &);
197  virtual PBoolean OnReceiveAdmissionRequest(const H225_AdmissionRequest &);
198  virtual PBoolean OnReceiveAdmissionConfirm(const H225_AdmissionConfirm &);
199  virtual PBoolean OnReceiveAdmissionReject(const H225_AdmissionReject &);
200 
201  virtual void OnSendBandwidthRequest(H323RasPDU &, H225_BandwidthRequest &);
202  virtual void OnSendBandwidthConfirm(H323RasPDU &, H225_BandwidthConfirm &);
203  virtual void OnSendBandwidthReject(H323RasPDU &, H225_BandwidthReject &);
204  virtual void OnSendBandwidthRequest(H225_BandwidthRequest &);
205  virtual void OnSendBandwidthConfirm(H225_BandwidthConfirm &);
206  virtual void OnSendBandwidthReject(H225_BandwidthReject &);
207  virtual PBoolean OnReceiveBandwidthRequest(const H323RasPDU &, const H225_BandwidthRequest &);
208  virtual PBoolean OnReceiveBandwidthConfirm(const H323RasPDU &, const H225_BandwidthConfirm &);
209  virtual PBoolean OnReceiveBandwidthReject(const H323RasPDU &, const H225_BandwidthReject &);
210  virtual PBoolean OnReceiveBandwidthRequest(const H225_BandwidthRequest &);
211  virtual PBoolean OnReceiveBandwidthConfirm(const H225_BandwidthConfirm &);
212  virtual PBoolean OnReceiveBandwidthReject(const H225_BandwidthReject &);
213 
214  virtual void OnSendDisengageRequest(H323RasPDU &, H225_DisengageRequest &);
215  virtual void OnSendDisengageConfirm(H323RasPDU &, H225_DisengageConfirm &);
216  virtual void OnSendDisengageReject(H323RasPDU &, H225_DisengageReject &);
217  virtual void OnSendDisengageRequest(H225_DisengageRequest &);
218  virtual void OnSendDisengageConfirm(H225_DisengageConfirm &);
219  virtual void OnSendDisengageReject(H225_DisengageReject &);
220  virtual PBoolean OnReceiveDisengageRequest(const H323RasPDU &, const H225_DisengageRequest &);
221  virtual PBoolean OnReceiveDisengageConfirm(const H323RasPDU &, const H225_DisengageConfirm &);
222  virtual PBoolean OnReceiveDisengageReject(const H323RasPDU &, const H225_DisengageReject &);
223  virtual PBoolean OnReceiveDisengageRequest(const H225_DisengageRequest &);
224  virtual PBoolean OnReceiveDisengageConfirm(const H225_DisengageConfirm &);
225  virtual PBoolean OnReceiveDisengageReject(const H225_DisengageReject &);
226 
227  virtual void OnSendLocationRequest(H323RasPDU &, H225_LocationRequest &);
228  virtual void OnSendLocationConfirm(H323RasPDU &, H225_LocationConfirm &);
229  virtual void OnSendLocationReject(H323RasPDU &, H225_LocationReject &);
230  virtual void OnSendLocationRequest(H225_LocationRequest &);
231  virtual void OnSendLocationConfirm(H225_LocationConfirm &);
232  virtual void OnSendLocationReject(H225_LocationReject &);
233  virtual PBoolean OnReceiveLocationRequest(const H323RasPDU &, const H225_LocationRequest &);
234  virtual PBoolean OnReceiveLocationConfirm(const H323RasPDU &, const H225_LocationConfirm &);
235  virtual PBoolean OnReceiveLocationReject(const H323RasPDU &, const H225_LocationReject &);
236  virtual PBoolean OnReceiveLocationRequest(const H225_LocationRequest &);
237  virtual PBoolean OnReceiveLocationConfirm(const H225_LocationConfirm &);
238  virtual PBoolean OnReceiveLocationReject(const H225_LocationReject &);
239 
240  virtual void OnSendInfoRequest(H323RasPDU &, H225_InfoRequest &);
241  virtual void OnSendInfoRequestAck(H323RasPDU &, H225_InfoRequestAck &);
242  virtual void OnSendInfoRequestNak(H323RasPDU &, H225_InfoRequestNak &);
243  virtual void OnSendInfoRequestResponse(H323RasPDU &, H225_InfoRequestResponse &);
244  virtual void OnSendInfoRequest(H225_InfoRequest &);
245  virtual void OnSendInfoRequestAck(H225_InfoRequestAck &);
246  virtual void OnSendInfoRequestNak(H225_InfoRequestNak &);
247  virtual void OnSendInfoRequestResponse(H225_InfoRequestResponse &);
248  virtual PBoolean OnReceiveInfoRequest(const H323RasPDU &, const H225_InfoRequest &);
249  virtual PBoolean OnReceiveInfoRequestAck(const H323RasPDU &, const H225_InfoRequestAck &);
250  virtual PBoolean OnReceiveInfoRequestNak(const H323RasPDU &, const H225_InfoRequestNak &);
251  virtual PBoolean OnReceiveInfoRequestResponse(const H323RasPDU &, const H225_InfoRequestResponse &);
252  virtual PBoolean OnReceiveInfoRequest(const H225_InfoRequest &);
253  virtual PBoolean OnReceiveInfoRequestAck(const H225_InfoRequestAck &);
254  virtual PBoolean OnReceiveInfoRequestNak(const H225_InfoRequestNak &);
255  virtual PBoolean OnReceiveInfoRequestResponse(const H225_InfoRequestResponse &);
256 
257  virtual void OnSendResourcesAvailableIndicate(H323RasPDU &, H225_ResourcesAvailableIndicate &);
258  virtual void OnSendResourcesAvailableConfirm(H323RasPDU &, H225_ResourcesAvailableConfirm &);
259  virtual void OnSendResourcesAvailableIndicate(H225_ResourcesAvailableIndicate &);
260  virtual void OnSendResourcesAvailableConfirm(H225_ResourcesAvailableConfirm &);
261  virtual PBoolean OnReceiveResourcesAvailableIndicate(const H323RasPDU &, const H225_ResourcesAvailableIndicate &);
262  virtual PBoolean OnReceiveResourcesAvailableConfirm(const H323RasPDU &, const H225_ResourcesAvailableConfirm &);
263  virtual PBoolean OnReceiveResourcesAvailableIndicate(const H225_ResourcesAvailableIndicate &);
264  virtual PBoolean OnReceiveResourcesAvailableConfirm(const H225_ResourcesAvailableConfirm &);
265 
266  virtual void OnSendServiceControlIndication(H323RasPDU &, H225_ServiceControlIndication &);
267  virtual void OnSendServiceControlResponse(H323RasPDU &, H225_ServiceControlResponse &);
268  virtual void OnSendServiceControlIndication(H225_ServiceControlIndication &);
269  virtual void OnSendServiceControlResponse(H225_ServiceControlResponse &);
270  virtual PBoolean OnReceiveServiceControlIndication(const H323RasPDU &, const H225_ServiceControlIndication &);
271  virtual PBoolean OnReceiveServiceControlResponse(const H323RasPDU &, const H225_ServiceControlResponse &);
272  virtual PBoolean OnReceiveServiceControlIndication(const H225_ServiceControlIndication &);
273  virtual PBoolean OnReceiveServiceControlResponse(const H225_ServiceControlResponse &);
274 
275  virtual void OnSendNonStandardMessage(H323RasPDU &, H225_NonStandardMessage &);
276  virtual void OnSendNonStandardMessage(H225_NonStandardMessage &);
277  virtual PBoolean OnReceiveNonStandardMessage(const H323RasPDU &, const H225_NonStandardMessage &);
278  virtual PBoolean OnReceiveNonStandardMessage(const H225_NonStandardMessage &);
279 
280  virtual void OnSendUnknownMessageResponse(H323RasPDU &, H225_UnknownMessageResponse &);
281  virtual void OnSendUnknownMessageResponse(H225_UnknownMessageResponse &);
282  virtual PBoolean OnReceiveUnknownMessageResponse(const H323RasPDU &, const H225_UnknownMessageResponse &);
283  virtual PBoolean OnReceiveUnknownMessageResponse(const H225_UnknownMessageResponse &);
284 
285  virtual void OnSendRequestInProgress(H323RasPDU &, H225_RequestInProgress &);
286  virtual void OnSendRequestInProgress(H225_RequestInProgress &);
287  virtual PBoolean OnReceiveRequestInProgress(const H323RasPDU &, const H225_RequestInProgress &);
288  virtual PBoolean OnReceiveRequestInProgress(const H225_RequestInProgress &);
289 
290  virtual PBoolean OnSendFeatureSet(unsigned, H225_FeatureSet &) const { return false; }
291  virtual void OnReceiveFeatureSet(unsigned, const H225_FeatureSet &) const {}
292 
293  virtual void DisableFeatureSet() const {}
294 
295 
298  virtual PBoolean OnReceiveUnknown(
299  const H323RasPDU & pdu
300  );
302 
309  const PString & GetIdentifier() const { return gatekeeperIdentifier; }
310 
315  void SetIdentifier(const PString & id) { gatekeeperIdentifier = id; }
317 
318  protected:
319  // Option variables
321 };
322 
323 
324 #endif // OPAL_H323
325 
326 #endif // OPAL_H323_H225RAS_H
327 
328