OPAL  Version 3.10.10
gkserver.h
Go to the documentation of this file.
1 /*
2  * gkserver.h
3  *
4  * H225 Registration Admission and Security protocol handler
5  *
6  * Open H323 Library
7  *
8  * Copyright (c) 1998-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  * This code was based on original code from OpenGate of Egoboo Ltd. thanks
25  * to Ashley Unitt for his efforts.
26  *
27  * Contributor(s): ______________________________________.
28  *
29  * $Revision: 24178 $
30  * $Author: rjongbloed $
31  * $Date: 2010-04-05 19:10:56 -0500 (Mon, 05 Apr 2010) $
32  */
33 
34 #ifndef OPAL_H323_GKSERVER_H
35 #define OPAL_H323_GKSERVER_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 <ptlib/safecoll.h>
46 #include <opal/guid.h>
47 #include <h323/h225ras.h>
48 #include <h323/transaddr.h>
49 #include <h323/h235auth.h>
50 #include <h323/h323pdu.h>
51 #include <h323/h323trans.h>
52 
53 
54 class PASN_Sequence;
55 class PASN_Choice;
56 
57 class H225_AliasAddress;
58 class H225_EndpointIdentifier;
59 class H225_GatekeeperIdentifier;
60 class H225_ArrayOf_TransportAddress;
61 class H225_GatekeeperIdentifier;
62 class H225_EndpointIdentifier;
63 class H225_InfoRequestResponse_perCallInfo_subtype;
64 class H225_RasUsageInformation;
65 
69 class H323RasPDU;
70 
71 #if OPAL_H501
72 class H323PeerElement;
73 #endif
74 
76 {
78  public:
85  const H323RasPDU & pdu
86  );
88 
89  virtual H323TransactionPDU * CreateRIP(
90  unsigned sequenceNumber,
91  unsigned delay
92  ) const;
93 
94  virtual PBoolean WritePDU(
95  H323TransactionPDU & pdu
96  );
97  PBoolean CheckCryptoTokens();
98  PBoolean CheckGatekeeperIdentifier();
99  PBoolean GetRegisteredEndPoint();
100 
101  virtual PString GetGatekeeperIdentifier() const = 0;
102  virtual unsigned GetGatekeeperRejectTag() const = 0;
103  virtual PString GetEndpointIdentifier() const = 0;
104  virtual unsigned GetRegisteredEndPointRejectTag() const = 0;
105  virtual unsigned GetSecurityRejectTag() const = 0;
106 
108 
109  PSafePtr<H323RegisteredEndPoint> endpoint;
110 
111  protected:
113 };
114 
115 
117 {
119  public:
121  H323GatekeeperListener & listener,
122  const H323RasPDU & pdu
123  );
124 
125 #if PTRACING
126  virtual const char * GetName() const;
127 #endif
128  virtual PString GetGatekeeperIdentifier() const;
129  virtual unsigned GetGatekeeperRejectTag() const;
130  virtual PString GetEndpointIdentifier() const;
131  virtual unsigned GetRegisteredEndPointRejectTag() const;
133  virtual unsigned GetSecurityRejectTag() const;
134  virtual void SetRejectReason(
135  unsigned reasonCode
136  );
137 
138  H225_GatekeeperRequest & grq;
139  H225_GatekeeperConfirm & gcf;
140  H225_GatekeeperReject & grj;
141 
142  protected:
143  virtual Response OnHandlePDU();
144 };
145 
146 
148 {
150  public:
152  H323GatekeeperListener & listener,
153  const H323RasPDU & pdu
154  );
155 
156 #if PTRACING
157  virtual const char * GetName() const;
158 #endif
159  virtual PString GetGatekeeperIdentifier() const;
160  virtual unsigned GetGatekeeperRejectTag() const;
161  virtual PString GetEndpointIdentifier() const;
162  virtual unsigned GetRegisteredEndPointRejectTag() const;
164  virtual unsigned GetSecurityRejectTag() const;
165  virtual void SetRejectReason(
166  unsigned reasonCode
167  );
168 
169  H225_RegistrationRequest & rrq;
170  H225_RegistrationConfirm & rcf;
171  H225_RegistrationReject & rrj;
172 
173  protected:
174  virtual Response OnHandlePDU();
175 };
176 
177 
179 {
181  public:
183  H323GatekeeperListener & listener,
184  const H323RasPDU & pdu
185  );
186 
187 #if PTRACING
188  virtual const char * GetName() const;
189 #endif
190  virtual PString GetGatekeeperIdentifier() const;
191  virtual unsigned GetGatekeeperRejectTag() const;
192  virtual PString GetEndpointIdentifier() const;
193  virtual unsigned GetRegisteredEndPointRejectTag() const;
195  virtual unsigned GetSecurityRejectTag() const;
196  virtual void SetRejectReason(
197  unsigned reasonCode
198  );
199 
200  H225_UnregistrationRequest & urq;
201  H225_UnregistrationConfirm & ucf;
202  H225_UnregistrationReject & urj;
203 
204  protected:
205  virtual Response OnHandlePDU();
206 };
207 
208 
210 {
212  public:
214  H323GatekeeperListener & listener,
215  const H323RasPDU & pdu
216  );
217 
218 #if PTRACING
219  virtual const char * GetName() const;
220 #endif
221  virtual PString GetGatekeeperIdentifier() const;
222  virtual unsigned GetGatekeeperRejectTag() const;
223  virtual PString GetEndpointIdentifier() const;
224  virtual unsigned GetRegisteredEndPointRejectTag() const;
226  virtual unsigned GetSecurityRejectTag() const;
227  virtual void SetRejectReason(
228  unsigned reasonCode
229  );
230 
231  H225_AdmissionRequest & arq;
232  H225_AdmissionConfirm & acf;
233  H225_AdmissionReject & arj;
234 
236 
237  protected:
238  virtual Response OnHandlePDU();
239 };
240 
241 
243 {
245  public:
247  H323GatekeeperListener & listener,
248  const H323RasPDU & pdu
249  );
250 
251 #if PTRACING
252  virtual const char * GetName() const;
253 #endif
254  virtual PString GetGatekeeperIdentifier() const;
255  virtual unsigned GetGatekeeperRejectTag() const;
256  virtual PString GetEndpointIdentifier() const;
257  virtual unsigned GetRegisteredEndPointRejectTag() const;
259  virtual unsigned GetSecurityRejectTag() const;
260  virtual void SetRejectReason(
261  unsigned reasonCode
262  );
263 
264  H225_DisengageRequest & drq;
265  H225_DisengageConfirm & dcf;
266  H225_DisengageReject & drj;
267 
268  protected:
269  virtual Response OnHandlePDU();
270 };
271 
272 
274 {
276  public:
278  H323GatekeeperListener & listener,
279  const H323RasPDU & pdu
280  );
281 
282 #if PTRACING
283  virtual const char * GetName() const;
284 #endif
285  virtual PString GetGatekeeperIdentifier() const;
286  virtual unsigned GetGatekeeperRejectTag() const;
287  virtual PString GetEndpointIdentifier() const;
288  virtual unsigned GetRegisteredEndPointRejectTag() const;
290  virtual unsigned GetSecurityRejectTag() const;
291  virtual void SetRejectReason(
292  unsigned reasonCode
293  );
294 
295  H225_BandwidthRequest & brq;
296  H225_BandwidthConfirm & bcf;
297  H225_BandwidthReject & brj;
298 
299  protected:
300  virtual Response OnHandlePDU();
301 };
302 
303 
305 {
307  public:
309  H323GatekeeperListener & listener,
310  const H323RasPDU & pdu
311  );
312 
313 #if PTRACING
314  virtual const char * GetName() const;
315 #endif
316  virtual PString GetGatekeeperIdentifier() const;
317  virtual unsigned GetGatekeeperRejectTag() const;
318  virtual PString GetEndpointIdentifier() const;
319  virtual unsigned GetRegisteredEndPointRejectTag() const;
321  virtual unsigned GetSecurityRejectTag() const;
322  virtual void SetRejectReason(
323  unsigned reasonCode
324  );
325 
326  H225_LocationRequest & lrq;
327  H225_LocationConfirm & lcf;
328  H225_LocationReject & lrj;
329 
330  protected:
331  virtual Response OnHandlePDU();
332 };
333 
334 
336 {
338  public:
340  H323GatekeeperListener & listener,
341  const H323RasPDU & pdu
342  );
343 
344 #if PTRACING
345  virtual const char * GetName() const;
346 #endif
347  virtual PString GetGatekeeperIdentifier() const;
348  virtual unsigned GetGatekeeperRejectTag() const;
349  virtual PString GetEndpointIdentifier() const;
350  virtual unsigned GetRegisteredEndPointRejectTag() const;
352  virtual unsigned GetSecurityRejectTag() const;
353  virtual void SetRejectReason(
354  unsigned reasonCode
355  );
356 
357  H225_InfoRequestResponse & irr;
358  H225_InfoRequestAck & iack;
359  H225_InfoRequestNak & inak;
360 
361  protected:
362  virtual Response OnHandlePDU();
363 };
364 
365 
368 class H323GatekeeperCall : public PSafeObject
369 {
370  PCLASSINFO(H323GatekeeperCall, PSafeObject);
371  public:
374  enum Direction {
378  };
379 
383  H323GatekeeperServer & server,
386  );
387 
392 
397  Comparison Compare(
398  const PObject & obj
399  ) const;
400 
403  void PrintOn(
404  ostream & strm
405  ) const;
407 
416  H323GatekeeperARQ & request
417  );
418 
422  virtual PBoolean Disengage(
423  int reason = -1
424  );
425 
430  H323GatekeeperDRQ & request
431  );
432 
438  H323GatekeeperBRQ & request
439  );
440 
445  H323GatekeeperIRR & request,
446  H225_InfoRequestResponse_perCallInfo_subtype & call
447  );
448 
451  virtual void OnAlerting();
452 
455  virtual void OnConnected();
456 
467  virtual PBoolean OnHeartbeat();
468 
475  virtual PString GetCallCreditAmount() const;
476 
483  virtual PBoolean GetCallCreditMode() const;
484 
492  virtual unsigned GetDurationLimit() const;
493 
498  virtual PBoolean SendCallCreditServiceControl();
499 
503  H225_ArrayOf_ServiceControlSession & serviceControl
504  ) const;
505 
510  virtual PBoolean SendServiceControlSession(
511  const H323ServiceControlSession & session
512  );
513 
519  virtual PBoolean TranslateAliasAddress(
520  const H225_AliasAddress & alias,
521  H225_ArrayOf_AliasAddress & aliases,
522  H323TransportAddress & address,
523  PBoolean & isGkRouted
524  );
525 
527 
531  H323RegisteredEndPoint & GetEndPoint() const { return *PAssertNULL(endpoint); }
532  PBoolean IsAnsweringCall() const { return direction == AnsweringCall; }
533  unsigned GetCallReference() const { return callReference; }
536  const PString & GetSourceNumber() const { return srcNumber; }
537  const PStringArray & GetSourceAliases() const { return srcAliases; }
538  const H323TransportAddress & GetSourceHost() const { return srcHost; }
539  PString GetSourceAddress() const;
540  const PString & GetDestinationNumber() const { return dstNumber; }
541  const PStringArray & GetDestinationAliases() const { return dstAliases; }
542  const H323TransportAddress & GetDestinationHost() const { return dstHost; }
543  PString GetDestinationAddress() const;
544  unsigned GetBandwidthUsed() const { return bandwidthUsed; }
545  PBoolean SetBandwidthUsed(unsigned bandwidth);
546  const PTime & GetLastInfoResponseTime() const { return lastInfoResponse; }
547  const PTime & GetCallStartTime() const { return callStartTime; }
548  const PTime & GetAlertingTime() const { return alertingTime; }
549  const PTime & GetConnectedTime() const { return connectedTime; }
550  const PTime & GetCallEndTime() const { return callEndTime; }
553 
554  protected:
555  void SetUsageInfo(const H225_RasUsageInformation & usage);
556 
560 
562  unsigned callReference;
565  PString srcNumber;
566  PStringArray srcAliases;
568  PString dstNumber;
569  PStringArray dstAliases;
571  unsigned bandwidthUsed;
574 
575  PBoolean drqReceived;
579  PTime callEndTime;
581 };
582 
583 
589 class H323RegisteredEndPoint : public PSafeObject
590 {
591  PCLASSINFO(H323RegisteredEndPoint, PSafeObject);
592  public:
598  H323GatekeeperServer & server,
599  const PString & id
600  );
602 
607  Comparison Compare(
608  const PObject & obj
609  ) const;
610 
613  void PrintOn(
614  ostream & strm
615  ) const;
617 
624  virtual void AddCall(
625  H323GatekeeperCall * call
626  );
627 
632  virtual PBoolean RemoveCall(
633  H323GatekeeperCall * call
634  );
635 
638  PINDEX GetCallCount() const { return activeCalls.GetSize(); }
639 
643  PINDEX idx
644  ) { return activeCalls[idx]; }
646 
656  H323GatekeeperRRQ & request
657  );
658 
669  H323GatekeeperRRQ & request
670  );
671 
681  H323GatekeeperRRQ & request
682  );
683 
688  H323GatekeeperURQ & request
689  );
690 
694  virtual PBoolean Unregister(
695  int reason = -1
696  );
697 
703  H323GatekeeperIRR & request
704  );
705 
716  virtual PBoolean OnTimeToLive();
717 
729  virtual PString GetCallCreditAmount() const;
730 
738  virtual PBoolean GetCallCreditMode() const;
739 
744  virtual PBoolean SendServiceControlSession(
745  const H323ServiceControlSession & session
746  );
747 
751  virtual PBoolean AddServiceControlSession(
752  const H323ServiceControlSession & session,
753  H225_ArrayOf_ServiceControlSession & serviceControl
754  );
756 
761  virtual PBoolean SetPassword(
762  const PString & password,
763  const PString & username = PString::Empty()
764  );
765 
768  const PString & GetIdentifier() const { return identifier; }
769 
773 
777 
782 
786  PINDEX GetRASAddressCount() const { return rasAddresses.GetSize(); }
787 
792  PINDEX idx
793  ) const { return rasAddresses[idx]; }
794 
799 
803  PINDEX GetSignalAddressCount() const { return signalAddresses.GetSize(); }
804 
809  PINDEX idx
810  ) const { return signalAddresses[idx]; }
811 
814  const PStringArray & GetAliases() const { return aliases; }
815 
818  PBoolean ContainsAlias(
819  const PString & alias
820  ) { return aliases.GetStringsIndex(alias) != P_MAX_INDEX; }
821 
824  PINDEX GetAliasCount() const { return aliases.GetSize(); }
825 
828  PString GetAlias(
829  PINDEX idx
830  ) const { if (idx < aliases.GetSize()) return aliases[idx]; return PString::Empty(); }
831 
837  void RemoveAlias(
838  const PString & alias
839  );
840 
843  virtual const H235Authenticators & GetAuthenticators() const { return authenticators; }
844 
847  PINDEX GetPrefixCount() const { return voicePrefixes.GetSize(); }
848 
851  PString GetPrefix(
852  PINDEX idx
853  ) const { return voicePrefixes[idx]; }
854 
857  PCaselessString GetApplicationInfo() const { return productInfo.AsString(); }
858 
861  const OpalProductInfo & GetProductInfo() const { return productInfo; }
862 
865  unsigned GetProtocolVersion() const { return protocolVersion; }
866 
869  PBoolean IsBehindNAT() const { return isBehindNAT; }
870 
873  PBoolean CanDisplayAmountString() const { return canDisplayAmountString; }
874 
878 
881  PBoolean CanReceiveRIP() const;
882 
885  PBoolean GetH225Version() const { return h225Version; }
887 
897  virtual PBoolean OnSendDescriptorForEndpoint(
898  H225_ArrayOf_AliasAddress & aliases,
899  H225_EndpointType & terminalType,
900  H225_ArrayOf_AliasAddress & transportAddresses
901  );
903 
904 
905  protected:
908 
909  PString identifier;
913  PStringArray aliases;
914  PStringArray voicePrefixes;
916  unsigned protocolVersion;
917  PBoolean isBehindNAT;
920  unsigned h225Version;
921  unsigned timeToLive;
922  H235Authenticators authenticators;
923 
926 
927  PSortedList<H323GatekeeperCall> activeCalls;
928  POrdinalDictionary<PString> serviceControlSessions;
929 };
930 
931 
938 {
939  PCLASSINFO(H323GatekeeperListener, H225_RAS);
940  public:
947  H323GatekeeperServer & server,
948  const PString & gatekeeperIdentifier,
949  H323Transport * transport = NULL
950  );
951 
956 
961  PBoolean UnregistrationRequest(
962  const H323RegisteredEndPoint & ep,
963  unsigned reason
964  );
965 
968  PBoolean DisengageRequest(
969  const H323GatekeeperCall & call,
970  unsigned reason
971  );
972 
975  virtual PBoolean InfoRequest(
977  H323GatekeeperCall * call = NULL
978  );
979 
982  virtual PBoolean ServiceControlIndication(
984  const H323ServiceControlSession & session,
985  H323GatekeeperCall * call = NULL
986  );
988 
996  H323GatekeeperGRQ & request
997  );
998 
1004  H323GatekeeperRRQ & request
1005  );
1006 
1012  H323GatekeeperURQ & request
1013  );
1014 
1020  H323GatekeeperARQ & request
1021  );
1022 
1028  H323GatekeeperDRQ & request
1029  );
1030 
1036  H323GatekeeperBRQ & request
1037  );
1038 
1044  H323GatekeeperLRQ & request
1045  );
1046 
1052  H323GatekeeperIRR & request
1053  );
1055 
1058  virtual PBoolean OnReceiveGatekeeperRequest(const H323RasPDU &, const H225_GatekeeperRequest &);
1059  virtual PBoolean OnReceiveRegistrationRequest(const H323RasPDU &, const H225_RegistrationRequest &);
1060  virtual PBoolean OnReceiveUnregistrationRequest(const H323RasPDU &, const H225_UnregistrationRequest &);
1061  virtual PBoolean OnReceiveUnregistrationConfirm(const H225_UnregistrationConfirm &);
1062  virtual PBoolean OnReceiveUnregistrationReject(const H225_UnregistrationReject &);
1063  virtual PBoolean OnReceiveAdmissionRequest(const H323RasPDU &, const H225_AdmissionRequest &);
1064  virtual PBoolean OnReceiveBandwidthRequest(const H323RasPDU &, const H225_BandwidthRequest &);
1065  virtual PBoolean OnReceiveBandwidthConfirm(const H225_BandwidthConfirm &);
1066  virtual PBoolean OnReceiveBandwidthReject(const H225_BandwidthReject &);
1067  virtual PBoolean OnReceiveDisengageRequest(const H323RasPDU &, const H225_DisengageRequest &);
1068  virtual PBoolean OnReceiveDisengageConfirm(const H225_DisengageConfirm &);
1069  virtual PBoolean OnReceiveDisengageReject(const H225_DisengageReject &);
1070  virtual PBoolean OnReceiveLocationRequest(const H323RasPDU &, const H225_LocationRequest &);
1071  virtual PBoolean OnReceiveInfoRequestResponse(const H323RasPDU &, const H225_InfoRequestResponse &);
1072  virtual PBoolean OnReceiveResourcesAvailableConfirm(const H225_ResourcesAvailableConfirm &);
1073  virtual PBoolean OnSendFeatureSet(unsigned, H225_FeatureSet & features) const;
1074  virtual void OnReceiveFeatureSet(unsigned, const H225_FeatureSet & features) const;
1076 
1081 
1082 
1083  protected:
1085 };
1086 
1087 
1099 {
1101  public:
1107  H323EndPoint & endpoint
1108  );
1109 
1114 
1116 
1127  virtual H323Transactor * CreateListener(
1128  H323Transport * transport
1129  );
1130 
1132 
1139  H323GatekeeperGRQ & request
1140  );
1141 
1150  H323GatekeeperRRQ & request
1151  );
1152 
1159  H323GatekeeperURQ & request
1160  );
1161 
1167  H323GatekeeperIRR & request
1168  );
1169 
1180  virtual void AddEndPoint(
1182  );
1183 
1186  virtual PBoolean RemoveEndPoint(
1188  );
1189 
1199  H323GatekeeperRRQ & request
1200  );
1201 
1210  virtual PString CreateEndPointIdentifier();
1211 
1214  virtual PSafePtr<H323RegisteredEndPoint> FindEndPointByIdentifier(
1215  const PString & identifier,
1216  PSafetyMode mode = PSafeReference
1217  );
1218 
1221  virtual PSafePtr<H323RegisteredEndPoint> FindEndPointBySignalAddresses(
1222  const H225_ArrayOf_TransportAddress & addresses,
1223  PSafetyMode mode = PSafeReference
1224  );
1225 
1228  virtual PSafePtr<H323RegisteredEndPoint> FindEndPointBySignalAddress(
1229  const H323TransportAddress & address,
1230  PSafetyMode mode = PSafeReference
1231  );
1232 
1235  virtual PSafePtr<H323RegisteredEndPoint> FindEndPointByAliasAddress(
1236  const H225_AliasAddress & alias,
1237  PSafetyMode mode = PSafeReadWrite
1238  );
1239 
1242  virtual PSafePtr<H323RegisteredEndPoint> FindEndPointByAliasString(
1243  const PString & alias,
1244  PSafetyMode mode = PSafeReference
1245  );
1246 
1249  virtual PSafePtr<H323RegisteredEndPoint> FindEndPointByPartialAlias(
1250  const PString & alias,
1251  PSafetyMode mode = PSafeReference
1252  );
1253 
1256  virtual PSafePtr<H323RegisteredEndPoint> FindEndPointByPrefixString(
1257  const PString & prefix,
1258  PSafetyMode mode = PSafeReference
1259  );
1260 
1263  PSafePtr<H323RegisteredEndPoint> GetFirstEndPoint(
1264  PSafetyMode mode = PSafeReference
1265  ) { return PSafePtr<H323RegisteredEndPoint>(byIdentifier, mode); }
1267 
1268  PSafePtr<H323RegisteredEndPoint> FindDestinationEndPoint(
1269  const OpalGloballyUniqueID & id,
1271  );
1272 
1281  H323GatekeeperARQ & request
1282  );
1283 
1289  H323GatekeeperDRQ & request
1290  );
1291 
1297  H323GatekeeperBRQ & request
1298  );
1299 
1308  virtual H323GatekeeperCall * CreateCall(
1309  const OpalGloballyUniqueID & callIdentifier,
1311  );
1312 
1315  virtual void AddCall(H323GatekeeperCall *)
1316  { }
1317 
1320  virtual void RemoveCall(
1321  H323GatekeeperCall * call
1322  );
1323 
1326  virtual PSafePtr<H323GatekeeperCall> FindCall(
1327  const PString & description,
1328  PSafetyMode mode = PSafeReference
1329  );
1330 
1333  virtual PSafePtr<H323GatekeeperCall> FindCall(
1334  const OpalGloballyUniqueID & callIdentifier,
1335  PBoolean answeringCall,
1336  PSafetyMode mode = PSafeReference
1337  );
1338 
1341  virtual PSafePtr<H323GatekeeperCall> FindCall(
1342  const OpalGloballyUniqueID & callIdentifier,
1344  PSafetyMode mode = PSafeReference
1345  );
1346 
1349  PSafePtr<H323GatekeeperCall> GetFirstCall(
1350  PSafetyMode mode = PSafeReference
1351  ) { return PSafePtr<H323GatekeeperCall>(activeCalls, mode); }
1353 
1364  H323GatekeeperLRQ & request
1365  );
1366 
1378  virtual PBoolean TranslateAliasAddress(
1379  const H225_AliasAddress & alias,
1380  H225_ArrayOf_AliasAddress & aliases,
1381  H323TransportAddress & address,
1382  PBoolean & isGkRouted,
1383  H323GatekeeperCall * call
1384  );
1385 
1405  virtual PBoolean TranslateAliasAddressToSignalAddress(
1406  const H225_AliasAddress & alias,
1407  H323TransportAddress & address
1408  );
1410 
1422  virtual PBoolean CheckSignalAddressPolicy(
1423  const H323RegisteredEndPoint & ep,
1424  const H225_AdmissionRequest & arq,
1425  const H323TransportAddress & address
1426  );
1427 
1440  virtual PBoolean CheckAliasAddressPolicy(
1441  const H323RegisteredEndPoint & ep,
1442  const H225_AdmissionRequest & arq,
1443  const H225_AliasAddress & alias
1444  );
1445 
1458  virtual PBoolean CheckAliasStringPolicy(
1459  const H323RegisteredEndPoint & ep,
1460  const H225_AdmissionRequest & arq,
1461  const PString & alias
1462  );
1463 
1469  virtual unsigned AllocateBandwidth(
1470  unsigned newBandwidth,
1471  unsigned oldBandwidth = 0
1472  );
1474 
1486  virtual PBoolean GetAdmissionRequestAuthentication(
1487  H323GatekeeperARQ & info,
1488  H235Authenticators & authenticators
1489  );
1490 
1496  virtual PBoolean GetUsersPassword(
1497  const PString & alias,
1498  PString & password,
1499  H323RegisteredEndPoint & registeredEndpoint
1500  ) const;
1501  virtual PBoolean GetUsersPassword(
1502  const PString & alias,
1503  PString & password
1504  ) const;
1506 
1507 #if OPAL_H501
1508 
1513 
1517  void SetPeerElement(
1518  H323PeerElement * newPeerElement
1519  );
1520 
1526  void CreatePeerElement(
1527  const H323TransportAddress & h501Interface
1528  );
1529 
1535  PBoolean OpenPeerElement(
1536  const H323TransportAddress & remotePeer,
1537  PBoolean append = false,
1538  PBoolean keepTrying = true
1539  );
1541 #endif
1542 
1547  const PString & GetGatekeeperIdentifier() const { return gatekeeperIdentifier; }
1548 
1555  const PString & id,
1556  PBoolean adjustListeners = true
1557  );
1558 
1561  unsigned GetAvailableBandwidth() const { return totalBandwidth; }
1562 
1565  void SetAvailableBandwidth(unsigned bps100) { totalBandwidth = bps100; }
1566 
1569  unsigned GetUsedBandwidth() const { return usedBandwidth; }
1570 
1573  unsigned GetDefaultBandwidth() const { return defaultBandwidth; }
1574 
1577  unsigned GetTimeToLive() const { return defaultTimeToLive; }
1578 
1581  void SetTimeToLive(unsigned seconds) { defaultTimeToLive = seconds; }
1582 
1585  unsigned GetInfoResponseRate() const { return defaultInfoResponseRate; }
1586 
1589  void SetInfoResponseRate(unsigned seconds) { defaultInfoResponseRate = seconds; }
1590 
1593  PBoolean IsGatekeeperRouted() const { return isGatekeeperRouted; }
1594 
1597  PBoolean IsRequiredH235() const { return requireH235; }
1598 
1601  unsigned GetActiveRegistrations() const { return byIdentifier.GetSize(); }
1602 
1605  unsigned GetPeakRegistrations() const { return peakRegistrations; }
1606 
1609  unsigned GetTotalRegistrations() const { return totalRegistrations; }
1610 
1614 
1617  unsigned GetActiveCalls() const { return activeCalls.GetSize(); }
1618 
1621  unsigned GetPeakCalls() const { return peakCalls; }
1622 
1625  unsigned GetTotalCalls() const { return totalCalls; }
1626 
1629  unsigned GetRejectedCalls() const { return rejectedCalls; }
1631 
1632  // Remove an alias from the server database.
1633  void RemoveAlias(
1635  const PString & alias
1636  );
1637 
1638  // called when an endpoint needs to send a descriptor to the H.501 peer element
1640  H323RegisteredEndPoint & /*ep*/,
1641  H225_ArrayOf_AliasAddress & /*aliases*/,
1642  H225_EndpointType & /*terminalType*/,
1643  H225_ArrayOf_AliasAddress & /*transportAddresses*/
1644  )
1645  { return true; }
1646 
1647  virtual PBoolean AllowDuplicateAlias(const H225_ArrayOf_AliasAddress & /*aliases*/)
1648  { return canHaveDuplicateAlias; }
1649 
1650  virtual PBoolean OnSendFeatureSet(unsigned, H225_FeatureSet & features) const;
1651  virtual void OnReceiveFeatureSet(unsigned, const H225_FeatureSet & features) const;
1652 
1653  protected:
1654 
1655  PDECLARE_NOTIFIER(PThread, H323GatekeeperServer, MonitorMain);
1656 
1657  // Configuration & policy variables
1659  unsigned totalBandwidth;
1660  unsigned usedBandwidth;
1674  PBoolean requireH235;
1676 
1677  PStringToString passwords;
1678 
1679  // Dynamic variables
1680  PMutex mutex;
1682  unsigned nextIdentifier;
1683  PThread * monitorThread;
1684  PSyncPoint monitorExit;
1685 
1686  PLIST(ListenerList, H323GatekeeperListener);
1687  ListenerList listeners;
1688 
1689 #if OPAL_H501
1691 #endif
1692 
1693  PSafeDictionary<PString, H323RegisteredEndPoint> byIdentifier;
1694 
1695  class StringMap : public PString {
1696  PCLASSINFO(StringMap, PString);
1697  public:
1698  StringMap(const PString & from, const PString & id)
1699  : PString(from), identifier(id) { }
1700  PString identifier;
1701  };
1702  PSortedStringList byAddress;
1703  PSortedStringList byAlias;
1704  PSortedStringList byVoicePrefix;
1705 
1706  PSafeSortedList<H323GatekeeperCall> activeCalls;
1707 
1711  PINDEX peakCalls;
1712  PINDEX totalCalls;
1714 
1715  friend class H323GatekeeperRRQ;
1716  friend class H323GatekeeperARQ;
1717 };
1718 
1719 
1720 #endif // OPAL_H323
1721 
1722 #endif // OPAL_H323_GKSERVER_H
1723 
1724 
1726 
unsigned GetTimeToLive() const
Definition: gkserver.h:1577
Definition: gkserver.h:147
H225_DisengageConfirm & dcf
Definition: gkserver.h:265
virtual H323RegisteredEndPoint * CreateRegisteredEndPoint(H323GatekeeperRRQ &request)
PStringToString passwords
Definition: gkserver.h:1677
Definition: gkserver.h:304
virtual PBoolean GetUsersPassword(const PString &alias, PString &password, H323RegisteredEndPoint &registeredEndpoint) const
Definition: peclient.h:248
virtual H323GatekeeperRequest::Response OnInfoResponse(H323GatekeeperIRR &request)
unsigned GetUsedBandwidth() const
Definition: gkserver.h:1569
Definition: gkserver.h:178
PBoolean CanDisplayAmountString() const
Definition: gkserver.h:873
virtual unsigned GetRegisteredEndPointRejectTag() const
virtual H235Authenticator::ValidationResult ValidatePDU() const
const PTime & GetCallStartTime() const
Definition: gkserver.h:547
PINDEX GetCallCount() const
Definition: gkserver.h:638
H323GatekeeperLRQ(H323GatekeeperListener &listener, const H323RasPDU &pdu)
PBoolean CanEnforceDurationLimit() const
Definition: gkserver.h:877
Definition: h225ras.h:96
virtual PBoolean RemoveEndPoint(H323RegisteredEndPoint *ep)
H323TransportAddress GetRASAddress(PINDEX idx) const
Definition: gkserver.h:791
Definition: gkserver.h:377
virtual unsigned GetSecurityRejectTag() const
PSortedStringList byAlias
Definition: gkserver.h:1703
PString identifier
Definition: gkserver.h:909
virtual unsigned GetGatekeeperRejectTag() const
PSafePtr< H323RegisteredEndPoint > endpoint
Definition: gkserver.h:109
virtual void SetRejectReason(unsigned reasonCode)
virtual unsigned GetGatekeeperRejectTag() const
virtual PBoolean SendServiceControlSession(const H323ServiceControlSession &session)
virtual PBoolean OnSendDescriptorForEndpoint(H225_ArrayOf_AliasAddress &aliases, H225_EndpointType &terminalType, H225_ArrayOf_AliasAddress &transportAddresses)
PBoolean drqReceived
Definition: gkserver.h:575
H323TransportAddressArray(const OpalTransportAddress &address)
Definition: transaddr.h:97
PString gatekeeperIdentifier
Definition: gkserver.h:1658
PINDEX GetAliasCount() const
Definition: gkserver.h:824
void RemoveAlias(H323RegisteredEndPoint &ep, const PString &alias)
Definition: gkserver.h:1695
virtual PBoolean GetAdmissionRequestAuthentication(H323GatekeeperARQ &info, H235Authenticators &authenticators)
unsigned GetInfoResponseRate() const
Definition: gkserver.h:1585
PBoolean IsBehindNAT() const
Definition: gkserver.h:869
unsigned GetProtocolVersion() const
Definition: gkserver.h:865
unsigned timeToLive
Definition: gkserver.h:921
PSortedStringList byAddress
Definition: gkserver.h:1702
virtual unsigned GetGatekeeperRejectTag() const
virtual H323GatekeeperRequest::Response OnLocation(H323GatekeeperLRQ &request)
virtual H323GatekeeperRequest::Response OnInfoResponse(H323GatekeeperIRR &request, H225_InfoRequestResponse_perCallInfo_subtype &call)
virtual H323GatekeeperRequest::Response OnRegistration(H323GatekeeperRRQ &request)
virtual H323GatekeeperRequest::Response OnBandwidth(H323GatekeeperBRQ &request)
virtual H323GatekeeperRequest::Response OnAdmission(H323GatekeeperARQ &request)
virtual void OnReceiveFeatureSet(unsigned, const H225_FeatureSet &features) const
H323GatekeeperListener(H323EndPoint &endpoint, H323GatekeeperServer &server, const PString &gatekeeperIdentifier, H323Transport *transport=NULL)
virtual unsigned GetRegisteredEndPointRejectTag() const
PTime lastRegistration
Definition: gkserver.h:924
virtual Response OnHandlePDU()
PTime lastInfoResponse
Definition: gkserver.h:573
PBoolean canHaveDuplicatePrefix
Definition: gkserver.h:1667
virtual H323GatekeeperRequest::Response OnDiscovery(H323GatekeeperGRQ &request)
virtual Response OnHandlePDU()
virtual H235Authenticator::ValidationResult ValidatePDU() const
virtual PString GetGatekeeperIdentifier() const
virtual unsigned GetSecurityRejectTag() const
virtual unsigned GetSecurityRejectTag() const
H323RegisteredEndPoint * endpoint
Definition: gkserver.h:558
virtual H323GatekeeperCall * CreateCall(const OpalGloballyUniqueID &callIdentifier, H323GatekeeperCall::Direction direction)
virtual H323GatekeeperRequest::Response OnAdmission(H323GatekeeperARQ &request)
virtual PBoolean SetPassword(const PString &password, const PString &username=PString::Empty())
void CreatePeerElement(const H323TransportAddress &h501Interface)
unsigned GetPeakRegistrations() const
Definition: gkserver.h:1605
const PStringArray & GetSourceAliases() const
Definition: gkserver.h:537
unsigned h225Version
Definition: gkserver.h:920
virtual void OnConnected()
virtual PBoolean OnReceiveBandwidthReject(const H225_BandwidthReject &)
Direction
Definition: gkserver.h:374
H225_InfoRequestResponse & irr
Definition: gkserver.h:357
PBoolean canOnlyAnswerRegisteredEP
Definition: gkserver.h:1669
virtual PBoolean OnReceiveDisengageConfirm(const H225_DisengageConfirm &)
Definition: transports.h:703
virtual PBoolean Disengage(int reason=-1)
virtual PBoolean WritePDU(H323TransactionPDU &pdu)
Definition: gkserver.h:335
PBoolean GetH225Version() const
Definition: gkserver.h:885
PSortedStringList byVoicePrefix
Definition: gkserver.h:1704
virtual PBoolean AddServiceControlSession(const H323ServiceControlSession &session, H225_ArrayOf_ServiceControlSession &serviceControl)
H323GatekeeperGRQ(H323GatekeeperListener &listener, const H323RasPDU &pdu)
virtual PBoolean OnSendFeatureSet(unsigned, H225_FeatureSet &features) const
virtual void SetRejectReason(unsigned reasonCode)
PBoolean DisengageRequest(const H323GatekeeperCall &call, unsigned reason)
PBoolean ContainsAlias(const PString &alias)
Definition: gkserver.h:818
H225_UnregistrationRequest & urq
Definition: gkserver.h:200
H323TransportAddressArray rasAddresses
Definition: gkserver.h:911
const PTime & GetConnectedTime() const
Definition: gkserver.h:549
PINDEX rejectedCalls
Definition: gkserver.h:1713
const OpalGloballyUniqueID & GetDescriptorID() const
Definition: gkserver.h:772
Comparison Compare(const PObject &obj) const
PString srcNumber
Definition: gkserver.h:565
PSafeDictionary< PString, H323RegisteredEndPoint > byIdentifier
Definition: gkserver.h:1693
PTime lastInfoResponse
Definition: gkserver.h:925
Definition: h323trans.h:327
virtual PBoolean CheckAliasStringPolicy(const H323RegisteredEndPoint &ep, const H225_AdmissionRequest &arq, const PString &alias)
Definition: h323trans.h:101
virtual PString GetGatekeeperIdentifier() const =0
virtual unsigned GetSecurityRejectTag() const
H225_GatekeeperConfirm & gcf
Definition: gkserver.h:139
virtual unsigned GetRegisteredEndPointRejectTag() const
void PrintOn(ostream &strm) const
const H323TransportAddressArray & GetSignalAddresses() const
Definition: gkserver.h:798
const OpalProductInfo & GetProductInfo() const
Definition: gkserver.h:861
H225_LocationRequest & lrq
Definition: gkserver.h:326
PBoolean CheckGatekeeperIdentifier()
PBoolean isBehindNAT
Definition: gkserver.h:917
H323GatekeeperIRR(H323GatekeeperListener &listener, const H323RasPDU &pdu)
H323GatekeeperListener & rasChannel
Definition: gkserver.h:112
virtual H323GatekeeperRequest::Response OnDisengage(H323GatekeeperDRQ &request)
Definition: gkserver.h:375
void SetGatekeeperIdentifier(const PString &id, PBoolean adjustListeners=true)
virtual PString CreateEndPointIdentifier()
const H323TransportAddress & GetSourceHost() const
Definition: gkserver.h:538
Definition: gkserver.h:75
PTime callStartTime
Definition: gkserver.h:576
virtual unsigned GetSecurityRejectTag() const
PString GetDestinationAddress() const
virtual Response OnHandlePDU()
PBoolean IsGatekeeperRouted() const
Definition: gkserver.h:1593
H323GatekeeperServer & gatekeeper
Definition: gkserver.h:557
PBoolean disengageOnHearbeatFail
Definition: gkserver.h:1675
unsigned infoResponseRate
Definition: gkserver.h:572
PINDEX GetRASAddressCount() const
Definition: gkserver.h:786
PSafePtr< H323RegisteredEndPoint > GetFirstEndPoint(PSafetyMode mode=PSafeReference)
Definition: gkserver.h:1263
virtual Response OnHandlePDU()
H225_BandwidthReject & brj
Definition: gkserver.h:297
PBoolean OpenPeerElement(const H323TransportAddress &remotePeer, PBoolean append=false, PBoolean keepTrying=true)
unsigned callReference
Definition: gkserver.h:562
Direction direction
Definition: gkserver.h:561
PBoolean requireH235
Definition: gkserver.h:1674
virtual PString GetEndpointIdentifier() const
virtual PBoolean OnReceiveBandwidthRequest(const H323RasPDU &, const H225_BandwidthRequest &)
const OpalGloballyUniqueID & GetCallIdentifier() const
Definition: gkserver.h:534
PBoolean canDisplayAmountString
Definition: gkserver.h:918
virtual const H235Authenticators & GetAuthenticators() const
Definition: gkserver.h:843
PString identifier
Definition: gkserver.h:1700
WORD GetDefaultUdpPort()
Definition: gkserver.h:1115
virtual PSafePtr< H323RegisteredEndPoint > FindEndPointByAliasString(const PString &alias, PSafetyMode mode=PSafeReference)
unsigned totalBandwidth
Definition: gkserver.h:1659
unsigned protocolVersion
Definition: gkserver.h:916
H323GatekeeperBRQ(H323GatekeeperListener &listener, const H323RasPDU &pdu)
virtual PSafePtr< H323RegisteredEndPoint > FindEndPointByPartialAlias(const PString &alias, PSafetyMode mode=PSafeReference)
PBoolean isGatekeeperRouted
Definition: gkserver.h:1672
const PString & GetDestinationNumber() const
Definition: gkserver.h:540
unsigned GetTotalRegistrations() const
Definition: gkserver.h:1609
virtual void OnAlerting()
virtual PBoolean OnSendDescriptorForEndpoint(H323RegisteredEndPoint &, H225_ArrayOf_AliasAddress &, H225_EndpointType &, H225_ArrayOf_AliasAddress &)
Definition: gkserver.h:1639
H323RegisteredEndPoint(H323GatekeeperServer &server, const PString &id)
virtual PSafePtr< H323RegisteredEndPoint > FindEndPointBySignalAddress(const H323TransportAddress &address, PSafetyMode mode=PSafeReference)
PSyncPoint monitorExit
Definition: gkserver.h:1684
virtual void OnReceiveFeatureSet(unsigned, const H225_FeatureSet &features) const
virtual PBoolean SendServiceControlSession(const H323ServiceControlSession &session)
PString alternateSecurityID
Definition: gkserver.h:235
const PString & GetIdentifier() const
Definition: gkserver.h:768
virtual PString GetGatekeeperIdentifier() const
virtual unsigned AllocateBandwidth(unsigned newBandwidth, unsigned oldBandwidth=0)
virtual PString GetGatekeeperIdentifier() const
virtual void SetRejectReason(unsigned reasonCode)
unsigned defaultTimeToLive
Definition: gkserver.h:1663
virtual H323GatekeeperRequest::Response OnDiscovery(H323GatekeeperGRQ &request)
unsigned GetActiveRegistrations() const
Definition: gkserver.h:1601
virtual PString GetEndpointIdentifier() const =0
PINDEX peakRegistrations
Definition: gkserver.h:1708
PCaselessString GetApplicationInfo() const
Definition: gkserver.h:857
H225_AdmissionReject & arj
Definition: gkserver.h:233
virtual PBoolean RemoveCall(H323GatekeeperCall *call)
virtual PBoolean TranslateAliasAddress(const H225_AliasAddress &alias, H225_ArrayOf_AliasAddress &aliases, H323TransportAddress &address, PBoolean &isGkRouted, H323GatekeeperCall *call)
H225_UnregistrationReject & urj
Definition: gkserver.h:202
virtual H235Authenticator::ValidationResult ValidatePDU() const
virtual unsigned GetRegisteredEndPointRejectTag() const =0
virtual PBoolean OnReceiveUnregistrationReject(const H225_UnregistrationReject &)
OpalGloballyUniqueID descriptorID
Definition: gkserver.h:910
virtual H323GatekeeperRequest::Response OnBandwidth(H323GatekeeperBRQ &request)
virtual PBoolean TranslateAliasAddressToSignalAddress(const H225_AliasAddress &alias, H323TransportAddress &address)
virtual PString GetEndpointIdentifier() const
OpalGloballyUniqueID callIdentifier
Definition: gkserver.h:563
virtual PBoolean CheckSignalAddressPolicy(const H323RegisteredEndPoint &ep, const H225_AdmissionRequest &arq, const H323TransportAddress &address)
PStringArray srcAliases
Definition: gkserver.h:566
virtual H323TransactionPDU * CreateRIP(unsigned sequenceNumber, unsigned delay) const
virtual PBoolean OnReceiveGatekeeperRequest(const H323RasPDU &, const H225_GatekeeperRequest &)
PSafePtr< H323GatekeeperCall > GetFirstCall(PSafetyMode mode=PSafeReference)
Definition: gkserver.h:1349
H225_GatekeeperRequest & grq
Definition: gkserver.h:138
unsigned usedBandwidth
Definition: gkserver.h:1660
unsigned bandwidthUsed
Definition: gkserver.h:571
const PString & GetGatekeeperIdentifier() const
Definition: gkserver.h:1547
H323GatekeeperARQ(H323GatekeeperListener &listener, const H323RasPDU &pdu)
PBoolean aliasCanBeHostName
Definition: gkserver.h:1673
H323TransportAddress dstHost
Definition: gkserver.h:570
Definition: gkserver.h:1098
virtual PBoolean OnReceiveBandwidthConfirm(const H225_BandwidthConfirm &)
Definition: gkserver.h:937
virtual PString GetEndpointIdentifier() const
virtual PBoolean OnReceiveInfoRequestResponse(const H323RasPDU &, const H225_InfoRequestResponse &)
unsigned defaultInfoResponseRate
Definition: gkserver.h:1664
virtual H235Authenticator::ValidationResult ValidatePDU() const
virtual PString GetGatekeeperIdentifier() const
virtual PString GetCallCreditAmount() const
H323GatekeeperRRQ(H323GatekeeperListener &listener, const H323RasPDU &pdu)
PTime alertingTime
Definition: gkserver.h:577
const PStringArray & GetDestinationAliases() const
Definition: gkserver.h:541
virtual PBoolean CheckAliasAddressPolicy(const H323RegisteredEndPoint &ep, const H225_AdmissionRequest &arq, const H225_AliasAddress &alias)
virtual PString GetGatekeeperIdentifier() const
PBoolean canEnforceDurationLimit
Definition: gkserver.h:919
virtual void AddEndPoint(H323RegisteredEndPoint *ep)
PINDEX peakCalls
Definition: gkserver.h:1711
PString GetSourceAddress() const
virtual H323GatekeeperRequest::Response OnFullRegistration(H323GatekeeperRRQ &request)
H323PeerElement * peerElement
Definition: gkserver.h:1690
Definition: svcctrl.h:57
virtual H323Transactor * CreateListener(H323Transport *transport)
virtual unsigned GetRegisteredEndPointRejectTag() const
H323GatekeeperServer(H323EndPoint &endpoint)
virtual Response OnHandlePDU()
virtual Response OnHandlePDU()
PINDEX totalCalls
Definition: gkserver.h:1712
H323GatekeeperServer & gatekeeper
Definition: gkserver.h:1084
PCaselessString AsString() const
virtual unsigned GetSecurityRejectTag() const
H323GatekeeperURQ(H323GatekeeperListener &listener, const H323RasPDU &pdu)
unsigned defaultBandwidth
Definition: gkserver.h:1661
H225_DisengageRequest & drq
Definition: gkserver.h:264
virtual PString GetCallCreditAmount() const
virtual void SetRejectReason(unsigned reasonCode)
PLIST(ListenerList, H323GatekeeperListener)
Definition: gkserver.h:589
virtual H323GatekeeperRequest::Response OnUnregistration(H323GatekeeperURQ &request)
Definition: h225ras.h:104
H323Connection::CallEndReason GetCallEndReason() const
Definition: gkserver.h:551
H225_RegistrationRequest & rrq
Definition: gkserver.h:169
virtual unsigned GetSecurityRejectTag() const =0
Definition: h323pdu.h:414
PBoolean CheckCryptoTokens()
void SetPeerElement(H323PeerElement *newPeerElement)
virtual PBoolean Unregister(int reason=-1)
virtual PString GetGatekeeperIdentifier() const
H323GatekeeperDRQ(H323GatekeeperListener &listener, const H323RasPDU &pdu)
virtual unsigned GetRegisteredEndPointRejectTag() const
POrdinalDictionary< PString > serviceControlSessions
Definition: gkserver.h:928
virtual unsigned GetGatekeeperRejectTag() const
PINDEX GetSignalAddressCount() const
Definition: gkserver.h:803
unsigned GetDefaultBandwidth() const
Definition: gkserver.h:1573
PTime callEndTime
Definition: gkserver.h:579
PSafeSortedList< H323GatekeeperCall > activeCalls
Definition: gkserver.h:1706
H225_BandwidthConfirm & bcf
Definition: gkserver.h:296
PBoolean IsRequiredH235() const
Definition: gkserver.h:1597
virtual void AddCall(H323GatekeeperCall *)
Definition: gkserver.h:1315
ListenerList listeners
Definition: gkserver.h:1687
virtual PString GetEndpointIdentifier() const
virtual unsigned GetSecurityRejectTag() const
H323GatekeeperListener & GetRasChannel() const
Definition: gkserver.h:107
virtual PBoolean OnReceiveDisengageReject(const H225_DisengageReject &)
virtual H323GatekeeperRequest::Response OnDisengage(H323GatekeeperDRQ &request)
H225_LocationReject & lrj
Definition: gkserver.h:328
virtual H235Authenticator::ValidationResult ValidatePDU() const
PBoolean CanReceiveRIP() const
unsigned GetActiveCalls() const
Definition: gkserver.h:1617
virtual H235Authenticator::ValidationResult ValidatePDU() const
H323GatekeeperServer & GetGatekeeper() const
Definition: gkserver.h:530
H225_LocationConfirm & lcf
Definition: gkserver.h:327
H225_RegistrationReject & rrj
Definition: gkserver.h:171
PThread * monitorThread
Definition: gkserver.h:1683
virtual PBoolean OnReceiveLocationRequest(const H323RasPDU &, const H225_LocationRequest &)
H225_GatekeeperReject & grj
Definition: gkserver.h:140
virtual Response OnHandlePDU()
virtual H323GatekeeperRequest::Response OnUnregistration(H323GatekeeperURQ &request)
H323GatekeeperCall(H323GatekeeperServer &server, const OpalGloballyUniqueID &callIdentifier, Direction direction)
virtual PString GetEndpointIdentifier() const
PBoolean UnregistrationRequest(const H323RegisteredEndPoint &ep, unsigned reason)
virtual PSafePtr< H323RegisteredEndPoint > FindEndPointByIdentifier(const PString &identifier, PSafetyMode mode=PSafeReference)
H225_AdmissionConfirm & acf
Definition: gkserver.h:232
virtual unsigned GetGatekeeperRejectTag() const
H323TransportAddress GetSignalAddress(PINDEX idx) const
Definition: gkserver.h:808
const H323TransportAddressArray & GetRASAddresses() const
Definition: gkserver.h:781
const PTime & GetCallEndTime() const
Definition: gkserver.h:550
virtual unsigned GetGatekeeperRejectTag() const
virtual PBoolean OnHeartbeat()
Definition: h323trans.h:51
unsigned maximumBandwidth
Definition: gkserver.h:1662
ValidationResult
Definition: h235auth.h:83
Definition: h323trans.h:403
virtual H323GatekeeperRequest::Response OnSecureRegistration(H323GatekeeperRRQ &request)
virtual PBoolean TranslateAliasAddress(const H225_AliasAddress &alias, H225_ArrayOf_AliasAddress &aliases, H323TransportAddress &address, PBoolean &isGkRouted)
Definition: connection.h:396
virtual H323GatekeeperRequest::Response OnRegistration(H323GatekeeperRRQ &request)
void SetAvailableBandwidth(unsigned bps100)
Definition: gkserver.h:1565
virtual H235Authenticator::ValidationResult ValidatePDU() const
virtual PString GetGatekeeperIdentifier() const
virtual PBoolean InfoRequest(H323RegisteredEndPoint &ep, H323GatekeeperCall *call=NULL)
H225_RegistrationConfirm & rcf
Definition: gkserver.h:170
Comparison Compare(const PObject &obj) const
unsigned GetBandwidthUsed() const
Definition: gkserver.h:544
const PTime & GetLastInfoResponseTime() const
Definition: gkserver.h:546
unsigned GetAvailableBandwidth() const
Definition: gkserver.h:1561
PTime connectedTime
Definition: gkserver.h:578
PINDEX totalRegistrations
Definition: gkserver.h:1709
virtual PString GetEndpointIdentifier() const
virtual H323GatekeeperRequest::Response OnLocation(H323GatekeeperLRQ &request)
virtual H323GatekeeperRequest::Response OnBandwidth(H323GatekeeperBRQ &request)
virtual H323GatekeeperRequest::Response OnRegistration(H323GatekeeperRRQ &request)
PSortedList< H323GatekeeperCall > activeCalls
Definition: gkserver.h:927
virtual PBoolean OnTimeToLive()
PBoolean overwriteOnSameSignalAddress
Definition: gkserver.h:1665
virtual PBoolean OnReceiveRegistrationRequest(const H323RasPDU &, const H225_RegistrationRequest &)
PMutex mutex
Definition: gkserver.h:1680
void RemoveAlias(const PString &alias)
virtual PBoolean OnReceiveUnregistrationRequest(const H323RasPDU &, const H225_UnregistrationRequest &)
virtual PSafePtr< H323RegisteredEndPoint > FindEndPointByPrefixString(const PString &prefix, PSafetyMode mode=PSafeReference)
H323GatekeeperServer & gatekeeper
Definition: gkserver.h:906
PString GetPrefix(PINDEX idx) const
Definition: gkserver.h:851
H323GatekeeperRequest(H323GatekeeperListener &rasChannel, const H323RasPDU &pdu)
PBoolean answerCallPreGrantedARQ
Definition: gkserver.h:1670
H323RegisteredEndPoint & GetEndPoint() const
Definition: gkserver.h:531
virtual PBoolean OnReceiveAdmissionRequest(const H323RasPDU &, const H225_AdmissionRequest &)
virtual PBoolean GetCallCreditMode() const
PINDEX GetPrefixCount() const
Definition: gkserver.h:847
virtual H323GatekeeperRequest::Response OnAdmission(H323GatekeeperARQ &request)
void SetUsageInfo(const H225_RasUsageInformation &usage)
virtual H235Authenticator::ValidationResult ValidatePDU() const
unsigned GetPeakCalls() const
Definition: gkserver.h:1621
virtual PBoolean OnReceiveDisengageRequest(const H323RasPDU &, const H225_DisengageRequest &)
PSafePtr< H323RegisteredEndPoint > FindDestinationEndPoint(const OpalGloballyUniqueID &id, H323GatekeeperCall::Direction direction)
Definition: gkserver.h:368
StringMap(const PString &from, const PString &id)
Definition: gkserver.h:1698
virtual PBoolean OnReceiveUnregistrationConfirm(const H225_UnregistrationConfirm &)
H323GatekeeperCall & GetCall(PINDEX idx)
Definition: gkserver.h:642
H323Connection::CallEndReason callEndReason
Definition: gkserver.h:580
virtual void SetRejectReason(unsigned reasonCode)
PString dstNumber
Definition: gkserver.h:568
H225_UnregistrationConfirm & ucf
Definition: gkserver.h:201
virtual unsigned GetGatekeeperRejectTag() const
unsigned GetTotalCalls() const
Definition: gkserver.h:1625
virtual unsigned GetGatekeeperRejectTag() const
virtual PSafePtr< H323RegisteredEndPoint > FindEndPointByAliasAddress(const H225_AliasAddress &alias, PSafetyMode mode=PSafeReadWrite)
PDECLARE_NOTIFIER(PThread, H323GatekeeperServer, MonitorMain)
virtual unsigned GetRegisteredEndPointRejectTag() const
virtual PBoolean SendCallCreditServiceControl()
virtual unsigned GetRegisteredEndPointRejectTag() const
virtual H323GatekeeperRequest::Response OnInfoResponse(H323GatekeeperIRR &request)
virtual unsigned GetDurationLimit() const
PBoolean AddCallCreditServiceControl(H225_ArrayOf_ServiceControlSession &serviceControl) const
H225_InfoRequestNak & inak
Definition: gkserver.h:359
PStringArray dstAliases
Definition: gkserver.h:569
PString gatekeeperIdentifier
Definition: h225ras.h:318
#define OpalGloballyUniqueID
Definition: guid.h:42
Response
Definition: h323trans.h:344
const PString & GetSourceNumber() const
Definition: gkserver.h:536
const PTime & GetAlertingTime() const
Definition: gkserver.h:548
H323GatekeeperListener * rasChannel
Definition: gkserver.h:559
H323PeerElement * GetPeerElement() const
Definition: gkserver.h:1512
virtual void RemoveCall(H323GatekeeperCall *call)
virtual unsigned GetSecurityRejectTag() const
virtual PBoolean ServiceControlIndication(H323RegisteredEndPoint &ep, const H323ServiceControlSession &session, H323GatekeeperCall *call=NULL)
const H323TransportAddress & GetDestinationHost() const
Definition: gkserver.h:542
virtual unsigned GetRegisteredEndPointRejectTag() const
H323TransportAddress srcHost
Definition: gkserver.h:567
unsigned GetCallReference() const
Definition: gkserver.h:533
const PStringArray & GetAliases() const
Definition: gkserver.h:814
unsigned nextIdentifier
Definition: gkserver.h:1682
Definition: h323ep.h:85
H235Authenticators authenticators
Definition: gkserver.h:922
void PrintOn(ostream &strm) const
H225_AdmissionRequest & arq
Definition: gkserver.h:231
virtual PSafePtr< H323RegisteredEndPoint > FindEndPointBySignalAddresses(const H225_ArrayOf_TransportAddress &addresses, PSafetyMode mode=PSafeReference)
PBoolean IsAnsweringCall() const
Definition: gkserver.h:532
virtual H323GatekeeperRequest::Response OnDisengage(H323GatekeeperDRQ &request)
H323GatekeeperListener * rasChannel
Definition: gkserver.h:907
void SetTimeToLive(unsigned seconds)
Definition: gkserver.h:1581
PBoolean GetRegisteredEndPoint()
H323EndPoint & endpoint
Definition: h323trans.h:307
Definition: gkserver.h:376
unsigned GetRejectedCalls() const
Definition: gkserver.h:1629
PBoolean SetBandwidthUsed(unsigned bandwidth)
PStringArray aliases
Definition: gkserver.h:913
virtual PBoolean OnSendFeatureSet(unsigned, H225_FeatureSet &features) const
H225_InfoRequestAck & iack
Definition: gkserver.h:358
time_t identifierBase
Definition: gkserver.h:1681
Definition: transaddr.h:66
H323TransportAddressArray signalAddresses
Definition: gkserver.h:912
void SetInfoResponseRate(unsigned seconds)
Definition: gkserver.h:1589
virtual void SetRejectReason(unsigned reasonCode)
virtual H323GatekeeperRequest::Response OnInfoResponse(H323GatekeeperIRR &request)
virtual void SetRejectReason(unsigned reasonCode)
H225_DisengageReject & drj
Definition: gkserver.h:266
virtual Response OnHandlePDU()
virtual unsigned GetGatekeeperRejectTag() const =0
PINDEX rejectedRegistrations
Definition: gkserver.h:1710
OpalGloballyUniqueID conferenceIdentifier
Definition: gkserver.h:564
virtual PBoolean OnReceiveResourcesAvailableConfirm(const H225_ResourcesAvailableConfirm &)
virtual void SetRejectReason(unsigned reasonCode)
virtual PSafePtr< H323GatekeeperCall > FindCall(const PString &description, PSafetyMode mode=PSafeReference)
H323Transport * transport
Definition: h323trans.h:310
H323GatekeeperServer & GetGatekeeper() const
Definition: gkserver.h:1079
unsigned GetRejectedRegistrations() const
Definition: gkserver.h:1613
PBoolean canHaveDuplicateAlias
Definition: gkserver.h:1666
Definition: connection.h:312
const OpalGloballyUniqueID & GetConferenceIdentifier() const
Definition: gkserver.h:535
PString GetAlias(PINDEX idx) const
Definition: gkserver.h:828
virtual PBoolean AllowDuplicateAlias(const H225_ArrayOf_AliasAddress &)
Definition: gkserver.h:1647
virtual PString GetGatekeeperIdentifier() const
virtual PString GetEndpointIdentifier() const
virtual PBoolean GetCallCreditMode() const
Definition: gkserver.h:273
OpalProductInfo productInfo
Definition: gkserver.h:915
Definition: gkserver.h:209
H225_BandwidthRequest & brq
Definition: gkserver.h:295
PBoolean makeCallPreGrantedARQ
Definition: gkserver.h:1671
Definition: gkserver.h:116
virtual PString GetEndpointIdentifier() const
PBoolean canOnlyCallRegisteredEP
Definition: gkserver.h:1668
virtual void AddCall(H323GatekeeperCall *call)
H323GatekeeperServer & GetGatekeeper() const
Definition: gkserver.h:776
virtual H323GatekeeperRequest::Response OnUnregistration(H323GatekeeperURQ &request)
Definition: gkserver.h:242
PStringArray voicePrefixes
Definition: gkserver.h:914