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
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331 #ifndef __OPAL_H323EP_H
00332 #define __OPAL_H323EP_H
00333
00334 #ifdef P_USE_PRAGMA
00335 #pragma interface
00336 #endif
00337
00338
00339 #include <opal/endpoint.h>
00340 #include <opal/manager.h>
00341 #include <opal/call.h>
00342 #include <opal/transports.h>
00343 #include <h323/h323con.h>
00344 #include <h323/h323caps.h>
00345 #include <h323/h235auth.h>
00346
00347
00348 class H225_EndpointType;
00349 class H225_VendorIdentifier;
00350 class H225_H221NonStandard;
00351 class H225_ServiceControlDescriptor;
00352
00353 class H235SecurityInfo;
00354
00355 class H323Gatekeeper;
00356 class H323SignalPDU;
00357 class H323ServiceControlSession;
00358
00359 class PSTUNClient;
00360
00361
00363
00376 class H323EndPoint : public OpalEndPoint
00377 {
00378 PCLASSINFO(H323EndPoint, OpalEndPoint);
00379
00380 public:
00381 enum {
00382 DefaultTcpPort = 1720
00383 };
00384
00389 H323EndPoint(
00390 OpalManager & manager
00391 );
00392
00395 ~H323EndPoint();
00397
00429 virtual BOOL MakeConnection(
00430 OpalCall & call,
00431 const PString & party,
00432 void * userData = NULL
00433 );
00434
00444 virtual OpalMediaFormatList GetMediaFormats() const;
00446
00451 virtual void SetEndpointTypeInfo(
00452 H225_EndpointType & info
00453 ) const;
00454
00457 virtual void SetVendorIdentifierInfo(
00458 H225_VendorIdentifier & info
00459 ) const;
00460
00463 virtual void SetH221NonStandardInfo(
00464 H225_H221NonStandard & info
00465 ) const;
00467
00468
00479 void AddCapability(
00480 H323Capability * capability
00481 );
00482
00503 PINDEX SetCapability(
00504 PINDEX descriptorNum,
00505 PINDEX simultaneous,
00506 H323Capability * cap
00507 );
00508
00513 PINDEX AddAllCapabilities(
00514 PINDEX descriptorNum,
00515 PINDEX simultaneous,
00516 const PString & name
00517 );
00518
00521 void AddAllUserInputCapabilities(
00522 PINDEX descriptorNum,
00523 PINDEX simultaneous
00524 );
00525
00528 void RemoveCapabilities(
00529 const PStringArray & codecNames
00530 );
00531
00534 void ReorderCapabilities(
00535 const PStringArray & preferenceOrder
00536 );
00537
00540 H323Capability * FindCapability(
00541 const H245_Capability & cap
00542 ) const;
00543
00546 H323Capability * FindCapability(
00547 const H245_DataType & dataType
00548 ) const;
00549
00552 H323Capability * FindCapability(
00553 H323Capability::MainTypes mainType,
00554 unsigned subType
00555 ) const;
00557
00577 BOOL UseGatekeeper(
00578 const PString & address = PString::Empty(),
00579 const PString & identifier = PString::Empty(),
00580 const PString & localAddress = PString::Empty()
00581 );
00582
00593 BOOL SetGatekeeper(
00594 const PString & address,
00595 H323Transport * transport = NULL
00596 );
00597
00612 BOOL SetGatekeeperZone(
00613 const PString & address,
00614 const PString & identifier,
00615 H323Transport * transport = NULL
00616 );
00617
00627 BOOL LocateGatekeeper(
00628 const PString & identifier,
00629 H323Transport * transport = NULL
00630 );
00631
00640 BOOL DiscoverGatekeeper(
00641 H323Transport * transport = NULL
00642 );
00643
00651 virtual H323Gatekeeper * CreateGatekeeper(
00652 H323Transport * transport
00653 );
00654
00657 H323Gatekeeper * GetGatekeeper() const { return gatekeeper; }
00658
00661 BOOL IsRegisteredWithGatekeeper() const;
00662
00668 BOOL RemoveGatekeeper(
00669 int reason = -1
00670 );
00671
00674 virtual void SetGatekeeperPassword(
00675 const PString & password,
00676 const PString & username = PString::Empty()
00677 );
00678
00681 virtual const PString & GetGatekeeperUsername() const { return gatekeeperUsername; }
00682
00685 virtual const PString & GetGatekeeperPassword() const { return gatekeeperPassword; }
00686
00689 virtual H235Authenticators CreateAuthenticators();
00690
00693 virtual void OnGatekeeperConfirm();
00694
00697 virtual void OnGatekeeperReject();
00698
00701 virtual void OnRegistrationConfirm();
00702
00705 virtual void OnRegistrationReject();
00707
00712 virtual BOOL NewIncomingConnection(
00713 OpalTransport * transport
00714 );
00715
00718 virtual H323Connection * CreateConnection(
00719 OpalCall & call,
00720 const PString & token,
00721 void * userData,
00722 OpalTransport & transport,
00723 const PString & alias,
00724 const H323TransportAddress & address,
00725 H323SignalPDU * setupPDU
00726 );
00727
00743 virtual BOOL SetupTransfer(
00744 const PString & token,
00745 const PString & callIdentity,
00746 const PString & remoteParty,
00747 void * userData = NULL
00748 );
00749
00755 void TransferCall(
00756 const PString & token,
00757 const PString & remoteParty,
00758 const PString & callIdentity = PString::Empty()
00760 );
00761
00768 void ConsultationTransfer(
00769 const PString & primaryCallToken,
00770 const PString & secondaryCallToken
00771 );
00772
00776 void HoldCall(
00777 const PString & token,
00778 BOOL localHold
00779 );
00780
00784 BOOL IntrudeCall(
00785 const PString & remoteParty,
00786 unsigned capabilityLevel,
00787 void * userData = NULL
00788 );
00789
00796 BOOL ParsePartyName(
00797 const PString & party,
00798 PString & alias,
00799 H323TransportAddress & address
00800 );
00801
00812 PSafePtr<H323Connection> FindConnectionWithLock(
00813 const PString & token,
00814 PSafetyMode mode = PSafeReadWrite
00815 );
00816
00828 virtual BOOL OnIncomingCall(
00829 H323Connection & connection,
00830 const H323SignalPDU & setupPDU,
00831 H323SignalPDU & alertingPDU
00832 );
00833
00840 virtual BOOL OnOutgoingCall(
00841 H323Connection & conn,
00842 const H323SignalPDU & connectPDU
00843 );
00844
00849 virtual BOOL OnCallTransferInitiate(
00850 H323Connection & connection,
00851 const PString & remoteParty
00852 );
00853
00858 virtual BOOL OnCallTransferIdentify(
00859 H323Connection & connection
00860 );
00861
00866 virtual void OnSendARQ(
00867 H323Connection & conn,
00868 H225_AdmissionRequest & arq
00869 );
00870
00877 virtual OpalConnection::AnswerCallResponse OnAnswerCall(
00878 H323Connection & connection,
00879 const PString & callerName,
00880 const H323SignalPDU & setupPDU,
00881 H323SignalPDU & connectPDU
00882 );
00883 virtual OpalConnection::AnswerCallResponse OnAnswerCall(
00884 OpalConnection & connection,
00885 const PString & caller
00886 );
00887
00898 virtual BOOL OnAlerting(
00899 H323Connection & connection,
00900 const H323SignalPDU & alertingPDU,
00901 const PString & user
00902 );
00903
00912 virtual BOOL OnConnectionForwarded(
00913 H323Connection & connection,
00914 const PString & forwardParty,
00915 const H323SignalPDU & pdu
00916 );
00917
00926 virtual BOOL ForwardConnection(
00927 H323Connection & connection,
00928 const PString & forwardParty,
00929 const H323SignalPDU & pdu
00930 );
00931
00938 virtual void OnConnectionEstablished(
00939 H323Connection & connection,
00940 const PString & token
00941 );
00942
00945 virtual BOOL IsConnectionEstablished(
00946 const PString & token
00947 );
00948
00955 virtual void OnConnectionCleared(
00956 H323Connection & connection,
00957 const PString & token
00958 );
00960
00961
00968 virtual BOOL OnStartLogicalChannel(
00969 H323Connection & connection,
00970 H323Channel & channel
00971 );
00972
00977 virtual void OnClosedLogicalChannel(
00978 H323Connection & connection,
00979 const H323Channel & channel
00980 );
00981
00989 virtual void OnRTPStatistics(
00990 const H323Connection & connection,
00991 const RTP_Session & session
00992 ) const;
00993
00999 virtual void OnGatekeeperNATDetect(
01000 PIPSocket::Address publicAddr,
01001 PString & gkIdentifier,
01002 H323TransportAddress & gkRouteAddress
01003 );
01005
01015 virtual void OnHTTPServiceControl(
01016 unsigned operation,
01017 unsigned sessionId,
01018 const PString & url
01019 );
01020
01030 virtual void OnCallCreditServiceControl(
01031 const PString & amount,
01032 BOOL mode
01033 );
01034
01038 virtual void OnServiceControlSession(
01039 unsigned type,
01040 unsigned sessionid,
01041 const H323ServiceControlSession & session,
01042 H323Connection * connection
01043 );
01044
01047 virtual H323ServiceControlSession * CreateServiceControlSession(
01048 const H225_ServiceControlDescriptor & contents
01049 );
01051
01059 virtual BOOL OnConferenceInvite(
01060 const H323SignalPDU & setupPDU
01061 );
01062
01068 virtual BOOL OnCallIndependentSupplementaryService(
01069 const H323SignalPDU & setupPDU
01070 );
01071
01077 virtual BOOL OnNegotiateConferenceCapabilities(
01078 const H323SignalPDU & setupPDU
01079 );
01081
01092 virtual void SetLocalUserName(
01093 const PString & name
01094 );
01095
01100 virtual const PString & GetLocalUserName() const { return localAliasNames[0]; }
01101
01108 BOOL AddAliasName(
01109 const PString & name
01110 );
01111
01115 BOOL RemoveAliasName(
01116 const PString & name
01117 );
01118
01123 const PStringList & GetAliasNames() const { return localAliasNames; }
01124
01127 const PString & GetDefaultILSServer() const { return manager.GetDefaultILSServer(); }
01128
01131 void SetDefaultILSServer(
01132 const PString & server
01133 ) { manager.SetDefaultILSServer(server); }
01134
01137 BOOL IsFastStartDisabled() const
01138 { return disableFastStart; }
01139
01142 void DisableFastStart(
01143 BOOL mode
01144 ) { disableFastStart = mode; }
01145
01148 BOOL IsH245TunnelingDisabled() const
01149 { return disableH245Tunneling; }
01150
01153 void DisableH245Tunneling(
01154 BOOL mode
01155 ) { disableH245Tunneling = mode; }
01156
01159 BOOL IsH245inSetupDisabled() const
01160 { return disableH245inSetup; }
01161
01164 void DisableH245inSetup(
01165 BOOL mode
01166 ) { disableH245inSetup = mode; }
01167
01170 BOOL CanDisplayAmountString() const
01171 { return canDisplayAmountString; }
01172
01175 void SetCanDisplayAmountString(
01176 BOOL mode
01177 ) { canDisplayAmountString = mode; }
01178
01181 BOOL CanEnforceDurationLimit() const
01182 { return canEnforceDurationLimit; }
01183
01186 void SetCanEnforceDurationLimit(
01187 BOOL mode
01188 ) { canEnforceDurationLimit = mode; }
01189
01192 unsigned GetCallIntrusionProtectionLevel() const { return callIntrusionProtectionLevel; }
01193
01196 void SetCallIntrusionProtectionLevel(
01197 unsigned level
01198 ) { PAssert(level<=3, PInvalidParameter); callIntrusionProtectionLevel = level; }
01199
01202 virtual void OnReceivedInitiateReturnError();
01203
01206 H323Connection::SendUserInputModes GetSendUserInputMode() const { return defaultSendUserInputMode; }
01207
01210 void SetSendUserInputMode(H323Connection::SendUserInputModes mode) { defaultSendUserInputMode = mode; }
01211
01214 BOOL CanAutoStartReceiveVideo() const { return manager.CanAutoStartReceiveVideo(); }
01215
01218 BOOL CanAutoStartTransmitVideo() const { return manager.CanAutoStartTransmitVideo(); }
01219
01222 BOOL CanAutoStartReceiveFax() const { return autoStartReceiveFax; }
01223
01226 BOOL CanAutoStartTransmitFax() const { return autoStartTransmitFax; }
01227
01230 BOOL CanAutoCallForward() const { return autoCallForward; }
01231
01234 const H323Capabilities & GetCapabilities() const;
01235
01238 enum TerminalTypes {
01239 e_TerminalOnly = 50,
01240 e_TerminalAndMC = 70,
01241 e_GatewayOnly = 60,
01242 e_GatewayAndMC = 80,
01243 e_GatewayAndMCWithDataMP = 90,
01244 e_GatewayAndMCWithAudioMP = 100,
01245 e_GatewayAndMCWithAVMP = 110,
01246 e_GatekeeperOnly = 120,
01247 e_GatekeeperWithDataMP = 130,
01248 e_GatekeeperWithAudioMP = 140,
01249 e_GatekeeperWithAVMP = 150,
01250 e_MCUOnly = 160,
01251 e_MCUWithDataMP = 170,
01252 e_MCUWithAudioMP = 180,
01253 e_MCUWithAVMP = 190
01254 };
01255
01258 TerminalTypes GetTerminalType() const { return terminalType; }
01259
01262 BOOL IsTerminal() const;
01263
01266 BOOL IsGateway() const;
01267
01270 BOOL IsGatekeeper() const;
01271
01274 BOOL IsMCU() const;
01275
01279 unsigned GetMinAudioJitterDelay() const { return manager.GetMinAudioJitterDelay(); }
01280
01284 unsigned GetMaxAudioJitterDelay() const { return manager.GetMaxAudioJitterDelay(); }
01285
01288 void SetAudioJitterDelay(
01289 unsigned minDelay,
01290 unsigned maxDelay
01291 ) { manager.SetAudioJitterDelay(minDelay, maxDelay); }
01292
01295 unsigned GetInitialBandwidth() const { return initialBandwidth; }
01296
01299 void SetInitialBandwidth(unsigned bandwidth) { initialBandwidth = bandwidth; }
01300
01306 PSTUNClient * GetSTUN(
01307 const PIPSocket::Address & address = 0
01308 ) const { return manager.GetSTUN(address); }
01309
01312 void SetSTUNServer(
01313 const PString & server
01314 ) { manager.SetSTUNServer(server); }
01315
01318 virtual BOOL IsLocalAddress(
01319 const PIPSocket::Address & remoteAddress
01320 ) const { return manager.IsLocalAddress(remoteAddress); }
01321
01324 virtual void TranslateTCPAddress(
01325 PIPSocket::Address & localAddr,
01326 const PIPSocket::Address & remoteAddr
01327 );
01328
01331 WORD GetTCPPortBase() const { return manager.GetTCPPortBase(); }
01332
01335 WORD GetTCPPortMax() const { return manager.GetTCPPortMax(); }
01336
01339 void SetTCPPorts(unsigned tcpBase, unsigned tcpMax) { manager.SetTCPPorts(tcpBase, tcpMax); }
01340
01343 WORD GetNextTCPPort() { return manager.GetNextTCPPort(); }
01344
01347 WORD GetUDPPortBase() const { return manager.GetUDPPortBase(); }
01348
01351 WORD GetUDPPortMax() const { return manager.GetUDPPortMax(); }
01352
01355 void SetUDPPorts(unsigned udpBase, unsigned udpMax) { manager.SetUDPPorts(udpBase, udpMax); }
01356
01359 WORD GetNextUDPPort() { return manager.GetNextUDPPort(); }
01360
01363 WORD GetRtpIpPortBase() const { return manager.GetRtpIpPortBase(); }
01364
01367 WORD GetRtpIpPortMax() const { return manager.GetRtpIpPortMax(); }
01368
01371 void SetRtpIpPorts(unsigned udpBase, unsigned udpMax) { manager.SetRtpIpPorts(udpBase, udpMax); }
01372
01375 WORD GetRtpIpPortPair() { return manager.GetRtpIpPortPair(); }
01376
01379 BYTE GetRtpIpTypeofService() const { return manager.GetRtpIpTypeofService(); }
01380
01383 void SetRtpIpTypeofService(unsigned tos) { manager.SetRtpIpTypeofService(tos); }
01384
01387 const PTimeInterval & GetSignallingChannelCallTimeout() const { return signallingChannelCallTimeout; }
01388
01391 const PTimeInterval & GetControlChannelStartTimeout() const { return controlChannelStartTimeout; }
01392
01395 const PTimeInterval & GetEndSessionTimeout() const { return endSessionTimeout; }
01396
01399 const PTimeInterval & GetMasterSlaveDeterminationTimeout() const { return masterSlaveDeterminationTimeout; }
01400
01403 unsigned GetMasterSlaveDeterminationRetries() const { return masterSlaveDeterminationRetries; }
01404
01407 const PTimeInterval & GetCapabilityExchangeTimeout() const { return capabilityExchangeTimeout; }
01408
01411 const PTimeInterval & GetLogicalChannelTimeout() const { return logicalChannelTimeout; }
01412
01415 const PTimeInterval & GetRequestModeTimeout() const { return logicalChannelTimeout; }
01416
01419 const PTimeInterval & GetRoundTripDelayTimeout() const { return roundTripDelayTimeout; }
01420
01423 const PTimeInterval & GetRoundTripDelayRate() const { return roundTripDelayRate; }
01424
01427 BOOL ShouldClearCallOnRoundTripFail() const { return clearCallOnRoundTripFail; }
01428
01431 const PTimeInterval & GetNoMediaTimeout() const { return manager.GetNoMediaTimeout(); }
01432
01435 BOOL SetNoMediaTimeout(
01436 const PTimeInterval & newInterval
01437 ) { return manager.SetNoMediaTimeout(newInterval); }
01438
01441 const PTimeInterval & GetGatekeeperRequestTimeout() const { return gatekeeperRequestTimeout; }
01442
01445 unsigned GetGatekeeperRequestRetries() const { return gatekeeperRequestRetries; }
01446
01449 const PTimeInterval & GetRasRequestTimeout() const { return rasRequestTimeout; }
01450
01453 unsigned GetRasRequestRetries() const { return rasRequestRetries; }
01454
01458 const PTimeInterval & GetGatekeeperTimeToLive() const { return registrationTimeToLive; }
01459
01463 void SetGatekeeperTimeToLive(const PTimeInterval & ttl) { registrationTimeToLive = ttl; }
01464
01467 const PString & GetGkAccessTokenOID() const { return gkAccessTokenOID; }
01468
01471 void SetGkAccessTokenOID(const PString & token) { gkAccessTokenOID = token; }
01472
01475 const PTimeInterval & GetCallTransferT1() const { return callTransferT1; }
01476
01479 const PTimeInterval & GetCallTransferT2() const { return callTransferT2; }
01480
01483 const PTimeInterval & GetCallTransferT3() const { return callTransferT3; }
01484
01487 const PTimeInterval & GetCallTransferT4() const { return callTransferT4; }
01488
01490 const PTimeInterval & GetCallIntrusionT1() const { return callIntrusionT1; }
01491 const PTimeInterval & GetCallIntrusionT2() const { return callIntrusionT2; }
01492 const PTimeInterval & GetCallIntrusionT3() const { return callIntrusionT3; }
01493 const PTimeInterval & GetCallIntrusionT4() const { return callIntrusionT4; }
01494 const PTimeInterval & GetCallIntrusionT5() const { return callIntrusionT5; }
01495 const PTimeInterval & GetCallIntrusionT6() const { return callIntrusionT6; }
01496
01499 H323CallIdentityDict& GetCallIdentityDictionary() { return secondaryConnectionsActive; }
01500
01503 unsigned GetNextH450CallIdentityValue() const { return ++nextH450CallIdentity; }
01504
01506
01510 static BYTE defaultT35CountryCode;
01511 static BYTE defaultT35Extension;
01512 static WORD defaultManufacturerCode;
01513
01514 protected:
01515 H323Gatekeeper * InternalCreateGatekeeper(H323Transport * transport);
01516 BOOL InternalRegisterGatekeeper(H323Gatekeeper * gk, BOOL discovered);
01517 BOOL InternalMakeCall(
01518 OpalCall & call,
01519 const PString & existingToken,
01520 const PString & callIdentity,
01521 unsigned capabilityLevel,
01522 const PString & remoteParty,
01523 void * userData
01524 );
01525
01526
01527 PStringList localAliasNames;
01528 BOOL autoStartReceiveFax;
01529 BOOL autoStartTransmitFax;
01530 BOOL autoCallForward;
01531 BOOL disableFastStart;
01532 BOOL disableH245Tunneling;
01533 BOOL disableH245inSetup;
01534 BOOL canDisplayAmountString;
01535 BOOL canEnforceDurationLimit;
01536 unsigned callIntrusionProtectionLevel;
01537 H323Connection::SendUserInputModes defaultSendUserInputMode;
01538
01539 BYTE t35CountryCode;
01540 BYTE t35Extension;
01541 WORD manufacturerCode;
01542 TerminalTypes terminalType;
01543
01544 BOOL clearCallOnRoundTripFail;
01545
01546
01547 PTimeInterval signallingChannelCallTimeout;
01548 PTimeInterval controlChannelStartTimeout;
01549 PTimeInterval endSessionTimeout;
01550 PTimeInterval masterSlaveDeterminationTimeout;
01551 unsigned masterSlaveDeterminationRetries;
01552 PTimeInterval capabilityExchangeTimeout;
01553 PTimeInterval logicalChannelTimeout;
01554 PTimeInterval requestModeTimeout;
01555 PTimeInterval roundTripDelayTimeout;
01556 PTimeInterval roundTripDelayRate;
01557 PTimeInterval gatekeeperRequestTimeout;
01558 unsigned gatekeeperRequestRetries;
01559 PTimeInterval rasRequestTimeout;
01560 unsigned rasRequestRetries;
01561 PTimeInterval registrationTimeToLive;
01562
01563 PString gkAccessTokenOID;
01564
01565
01566
01567 PTimeInterval callTransferT1;
01568
01569
01570 PTimeInterval callTransferT2;
01571
01572
01573 PTimeInterval callTransferT3;
01574
01575
01576 PTimeInterval callTransferT4;
01577
01579 PTimeInterval callIntrusionT1;
01580 PTimeInterval callIntrusionT2;
01581 PTimeInterval callIntrusionT3;
01582 PTimeInterval callIntrusionT4;
01583 PTimeInterval callIntrusionT5;
01584 PTimeInterval callIntrusionT6;
01585
01586
01587 mutable H323Capabilities capabilities;
01588 H323Gatekeeper * gatekeeper;
01589 PString gatekeeperUsername;
01590 PString gatekeeperPassword;
01591 H323CallIdentityDict secondaryConnectionsActive;
01592
01593 mutable PAtomicInteger nextH450CallIdentity;
01595
01596 };
01597
01598
01599 #endif // __OPAL_H323EP_H
01600
01601