Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

585 lines
17 KiB

  1. /* Copyright (C) Microsoft Corporation, 1995-1999. All rights reserved. */
  2. /* ASN.1 definitions for H.323 Messages Call Setup (Q.931) */
  3. #ifndef _Q931ASN_Module_H_
  4. #define _Q931ASN_Module_H_
  5. #include "msper.h"
  6. #ifdef __cplusplus
  7. extern "C" {
  8. #endif
  9. typedef struct TransportAddress_ipSourceRoute_route * PTransportAddress_ipSourceRoute_route;
  10. typedef struct Setup_UUIE_destExtraCRV * PSetup_UUIE_destExtraCRV;
  11. typedef struct Facility_UUIE_alternativeAliasAddress * PFacility_UUIE_alternativeAliasAddress;
  12. typedef struct Setup_UUIE_destExtraCallInfo * PSetup_UUIE_destExtraCallInfo;
  13. typedef struct Setup_UUIE_destinationAddress * PSetup_UUIE_destinationAddress;
  14. typedef struct Setup_UUIE_sourceAddress * PSetup_UUIE_sourceAddress;
  15. typedef struct GatewayInfo_protocol * PGatewayInfo_protocol;
  16. typedef struct TransportAddress_ipSourceRoute_route_Seq {
  17. ASN1uint32_t length;
  18. ASN1octet_t value[4];
  19. } TransportAddress_ipSourceRoute_route_Seq;
  20. typedef struct ConferenceIdentifier {
  21. ASN1uint32_t length;
  22. ASN1octet_t value[16];
  23. } ConferenceIdentifier;
  24. typedef ASN1uint16_t CallReferenceValue;
  25. typedef ASN1objectidentifier_t ProtocolIdentifier;
  26. typedef struct TransportAddress_ipSourceRoute_routing {
  27. ASN1choice_t choice;
  28. # define strict_chosen 1
  29. # define loose_chosen 2
  30. } TransportAddress_ipSourceRoute_routing;
  31. typedef struct TransportAddress_ipSourceRoute_route {
  32. PTransportAddress_ipSourceRoute_route next;
  33. TransportAddress_ipSourceRoute_route_Seq value;
  34. } TransportAddress_ipSourceRoute_route_Element;
  35. typedef struct H323_UserInformation_user_data {
  36. ASN1uint16_t protocol_discriminator;
  37. struct H323_UserInformation_user_data_user_information_user_information {
  38. ASN1uint32_t length;
  39. ASN1octet_t value[131];
  40. } user_information;
  41. } H323_UserInformation_user_data;
  42. typedef struct Setup_UUIE_conferenceGoal {
  43. ASN1choice_t choice;
  44. # define create_chosen 1
  45. # define join_chosen 2
  46. # define invite_chosen 3
  47. } Setup_UUIE_conferenceGoal;
  48. typedef struct Setup_UUIE_destExtraCRV {
  49. PSetup_UUIE_destExtraCRV next;
  50. CallReferenceValue value;
  51. } Setup_UUIE_destExtraCRV_Element;
  52. typedef struct TransportAddress_ip6Address {
  53. struct TransportAddress_ip6Address_ip_ip {
  54. ASN1uint32_t length;
  55. ASN1octet_t value[16];
  56. } ip;
  57. ASN1uint16_t port;
  58. } TransportAddress_ip6Address;
  59. typedef struct TransportAddress_ipxAddress {
  60. struct TransportAddress_ipxAddress_node_node {
  61. ASN1uint32_t length;
  62. ASN1octet_t value[6];
  63. } node;
  64. struct TransportAddress_ipxAddress_netnum_netnum {
  65. ASN1uint32_t length;
  66. ASN1octet_t value[4];
  67. } netnum;
  68. struct TransportAddress_ipxAddress_port_port {
  69. ASN1uint32_t length;
  70. ASN1octet_t value[2];
  71. } port;
  72. } TransportAddress_ipxAddress;
  73. typedef struct TransportAddress_ipSourceRoute {
  74. struct TransportAddress_ipSourceRoute_ip_ip {
  75. ASN1uint32_t length;
  76. ASN1octet_t value[4];
  77. } ip;
  78. ASN1uint16_t port;
  79. PTransportAddress_ipSourceRoute_route route;
  80. TransportAddress_ipSourceRoute_routing routing;
  81. } TransportAddress_ipSourceRoute;
  82. typedef struct TransportAddress_ipAddress {
  83. struct TransportAddress_ipAddress_ip_ip {
  84. ASN1uint32_t length;
  85. ASN1octet_t value[4];
  86. } ip;
  87. ASN1uint16_t port;
  88. } TransportAddress_ipAddress;
  89. typedef struct H221NonStandard {
  90. ASN1uint16_t t35CountryCode;
  91. ASN1uint16_t t35Extension;
  92. ASN1uint16_t manufacturerCode;
  93. } H221NonStandard;
  94. typedef struct NonStandardIdentifier {
  95. ASN1choice_t choice;
  96. union {
  97. # define object_chosen 1
  98. ASN1objectidentifier_t object;
  99. # define h221NonStandard_chosen 2
  100. H221NonStandard h221NonStandard;
  101. } u;
  102. } NonStandardIdentifier;
  103. typedef struct NonStandardParameter {
  104. NonStandardIdentifier nonStandardIdentifier;
  105. ASN1octetstring_t data;
  106. } NonStandardParameter;
  107. typedef struct CallType {
  108. ASN1choice_t choice;
  109. # define pointToPoint_chosen 1
  110. # define oneToN_chosen 2
  111. # define nToOne_chosen 3
  112. # define nToN_chosen 4
  113. } CallType;
  114. typedef struct Q954Details {
  115. ASN1bool_t conferenceCalling;
  116. ASN1bool_t threePartyService;
  117. } Q954Details;
  118. typedef struct QseriesOptions {
  119. ASN1bool_t q932Full;
  120. ASN1bool_t q951Full;
  121. ASN1bool_t q952Full;
  122. ASN1bool_t q953Full;
  123. ASN1bool_t q955Full;
  124. ASN1bool_t q956Full;
  125. ASN1bool_t q957Full;
  126. Q954Details q954Info;
  127. } QseriesOptions;
  128. typedef struct H310Caps {
  129. union {
  130. ASN1uint16_t bit_mask;
  131. ASN1octet_t o[1];
  132. };
  133. # define H310Caps_nonStandardData_present 0x80
  134. NonStandardParameter nonStandardData;
  135. } H310Caps;
  136. typedef struct H320Caps {
  137. union {
  138. ASN1uint16_t bit_mask;
  139. ASN1octet_t o[1];
  140. };
  141. # define H320Caps_nonStandardData_present 0x80
  142. NonStandardParameter nonStandardData;
  143. } H320Caps;
  144. typedef struct H321Caps {
  145. union {
  146. ASN1uint16_t bit_mask;
  147. ASN1octet_t o[1];
  148. };
  149. # define H321Caps_nonStandardData_present 0x80
  150. NonStandardParameter nonStandardData;
  151. } H321Caps;
  152. typedef struct H322Caps {
  153. union {
  154. ASN1uint16_t bit_mask;
  155. ASN1octet_t o[1];
  156. };
  157. # define H322Caps_nonStandardData_present 0x80
  158. NonStandardParameter nonStandardData;
  159. } H322Caps;
  160. typedef struct H323Caps {
  161. union {
  162. ASN1uint16_t bit_mask;
  163. ASN1octet_t o[1];
  164. };
  165. # define H323Caps_nonStandardData_present 0x80
  166. NonStandardParameter nonStandardData;
  167. } H323Caps;
  168. typedef struct H324Caps {
  169. union {
  170. ASN1uint16_t bit_mask;
  171. ASN1octet_t o[1];
  172. };
  173. # define H324Caps_nonStandardData_present 0x80
  174. NonStandardParameter nonStandardData;
  175. } H324Caps;
  176. typedef struct VoiceCaps {
  177. union {
  178. ASN1uint16_t bit_mask;
  179. ASN1octet_t o[1];
  180. };
  181. # define VoiceCaps_nonStandardData_present 0x80
  182. NonStandardParameter nonStandardData;
  183. } VoiceCaps;
  184. typedef struct T120OnlyCaps {
  185. union {
  186. ASN1uint16_t bit_mask;
  187. ASN1octet_t o[1];
  188. };
  189. # define T120OnlyCaps_nonStandardData_present 0x80
  190. NonStandardParameter nonStandardData;
  191. } T120OnlyCaps;
  192. typedef struct McuInfo {
  193. union {
  194. ASN1uint16_t bit_mask;
  195. ASN1octet_t o[1];
  196. };
  197. # define McuInfo_nonStandardData_present 0x80
  198. NonStandardParameter nonStandardData;
  199. } McuInfo;
  200. typedef struct TerminalInfo {
  201. union {
  202. ASN1uint16_t bit_mask;
  203. ASN1octet_t o[1];
  204. };
  205. # define TerminalInfo_nonStandardData_present 0x80
  206. NonStandardParameter nonStandardData;
  207. } TerminalInfo;
  208. typedef struct GatekeeperInfo {
  209. union {
  210. ASN1uint16_t bit_mask;
  211. ASN1octet_t o[1];
  212. };
  213. # define GatekeeperInfo_nonStandardData_present 0x80
  214. NonStandardParameter nonStandardData;
  215. } GatekeeperInfo;
  216. typedef struct VendorIdentifier {
  217. union {
  218. ASN1uint16_t bit_mask;
  219. ASN1octet_t o[1];
  220. };
  221. H221NonStandard vendor;
  222. # define productId_present 0x80
  223. struct VendorIdentifier_productId_productId {
  224. ASN1uint32_t length;
  225. ASN1octet_t value[256];
  226. } productId;
  227. # define versionId_present 0x40
  228. struct VendorIdentifier_versionId_versionId {
  229. ASN1uint32_t length;
  230. ASN1octet_t value[256];
  231. } versionId;
  232. } VendorIdentifier;
  233. typedef struct SupportedProtocols {
  234. ASN1choice_t choice;
  235. union {
  236. # define nonStandardData_chosen 1
  237. NonStandardParameter nonStandardData;
  238. # define h310_chosen 2
  239. H310Caps h310;
  240. # define h320_chosen 3
  241. H320Caps h320;
  242. # define h321_chosen 4
  243. H321Caps h321;
  244. # define h322_chosen 5
  245. H322Caps h322;
  246. # define h323_chosen 6
  247. H323Caps h323;
  248. # define h324_chosen 7
  249. H324Caps h324;
  250. # define voice_chosen 8
  251. VoiceCaps voice;
  252. # define t120_only_chosen 9
  253. T120OnlyCaps t120_only;
  254. } u;
  255. } SupportedProtocols;
  256. typedef struct GatewayInfo {
  257. union {
  258. ASN1uint16_t bit_mask;
  259. ASN1octet_t o[1];
  260. };
  261. # define protocol_present 0x80
  262. PGatewayInfo_protocol protocol;
  263. # define GatewayInfo_nonStandardData_present 0x40
  264. NonStandardParameter nonStandardData;
  265. } GatewayInfo;
  266. typedef struct EndpointType {
  267. union {
  268. ASN1uint16_t bit_mask;
  269. ASN1octet_t o[1];
  270. };
  271. # define EndpointType_nonStandardData_present 0x80
  272. NonStandardParameter nonStandardData;
  273. # define vendor_present 0x40
  274. VendorIdentifier vendor;
  275. # define gatekeeper_present 0x20
  276. GatekeeperInfo gatekeeper;
  277. # define gateway_present 0x10
  278. GatewayInfo gateway;
  279. # define mcu_present 0x8
  280. McuInfo mcu;
  281. # define terminal_present 0x4
  282. TerminalInfo terminal;
  283. ASN1bool_t mc;
  284. ASN1bool_t undefinedNode;
  285. } EndpointType;
  286. typedef struct TransportAddress {
  287. ASN1choice_t choice;
  288. union {
  289. # define ipAddress_chosen 1
  290. TransportAddress_ipAddress ipAddress;
  291. # define ipSourceRoute_chosen 2
  292. TransportAddress_ipSourceRoute ipSourceRoute;
  293. # define ipxAddress_chosen 3
  294. TransportAddress_ipxAddress ipxAddress;
  295. # define ip6Address_chosen 4
  296. TransportAddress_ip6Address ip6Address;
  297. # define netBios_chosen 5
  298. struct TransportAddress_netBios_netBios {
  299. ASN1uint32_t length;
  300. ASN1octet_t value[16];
  301. } netBios;
  302. # define nsap_chosen 6
  303. struct TransportAddress_nsap_nsap {
  304. ASN1uint32_t length;
  305. ASN1octet_t value[20];
  306. } nsap;
  307. # define nonStandardAddress_chosen 7
  308. NonStandardParameter nonStandardAddress;
  309. } u;
  310. } TransportAddress;
  311. typedef struct AliasAddress {
  312. ASN1choice_t choice;
  313. union {
  314. # define e164_chosen 1
  315. ASN1char_t e164[129];
  316. # define h323_ID_chosen 2
  317. ASN1char16string_t h323_ID;
  318. } u;
  319. } AliasAddress;
  320. typedef struct Setup_UUIE {
  321. union {
  322. ASN1uint16_t bit_mask;
  323. ASN1octet_t o[2];
  324. };
  325. ProtocolIdentifier protocolIdentifier;
  326. # define Setup_UUIE_h245Address_present 0x80
  327. TransportAddress h245Address;
  328. # define sourceAddress_present 0x40
  329. PSetup_UUIE_sourceAddress sourceAddress;
  330. EndpointType sourceInfo;
  331. # define destinationAddress_present 0x20
  332. PSetup_UUIE_destinationAddress destinationAddress;
  333. # define destCallSignalAddress_present 0x10
  334. TransportAddress destCallSignalAddress;
  335. # define destExtraCallInfo_present 0x8
  336. PSetup_UUIE_destExtraCallInfo destExtraCallInfo;
  337. # define destExtraCRV_present 0x4
  338. PSetup_UUIE_destExtraCRV destExtraCRV;
  339. ASN1bool_t activeMC;
  340. ConferenceIdentifier conferenceID;
  341. Setup_UUIE_conferenceGoal conferenceGoal;
  342. # define callServices_present 0x2
  343. QseriesOptions callServices;
  344. CallType callType;
  345. # define sourceCallSignalAddress_present 0x8000
  346. TransportAddress sourceCallSignalAddress;
  347. # define remoteExtensionAddress_present 0x4000
  348. AliasAddress remoteExtensionAddress;
  349. } Setup_UUIE;
  350. typedef struct CallProceeding_UUIE {
  351. union {
  352. ASN1uint16_t bit_mask;
  353. ASN1octet_t o[1];
  354. };
  355. ProtocolIdentifier protocolIdentifier;
  356. EndpointType destinationInfo;
  357. # define CallProceeding_UUIE_h245Address_present 0x80
  358. TransportAddress h245Address;
  359. } CallProceeding_UUIE;
  360. typedef struct Connect_UUIE {
  361. union {
  362. ASN1uint16_t bit_mask;
  363. ASN1octet_t o[1];
  364. };
  365. ProtocolIdentifier protocolIdentifier;
  366. # define Connect_UUIE_h245Address_present 0x80
  367. TransportAddress h245Address;
  368. EndpointType destinationInfo;
  369. ConferenceIdentifier conferenceID;
  370. } Connect_UUIE;
  371. typedef struct Alerting_UUIE {
  372. union {
  373. ASN1uint16_t bit_mask;
  374. ASN1octet_t o[1];
  375. };
  376. ProtocolIdentifier protocolIdentifier;
  377. EndpointType destinationInfo;
  378. # define Alerting_UUIE_h245Address_present 0x80
  379. TransportAddress h245Address;
  380. } Alerting_UUIE;
  381. typedef struct UI_UUIE {
  382. ProtocolIdentifier protocolIdentifier;
  383. } UI_UUIE;
  384. typedef struct ReleaseCompleteReason {
  385. ASN1choice_t choice;
  386. # define noBandwidth_chosen 1
  387. # define gatekeeperResources_chosen 2
  388. # define unreachableDestination_chosen 3
  389. # define destinationRejection_chosen 4
  390. # define invalidRevision_chosen 5
  391. # define noPermission_chosen 6
  392. # define unreachableGatekeeper_chosen 7
  393. # define gatewayResources_chosen 8
  394. # define badFormatAddress_chosen 9
  395. # define adaptiveBusy_chosen 10
  396. # define inConf_chosen 11
  397. # define ReleaseCompleteReason_undefinedReason_chosen 12
  398. # define facilityCallDeflection_chosen 13
  399. } ReleaseCompleteReason;
  400. typedef struct ReleaseComplete_UUIE {
  401. union {
  402. ASN1uint16_t bit_mask;
  403. ASN1octet_t o[1];
  404. };
  405. ProtocolIdentifier protocolIdentifier;
  406. # define reason_present 0x80
  407. ReleaseCompleteReason reason;
  408. } ReleaseComplete_UUIE;
  409. typedef struct FacilityReason {
  410. ASN1choice_t choice;
  411. # define routeCallToGatekeeper_chosen 1
  412. # define callForwarded_chosen 2
  413. # define routeCallToMC_chosen 3
  414. # define FacilityReason_undefinedReason_chosen 4
  415. } FacilityReason;
  416. typedef struct Facility_UUIE {
  417. union {
  418. ASN1uint16_t bit_mask;
  419. ASN1octet_t o[1];
  420. };
  421. ProtocolIdentifier protocolIdentifier;
  422. # define alternativeAddress_present 0x80
  423. TransportAddress alternativeAddress;
  424. # define alternativeAliasAddress_present 0x40
  425. PFacility_UUIE_alternativeAliasAddress alternativeAliasAddress;
  426. # define conferenceID_present 0x20
  427. ConferenceIdentifier conferenceID;
  428. FacilityReason reason;
  429. } Facility_UUIE;
  430. typedef struct H323_UU_PDU_h323_message_body {
  431. ASN1choice_t choice;
  432. union {
  433. # define setup_chosen 1
  434. Setup_UUIE setup;
  435. # define callProceeding_chosen 2
  436. CallProceeding_UUIE callProceeding;
  437. # define connect_chosen 3
  438. Connect_UUIE connect;
  439. # define alerting_chosen 4
  440. Alerting_UUIE alerting;
  441. # define userInformation_chosen 5
  442. UI_UUIE userInformation;
  443. # define releaseComplete_chosen 6
  444. ReleaseComplete_UUIE releaseComplete;
  445. # define facility_chosen 7
  446. Facility_UUIE facility;
  447. } u;
  448. } H323_UU_PDU_h323_message_body;
  449. typedef struct Facility_UUIE_alternativeAliasAddress {
  450. PFacility_UUIE_alternativeAliasAddress next;
  451. AliasAddress value;
  452. } Facility_UUIE_alternativeAliasAddress_Element;
  453. typedef struct Setup_UUIE_destExtraCallInfo {
  454. PSetup_UUIE_destExtraCallInfo next;
  455. AliasAddress value;
  456. } Setup_UUIE_destExtraCallInfo_Element;
  457. typedef struct Setup_UUIE_destinationAddress {
  458. PSetup_UUIE_destinationAddress next;
  459. AliasAddress value;
  460. } Setup_UUIE_destinationAddress_Element;
  461. typedef struct Setup_UUIE_sourceAddress {
  462. PSetup_UUIE_sourceAddress next;
  463. AliasAddress value;
  464. } Setup_UUIE_sourceAddress_Element;
  465. typedef struct GatewayInfo_protocol {
  466. PGatewayInfo_protocol next;
  467. SupportedProtocols value;
  468. } GatewayInfo_protocol_Element;
  469. typedef struct H323_UU_PDU {
  470. union {
  471. ASN1uint16_t bit_mask;
  472. ASN1octet_t o[1];
  473. };
  474. H323_UU_PDU_h323_message_body h323_message_body;
  475. # define H323_UU_PDU_nonStandardData_present 0x80
  476. NonStandardParameter nonStandardData;
  477. } H323_UU_PDU;
  478. typedef struct H323_UserInformation {
  479. union {
  480. ASN1uint16_t bit_mask;
  481. ASN1octet_t o[1];
  482. };
  483. H323_UU_PDU h323_uu_pdu;
  484. # define user_data_present 0x80
  485. H323_UserInformation_user_data user_data;
  486. } H323_UserInformation;
  487. #define H323_UserInformation_PDU 0
  488. #define SIZE_Q931ASN_Module_PDU_0 sizeof(H323_UserInformation)
  489. extern ASN1module_t Q931ASN_Module;
  490. extern void ASN1CALL Q931ASN_Module_Startup(void);
  491. extern void ASN1CALL Q931ASN_Module_Cleanup(void);
  492. /* Prototypes of element functions for SEQUENCE OF and SET OF constructs */
  493. extern int ASN1CALL ASN1Enc_TransportAddress_ipSourceRoute_route_ElmFn(ASN1encoding_t enc, PTransportAddress_ipSourceRoute_route val);
  494. extern int ASN1CALL ASN1Dec_TransportAddress_ipSourceRoute_route_ElmFn(ASN1decoding_t dec, PTransportAddress_ipSourceRoute_route val);
  495. extern void ASN1CALL ASN1Free_TransportAddress_ipSourceRoute_route_ElmFn(PTransportAddress_ipSourceRoute_route val);
  496. extern int ASN1CALL ASN1Enc_Setup_UUIE_destExtraCRV_ElmFn(ASN1encoding_t enc, PSetup_UUIE_destExtraCRV val);
  497. extern int ASN1CALL ASN1Dec_Setup_UUIE_destExtraCRV_ElmFn(ASN1decoding_t dec, PSetup_UUIE_destExtraCRV val);
  498. extern void ASN1CALL ASN1Free_Setup_UUIE_destExtraCRV_ElmFn(PSetup_UUIE_destExtraCRV val);
  499. extern int ASN1CALL ASN1Enc_Facility_UUIE_alternativeAliasAddress_ElmFn(ASN1encoding_t enc, PFacility_UUIE_alternativeAliasAddress val);
  500. extern int ASN1CALL ASN1Dec_Facility_UUIE_alternativeAliasAddress_ElmFn(ASN1decoding_t dec, PFacility_UUIE_alternativeAliasAddress val);
  501. extern void ASN1CALL ASN1Free_Facility_UUIE_alternativeAliasAddress_ElmFn(PFacility_UUIE_alternativeAliasAddress val);
  502. extern int ASN1CALL ASN1Enc_Setup_UUIE_destExtraCallInfo_ElmFn(ASN1encoding_t enc, PSetup_UUIE_destExtraCallInfo val);
  503. extern int ASN1CALL ASN1Dec_Setup_UUIE_destExtraCallInfo_ElmFn(ASN1decoding_t dec, PSetup_UUIE_destExtraCallInfo val);
  504. extern void ASN1CALL ASN1Free_Setup_UUIE_destExtraCallInfo_ElmFn(PSetup_UUIE_destExtraCallInfo val);
  505. extern int ASN1CALL ASN1Enc_Setup_UUIE_destinationAddress_ElmFn(ASN1encoding_t enc, PSetup_UUIE_destinationAddress val);
  506. extern int ASN1CALL ASN1Dec_Setup_UUIE_destinationAddress_ElmFn(ASN1decoding_t dec, PSetup_UUIE_destinationAddress val);
  507. extern void ASN1CALL ASN1Free_Setup_UUIE_destinationAddress_ElmFn(PSetup_UUIE_destinationAddress val);
  508. extern int ASN1CALL ASN1Enc_Setup_UUIE_sourceAddress_ElmFn(ASN1encoding_t enc, PSetup_UUIE_sourceAddress val);
  509. extern int ASN1CALL ASN1Dec_Setup_UUIE_sourceAddress_ElmFn(ASN1decoding_t dec, PSetup_UUIE_sourceAddress val);
  510. extern void ASN1CALL ASN1Free_Setup_UUIE_sourceAddress_ElmFn(PSetup_UUIE_sourceAddress val);
  511. extern int ASN1CALL ASN1Enc_GatewayInfo_protocol_ElmFn(ASN1encoding_t enc, PGatewayInfo_protocol val);
  512. extern int ASN1CALL ASN1Dec_GatewayInfo_protocol_ElmFn(ASN1decoding_t dec, PGatewayInfo_protocol val);
  513. extern void ASN1CALL ASN1Free_GatewayInfo_protocol_ElmFn(PGatewayInfo_protocol val);
  514. #ifdef __cplusplus
  515. } /* extern "C" */
  516. #endif
  517. #endif /* _Q931ASN_Module_H_ */