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.

612 lines
17 KiB

  1. #ifndef _MCSPDU_Module_H_
  2. #define _MCSPDU_Module_H_
  3. #include "msper.h"
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. typedef struct SetOfUserIDs * PSetOfUserIDs;
  8. typedef struct SetOfPDUChannelAttributes * PSetOfPDUChannelAttributes;
  9. typedef struct SetOfChannelIDs * PSetOfChannelIDs;
  10. typedef struct SetOfPDUTokenAttributes * PSetOfPDUTokenAttributes;
  11. typedef struct SetOfTokenIDs * PSetOfTokenIDs;
  12. typedef ASN1uint16_t ChannelID;
  13. typedef ChannelID StaticChannelID;
  14. typedef ChannelID DynamicChannelID;
  15. typedef DynamicChannelID UserID;
  16. typedef DynamicChannelID PrivateChannelID;
  17. typedef DynamicChannelID AssignedChannelID;
  18. typedef ASN1uint16_t TokenID;
  19. typedef enum PDUTokenStatus {
  20. not_in_use = 0,
  21. self_grabbed = 1,
  22. other_grabbed = 2,
  23. self_inhibited = 3,
  24. other_inhibited = 4,
  25. self_recipient = 5,
  26. self_giving = 6,
  27. other_giving = 7,
  28. } PDUTokenStatus;
  29. typedef enum PDUPriority {
  30. TOP_PRIORITY = 0,
  31. HIGH_PRIORITY = 1,
  32. MEDIUM_PRIORITY = 2,
  33. LOW_PRIORITY = 3,
  34. } PDUPriority;
  35. typedef ASN1uint8_t PDUSegmentation;
  36. // #define begin 0x80
  37. // #define end 0x40
  38. typedef enum PDUReason {
  39. rn_domain_disconnected = 0,
  40. rn_provider_initiated = 1,
  41. rn_token_purged = 2,
  42. rn_user_requested = 3,
  43. rn_channel_purged = 4,
  44. } PDUReason;
  45. typedef enum PDUResult {
  46. rt_successful = 0,
  47. rt_domain_merging = 1,
  48. rt_domain_not_hierarchical = 2,
  49. rt_no_such_channel = 3,
  50. rt_no_such_domain = 4,
  51. rt_no_such_user = 5,
  52. rt_not_admitted = 6,
  53. rt_other_user_id = 7,
  54. rt_parameters_unacceptable = 8,
  55. rt_token_not_available = 9,
  56. rt_token_not_possessed = 10,
  57. rt_too_many_channels = 11,
  58. rt_too_many_tokens = 12,
  59. rt_too_many_users = 13,
  60. rt_unspecified_failure = 14,
  61. rt_user_rejected = 15,
  62. } PDUResult;
  63. typedef enum Diagnostic {
  64. dc_inconsistent_merge = 0,
  65. dc_forbidden_pdu_downward = 1,
  66. dc_forbidden_pdu_upward = 2,
  67. dc_invalid_ber_encoding = 3,
  68. dc_invalid_per_encoding = 4,
  69. dc_misrouted_user = 5,
  70. dc_unrequested_confirm = 6,
  71. dc_wrong_transport_priority = 7,
  72. dc_channel_id_conflict = 8,
  73. dc_token_id_conflict = 9,
  74. dc_not_user_id_channel = 10,
  75. dc_too_many_channels = 11,
  76. dc_too_many_tokens = 12,
  77. dc_too_many_users = 13,
  78. } Diagnostic;
  79. typedef struct Given {
  80. TokenID token_id;
  81. UserID recipient;
  82. } Given;
  83. typedef struct Ungivable {
  84. TokenID token_id;
  85. UserID grabber;
  86. } Ungivable;
  87. typedef struct Giving {
  88. TokenID token_id;
  89. UserID grabber;
  90. UserID recipient;
  91. } Giving;
  92. typedef struct Inhibited {
  93. TokenID token_id;
  94. PSetOfUserIDs inhibitors;
  95. } Inhibited;
  96. typedef struct Grabbed {
  97. TokenID token_id;
  98. UserID grabber;
  99. } Grabbed;
  100. typedef struct ChannelAttributesAssigned {
  101. AssignedChannelID channel_id;
  102. } ChannelAttributesAssigned;
  103. typedef struct ChannelAttributesPrivate {
  104. ASN1bool_t joined;
  105. PrivateChannelID channel_id;
  106. UserID manager;
  107. PSetOfUserIDs admitted;
  108. } ChannelAttributesPrivate;
  109. typedef struct ChannelAttributesUserID {
  110. ASN1bool_t joined;
  111. UserID user_id;
  112. } ChannelAttributesUserID;
  113. typedef struct ChannelAttributesStatic {
  114. StaticChannelID channel_id;
  115. } ChannelAttributesStatic;
  116. typedef struct PDUDomainParameters {
  117. ASN1uint32_t max_channel_ids;
  118. ASN1uint32_t max_user_ids;
  119. ASN1uint32_t max_token_ids;
  120. ASN1uint32_t number_priorities;
  121. ASN1uint32_t min_throughput;
  122. ASN1uint32_t max_height;
  123. ASN1uint32_t max_mcspdu_size;
  124. ASN1uint32_t protocol_version;
  125. } PDUDomainParameters;
  126. typedef struct ConnectInitialPDU {
  127. ASN1octetstring_t calling_domain_selector;
  128. ASN1octetstring_t called_domain_selector;
  129. ASN1bool_t upward_flag;
  130. PDUDomainParameters target_parameters;
  131. PDUDomainParameters minimum_parameters;
  132. PDUDomainParameters maximum_parameters;
  133. ASN1octetstring_t user_data;
  134. } ConnectInitialPDU;
  135. typedef struct ConnectResponsePDU {
  136. PDUResult result;
  137. ASN1uint32_t called_connect_id;
  138. PDUDomainParameters domain_parameters;
  139. ASN1octetstring_t user_data;
  140. } ConnectResponsePDU;
  141. typedef struct ConnectAdditionalPDU {
  142. ASN1uint32_t called_connect_id;
  143. PDUPriority data_priority;
  144. } ConnectAdditionalPDU;
  145. typedef struct ConnectResultPDU {
  146. PDUResult result;
  147. } ConnectResultPDU;
  148. typedef struct PlumbDomainIndicationPDU {
  149. ASN1uint32_t height_limit;
  150. } PlumbDomainIndicationPDU;
  151. typedef struct ErectDomainRequestPDU {
  152. UINT_PTR sub_height;
  153. ASN1uint32_t sub_interval;
  154. } ErectDomainRequestPDU;
  155. typedef struct PDUChannelAttributes {
  156. ASN1choice_t choice;
  157. union {
  158. # define channel_attributes_static_chosen 1
  159. ChannelAttributesStatic channel_attributes_static;
  160. # define channel_attributes_user_id_chosen 2
  161. ChannelAttributesUserID channel_attributes_user_id;
  162. # define channel_attributes_private_chosen 3
  163. ChannelAttributesPrivate channel_attributes_private;
  164. # define channel_attributes_assigned_chosen 4
  165. ChannelAttributesAssigned channel_attributes_assigned;
  166. } u;
  167. } PDUChannelAttributes;
  168. typedef struct MergeChannelsPDU {
  169. PSetOfPDUChannelAttributes merge_channels;
  170. PSetOfChannelIDs purge_channel_ids;
  171. } MergeChannelsPDU;
  172. typedef MergeChannelsPDU MergeChannelsRequestPDU;
  173. typedef MergeChannelsPDU MergeChannelsConfirmPDU;
  174. typedef struct PurgeChannelIndicationPDU {
  175. PSetOfUserIDs detach_user_ids;
  176. PSetOfChannelIDs purge_channel_ids;
  177. } PurgeChannelIndicationPDU;
  178. typedef struct PDUTokenAttributes {
  179. ASN1choice_t choice;
  180. union {
  181. # define grabbed_chosen 1
  182. Grabbed grabbed;
  183. # define inhibited_chosen 2
  184. Inhibited inhibited;
  185. # define giving_chosen 3
  186. Giving giving;
  187. # define ungivable_chosen 4
  188. Ungivable ungivable;
  189. # define given_chosen 5
  190. Given given;
  191. } u;
  192. } PDUTokenAttributes;
  193. typedef struct SetOfUserIDs {
  194. PSetOfUserIDs next;
  195. UserID value;
  196. } SetOfUserIDs_Element;
  197. typedef struct SetOfPDUChannelAttributes {
  198. PSetOfPDUChannelAttributes next;
  199. PDUChannelAttributes value;
  200. } SetOfPDUChannelAttributes_Element;
  201. typedef struct SetOfChannelIDs {
  202. PSetOfChannelIDs next;
  203. ChannelID value;
  204. } SetOfChannelIDs_Element;
  205. typedef struct SetOfPDUTokenAttributes {
  206. PSetOfPDUTokenAttributes next;
  207. PDUTokenAttributes value;
  208. } SetOfPDUTokenAttributes_Element;
  209. typedef struct SetOfTokenIDs {
  210. PSetOfTokenIDs next;
  211. TokenID value;
  212. } SetOfTokenIDs_Element;
  213. typedef struct MergeTokensPDU {
  214. PSetOfPDUTokenAttributes merge_tokens;
  215. PSetOfTokenIDs purge_token_ids;
  216. } MergeTokensPDU;
  217. typedef MergeTokensPDU MergeTokensRequestPDU;
  218. typedef MergeTokensPDU MergeTokensConfirmPDU;
  219. typedef struct PurgeTokenIndicationPDU {
  220. PSetOfTokenIDs purge_token_ids;
  221. } PurgeTokenIndicationPDU;
  222. typedef struct DisconnectProviderUltimatumPDU {
  223. PDUReason reason;
  224. } DisconnectProviderUltimatumPDU;
  225. typedef struct RejectUltimatumPDU {
  226. Diagnostic diagnostic;
  227. ASN1octetstring_t initial_octets;
  228. } RejectUltimatumPDU;
  229. typedef struct AttachUserRequestPDU {
  230. char placeholder;
  231. } AttachUserRequestPDU;
  232. typedef struct AttachUserConfirmPDU {
  233. union {
  234. ASN1uint16_t bit_mask;
  235. ASN1octet_t o[1];
  236. };
  237. PDUResult result;
  238. # define initiator_present 0x80
  239. UserID initiator;
  240. } AttachUserConfirmPDU;
  241. typedef struct DetachUserRequestPDU {
  242. PDUReason reason;
  243. PSetOfUserIDs user_ids;
  244. } DetachUserPDU;
  245. typedef DetachUserPDU DetachUserRequestPDU;
  246. typedef DetachUserPDU DetachUserIndicationPDU;
  247. typedef struct ChannelJoinRequestPDU {
  248. UserID initiator;
  249. ChannelID channel_id;
  250. } ChannelJoinRequestPDU;
  251. typedef struct ChannelJoinConfirmPDU {
  252. union {
  253. ASN1uint16_t bit_mask;
  254. ASN1octet_t o[1];
  255. };
  256. PDUResult result;
  257. UserID initiator;
  258. ChannelID requested;
  259. # define join_channel_id_present 0x80
  260. ChannelID join_channel_id;
  261. } ChannelJoinConfirmPDU;
  262. typedef struct ChannelLeaveRequestPDU {
  263. PSetOfChannelIDs channel_ids;
  264. } ChannelLeaveRequestPDU;
  265. typedef struct ChannelConveneRequestPDU {
  266. UserID initiator;
  267. } ChannelConveneRequestPDU;
  268. typedef struct ChannelConveneConfirmPDU {
  269. union {
  270. ASN1uint16_t bit_mask;
  271. ASN1octet_t o[1];
  272. };
  273. PDUResult result;
  274. UserID initiator;
  275. # define convene_channel_id_present 0x80
  276. PrivateChannelID convene_channel_id;
  277. } ChannelConveneConfirmPDU;
  278. typedef struct ChannelDisbandRequestPDU {
  279. UserID initiator;
  280. PrivateChannelID channel_id;
  281. } ChannelDisbandRequestPDU;
  282. typedef struct ChannelDisbandIndicationPDU {
  283. PrivateChannelID channel_id;
  284. } ChannelDisbandIndicationPDU;
  285. typedef struct ChannelAdmitRequestPDU {
  286. UserID initiator;
  287. PrivateChannelID channel_id;
  288. PSetOfUserIDs user_ids;
  289. } ChannelAdmitExpelPDU;
  290. typedef ChannelAdmitExpelPDU ChannelAdmitRequestPDU;
  291. typedef ChannelAdmitExpelPDU ChannelAdmitIndicationPDU;
  292. typedef ChannelAdmitExpelPDU ChannelExpelRequestPDU;
  293. typedef struct ChannelExpelIndicationPDU {
  294. PrivateChannelID channel_id;
  295. PSetOfUserIDs user_ids;
  296. } ChannelExpelIndicationPDU;
  297. typedef struct SendDataRequestPDU {
  298. UserID initiator;
  299. ChannelID channel_id;
  300. PDUPriority data_priority;
  301. PDUSegmentation segmentation;
  302. ASN1octetstring_t user_data;
  303. } SendDataRequestPDU;
  304. typedef struct SendDataIndicationPDU {
  305. UserID initiator;
  306. ChannelID channel_id;
  307. PDUPriority data_priority;
  308. PDUSegmentation segmentation;
  309. ASN1octetstring_t user_data;
  310. } SendDataIndicationPDU;
  311. typedef struct UniformSendDataRequestPDU {
  312. UserID initiator;
  313. ChannelID channel_id;
  314. PDUPriority data_priority;
  315. PDUSegmentation segmentation;
  316. ASN1octetstring_t user_data;
  317. } UniformSendDataRequestPDU;
  318. typedef struct UniformSendDataIndicationPDU {
  319. UserID initiator;
  320. ChannelID channel_id;
  321. PDUPriority data_priority;
  322. PDUSegmentation segmentation;
  323. ASN1octetstring_t user_data;
  324. } UniformSendDataIndicationPDU;
  325. typedef struct TokenGrabRequestPDU {
  326. UserID initiator;
  327. TokenID token_id;
  328. } TokenGrabRequestPDU;
  329. typedef struct TokenGrabConfirmPDU {
  330. PDUResult result;
  331. UserID initiator;
  332. TokenID token_id;
  333. PDUTokenStatus token_status;
  334. } TokenGrabConfirmPDU;
  335. typedef struct TokenInhibitRequestPDU {
  336. UserID initiator;
  337. TokenID token_id;
  338. } TokenInhibitRequestPDU;
  339. typedef struct TokenInhibitConfirmPDU {
  340. PDUResult result;
  341. UserID initiator;
  342. TokenID token_id;
  343. PDUTokenStatus token_status;
  344. } TokenInhibitConfirmPDU;
  345. typedef struct TokenGiveRequestPDU {
  346. UserID initiator;
  347. TokenID token_id;
  348. UserID recipient;
  349. } TokenGiveRequestPDU;
  350. typedef struct TokenGiveIndicationPDU {
  351. UserID initiator;
  352. TokenID token_id;
  353. UserID recipient;
  354. } TokenGiveIndicationPDU;
  355. typedef struct TokenGiveResponsePDU {
  356. PDUResult result;
  357. UserID recipient;
  358. TokenID token_id;
  359. } TokenGiveResponsePDU;
  360. typedef struct TokenGiveConfirmPDU {
  361. PDUResult result;
  362. UserID initiator;
  363. TokenID token_id;
  364. PDUTokenStatus token_status;
  365. } TokenGiveConfirmPDU;
  366. typedef struct TokenPleaseRequestPDU {
  367. UserID initiator;
  368. TokenID token_id;
  369. } TokenPleaseRequestPDU;
  370. typedef struct TokenPleaseIndicationPDU {
  371. UserID initiator;
  372. TokenID token_id;
  373. } TokenPleaseIndicationPDU;
  374. typedef struct TokenReleaseRequestPDU {
  375. UserID initiator;
  376. TokenID token_id;
  377. } TokenReleaseRequestPDU;
  378. typedef struct TokenReleaseConfirmPDU {
  379. PDUResult result;
  380. UserID initiator;
  381. TokenID token_id;
  382. PDUTokenStatus token_status;
  383. } TokenReleaseConfirmPDU;
  384. typedef struct TokenTestRequestPDU {
  385. UserID initiator;
  386. TokenID token_id;
  387. } TokenTestRequestPDU;
  388. typedef struct TokenTestConfirmPDU {
  389. UserID initiator;
  390. TokenID token_id;
  391. PDUTokenStatus token_status;
  392. } TokenTestConfirmPDU;
  393. typedef struct ConnectMCSPDU {
  394. ASN1choice_t choice;
  395. union {
  396. # define connect_initial_chosen 1
  397. ConnectInitialPDU connect_initial;
  398. # define connect_response_chosen 2
  399. ConnectResponsePDU connect_response;
  400. # define connect_additional_chosen 3
  401. ConnectAdditionalPDU connect_additional;
  402. # define connect_result_chosen 4
  403. ConnectResultPDU connect_result;
  404. } u;
  405. } ConnectMCSPDU;
  406. #define ConnectMCSPDU_PDU 0
  407. #define SIZE_MCSPDU_Module_PDU_0 sizeof(ConnectMCSPDU)
  408. typedef struct DomainMCSPDU {
  409. ASN1choice_t choice;
  410. union {
  411. # define plumb_domain_indication_chosen 1
  412. PlumbDomainIndicationPDU plumb_domain_indication;
  413. # define erect_domain_request_chosen 2
  414. ErectDomainRequestPDU erect_domain_request;
  415. # define merge_channels_request_chosen 3
  416. MergeChannelsRequestPDU merge_channels_request;
  417. # define merge_channels_confirm_chosen 4
  418. MergeChannelsConfirmPDU merge_channels_confirm;
  419. # define purge_channel_indication_chosen 5
  420. PurgeChannelIndicationPDU purge_channel_indication;
  421. # define merge_tokens_request_chosen 6
  422. MergeTokensRequestPDU merge_tokens_request;
  423. # define merge_tokens_confirm_chosen 7
  424. MergeTokensConfirmPDU merge_tokens_confirm;
  425. # define purge_token_indication_chosen 8
  426. PurgeTokenIndicationPDU purge_token_indication;
  427. # define disconnect_provider_ultimatum_chosen 9
  428. DisconnectProviderUltimatumPDU disconnect_provider_ultimatum;
  429. # define reject_user_ultimatum_chosen 10
  430. RejectUltimatumPDU reject_user_ultimatum;
  431. # define attach_user_request_chosen 11
  432. AttachUserRequestPDU attach_user_request;
  433. # define attach_user_confirm_chosen 12
  434. AttachUserConfirmPDU attach_user_confirm;
  435. # define detach_user_request_chosen 13
  436. DetachUserRequestPDU detach_user_request;
  437. # define detach_user_indication_chosen 14
  438. DetachUserIndicationPDU detach_user_indication;
  439. # define channel_join_request_chosen 15
  440. ChannelJoinRequestPDU channel_join_request;
  441. # define channel_join_confirm_chosen 16
  442. ChannelJoinConfirmPDU channel_join_confirm;
  443. # define channel_leave_request_chosen 17
  444. ChannelLeaveRequestPDU channel_leave_request;
  445. # define channel_convene_request_chosen 18
  446. ChannelConveneRequestPDU channel_convene_request;
  447. # define channel_convene_confirm_chosen 19
  448. ChannelConveneConfirmPDU channel_convene_confirm;
  449. # define channel_disband_request_chosen 20
  450. ChannelDisbandRequestPDU channel_disband_request;
  451. # define channel_disband_indication_chosen 21
  452. ChannelDisbandIndicationPDU channel_disband_indication;
  453. # define channel_admit_request_chosen 22
  454. ChannelAdmitRequestPDU channel_admit_request;
  455. # define channel_admit_indication_chosen 23
  456. ChannelAdmitIndicationPDU channel_admit_indication;
  457. # define channel_expel_request_chosen 24
  458. ChannelExpelRequestPDU channel_expel_request;
  459. # define channel_expel_indication_chosen 25
  460. ChannelExpelIndicationPDU channel_expel_indication;
  461. # define send_data_request_chosen 26
  462. SendDataRequestPDU send_data_request;
  463. # define send_data_indication_chosen 27
  464. SendDataIndicationPDU send_data_indication;
  465. # define uniform_send_data_request_chosen 28
  466. UniformSendDataRequestPDU uniform_send_data_request;
  467. # define uniform_send_data_indication_chosen 29
  468. UniformSendDataIndicationPDU uniform_send_data_indication;
  469. # define token_grab_request_chosen 30
  470. TokenGrabRequestPDU token_grab_request;
  471. # define token_grab_confirm_chosen 31
  472. TokenGrabConfirmPDU token_grab_confirm;
  473. # define token_inhibit_request_chosen 32
  474. TokenInhibitRequestPDU token_inhibit_request;
  475. # define token_inhibit_confirm_chosen 33
  476. TokenInhibitConfirmPDU token_inhibit_confirm;
  477. # define token_give_request_chosen 34
  478. TokenGiveRequestPDU token_give_request;
  479. # define token_give_indication_chosen 35
  480. TokenGiveIndicationPDU token_give_indication;
  481. # define token_give_response_chosen 36
  482. TokenGiveResponsePDU token_give_response;
  483. # define token_give_confirm_chosen 37
  484. TokenGiveConfirmPDU token_give_confirm;
  485. # define token_please_request_chosen 38
  486. TokenPleaseRequestPDU token_please_request;
  487. # define token_please_indication_chosen 39
  488. TokenPleaseIndicationPDU token_please_indication;
  489. # define token_release_request_chosen 40
  490. TokenReleaseRequestPDU token_release_request;
  491. # define token_release_confirm_chosen 41
  492. TokenReleaseConfirmPDU token_release_confirm;
  493. # define token_test_request_chosen 42
  494. TokenTestRequestPDU token_test_request;
  495. # define token_test_confirm_chosen 43
  496. TokenTestConfirmPDU token_test_confirm;
  497. } u;
  498. } DomainMCSPDU;
  499. #define DomainMCSPDU_PDU 1
  500. #define SIZE_MCSPDU_Module_PDU_1 sizeof(DomainMCSPDU)
  501. extern ASN1module_t MCSPDU_Module;
  502. extern void ASN1CALL MCSPDU_Module_Startup(void);
  503. extern void ASN1CALL MCSPDU_Module_Cleanup(void);
  504. /* Prototypes of element functions for SEQUENCE OF and SET OF constructs */
  505. extern int ASN1CALL ASN1Enc_SetOfUserIDs_ElmFn(ASN1encoding_t enc, PSetOfUserIDs val);
  506. extern int ASN1CALL ASN1Dec_SetOfUserIDs_ElmFn(ASN1decoding_t dec, PSetOfUserIDs val);
  507. extern void ASN1CALL ASN1Free_SetOfUserIDs_ElmFn(PSetOfUserIDs val);
  508. extern int ASN1CALL ASN1Enc_SetOfPDUChannelAttributes_ElmFn(ASN1encoding_t enc, PSetOfPDUChannelAttributes val);
  509. extern int ASN1CALL ASN1Dec_SetOfPDUChannelAttributes_ElmFn(ASN1decoding_t dec, PSetOfPDUChannelAttributes val);
  510. extern void ASN1CALL ASN1Free_SetOfPDUChannelAttributes_ElmFn(PSetOfPDUChannelAttributes val);
  511. extern int ASN1CALL ASN1Enc_SetOfChannelIDs_ElmFn(ASN1encoding_t enc, PSetOfChannelIDs val);
  512. extern int ASN1CALL ASN1Dec_SetOfChannelIDs_ElmFn(ASN1decoding_t dec, PSetOfChannelIDs val);
  513. extern void ASN1CALL ASN1Free_SetOfChannelIDs_ElmFn(PSetOfChannelIDs val);
  514. extern int ASN1CALL ASN1Enc_SetOfPDUTokenAttributes_ElmFn(ASN1encoding_t enc, PSetOfPDUTokenAttributes val);
  515. extern int ASN1CALL ASN1Dec_SetOfPDUTokenAttributes_ElmFn(ASN1decoding_t dec, PSetOfPDUTokenAttributes val);
  516. extern void ASN1CALL ASN1Free_SetOfPDUTokenAttributes_ElmFn(PSetOfPDUTokenAttributes val);
  517. extern int ASN1CALL ASN1Enc_SetOfTokenIDs_ElmFn(ASN1encoding_t enc, PSetOfTokenIDs val);
  518. extern int ASN1CALL ASN1Dec_SetOfTokenIDs_ElmFn(ASN1decoding_t dec, PSetOfTokenIDs val);
  519. extern void ASN1CALL ASN1Free_SetOfTokenIDs_ElmFn(PSetOfTokenIDs val);
  520. #ifdef __cplusplus
  521. } /* extern "C" */
  522. #endif
  523. #endif /* _MCSPDU_Module_H_ */