h225rastypes.h
上传用户:hnnddl
上传日期:2007-01-06
资源大小:3580k
文件大小:39k
源码类别:

IP电话/视频会议

开发平台:

WINDOWS

  1. /*
  2.  * $Revision: 1.11 $
  3.  * $Date: 1999/03/15 22:50:22 $
  4.  */
  5.  ////////////////////////////////////////////////////////////////
  6. //               Copyright (c) 1996,97 Lucent Technologies    //
  7. //                       All Rights Reserved                  //
  8. //                                                            //
  9. //                       THIS IS UNPUBLISHED                  //
  10. //                       PROPRIETARY SOURCE                   //
  11. //                   CODE OF Lucent Technologies              //
  12. //       AND elemedia    //
  13. //                                                            //
  14. //           The copyright notice above does not evidence any //
  15. //          actual or intended publication of such source code//
  16. ////////////////////////////////////////////////////////////////
  17. //
  18. /////////////////////////////////////////////////////////////////
  19. // File : h225rastypes.h    //
  20. //                                                             //
  21. // The classes used by the ras protocol api functions.    //
  22. //    //
  23. // History:    //
  24. //    //
  25. //  25_Mar_1997 Created    //
  26. // 26_Aug_1997 Changed wchar_t to unsigned short     //
  27. // (ISO/IEC 10646-1)    //
  28. // 11_Feb_1998 Added methods to setting Duplicate Alias list  //
  29. // in H225RASMsgRRJ class.    //
  30. //  08_Apr_1998 Addition of MsgItemCallID class.    //
  31. // ARQ, BRQ and DRQ derive from MSGItemCallID    //
  32. //  09_Apr_1998 Added overloaded Get/SetProtocolID methods     //
  33. // 05_May_1998 Added new messages: IACK, INAK, RIP, RAI,RAC.  //
  34. // Added new Items: MsgItemAlternateGK,    //
  35. //  MsgItemAltGKInfo.    //
  36. // Changed all MsgItems to Item.    //
  37. // 05_May_1998 Added V2 msg types in H225RASMsgTypes.    //
  38. // 08_May_1998 Changed prototypes for SetProtocolID and    //
  39. // GetProtocolID in ItemPID class.    //
  40. // 26_Aug_1998 Added DestinationInfo for ACF    //
  41. // 11_Mar_1998 Added default constructor for ItemConferenceID //
  42. //    //
  43. //    //
  44. /////////////////////////////////////////////////////////////////
  45. #if (!defined(__H225RASTYPES_H__))
  46. #define __H225RASTYPES_H__
  47. #include "util/platform.h"
  48. #include "api/h225types.h"
  49. #include "api/h225raserr.h"
  50. // Forward declerations.
  51. class H225RasMessage;
  52. class H225RASProtocol;
  53. class H225NonStandardParameter;
  54. class H225EndpointType;
  55. class H225QseriesOptions;
  56. class H225AliasAddress;
  57. class H225ProtocolIdentifier;
  58. class H225VendorIdentifier;
  59. class H225GatekeeperIdentifier;
  60. class H225TransportAddress;
  61. class H225EndpointIdentifier;
  62. class H225ConferenceIdentifier;
  63. class H225TransportChannelInfo;
  64. class H225RTPSession;
  65. class H225PerCallInfoValue;
  66. class H225RASProtocol;
  67. class H225AlternateGK; // V2
  68. class H225AltGKInfo;
  69. class H225UUIEsRequested;
  70. class H225Endpoint;
  71. // The type values for RAS messages.
  72. enum H225RASMsgTypes
  73. {
  74. MSG_INVALID = 0,
  75. MSG_GRQ,
  76. MSG_GCF,
  77. MSG_GRJ,
  78. MSG_RRQ,
  79. MSG_RCF,
  80. MSG_RRJ,
  81. MSG_URQ,
  82. MSG_UCF,
  83. MSG_URJ,
  84. MSG_ARQ,
  85. MSG_ACF,
  86. MSG_ARJ,
  87. MSG_BRQ,
  88. MSG_BCF,
  89. MSG_BRJ,
  90. MSG_DRQ,
  91. MSG_DCF,
  92. MSG_DRJ,
  93. MSG_LRQ,
  94. MSG_LCF,
  95. MSG_LRJ,
  96. MSG_IRQ,
  97. MSG_IRR,
  98. MSG_NSM,
  99. MSG_XRS,
  100. MSG_RIP,
  101. MSG_RAI,
  102. MSG_RAC,
  103. MSG_IACK,
  104. MSG_INAK
  105. };
  106. // Values taken by the rejectReason field in the Gatekeeper Reject message.
  107. enum H225RASGRJReason 
  108. {
  109. GRJ_RESOURCE_UNAVAILABLE = 1,
  110. GRJ_TERMINAL_EXCLUDED,
  111. GRJ_INVALID_REVISION,
  112. GRJ_UNDEFINED,
  113. GRJ_SECURITY_DENIAL
  114. };
  115. // Values taken by the rejectReason field of the RegistrationReject message.
  116. enum H225RASRRJReason 
  117. {
  118. RRJ_DISCOVERY_REQUIRED = 1,
  119. RRJ_INVALID_REVISION,
  120. RRJ_INVALID_CALL_SIGNAL_ADDRESS,
  121. RRJ_INVALID_RAS_ADDRESS,
  122. RRJ_DUPLICATE_ALIAS,
  123. RRJ_INVALID_TERMINAL_TYPE,
  124. RRJ_UNDEFINED,
  125. RRJ_TRANSPORT_NOT_SUPPORTED,
  126. RRJ_TRANSPORT_QOS_NOT_SUPPORTED,
  127. RRJ_RESOURCE_UNAVAILABLE,
  128. RRJ_INVALID_ALIAS,
  129. RRJ_SECURITY_DENIAL
  130. };
  131.  
  132. // Values taken by the rejectReason field of the UnregistrationReject message.
  133. enum H225RASURJReason 
  134. {
  135. URJ_NOT_CURRENTLY_REGISTERED = 1,
  136. URJ_CALL_IN_PROGRESS,
  137. URJ_UNDEFINED,
  138. URJ_PERMISSION_DENIED,
  139. URJ_SECURITY_DENIAL
  140. };
  141. // Values taken by the rejectReason field of the AdmissionReject message.
  142. enum H225RASARJReason 
  143. {
  144. ARJ_PARTY_NOT_REGISTERED = 1,
  145. ARJ_INVALID_PERMISSION,
  146. ARJ_REQUEST_DENIED,
  147. ARJ_UNDEFINED,
  148. ARJ_CALLER_NOT_REGISTERED,
  149. ARJ_ROUTE_CALL_TO_GATEKEEPER,
  150. ARJ_INVALID_ENDPOINT_ID,
  151. ARJ_RESOURCE_UNAVAILABLE,
  152. ARJ_SECURITY_DENIAL,
  153. ARJ_QOS_CONTROL_NOT_SUPPORTED,
  154. ARJ_INCOMPLETE_ADDRESS
  155. };
  156. // Values taken by the rejectReason field of the BandwidthReject message.
  157. enum H225RASBRJReason 
  158. {
  159. BRJ_NOT_BOUND = 1,
  160. BRJ_INVALID_CONFERENCE_ID ,
  161. BRJ_INVALID_PERMISSION,
  162. BRJ_INSUFFICIENT_RESOURCES,
  163. BRJ_INVALID_REVISION,
  164. BRJ_UNDEFINED,
  165. BRJ_SECURITY_DENIAL
  166. };
  167. // Values taken by the rejectReason field of the LocationReject message.
  168. enum H225RASLRJReason 
  169. {
  170. LRJ_NOT_REGISTERED = 1,
  171. LRJ_INVALID_PERMISSION,
  172. LRJ_REQUEST_DENIED,
  173. LRJ_UNDEFINED,
  174. LRJ_SECURITY_DENIAL
  175. };
  176. // Values taken by the disengageReason field of the DisengageRequest message.
  177. enum H225RASDRQReason 
  178. {
  179. DRQ_FORCED_DROP = 1,
  180. DRQ_NORMAL_DROP,
  181. DRQ_UNDEFINED
  182. };
  183. // Values taken by the rejectReason field of the DisengageReject message.
  184. enum H225RASDRJReason 
  185. {
  186. DRJ_NOT_REGISTERED = 1,
  187. DRJ_REQUEST_TO_DROP_OTHER,
  188. DRJ_SECURITY_DENIAL
  189. };
  190. enum H225RASURQReason
  191. {
  192. URQ_INVALID_REASON = 0,
  193. URQ_REREG_REQD = 1,
  194. URQ_TTL_EXPIRED = 2,
  195. URQ_SECURITY_DENIAL = 3, 
  196. URQ_UNDEFINED_REASON = 4
  197. };
  198. enum H225RASINAKReason
  199. {
  200. INAK_INVALID = 0,
  201. INAK_NOT_REGISTERED = 1,
  202. INAK_SECURITY_DENIAL = 2,
  203. INAK_UNDEFINED = 3
  204. };
  205. enum H225RASTransportQOS
  206. {
  207. TQOS_INVALID = 0,
  208. TQOS_ENDPOINT_CONTROLLED = 1,
  209. TQOS_GK_CONTROLLED = 2,
  210. TQOS_NO_CONTROL = 3
  211. };
  212. //
  213. // Abstractions for elements that are used within messages..
  214. //
  215. // The abstraction for the H.225 TransportChannelInfo class, used in IRR msg.
  216. class DLLEXPORT H225RASTransportChannelInfo
  217. {
  218. public:
  219. // constructors and destructors.
  220. H225RASTransportChannelInfo();
  221. ~H225RASTransportChannelInfo();
  222. ProtReturnCode GetSendAddress(sockaddr *);
  223. ProtReturnCode SetSendAddress(sockaddr *);
  224. ProtReturnCode GetRecvAddress(sockaddr *);
  225. ProtReturnCode SetRecvAddress(sockaddr *);
  226. H225RASTransportChannelInfo& operator=(
  227. H225RASTransportChannelInfo&);
  228. // For protocol internal use...
  229. H225TransportChannelInfo * GetPriv();
  230. ProtReturnCode SetPriv(H225TransportChannelInfo *);
  231. private:
  232. H225TransportChannelInfo *trans_ch;
  233. H225TransportAddress *send;
  234. H225TransportAddress *recv;
  235. int mem_alloc_failed;
  236. };
  237. // The abstraction for the H.225 RTPSession class, used in IRR message.
  238. class DLLEXPORT H225RASRTPSessionInfo
  239. {
  240. public:
  241. // constructors and destructors.
  242. H225RASRTPSessionInfo();
  243. ~H225RASRTPSessionInfo();
  244. ProtReturnCode GetRTPAddr(H225RASTransportChannelInfo &);
  245. ProtReturnCode SetRTPAddr(H225RASTransportChannelInfo &);
  246. ProtReturnCode GetRTCPAddr(H225RASTransportChannelInfo &);
  247. ProtReturnCode SetRTCPAddr(H225RASTransportChannelInfo &);
  248. // returns a pointer to the internal copy.
  249. // Note that cname is a null terminated string.
  250. ProtReturnCode GetCName(char *&);
  251. ProtReturnCode SetCName(char *);
  252. ProtReturnCode GetSSRC(int &);
  253. ProtReturnCode SetSSRC(int);
  254. ProtReturnCode GetSessionID(unsigned short &);
  255. ProtReturnCode SetSessionID(unsigned short);
  256. ProtReturnCode GetNumAssocSessionIDs(int &count);
  257. ProtReturnCode GetAssocSessionIDs(unsigned short
  258. assoc_session_id_list[], int &count); 
  259. ProtReturnCode AddAssocSessionID(unsigned short assoc_session_id);
  260. H225RASRTPSessionInfo& operator=(H225RASRTPSessionInfo&);
  261. // For protocol internal use...
  262. H225RTPSession * GetPriv();
  263. ProtReturnCode SetPriv(H225RTPSession *);
  264. private:
  265. H225RTPSession  *rtp_session;
  266. H225TransportChannelInfo *rtp_addr;
  267. H225TransportChannelInfo *rtcp_addr;
  268. char *cname;
  269. unsigned int ssrc;
  270. unsigned short session_id;
  271. void *assoc_session_ids;
  272. int asi_list_length;
  273. int mem_alloc_failed;
  274. };
  275. class DLLEXPORT H225RASPregrantedARQ
  276. {
  277. public:
  278. H225RASPregrantedARQ();
  279. ~H225RASPregrantedARQ();
  280. ProtReturnCode SetMakeCall(boolean);
  281. ProtReturnCode GetMakeCall(boolean&);
  282. ProtReturnCode SetUseGKCallSigToMakeCall(boolean);
  283. ProtReturnCode GetUseGKCallSigToMakeCall(boolean&);
  284. ProtReturnCode SetAnswerCall(boolean);
  285. ProtReturnCode GetAnswerCall(boolean&);
  286. ProtReturnCode SetUseGKCallSigToAnswerCall(boolean);
  287. ProtReturnCode GetUseGKCallSigToAnswerCall(boolean&);
  288. private:
  289. boolean make_call;
  290. boolean use_gkcsig_make_call;
  291. boolean answer_call;
  292. boolean use_gkcsig_answer_call;
  293. };
  294. class DLLEXPORT H225RASUUIEsRequested 
  295. {
  296. public:
  297. H225RASUUIEsRequested();
  298. ~H225RASUUIEsRequested(); 
  299. ProtReturnCode SetSetup(boolean value);
  300. ProtReturnCode GetSetup(boolean &value);
  301. ProtReturnCode SetCallProceeding(boolean value);
  302. ProtReturnCode GetCallProceeding(boolean &value);
  303. ProtReturnCode SetConnect(boolean value);
  304. ProtReturnCode GetConnect(boolean &value);
  305. ProtReturnCode SetAlerting(boolean value);
  306. ProtReturnCode GetAlerting(boolean &value);
  307. ProtReturnCode SetUserInformation(boolean value);
  308. ProtReturnCode GetUserInformation(boolean &value);
  309. ProtReturnCode SetReleaseComplete(boolean value);
  310. ProtReturnCode GetReleaseComplete(boolean &value);
  311. ProtReturnCode SetFacility(boolean value);
  312. ProtReturnCode GetFacility(boolean &value);
  313. ProtReturnCode SetProgress(boolean value);
  314. ProtReturnCode GetProgress(boolean &value);
  315. ProtReturnCode SetEmpty(boolean value);
  316. ProtReturnCode GetEmpty(boolean &value);
  317. // For protocol internal use..
  318. H225UUIEsRequested * GetPriv();
  319. ProtReturnCode SetPriv(H225UUIEsRequested *);
  320. private:
  321. H225UUIEsRequested *uuies_req;
  322. boolean setup;
  323. boolean call_proceeding;
  324. boolean connect;
  325. boolean alerting;
  326. boolean user_information;
  327. boolean release_complete;
  328. boolean facility;
  329. boolean progress;
  330. boolean empty;
  331. };
  332. class DLLEXPORT ItemUUIEsRequested
  333. {
  334. public:
  335. ItemUUIEsRequested(int is_mand);
  336. virtual ~ItemUUIEsRequested();
  337. virtual ProtReturnCode SetUUIEsRequested(
  338. H225RASUUIEsRequested& uuir);
  339. virtual ProtReturnCode GetUUIEsRequested(
  340. H225RASUUIEsRequested& uuir);
  341. protected:
  342. H225UUIEsRequested *uuies_requested;
  343. };
  344. class DLLEXPORT ItemCallID
  345. {
  346. public :
  347. ItemCallID(int is_mandatory);
  348. virtual ~ItemCallID();
  349. virtual ProtReturnCode GetCallID(H225CSCallID &call_id);
  350. virtual ProtReturnCode SetCallID(H225CSCallID &call_id);
  351. // Protected sections are for protocol internal use.
  352. protected:
  353. H225CSCallID callid;
  354. int is_dummy_callid;
  355. };
  356. class  DLLEXPORT ItemConferenceID
  357. {
  358. public:
  359. ItemConferenceID(int is_mandatory);
  360. ItemConferenceID();
  361. virtual ~ItemConferenceID();
  362. virtual ProtReturnCode GetConfID(char*& buf, int& length);
  363. virtual ProtReturnCode SetConfID(char *buf, int length);
  364. // Protected sections are for protocol internal use.
  365. protected:
  366. H225ConferenceIdentifier *conf_id;
  367. };
  368. class DLLEXPORT ItemCallSigAddressList
  369. {
  370. public:
  371. ItemCallSigAddressList(int is_mandatory);
  372. virtual ~ItemCallSigAddressList();
  373. virtual ProtReturnCode GetNumCallSigAddrs(int& count);
  374. virtual ProtReturnCode GetCallSigAddrs(sockaddr list[],
  375. int& count);
  376. virtual ProtReturnCode AddCallSigAddr(sockaddr* addr);
  377. // Protected sections are for protocol internal use.
  378. protected:
  379. void* call_sig_addr_list;
  380. };
  381. // The abstraction for the percallinfo list element found in the 
  382. // InfoRequestResponse message.
  383. class DLLEXPORT H225RASIRRPerCallInfoElem : public ItemConferenceID, 
  384. public ItemCallID
  385. {
  386. public:
  387. H225RASIRRPerCallInfoElem();
  388. ~H225RASIRRPerCallInfoElem();
  389. ProtReturnCode GetNonStd(H225CSNonStdParameter &);
  390. ProtReturnCode SetNonStd(H225CSNonStdParameter &);
  391. ProtReturnCode GetCRV(unsigned short &);
  392. ProtReturnCode SetCRV(unsigned short);
  393. ProtReturnCode GetOriginator(boolean &);
  394. ProtReturnCode SetOriginator(boolean);
  395. ProtReturnCode GetNumAudio(int &count);
  396. ProtReturnCode GetAudio(H225RASRTPSessionInfo audio_list[], int &count);
  397. ProtReturnCode AddAudio(H225RASRTPSessionInfo& audio);
  398. ProtReturnCode GetNumVideo(int &count);
  399. ProtReturnCode GetVideo(H225RASRTPSessionInfo video_list[], int &count);
  400. ProtReturnCode AddVideo(H225RASRTPSessionInfo& video);
  401. ProtReturnCode GetNumData(int &count);
  402. ProtReturnCode GetData(H225RASTransportChannelInfo data_list[], 
  403. int &count);
  404. ProtReturnCode AddData(H225RASTransportChannelInfo& data);
  405. ProtReturnCode GetH245(H225RASTransportChannelInfo &);
  406. ProtReturnCode SetH245(H225RASTransportChannelInfo &);
  407. ProtReturnCode GetCallSig(H225RASTransportChannelInfo &);
  408. ProtReturnCode SetCallSig(H225RASTransportChannelInfo &);
  409. ProtReturnCode GetCallType(int &);
  410. ProtReturnCode SetCallType(int);
  411. ProtReturnCode GetBandwidth(int &);
  412. ProtReturnCode SetBandwidth(int);
  413. ProtReturnCode GetCallModel(int &);
  414. ProtReturnCode SetCallModel(int);
  415. ProtReturnCode GetNumSubstConfIDs(int &count);
  416. ProtReturnCode GetSubstConfID(ItemConferenceID confid_list[], 
  417. int &count);
  418. ProtReturnCode AddSubstConfID(ItemConferenceID &confid);
  419. H225RASIRRPerCallInfoElem&
  420. operator=(H225RASIRRPerCallInfoElem&);
  421. // For protocol internal use...
  422. H225PerCallInfoValue * GetPriv();
  423. ProtReturnCode SetPriv(H225PerCallInfoValue *);
  424. private:
  425. H225NonStandardParameter *nsp;
  426. unsigned short crv;
  427. int originator;
  428. void *audio;
  429. void *video;
  430. void *data;
  431. H225TransportChannelInfo *h245;
  432. H225TransportChannelInfo *call_sig;
  433. int call_type;
  434. int bandwidth;
  435. int call_model;
  436. int mem_alloc_failed;
  437. H225PerCallInfoValue *pci_val;
  438. void *subst_conf_id_list;
  439. };
  440. // The RAS message class. This is the super class for all the various 
  441. // individual ras messages. Note that this is an abstract class and
  442. // cannot be directly instantiated. Use the Factory method to create 
  443. // an object of one of the derived message classes and then use 
  444. // polymorphism.
  445. class DLLEXPORT H225RASMessage
  446. {
  447. public:
  448. // constructor and destructor.
  449. H225RASMessage(int type, H225RASProtocol *);
  450. virtual ~H225RASMessage();
  451. // Get the type of this ras message.
  452. int GetType();
  453. // Get the sequence number for this ras message.
  454. int GetSequenceNumber();
  455. void SetSequenceNumber(int seq_number);
  456. // Factory message to create the appropriate message 
  457. // for the specified type.
  458. static ProtReturnCode Factory(H225RASMessage *&, int type, 
  459. H225RASProtocol *);
  460. H225RASMessage& operator=(H225RASMessage &);
  461. // For protocol internal use..
  462. virtual H225RasMessage* GetPriv() = 0;
  463. virtual ProtReturnCode SetPriv(H225RasMessage*) = 0;
  464. // Protected sections are for protocol internal use only.
  465. protected:
  466. // Pointers to internal data, used by derived classes..
  467. H225RASProtocol *proto;
  468. H225RasMessage *message;
  469. void SetType(int type);
  470. private:
  471. // the type of the message.
  472. int type;
  473. int seq_no;
  474. };
  475. class DLLEXPORT H225RASEndpoint : public ItemNonStdParam,
  476. public ItemCallSigAddressList
  477. {
  478. public:
  479. H225RASEndpoint();
  480. ~H225RASEndpoint();
  481. ProtReturnCode SetPriority(int);
  482. ProtReturnCode GetPriority(int &);
  483. ProtReturnCode GetEndpointType(H225CSEndpointType &);
  484. ProtReturnCode SetEndpointType(H225CSEndpointType &);
  485. ProtReturnCode GetNumAliasAddrs(int &count);
  486. ProtReturnCode GetAliasAddrs(H225CSAliasAddress addrs[], int &count);
  487. ProtReturnCode AddAliasAddr(H225CSAliasAddress &addr);
  488. ProtReturnCode GetNumRASAddrs(int& count);
  489. ProtReturnCode GetRASAddrs(sockaddr list[], int& count);
  490. ProtReturnCode AddRASAddr(sockaddr* addr);
  491. ProtReturnCode GetNumRemoteExtAddrs(int &count);
  492. ProtReturnCode GetRemoteExtAddrs(H225CSAliasAddress addrs[], 
  493. int &count);
  494. ProtReturnCode AddRemoteExtAddr(H225CSAliasAddress &addr);
  495. ProtReturnCode GetNumDstXtraCallInfo(int &count);
  496. ProtReturnCode GetDstXtraCallInfo(H225CSAliasAddress addrs[], 
  497. int &count);
  498. ProtReturnCode AddDstXtraCallInfo(H225CSAliasAddress &addr);
  499. H225RASEndpoint& operator=(H225RASEndpoint&);
  500. // For protocol internal use...
  501. H225Endpoint *GetPriv();
  502. ProtReturnCode SetPriv(H225Endpoint *ep);
  503. private:
  504. int priority;
  505. void *alias_addr_list;
  506. void *ras_addr_list;
  507. void *remote_ext_addr_list;
  508. void *dest_extra_call_info_list;
  509. H225EndpointType *etype;
  510. H225Endpoint *endpoint;
  511. };
  512. // The elements that are common to more than one RAS message.
  513. // These messages derive from these classes. The functions
  514. // declared in the public sections of these classes add up to
  515. // the methods available in the public section of the message class.
  516. class DLLEXPORT ItemPID
  517. {
  518. public:
  519. ItemPID(int is_mandatory, H225RASProtocol *);
  520. virtual ~ItemPID();
  521. // Set/Get the protocol identifier and length.
  522. virtual ProtReturnCode SetProtocolID(unsigned long* buf,
  523.  unsigned short length);
  524. virtual ProtReturnCode GetProtocolID(unsigned long*& buf,
  525.  unsigned short & length);
  526. // Set/Get the protocol identifier, based on version.
  527. // version is one of H225VersionNumber
  528. virtual ProtReturnCode SetProtocolID(int version);
  529. virtual ProtReturnCode GetProtocolID(int &version);
  530. protected:
  531. H225ProtocolIdentifier *pid;
  532. };
  533. class DLLEXPORT ItemRASAddress
  534. {
  535. public:
  536. ItemRASAddress(int is_mandatory);
  537. virtual ~ItemRASAddress();
  538. virtual ProtReturnCode GetRASAddr(struct sockaddr *);
  539. virtual ProtReturnCode SetRASAddr(struct sockaddr *);
  540. // Protected sections are for protocol internal use.
  541. protected:
  542. H225TransportAddress *ras_addr;
  543. };
  544. class DLLEXPORT ItemDstCallSigAddress
  545. {
  546. public:
  547. ItemDstCallSigAddress(int is_mandatory);
  548. virtual ~ItemDstCallSigAddress();
  549. virtual ProtReturnCode GetDstCallSigAddr(struct sockaddr *);
  550. virtual ProtReturnCode SetDstCallSigAddr(struct sockaddr *);
  551. // Protected sections are for protocol internal use.
  552. protected:
  553. H225TransportAddress *dst_call_sig_addr;
  554. };
  555. class DLLEXPORT ItemReplyToAddress
  556. {
  557. public:
  558. ItemReplyToAddress(int is_mandatory);
  559. virtual ~ItemReplyToAddress();
  560. virtual ProtReturnCode GetReplyToAddr(struct sockaddr *);
  561. virtual ProtReturnCode SetReplyToAddr(struct sockaddr *);
  562. // Protected sections are for protocol internal use.
  563. protected:
  564. H225TransportAddress *reply_to_addr;
  565. };
  566. class DLLEXPORT ItemEndpointType
  567. {
  568. public:
  569. ItemEndpointType(int is_mandatory, H225RASProtocol* proto);
  570. virtual ~ItemEndpointType();
  571. virtual ProtReturnCode GetEndpointType(H225CSEndpointType &);
  572. virtual ProtReturnCode SetEndpointType(H225CSEndpointType &);
  573. // Protected sections are for protocol internal use.
  574. protected:
  575. H225EndpointType *ep;
  576. H225RASProtocol* proto;
  577. };
  578. class DLLEXPORT ItemGatekeeperID
  579. {
  580. public:
  581. ItemGatekeeperID(int is_mandatory);
  582. virtual ~ItemGatekeeperID();
  583. virtual ProtReturnCode GetGKID(unsigned short *&id, int &len);
  584. virtual ProtReturnCode SetGKID(unsigned short *id, int len);
  585. // Protected sections are for protocol internal use.
  586. protected:
  587. H225GatekeeperIdentifier *gk_id;
  588. };
  589. class DLLEXPORT ItemCallServices
  590. {
  591. public:
  592. ItemCallServices(int is_mandatory);
  593. virtual ~ItemCallServices();
  594. virtual ProtReturnCode GetCallSvcs(H225CSQSeriesOptions &);
  595. virtual ProtReturnCode SetCallSvcs(H225CSQSeriesOptions &);
  596. // Protected sections are for protocol internal use.
  597. protected:
  598. H225QseriesOptions *call_svcs;
  599. };
  600. class DLLEXPORT ItemEndpointAliasList
  601. {
  602. public:
  603. ItemEndpointAliasList(int is_mandatory);
  604. virtual ~ItemEndpointAliasList();
  605. virtual ProtReturnCode GetNumEndpointAliases(int &num);
  606. virtual ProtReturnCode GetEndpointAliases(H225CSAliasAddress list[],
  607. int& count);
  608. virtual ProtReturnCode AddEndpointAlias(H225CSAliasAddress& alias);
  609. // Protected sections are for protocol internal use.
  610. protected:
  611. void  *ep_alias_list;
  612. };
  613. class DLLEXPORT ItemAltEndpointsList
  614. {
  615. public:
  616. ItemAltEndpointsList(int is_mandatory);
  617. virtual ~ItemAltEndpointsList();
  618. virtual ProtReturnCode GetNumAltEndpoints(int &num);
  619. virtual ProtReturnCode GetAltEndpoints(H225RASEndpoint list[],
  620. int& count);
  621. virtual ProtReturnCode AddAltEndpoints(H225RASEndpoint& endpoint);
  622. // Protected sections are for protocol internal use.
  623. protected:
  624. void  *alt_ep_list;
  625. };
  626. class DLLEXPORT ItemReason
  627. {
  628. public:
  629. ItemReason(int is_mandatory,int reason);
  630. virtual ~ItemReason();
  631. virtual int GetReason();
  632. virtual void SetReason(int reason);
  633. // Protected sections are for protocol internal use.
  634. protected:
  635. int reason;
  636. };
  637. class DLLEXPORT ItemEndpointID
  638. {
  639. public:
  640. ItemEndpointID(int is_mandatory);
  641. virtual ~ItemEndpointID();
  642. virtual ProtReturnCode GetEndpointID(unsigned short*& id, int& length);
  643. virtual ProtReturnCode SetEndpointID(unsigned short* id, int length);
  644. // Protected sections are for protocol internal use.
  645. protected:
  646. H225EndpointIdentifier* eid;
  647. };
  648. class DLLEXPORT ItemVendorID
  649. {
  650. public:
  651. ItemVendorID(int is_mandatory, H225RASProtocol* proto);
  652. virtual ~ItemVendorID();
  653. virtual ProtReturnCode GetVendorID(H225CSVendorID& vend);
  654. virtual ProtReturnCode SetVendorID(H225CSVendorID& vend);
  655. // Protected sections are for protocol internal use.
  656. protected:
  657. H225VendorIdentifier* vend_id;
  658. H225RASProtocol* proto;
  659. };
  660. class DLLEXPORT ItemCRV
  661. {
  662. public:
  663. ItemCRV(int is_mandatory);
  664. virtual ~ItemCRV();
  665. virtual ProtReturnCode GetCRV(unsigned short& crv);
  666. virtual ProtReturnCode SetCRV(unsigned short crv);
  667. // Protected sections are for protocol internal use.
  668. protected:
  669. unsigned short crv;
  670. };
  671. class DLLEXPORT ItemDstInfoList
  672. {
  673. public:
  674. ItemDstInfoList(int is_mandatory);
  675. virtual ~ItemDstInfoList();
  676. virtual ProtReturnCode GetNumDstInfo(int &num);
  677. virtual ProtReturnCode GetDstInfo(H225CSAliasAddress list[],
  678. int& count);
  679. virtual ProtReturnCode AddDstInfo(H225CSAliasAddress& alias);
  680. // Protected sections are for protocol internal use.
  681. protected:
  682. void  *dst_info_list;
  683. };
  684. class DLLEXPORT H225RASAltGK : public
  685. ItemGatekeeperID, public ItemRASAddress
  686. {
  687. public:
  688. H225RASAltGK();
  689. virtual ~H225RASAltGK();
  690. ProtReturnCode SetNeedToRegister(boolean flag);
  691. ProtReturnCode GetNeedToRegister(boolean& flag);
  692. // priority is a value in the range [0,127].
  693. ProtReturnCode GetPriority(int& p);
  694. ProtReturnCode SetPriority(int p);
  695. H225RASAltGK& operator=(H225RASAltGK&);
  696. // For stack internal use.
  697. H225AlternateGK *GetPriv();
  698. ProtReturnCode SetPriv(H225AlternateGK*);
  699. private:
  700. H225AlternateGK *altgk;
  701. unsigned short pri;
  702. boolean need_to_register;
  703. };
  704. class DLLEXPORT H225RASAltGKInfo
  705. {
  706. public:
  707. H225RASAltGKInfo();
  708. virtual ~H225RASAltGKInfo();
  709. ProtReturnCode GetNumAltGK(int& count);
  710. ProtReturnCode GetAltGK(H225RASAltGK gklist[],
  711. int& count);
  712. ProtReturnCode AddAltGK(H225RASAltGK& gk);
  713. ProtReturnCode SetAltGKisPermanent(boolean flag);
  714. ProtReturnCode GetAltGKisPermanent(boolean& flag);
  715. H225RASAltGKInfo& operator=(H225RASAltGKInfo&);
  716. // For Stack internal use.
  717. H225AltGKInfo* GetPriv();
  718. ProtReturnCode SetPriv(H225AltGKInfo*);
  719. private:
  720. void *altgk_list;
  721. boolean is_perm;
  722. H225AltGKInfo *altgkinfo;
  723. };
  724. class DLLEXPORT ItemAltGKList
  725. {
  726. public:
  727. ItemAltGKList(int is_mandatory);
  728. virtual ~ItemAltGKList();
  729. virtual ProtReturnCode GetNumAltGK(int& count);
  730. virtual ProtReturnCode GetAltGK(H225RASAltGK agk_list[],
  731. int& count);
  732. virtual ProtReturnCode AddAltGK(H225RASAltGK& agk);
  733. protected:
  734. void *alt_gk_list;
  735. };
  736. class DLLEXPORT ItemAltGKInfo
  737. {
  738. public:
  739. ItemAltGKInfo(int is_mandatory);
  740. virtual ~ItemAltGKInfo();
  741. virtual ProtReturnCode SetAltGKInfo(H225RASAltGKInfo& agki);
  742. virtual ProtReturnCode GetAltGKInfo(H225RASAltGKInfo& agki);
  743. protected:
  744. H225AltGKInfo *agkinfo;
  745. };
  746. // The various RAS message classes.
  747. class DLLEXPORT H225RASMsgGRQ : public H225RASMessage, public ItemRASAddress,
  748. public ItemEndpointType, public ItemCallServices,
  749. public ItemEndpointAliasList, public ItemGatekeeperID,
  750. public ItemNonStdParam, public ItemPID,
  751. public ItemAltEndpointsList
  752. {
  753. public:
  754. H225RASMsgGRQ(H225RASProtocol *);
  755. ~H225RASMsgGRQ();
  756. // For protocol internal use...
  757. H225RasMessage * GetPriv();
  758. ProtReturnCode SetPriv(H225RasMessage *);
  759. };
  760. class DLLEXPORT H225RASMsgGCF : public H225RASMessage, public ItemRASAddress,
  761. public ItemGatekeeperID, public ItemNonStdParam, 
  762. public ItemPID, public ItemAltGKList
  763. {
  764. public:
  765. H225RASMsgGCF(H225RASProtocol *);
  766. ~H225RASMsgGCF();
  767. // For protocol internal use...
  768. H225RasMessage * GetPriv();
  769. ProtReturnCode SetPriv(H225RasMessage *);
  770. };
  771. class DLLEXPORT H225RASMsgGRJ : public H225RASMessage, public ItemReason,
  772. public ItemGatekeeperID, public ItemNonStdParam, 
  773. public ItemPID, public ItemAltGKInfo
  774. {
  775. public:
  776. H225RASMsgGRJ(H225RASProtocol *, int reason = GRJ_UNDEFINED);
  777. ~H225RASMsgGRJ();
  778. // For protocol internal use...
  779. H225RasMessage * GetPriv();
  780. ProtReturnCode SetPriv(H225RasMessage *);
  781. };
  782. class DLLEXPORT H225RASMsgRRQ : public H225RASMessage, public ItemCallSigAddressList,
  783. public ItemEndpointType, public ItemEndpointAliasList,
  784. public ItemGatekeeperID, public ItemVendorID,
  785. public ItemNonStdParam, public ItemPID,
  786. public ItemAltEndpointsList, public ItemEndpointID
  787. {
  788. public:
  789. H225RASMsgRRQ(H225RASProtocol *);
  790. ~H225RASMsgRRQ();
  791.   ProtReturnCode GetDiscoveryComplete(boolean&);
  792. ProtReturnCode SetDiscoveryComplete(boolean);
  793. ProtReturnCode GetNumRASAddrs(int &num);
  794. ProtReturnCode GetRASAddrs(struct sockaddr [], int &num);
  795. ProtReturnCode AddRASAddr(struct sockaddr *);
  796.   ProtReturnCode GetKeepAlive(boolean&);
  797. ProtReturnCode SetKeepAlive(boolean);
  798.   ProtReturnCode GetWillSupplyUUIEs(boolean&);
  799. ProtReturnCode SetWillSupplyUUIEs(boolean);
  800.   ProtReturnCode GetTimeToLive(int&);
  801. ProtReturnCode SetTimeToLive(int);
  802. // For protocol internal use...
  803. H225RasMessage * GetPriv();
  804. ProtReturnCode SetPriv(H225RasMessage *);
  805. private:
  806. void* ras_addr_list;
  807. int discovery_complete;
  808. int keep_alive;
  809. int will_supply_uuies;
  810. int time_to_live;
  811. };
  812. class DLLEXPORT H225RASMsgRCF : public H225RASMessage, public ItemCallSigAddressList,
  813. public ItemEndpointAliasList, public ItemEndpointID,
  814. public ItemGatekeeperID, public ItemNonStdParam, 
  815. public ItemPID, public ItemAltGKList
  816. {
  817. public:
  818. H225RASMsgRCF(H225RASProtocol *);
  819. ~H225RASMsgRCF();
  820.   ProtReturnCode GetWillRespondToIRR(boolean&);
  821. ProtReturnCode SetWillRespondToIRR(boolean);
  822.   ProtReturnCode GetTimeToLive(int&);
  823. ProtReturnCode SetTimeToLive(int);
  824. ProtReturnCode SetPregrantedARQ(H225RASPregrantedARQ &p_arq);
  825. ProtReturnCode GetPregrantedARQ(H225RASPregrantedARQ &p_arq);
  826. // For protocol internal use...
  827. H225RasMessage * GetPriv();
  828. ProtReturnCode SetPriv(H225RasMessage *);
  829. private:
  830. int will_respond_to_irr;
  831. int time_to_live;
  832. H225RASPregrantedARQ pregranted_arq;
  833. };
  834. class DLLEXPORT H225RASMsgRRJ : public H225RASMessage, public ItemGatekeeperID,
  835. public ItemReason, public ItemNonStdParam, public ItemPID,
  836. public ItemAltGKInfo
  837. {
  838. public:
  839. H225RASMsgRRJ(H225RASProtocol *proto,int reason = RRJ_UNDEFINED);
  840. ~H225RASMsgRRJ();
  841. // Methods to manipulate duplicate alias list.
  842. // This list must be supplied when Reason = 
  843. // RRJ_DUPLICATE_ALIAS.
  844. ProtReturnCode GetNumDuplicateAliases(int &count);
  845. ProtReturnCode GetDuplicateAliases(H225CSAliasAddress dup_list[],
  846. int& count);
  847. ProtReturnCode AddDuplicateAlias(H225CSAliasAddress& alias);
  848. // For protocol internal use...
  849. H225RasMessage * GetPriv();
  850. ProtReturnCode SetPriv(H225RasMessage *);
  851. private:
  852. void *dup_alias_list;
  853. };
  854. class DLLEXPORT H225RASMsgURQ : public H225RASMessage, public ItemCallSigAddressList,
  855. public ItemEndpointAliasList, public ItemEndpointID,
  856. public ItemNonStdParam, public ItemReason,
  857. public ItemGatekeeperID, public ItemAltEndpointsList
  858. {
  859. public:
  860. H225RASMsgURQ(H225RASProtocol *);
  861. ~H225RASMsgURQ();
  862. // For protocol internal use...
  863. H225RasMessage * GetPriv();
  864. ProtReturnCode SetPriv(H225RasMessage *);
  865. };
  866. class DLLEXPORT H225RASMsgUCF : public H225RASMessage, public ItemNonStdParam
  867. {
  868. public:
  869. H225RASMsgUCF(H225RASProtocol *);
  870. ~H225RASMsgUCF();
  871. // For protocol internal use...
  872. H225RasMessage * GetPriv();
  873. ProtReturnCode SetPriv(H225RasMessage *);
  874. };
  875. class DLLEXPORT H225RASMsgURJ : public H225RASMessage, public ItemReason,
  876. public ItemNonStdParam, public ItemAltGKInfo
  877. {
  878. public:
  879. H225RASMsgURJ(H225RASProtocol *, int reason = URJ_UNDEFINED);
  880. ~H225RASMsgURJ();
  881. // For protocol internal use...
  882. H225RasMessage * GetPriv();
  883. ProtReturnCode SetPriv(H225RasMessage *);
  884. };
  885. class DLLEXPORT H225RASMsgARQ : public H225RASMessage, public ItemEndpointID,
  886. public ItemCallServices, public ItemConferenceID,
  887. public ItemDstCallSigAddress, public ItemDstInfoList,
  888. public ItemCRV, public ItemNonStdParam, public ItemCallID,
  889. public ItemGatekeeperID
  890. {
  891. public:
  892. H225RASMsgARQ(H225RASProtocol *);
  893. ~H225RASMsgARQ();
  894. ProtReturnCode SetCallType(int type);
  895. ProtReturnCode GetCallType(int &type);
  896. ProtReturnCode SetCallModel(int model);
  897. ProtReturnCode GetCallModel(int &model);
  898. ProtReturnCode GetNumDstXtraCallInfo(int &);
  899. ProtReturnCode GetDstXtraCallInfo(H225CSAliasAddress list[], 
  900. int& count);
  901. ProtReturnCode AddDstXtraCallInfo(H225CSAliasAddress&);
  902. ProtReturnCode GetNumSrcInfo(int &);
  903. ProtReturnCode GetSrcInfo(H225CSAliasAddress list[], int& count);
  904. ProtReturnCode AddSrcInfo(H225CSAliasAddress&);
  905. ProtReturnCode GetSrcCallSigAddr(struct sockaddr *);
  906. ProtReturnCode SetSrcCallSigAddr(struct sockaddr *);
  907. ProtReturnCode GetBandwidth(int&);
  908. ProtReturnCode SetBandwidth(int);
  909. ProtReturnCode SetActiveMC(boolean);
  910. ProtReturnCode GetActiveMC(boolean &);
  911. ProtReturnCode SetAnswerCall(boolean);
  912. ProtReturnCode GetAnswerCall(boolean &);
  913. ProtReturnCode SetCanMapAlias(boolean);
  914. ProtReturnCode GetCanMapAlias(boolean &);
  915.   ProtReturnCode GetWillSupplyUUIEs(boolean&);
  916. ProtReturnCode SetWillSupplyUUIEs(boolean);
  917. // value is one of enum H225TransportQos.
  918. ProtReturnCode SetTransportQOS(int value);
  919. ProtReturnCode GetTransportQOS(int &value);
  920. // For protocol internal use...
  921. H225RasMessage * GetPriv();
  922. ProtReturnCode SetPriv(H225RasMessage *);
  923. private:
  924. int call_type;
  925. int call_model;
  926. void *dst_extra_call_info;
  927. void *src_info;
  928. H225TransportAddress* src_call_sig_addr;
  929. int bandwidth;
  930. int active_mc;
  931. int answer_call;
  932. int can_map_alias;
  933. int will_supply_uuies;
  934. int transport_qos;
  935. };
  936. class DLLEXPORT H225RASMsgACF : public H225RASMessage, 
  937. public ItemDstCallSigAddress, public ItemNonStdParam,
  938. public ItemAltEndpointsList , public ItemUUIEsRequested,
  939. public ItemDstInfoList
  940. {
  941. public:
  942. H225RASMsgACF(H225RASProtocol *);
  943. ~H225RASMsgACF();
  944. ProtReturnCode GetBandwidth(int &);
  945. ProtReturnCode SetBandwidth(int);
  946. ProtReturnCode GetCallModel(int &);
  947. ProtReturnCode SetCallModel(int);
  948. ProtReturnCode GetIRRFreq(unsigned short &);
  949. ProtReturnCode SetIRRFreq(unsigned short);
  950. ProtReturnCode SetWillRespondToIRR(boolean);
  951. ProtReturnCode GetWillRespondToIRR(boolean &);
  952. // value is one of enum H225TransportQos.
  953. ProtReturnCode SetTransportQOS(int value);
  954. ProtReturnCode GetTransportQOS(int &value);
  955. // For protocol internal use...
  956. H225RasMessage * GetPriv();
  957. ProtReturnCode SetPriv(H225RasMessage *);
  958. private:
  959. int bandwidth;
  960. int call_model;
  961. unsigned short irr_freq;
  962. int will_respond_to_irr;
  963. int transport_qos;
  964. };
  965. class DLLEXPORT H225RASMsgARJ : public H225RASMessage, public ItemReason,
  966. public ItemNonStdParam, public ItemAltGKInfo, public ItemCallSigAddressList
  967. {
  968. public:
  969. H225RASMsgARJ(H225RASProtocol *, int reason = ARJ_UNDEFINED);
  970. ~H225RASMsgARJ();
  971. // For protocol internal use...
  972. H225RasMessage * GetPriv();
  973. ProtReturnCode SetPriv(H225RasMessage *);
  974. };
  975. class DLLEXPORT H225RASMsgBRQ : public H225RASMessage, public ItemEndpointID,
  976. public ItemConferenceID, public ItemCRV, public ItemNonStdParam,
  977. public ItemCallID, public ItemGatekeeperID
  978. {
  979. public:
  980. H225RASMsgBRQ(H225RASProtocol *);
  981. ~H225RASMsgBRQ();
  982. ProtReturnCode GetCallType(int &);
  983. ProtReturnCode SetCallType(int);
  984. ProtReturnCode GetBandwidth(int &);
  985. ProtReturnCode SetBandwidth(int);
  986. ProtReturnCode GetAnsweredCall(boolean &);
  987. ProtReturnCode SetAnsweredCall(boolean);
  988. // For protocol internal use...
  989. H225RasMessage * GetPriv();
  990. ProtReturnCode SetPriv(H225RasMessage *);
  991. private:
  992. int bandwidth;
  993. int call_type;
  994. int answered_call;
  995. };
  996. class DLLEXPORT H225RASMsgBCF : public H225RASMessage, public ItemNonStdParam
  997. {
  998. public:
  999. H225RASMsgBCF(H225RASProtocol *);
  1000. ~H225RASMsgBCF();
  1001. ProtReturnCode GetBandwidth(int &);
  1002. ProtReturnCode SetBandwidth(int);
  1003. // For protocol internal use...
  1004. H225RasMessage * GetPriv();
  1005. ProtReturnCode SetPriv(H225RasMessage *);
  1006. private:
  1007. int bandwidth;
  1008. };
  1009. class DLLEXPORT H225RASMsgBRJ : public H225RASMessage, public ItemReason,
  1010. public ItemNonStdParam, public ItemAltGKInfo
  1011. {
  1012. public:
  1013. H225RASMsgBRJ(H225RASProtocol *, int reason = BRJ_UNDEFINED);
  1014. ~H225RASMsgBRJ();
  1015. ProtReturnCode GetBandwidth(int &);
  1016. ProtReturnCode SetBandwidth(int);
  1017. // For protocol internal use...
  1018. H225RasMessage * GetPriv();
  1019. ProtReturnCode SetPriv(H225RasMessage *);
  1020. private:
  1021. int bandwidth;
  1022. };
  1023. class DLLEXPORT H225RASMsgDRQ : public H225RASMessage, public ItemEndpointID,
  1024. public ItemConferenceID, public ItemReason, public ItemCRV,
  1025. public ItemNonStdParam, public ItemCallID,
  1026. public ItemGatekeeperID
  1027. {
  1028. public:
  1029. H225RASMsgDRQ(H225RASProtocol *);
  1030. ~H225RASMsgDRQ();
  1031. ProtReturnCode GetAnsweredCall(boolean &);
  1032. ProtReturnCode SetAnsweredCall(boolean);
  1033. // For protocol internal use...
  1034. H225RasMessage * GetPriv();
  1035. ProtReturnCode SetPriv(H225RasMessage *);
  1036. private:
  1037. int answered_call;
  1038. };
  1039. class DLLEXPORT H225RASMsgDCF : public H225RASMessage, public ItemNonStdParam
  1040. {
  1041. public:
  1042. H225RASMsgDCF(H225RASProtocol *);
  1043. ~H225RASMsgDCF();
  1044. // For protocol internal use...
  1045. H225RasMessage * GetPriv();
  1046. ProtReturnCode SetPriv(H225RasMessage *);
  1047. };
  1048. class DLLEXPORT H225RASMsgDRJ : public H225RASMessage, public ItemReason,
  1049. public ItemNonStdParam, public ItemAltGKInfo
  1050. {
  1051. public:
  1052. H225RASMsgDRJ(H225RASProtocol *);
  1053. ~H225RASMsgDRJ();
  1054. // For protocol internal use...
  1055. H225RasMessage * GetPriv();
  1056. ProtReturnCode SetPriv(H225RasMessage *);
  1057. };
  1058. class DLLEXPORT H225RASMsgLRQ : public H225RASMessage, public ItemEndpointID,
  1059. public ItemDstInfoList, public ItemReplyToAddress,
  1060. public ItemNonStdParam, public ItemGatekeeperID
  1061. {
  1062. public:
  1063. H225RASMsgLRQ(H225RASProtocol *);
  1064. ~H225RASMsgLRQ();
  1065. ProtReturnCode SetCanMapAlias(boolean);
  1066. ProtReturnCode GetCanMapAlias(boolean &);
  1067. ProtReturnCode GetNumSrcInfo(int &);
  1068. ProtReturnCode GetSrcInfo(H225CSAliasAddress list[], int& count);
  1069. ProtReturnCode AddSrcInfo(H225CSAliasAddress&);
  1070. // For protocol internal use...
  1071. H225RasMessage * GetPriv();
  1072. ProtReturnCode SetPriv(H225RasMessage *);
  1073. private:
  1074. int can_map_alias;
  1075. void *src_info;
  1076. };
  1077. class DLLEXPORT H225RASMsgLCF : public H225RASMessage, public ItemRASAddress,
  1078. public ItemNonStdParam, public ItemAltEndpointsList
  1079. {
  1080. public:
  1081. H225RASMsgLCF(H225RASProtocol *);
  1082. ~H225RASMsgLCF();
  1083. ProtReturnCode GetCallSigAddr(struct sockaddr *);
  1084. ProtReturnCode SetCallSigAddr(struct sockaddr *);
  1085. // For protocol internal use...
  1086. H225RasMessage * GetPriv();
  1087. ProtReturnCode SetPriv(H225RasMessage *);
  1088. private:
  1089. H225TransportAddress* call_sig_addr;
  1090. };
  1091. class DLLEXPORT H225RASMsgLRJ : public H225RASMessage, public ItemReason,
  1092. public ItemNonStdParam, public ItemAltGKInfo
  1093. {
  1094. public:
  1095. H225RASMsgLRJ(H225RASProtocol *, int reason = LRJ_UNDEFINED);
  1096. ~H225RASMsgLRJ();
  1097. // For protocol internal use...
  1098. H225RasMessage * GetPriv();
  1099. ProtReturnCode SetPriv(H225RasMessage *);
  1100. };
  1101. class DLLEXPORT H225RASMsgIRQ : public H225RASMessage,
  1102. public ItemReplyToAddress, public ItemCRV,
  1103. public ItemNonStdParam, public ItemCallID,
  1104. public ItemUUIEsRequested
  1105. {
  1106. public:
  1107. H225RASMsgIRQ(H225RASProtocol *);
  1108. ~H225RASMsgIRQ();
  1109. // For protocol internal use...
  1110. H225RasMessage * GetPriv();
  1111. ProtReturnCode SetPriv(H225RasMessage *);
  1112. };
  1113. class DLLEXPORT H225RASMsgIRR : public H225RASMessage, public ItemEndpointType ,
  1114. public ItemEndpointID, public ItemRASAddress,
  1115. public ItemCallSigAddressList, public ItemEndpointAliasList,
  1116. public ItemNonStdParam
  1117. {
  1118. public:
  1119. H225RASMsgIRR(H225RASProtocol *);
  1120. ~H225RASMsgIRR();
  1121. ProtReturnCode GetNumPerCallInfo(int& count);
  1122. ProtReturnCode GetPerCallInfo(H225RASIRRPerCallInfoElem [], int &count);
  1123. ProtReturnCode AddPerCallInfo(H225RASIRRPerCallInfoElem &);
  1124. ProtReturnCode SetNeedResponse(boolean);
  1125. ProtReturnCode GetNeedResponse(boolean &);
  1126. // For protocol internal use...
  1127. H225RasMessage * GetPriv();
  1128. ProtReturnCode SetPriv(H225RasMessage *);
  1129. private:
  1130. void * per_call_info;
  1131. int need_response;
  1132. };
  1133. class DLLEXPORT H225RASMsgNSM : public H225RASMessage,
  1134. public ItemNonStdParam
  1135. {
  1136. public:
  1137. H225RASMsgNSM(H225RASProtocol *);
  1138. ~H225RASMsgNSM();
  1139. // For protocol internal use...
  1140. H225RasMessage * GetPriv();
  1141. ProtReturnCode SetPriv(H225RasMessage *);
  1142. };
  1143. class DLLEXPORT H225RASMsgXRS : public H225RASMessage
  1144. {
  1145. public:
  1146. H225RASMsgXRS(H225RASProtocol *);
  1147. ~H225RASMsgXRS();
  1148. // For protocol internal use...
  1149. H225RasMessage * GetPriv();
  1150. ProtReturnCode SetPriv(H225RasMessage *);
  1151. };
  1152. class DLLEXPORT H225RASMsgRIP : public H225RASMessage,
  1153. public ItemNonStdParam
  1154. {
  1155. public:
  1156. H225RASMsgRIP(H225RASProtocol *);
  1157. ~H225RASMsgRIP();
  1158. // Methods to set/get the delay field in the RIP message.
  1159. // delay field can take any value in the range [1..65K] 
  1160. ProtReturnCode SetDelay(unsigned short delay);
  1161. ProtReturnCode GetDelay(unsigned short& delay);
  1162. // For stack internal use.
  1163. H225RasMessage *GetPriv();
  1164. ProtReturnCode SetPriv(H225RasMessage*);
  1165. private:
  1166. unsigned short delay;
  1167. };
  1168. class DLLEXPORT H225RASMsgRAI : public H225RASMessage,
  1169. public ItemNonStdParam, public ItemPID,
  1170. public ItemEndpointID
  1171. {
  1172. public:
  1173. H225RASMsgRAI(H225RASProtocol *);
  1174. ~H225RASMsgRAI();
  1175. // Returns the number of SupportedProtocol items present.
  1176. ProtReturnCode GetNumProtocols(int& count);
  1177. // Retrieve the list of supported protocols. input is a pointer 
  1178. // to an array, of atleast the size returned by the previous call, 
  1179. // namely, GetNumProtocols. On return the array will be initialized 
  1180. // with the protocols that are supported by the gateway. The array 
  1181. // elements would be from H225CSSUpportedProtocolsEnum. count specifies 
  1182. // the size of the array. 
  1183. ProtReturnCode GetProtocolTypes(int types_array[], int& count);
  1184. // Retrieve the capability information associated with a protocol.
  1185. // index is the index(starting from 0) of the protocol, in the array 
  1186. // returned by the GetTypes call, for which the capability
  1187. // information is requested. 
  1188. // supp_prot should be instantiated as the appropriate derived
  1189. // class based on the type.
  1190. ProtReturnCode GetProtocols(int index,
  1191. H225CSSupportedProtocols& supp_prot); 
  1192. ProtReturnCode AddProtocols(H225CSSupportedProtocols& protocol);
  1193. ProtReturnCode SetAlmostOutOfResources(boolean flag);
  1194. ProtReturnCode GetAlmostOutOfResource(boolean& flag);
  1195. // For stack internal use.
  1196. H225RasMessage *GetPriv();
  1197. ProtReturnCode SetPriv(H225RasMessage*);
  1198. private:
  1199. void *protocol_list;
  1200. boolean almost_out;
  1201. };
  1202. class DLLEXPORT H225RASMsgRAC : public H225RASMessage,
  1203. public ItemNonStdParam, public ItemPID
  1204. {
  1205. public:
  1206. H225RASMsgRAC(H225RASProtocol *);
  1207. ~H225RASMsgRAC();
  1208. // For stack internal use.
  1209. H225RasMessage *GetPriv();
  1210. ProtReturnCode SetPriv(H225RasMessage*);
  1211. };
  1212. class DLLEXPORT H225RASMsgIACK : public H225RASMessage,
  1213. public ItemNonStdParam  
  1214. {
  1215. public:
  1216. H225RASMsgIACK(H225RASProtocol *);
  1217. ~H225RASMsgIACK();
  1218. // For stack internal use.
  1219. H225RasMessage *GetPriv();
  1220. ProtReturnCode SetPriv(H225RasMessage*);
  1221. };
  1222. class DLLEXPORT H225RASMsgINAK : public H225RASMessage,
  1223. public ItemNonStdParam, public ItemAltGKInfo,
  1224. public ItemReason
  1225. {
  1226. public:
  1227. H225RASMsgINAK(H225RASProtocol *,int reason = INAK_INVALID);
  1228. ~H225RASMsgINAK();
  1229. // For stack internal use.
  1230. H225RasMessage *GetPriv();
  1231. ProtReturnCode SetPriv(H225RasMessage*);
  1232. };
  1233. #endif // __H225RASTYPES_H__