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
00332
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348
00349
00350
00351
00352
00353
00354
00355
00356
00357
00358
00359
00360
00361
00362
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372
00373
00374
00375
00376
00377
00378
00379
00380
00381
00382
00383
00384
00385
00386
00387
00388
00389
00390
00391
00392
00393
00394
00395
00396
00397
00398
00399
00400
00401
00402
00403
00404
00405
00406
00407
00408 #ifndef __OPAL_H323EP_H
00409 #define __OPAL_H323EP_H
00410
00411 #ifdef P_USE_PRAGMA
00412 #pragma interface
00413 #endif
00414
00415
00416 #include <opal/endpoint.h>
00417 #include <opal/manager.h>
00418 #include <opal/call.h>
00419 #include <opal/transports.h>
00420 #include <h323/h323con.h>
00421 #include <h323/h323caps.h>
00422 #include <h323/h235auth.h>
00423
00424 #ifdef H323_H460
00425 #include <h323/h4601.h>
00426 #endif
00427
00428
00429 class H225_EndpointType;
00430 class H225_VendorIdentifier;
00431 class H225_H221NonStandard;
00432 class H225_ServiceControlDescriptor;
00433 class H225_FeatureSet;
00434
00435 class H235SecurityInfo;
00436
00437 class H323Gatekeeper;
00438 class H323SignalPDU;
00439 class H323ServiceControlSession;
00440
00442
00455 class H323EndPoint : public OpalEndPoint
00456 {
00457 PCLASSINFO(H323EndPoint, OpalEndPoint);
00458
00459 public:
00460 enum {
00461 DefaultTcpSignalPort = 1720
00462 };
00463
00468 H323EndPoint(
00469 OpalManager & manager,
00470 const char * prefix = "h323",
00471 WORD defaultSignalPort = DefaultTcpSignalPort
00472 );
00473
00476 ~H323EndPoint();
00478
00510 virtual BOOL MakeConnection(
00511 OpalCall & call,
00512 const PString & party,
00513 void * userData = NULL,
00514 unsigned int options = NULL,
00515 OpalConnection::StringOptions * stringOptions = NULL
00516 );
00517
00527 virtual OpalMediaFormatList GetMediaFormats() const;
00529
00534 virtual void SetEndpointTypeInfo(
00535 H225_EndpointType & info
00536 ) const;
00537
00540 virtual void SetVendorIdentifierInfo(
00541 H225_VendorIdentifier & info
00542 ) const;
00543
00546 virtual void SetH221NonStandardInfo(
00547 H225_H221NonStandard & info
00548 ) const;
00550
00551
00562 void AddCapability(
00563 H323Capability * capability
00564 );
00565
00586 PINDEX SetCapability(
00587 PINDEX descriptorNum,
00588 PINDEX simultaneous,
00589 H323Capability * cap
00590 );
00591
00596 PINDEX AddAllCapabilities(
00597 PINDEX descriptorNum,
00598 PINDEX simultaneous,
00599 const PString & name
00600 );
00601
00604 void AddAllUserInputCapabilities(
00605 PINDEX descriptorNum,
00606 PINDEX simultaneous
00607 );
00608
00611 void RemoveCapabilities(
00612 const PStringArray & codecNames
00613 );
00614
00617 void ReorderCapabilities(
00618 const PStringArray & preferenceOrder
00619 );
00620
00623 H323Capability * FindCapability(
00624 const H245_Capability & cap
00625 ) const;
00626
00629 H323Capability * FindCapability(
00630 const H245_DataType & dataType
00631 ) const;
00632
00635 H323Capability * FindCapability(
00636 H323Capability::MainTypes mainType,
00637 unsigned subType
00638 ) const;
00640
00660 BOOL UseGatekeeper(
00661 const PString & address = PString::Empty(),
00662 const PString & identifier = PString::Empty(),
00663 const PString & localAddress = PString::Empty()
00664 );
00665
00676 BOOL SetGatekeeper(
00677 const PString & address,
00678 H323Transport * transport = NULL
00679 );
00680
00695 BOOL SetGatekeeperZone(
00696 const PString & address,
00697 const PString & identifier,
00698 H323Transport * transport = NULL
00699 );
00700
00710 BOOL LocateGatekeeper(
00711 const PString & identifier,
00712 H323Transport * transport = NULL
00713 );
00714
00723 BOOL DiscoverGatekeeper(
00724 H323Transport * transport = NULL
00725 );
00726
00734 virtual H323Gatekeeper * CreateGatekeeper(
00735 H323Transport * transport
00736 );
00737
00740 H323Gatekeeper * GetGatekeeper() const { return gatekeeper; }
00741
00744 BOOL IsRegisteredWithGatekeeper() const;
00745
00751 BOOL RemoveGatekeeper(
00752 int reason = -1
00753 );
00754
00757 virtual void SetGatekeeperPassword(
00758 const PString & password,
00759 const PString & username = PString::Empty()
00760 );
00761
00764 virtual const PString & GetGatekeeperUsername() const { return gatekeeperUsername; }
00765
00768 virtual const PString & GetGatekeeperPassword() const { return gatekeeperPassword; }
00769
00772 virtual H235Authenticators CreateAuthenticators();
00773
00776 virtual void OnGatekeeperConfirm();
00777
00780 virtual void OnGatekeeperReject();
00781
00784 virtual void OnRegistrationConfirm();
00785
00788 virtual void OnRegistrationReject();
00790
00795 virtual BOOL NewIncomingConnection(
00796 OpalTransport * transport
00797 );
00798
00801 virtual H323Connection * CreateConnection(
00802 OpalCall & call,
00803 const PString & token,
00804 void * userData,
00805 OpalTransport & transport,
00806 const PString & alias,
00807 const H323TransportAddress & address,
00808 H323SignalPDU * setupPDU,
00809 unsigned options = 0,
00810 OpalConnection::StringOptions * stringOptions = NULL
00811 );
00812
00828 virtual BOOL SetupTransfer(
00829 const PString & token,
00830 const PString & callIdentity,
00831 const PString & remoteParty,
00832 void * userData = NULL
00833 );
00834
00840 void TransferCall(
00841 const PString & token,
00842 const PString & remoteParty,
00843 const PString & callIdentity = PString::Empty()
00845 );
00846
00853 void ConsultationTransfer(
00854 const PString & primaryCallToken,
00855 const PString & secondaryCallToken
00856 );
00857
00861 void HoldCall(
00862 const PString & token,
00863 BOOL localHold
00864 );
00865
00869 BOOL IntrudeCall(
00870 const PString & remoteParty,
00871 unsigned capabilityLevel,
00872 void * userData = NULL
00873 );
00874
00881 BOOL ParsePartyName(
00882 const PString & party,
00883 PString & alias,
00884 H323TransportAddress & address
00885 );
00886
00897 PSafePtr<H323Connection> FindConnectionWithLock(
00898 const PString & token,
00899 PSafetyMode mode = PSafeReadWrite
00900 );
00901
00909 virtual BOOL OnSendSignalSetup(H323Connection & connection,
00910 H323SignalPDU & setupPDU);
00911
00923 virtual BOOL OnSendCallProceeding(H323Connection & connection,
00924 H323SignalPDU & callProceedingPDU
00925 );
00926
00938 virtual BOOL OnSendConnect(H323Connection & connection,
00939 H323SignalPDU & connectPDU
00940 );
00941
00953 virtual BOOL OnIncomingCall(
00954 H323Connection & connection,
00955 const H323SignalPDU & setupPDU,
00956 H323SignalPDU & alertingPDU
00957 );
00958
00965 virtual BOOL OnOutgoingCall(
00966 H323Connection & conn,
00967 const H323SignalPDU & connectPDU
00968 );
00969
00974 virtual BOOL OnCallTransferInitiate(
00975 H323Connection & connection,
00976 const PString & remoteParty
00977 );
00978
00983 virtual BOOL OnCallTransferIdentify(
00984 H323Connection & connection
00985 );
00986
00991 virtual void OnSendARQ(
00992 H323Connection & conn,
00993 H225_AdmissionRequest & arq
00994 );
00995
01002 virtual OpalConnection::AnswerCallResponse OnAnswerCall(
01003 H323Connection & connection,
01004 const PString & callerName,
01005 const H323SignalPDU & setupPDU,
01006 H323SignalPDU & connectPDU,
01007 H323SignalPDU & progressPDU
01008 );
01009 virtual OpalConnection::AnswerCallResponse OnAnswerCall(
01010 OpalConnection & connection,
01011 const PString & caller
01012 );
01013
01024 virtual BOOL OnAlerting(
01025 H323Connection & connection,
01026 const H323SignalPDU & alertingPDU,
01027 const PString & user
01028 );
01029
01035 virtual BOOL OnSendAlerting(H323Connection & connection,
01036 H323SignalPDU & alerting,
01037 const PString & calleeName,
01038 BOOL withMedia
01039 );
01040
01045 virtual BOOL OnSentAlerting(H323Connection & connection);
01046
01055 virtual BOOL OnConnectionForwarded(
01056 H323Connection & connection,
01057 const PString & forwardParty,
01058 const H323SignalPDU & pdu
01059 );
01060
01069 virtual BOOL ForwardConnection(
01070 H323Connection & connection,
01071 const PString & forwardParty,
01072 const H323SignalPDU & pdu
01073 );
01074
01081 virtual void OnConnectionEstablished(
01082 H323Connection & connection,
01083 const PString & token
01084 );
01085
01088 virtual BOOL IsConnectionEstablished(
01089 const PString & token
01090 );
01091
01098 virtual void OnConnectionCleared(
01099 H323Connection & connection,
01100 const PString & token
01101 );
01103
01104
01111 virtual BOOL OnStartLogicalChannel(
01112 H323Connection & connection,
01113 H323Channel & channel
01114 );
01115
01120 virtual void OnClosedLogicalChannel(
01121 H323Connection & connection,
01122 const H323Channel & channel
01123 );
01124
01132 virtual void OnRTPStatistics(
01133 const H323Connection & connection,
01134 const RTP_Session & session
01135 ) const;
01136
01142 virtual void OnGatekeeperNATDetect(
01143 PIPSocket::Address publicAddr,
01144 PString & gkIdentifier,
01145 H323TransportAddress & gkRouteAddress
01146 );
01148
01158 virtual void OnHTTPServiceControl(
01159 unsigned operation,
01160 unsigned sessionId,
01161 const PString & url
01162 );
01163
01173 virtual void OnCallCreditServiceControl(
01174 const PString & amount,
01175 BOOL mode
01176 );
01177
01181 virtual void OnServiceControlSession(
01182 unsigned type,
01183 unsigned sessionid,
01184 const H323ServiceControlSession & session,
01185 H323Connection * connection
01186 );
01187
01190 virtual H323ServiceControlSession * CreateServiceControlSession(
01191 const H225_ServiceControlDescriptor & contents
01192 );
01194
01202 virtual BOOL OnConferenceInvite(
01203 const H323SignalPDU & setupPDU
01204 );
01205
01211 virtual BOOL OnCallIndependentSupplementaryService(
01212 const H323SignalPDU & setupPDU
01213 );
01214
01220 virtual BOOL OnNegotiateConferenceCapabilities(
01221 const H323SignalPDU & setupPDU
01222 );
01224
01235 virtual void SetLocalUserName(
01236 const PString & name
01237 );
01238
01243 virtual const PString & GetLocalUserName() const { return localAliasNames[0]; }
01244
01251 BOOL AddAliasName(
01252 const PString & name
01253 );
01254
01258 BOOL RemoveAliasName(
01259 const PString & name
01260 );
01261
01266 const PStringList & GetAliasNames() const { return localAliasNames; }
01267
01270 const PString & GetDefaultILSServer() const { return manager.GetDefaultILSServer(); }
01271
01274 void SetDefaultILSServer(
01275 const PString & server
01276 ) { manager.SetDefaultILSServer(server); }
01277
01280 BOOL IsFastStartDisabled() const
01281 { return disableFastStart; }
01282
01285 void DisableFastStart(
01286 BOOL mode
01287 ) { disableFastStart = mode; }
01288
01291 BOOL IsH245TunnelingDisabled() const
01292 { return disableH245Tunneling; }
01293
01296 void DisableH245Tunneling(
01297 BOOL mode
01298 ) { disableH245Tunneling = mode; }
01299
01302 BOOL IsH245inSetupDisabled() const
01303 { return disableH245inSetup; }
01304
01307 void DisableH245inSetup(
01308 BOOL mode
01309 ) { disableH245inSetup = mode; }
01310
01314 BOOL IsH245Disabled() const
01315 { return m_bH245Disabled; }
01316
01320 void DisableH245(BOOL bH245Disabled) { m_bH245Disabled = bH245Disabled; }
01321
01324 BOOL CanDisplayAmountString() const
01325 { return canDisplayAmountString; }
01326
01329 void SetCanDisplayAmountString(
01330 BOOL mode
01331 ) { canDisplayAmountString = mode; }
01332
01335 BOOL CanEnforceDurationLimit() const
01336 { return canEnforceDurationLimit; }
01337
01340 void SetCanEnforceDurationLimit(
01341 BOOL mode
01342 ) { canEnforceDurationLimit = mode; }
01343
01344 #if OPAL_H450
01345
01347 unsigned GetCallIntrusionProtectionLevel() const { return callIntrusionProtectionLevel; }
01348
01351 void SetCallIntrusionProtectionLevel(
01352 unsigned level
01353 ) { PAssert(level<=3, PInvalidParameter); callIntrusionProtectionLevel = level; }
01354 #endif
01355
01358 virtual void OnReceivedInitiateReturnError();
01359
01360 #if OPAL_VIDEO
01361
01363 BOOL CanAutoStartReceiveVideo() const { return manager.CanAutoStartReceiveVideo(); }
01364
01367 BOOL CanAutoStartTransmitVideo() const { return manager.CanAutoStartTransmitVideo(); }
01368 #endif
01369
01370 #if OPAL_T38FAX
01371
01373 BOOL CanAutoStartReceiveFax() const { return autoStartReceiveFax; }
01374
01377 BOOL CanAutoStartTransmitFax() const { return autoStartTransmitFax; }
01378 #endif
01379
01382 BOOL IsH224Enabled() const { return isH224Enabled; }
01383
01386 void SetIsH224Enabled(BOOL flag) { isH224Enabled = flag; }
01387
01390 BOOL CanAutoCallForward() const { return autoCallForward; }
01391
01394 const H323Capabilities & GetCapabilities() const;
01395
01398 enum TerminalTypes {
01399 e_TerminalOnly = 50,
01400 e_TerminalAndMC = 70,
01401 e_GatewayOnly = 60,
01402 e_GatewayAndMC = 80,
01403 e_GatewayAndMCWithDataMP = 90,
01404 e_GatewayAndMCWithAudioMP = 100,
01405 e_GatewayAndMCWithAVMP = 110,
01406 e_GatekeeperOnly = 120,
01407 e_GatekeeperWithDataMP = 130,
01408 e_GatekeeperWithAudioMP = 140,
01409 e_GatekeeperWithAVMP = 150,
01410 e_MCUOnly = 160,
01411 e_MCUWithDataMP = 170,
01412 e_MCUWithAudioMP = 180,
01413 e_MCUWithAVMP = 190
01414 };
01415
01418 TerminalTypes GetTerminalType() const { return terminalType; }
01419
01422 BOOL IsTerminal() const;
01423
01426 BOOL IsGateway() const;
01427
01430 BOOL IsGatekeeper() const;
01431
01434 BOOL IsMCU() const;
01435
01439 unsigned GetMinAudioJitterDelay() const { return manager.GetMinAudioJitterDelay(); }
01440
01444 unsigned GetMaxAudioJitterDelay() const { return manager.GetMaxAudioJitterDelay(); }
01445
01448 void SetAudioJitterDelay(
01449 unsigned minDelay,
01450 unsigned maxDelay
01451 ) { manager.SetAudioJitterDelay(minDelay, maxDelay); }
01452
01455 unsigned GetInitialBandwidth() const { return initialBandwidth; }
01456
01459 void SetInitialBandwidth(unsigned bandwidth) { initialBandwidth = bandwidth; }
01460
01463 virtual BOOL OnSendFeatureSet(unsigned, H225_FeatureSet &);
01464
01467 virtual void OnReceiveFeatureSet(unsigned, const H225_FeatureSet &);
01468
01469 #ifdef H323_H460
01470
01472 H460_FeatureSet & GetFeatureSet() { return features; };
01473 #endif
01474
01477 virtual BOOL IsLocalAddress(
01478 const PIPSocket::Address & remoteAddress
01479 ) const { return manager.IsLocalAddress(remoteAddress); }
01480
01483 virtual void TranslateTCPAddress(
01484 PIPSocket::Address & localAddr,
01485 const PIPSocket::Address & remoteAddr
01486 );
01487
01490 WORD GetTCPPortBase() const { return manager.GetTCPPortBase(); }
01491
01494 WORD GetTCPPortMax() const { return manager.GetTCPPortMax(); }
01495
01498 void SetTCPPorts(unsigned tcpBase, unsigned tcpMax) { manager.SetTCPPorts(tcpBase, tcpMax); }
01499
01502 WORD GetNextTCPPort() { return manager.GetNextTCPPort(); }
01503
01506 WORD GetUDPPortBase() const { return manager.GetUDPPortBase(); }
01507
01510 WORD GetUDPPortMax() const { return manager.GetUDPPortMax(); }
01511
01514 void SetUDPPorts(unsigned udpBase, unsigned udpMax) { manager.SetUDPPorts(udpBase, udpMax); }
01515
01518 WORD GetNextUDPPort() { return manager.GetNextUDPPort(); }
01519
01522 WORD GetRtpIpPortBase() const { return manager.GetRtpIpPortBase(); }
01523
01526 WORD GetRtpIpPortMax() const { return manager.GetRtpIpPortMax(); }
01527
01530 void SetRtpIpPorts(unsigned udpBase, unsigned udpMax) { manager.SetRtpIpPorts(udpBase, udpMax); }
01531
01534 WORD GetRtpIpPortPair() { return manager.GetRtpIpPortPair(); }
01535
01538 BYTE GetRtpIpTypeofService() const { return manager.GetRtpIpTypeofService(); }
01539
01542 void SetRtpIpTypeofService(unsigned tos) { manager.SetRtpIpTypeofService(tos); }
01543
01546 const PTimeInterval & GetSignallingChannelCallTimeout() const { return signallingChannelCallTimeout; }
01547
01550 const PTimeInterval & GetControlChannelStartTimeout() const { return controlChannelStartTimeout; }
01551
01554 const PTimeInterval & GetEndSessionTimeout() const { return endSessionTimeout; }
01555
01558 const PTimeInterval & GetMasterSlaveDeterminationTimeout() const { return masterSlaveDeterminationTimeout; }
01559
01562 unsigned GetMasterSlaveDeterminationRetries() const { return masterSlaveDeterminationRetries; }
01563
01566 const PTimeInterval & GetCapabilityExchangeTimeout() const { return capabilityExchangeTimeout; }
01567
01570 const PTimeInterval & GetLogicalChannelTimeout() const { return logicalChannelTimeout; }
01571
01574 const PTimeInterval & GetRequestModeTimeout() const { return logicalChannelTimeout; }
01575
01578 const PTimeInterval & GetRoundTripDelayTimeout() const { return roundTripDelayTimeout; }
01579
01582 const PTimeInterval & GetRoundTripDelayRate() const { return roundTripDelayRate; }
01583
01586 BOOL ShouldClearCallOnRoundTripFail() const { return clearCallOnRoundTripFail; }
01587
01590 const PTimeInterval & GetNoMediaTimeout() const { return manager.GetNoMediaTimeout(); }
01591
01594 BOOL SetNoMediaTimeout(
01595 const PTimeInterval & newInterval
01596 ) { return manager.SetNoMediaTimeout(newInterval); }
01597
01600 const PTimeInterval & GetGatekeeperRequestTimeout() const { return gatekeeperRequestTimeout; }
01601
01604 unsigned GetGatekeeperRequestRetries() const { return gatekeeperRequestRetries; }
01605
01608 const PTimeInterval & GetRasRequestTimeout() const { return rasRequestTimeout; }
01609
01612 unsigned GetRasRequestRetries() const { return rasRequestRetries; }
01613
01617 const PTimeInterval & GetGatekeeperTimeToLive() const { return registrationTimeToLive; }
01618
01622 void SetGatekeeperTimeToLive(const PTimeInterval & ttl) { registrationTimeToLive = ttl; }
01623
01626 const PString & GetGkAccessTokenOID() const { return gkAccessTokenOID; }
01627
01630 void SetGkAccessTokenOID(const PString & token) { gkAccessTokenOID = token; }
01631
01634 BOOL GetSendGRQ() const
01635 { return sendGRQ; }
01636
01639 void SetSendGRQ(BOOL v)
01640 { sendGRQ = v; }
01641
01644 const PTimeInterval & GetCallTransferT1() const { return callTransferT1; }
01645
01648 const PTimeInterval & GetCallTransferT2() const { return callTransferT2; }
01649
01652 const PTimeInterval & GetCallTransferT3() const { return callTransferT3; }
01653
01656 const PTimeInterval & GetCallTransferT4() const { return callTransferT4; }
01657
01659 const PTimeInterval & GetCallIntrusionT1() const { return callIntrusionT1; }
01660 const PTimeInterval & GetCallIntrusionT2() const { return callIntrusionT2; }
01661 const PTimeInterval & GetCallIntrusionT3() const { return callIntrusionT3; }
01662 const PTimeInterval & GetCallIntrusionT4() const { return callIntrusionT4; }
01663 const PTimeInterval & GetCallIntrusionT5() const { return callIntrusionT5; }
01664 const PTimeInterval & GetCallIntrusionT6() const { return callIntrusionT6; }
01665
01668 H323CallIdentityDict& GetCallIdentityDictionary() { return secondaryConnectionsActive; }
01669
01672 #if OPAL_H450
01673 unsigned GetNextH450CallIdentityValue() const { return ++nextH450CallIdentity; }
01674 #endif
01675
01677
01678 protected:
01679 H323Gatekeeper * InternalCreateGatekeeper(H323Transport * transport);
01680 BOOL InternalRegisterGatekeeper(H323Gatekeeper * gk, BOOL discovered);
01681 BOOL InternalMakeCall(
01682 OpalCall & call,
01683 const PString & existingToken,
01684 const PString & callIdentity,
01685 unsigned capabilityLevel,
01686 const PString & remoteParty,
01687 void * userData,
01688 unsigned int options = 0,
01689 OpalConnection::StringOptions * stringOptions = NULL
01690 );
01691
01692
01693 PStringList localAliasNames;
01694 BOOL autoStartReceiveFax;
01695 BOOL autoStartTransmitFax;
01696 BOOL isH224Enabled;
01697 BOOL autoCallForward;
01698 BOOL disableFastStart;
01699 BOOL disableH245Tunneling;
01700 BOOL disableH245inSetup;
01701 BOOL m_bH245Disabled;
01702 BOOL canDisplayAmountString;
01703 BOOL canEnforceDurationLimit;
01704 #if OPAL_H450
01705 unsigned callIntrusionProtectionLevel;
01706 #endif
01707
01708 TerminalTypes terminalType;
01709
01710 BOOL clearCallOnRoundTripFail;
01711
01712
01713 PTimeInterval signallingChannelCallTimeout;
01714 PTimeInterval controlChannelStartTimeout;
01715 PTimeInterval endSessionTimeout;
01716 PTimeInterval masterSlaveDeterminationTimeout;
01717 unsigned masterSlaveDeterminationRetries;
01718 PTimeInterval capabilityExchangeTimeout;
01719 PTimeInterval logicalChannelTimeout;
01720 PTimeInterval requestModeTimeout;
01721 PTimeInterval roundTripDelayTimeout;
01722 PTimeInterval roundTripDelayRate;
01723 PTimeInterval gatekeeperRequestTimeout;
01724 unsigned gatekeeperRequestRetries;
01725 PTimeInterval rasRequestTimeout;
01726 unsigned rasRequestRetries;
01727 PTimeInterval registrationTimeToLive;
01728
01729 PString gkAccessTokenOID;
01730 BOOL sendGRQ;
01731
01732
01733
01734 PTimeInterval callTransferT1;
01735
01736
01737 PTimeInterval callTransferT2;
01738
01739
01740 PTimeInterval callTransferT3;
01741
01742
01743 PTimeInterval callTransferT4;
01744
01746 PTimeInterval callIntrusionT1;
01747 PTimeInterval callIntrusionT2;
01748 PTimeInterval callIntrusionT3;
01749 PTimeInterval callIntrusionT4;
01750 PTimeInterval callIntrusionT5;
01751 PTimeInterval callIntrusionT6;
01752
01753
01754 mutable H323Capabilities capabilities;
01755 H323Gatekeeper * gatekeeper;
01756 PString gatekeeperUsername;
01757 PString gatekeeperPassword;
01758 H323CallIdentityDict secondaryConnectionsActive;
01759
01760 #if OPAL_H450
01761 mutable PAtomicInteger nextH450CallIdentity;
01763 #endif
01764
01765 #if OPAL_H460
01766 H460_FeatureSet features;
01767 #endif
01768
01769 };
01770
01771
01772 #if P_SSL
01773
01774 class H323SecureEndPoint : public H323EndPoint
01775 {
01776 PCLASSINFO(H323SecureEndPoint, H323EndPoint);
01777 public:
01778 enum {
01779 DefaultTcpSignalPort = 1300
01780 };
01781
01782 H323SecureEndPoint(OpalManager & _manager)
01783 : H323EndPoint(_manager, "h323s", DefaultTcpSignalPort)
01784 {
01785 }
01786
01787 PString GetDefaultTransport() const
01788 { return "tcps$"; }
01790 };
01791
01792 #endif // P_SSL
01793
01794 #endif // __OPAL_H323EP_H
01795
01796