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.

1488 lines
46 KiB

  1. /*++
  2. Copyright (c) 1990-1994 Microsoft Corporation
  3. Module Name:
  4. atm.h
  5. Abstract:
  6. This module defines the structures, macros, and manifests available
  7. to ATM aware components.
  8. Author:
  9. Jameel Hyder - jameelh@microsoft.com
  10. Revision History:
  11. Initial Version - March 1996
  12. #ifdef MS_UNI4
  13. John Dalgas (v-jdalga) 09/18/97 added support for UNI4.0 ATM CM
  14. #endif // MS_UNI4
  15. --*/
  16. #ifndef _ATM_H_
  17. #define _ATM_H_
  18. //
  19. // Address type
  20. //
  21. typedef ULONG ATM_ADDRESSTYPE;
  22. #define ATM_NSAP 0
  23. #define ATM_E164 1
  24. //
  25. // ATM Address
  26. //
  27. #define ATM_MAC_ADDRESS_LENGTH 6 // Same as 802.x
  28. #define ATM_ADDRESS_LENGTH 20
  29. //
  30. // Special characters in ATM address string used in textual representations
  31. //
  32. #define ATM_ADDR_BLANK_CHAR L' '
  33. #define ATM_ADDR_PUNCTUATION_CHAR L'.'
  34. #define ATM_ADDR_E164_START_CHAR L'+'
  35. typedef struct _ATM_ADDRESS
  36. {
  37. ATM_ADDRESSTYPE AddressType;
  38. ULONG NumberOfDigits;
  39. UCHAR Address[ATM_ADDRESS_LENGTH];
  40. } ATM_ADDRESS, *PATM_ADDRESS;
  41. //
  42. // AAL types that the miniport supports
  43. //
  44. #define AAL_TYPE_AAL0 1
  45. #define AAL_TYPE_AAL1 2
  46. #define AAL_TYPE_AAL34 4
  47. #define AAL_TYPE_AAL5 8
  48. typedef ULONG ATM_AAL_TYPE, *PATM_AAL_TYPE;
  49. //
  50. // Flags for Information Element types
  51. //
  52. #define ATM_IE_RESPONSE_FLAG 0x80000000
  53. #define ATM_IE_EMPTY_FLAG 0x40000000
  54. //
  55. // Types of Information Elements
  56. //
  57. typedef enum
  58. {
  59. // These identify request IEs
  60. IE_AALParameters,
  61. IE_TrafficDescriptor,
  62. IE_BroadbandBearerCapability,
  63. IE_BHLI,
  64. IE_BLLI,
  65. IE_CalledPartyNumber,
  66. IE_CalledPartySubaddress,
  67. IE_CallingPartyNumber,
  68. IE_CallingPartySubaddress,
  69. IE_Cause,
  70. IE_QOSClass,
  71. IE_TransitNetworkSelection,
  72. IE_BroadbandSendingComplete,
  73. IE_LIJCallId,
  74. IE_Raw,
  75. #ifdef MS_UNI4
  76. IE_TrafficDescriptor_AddOn,
  77. IE_BroadbandBearerCapability_Uni40,
  78. IE_BLLI_AddOn,
  79. IE_ConnectionId,
  80. IE_NotificationIndicator,
  81. IE_MinimumTrafficDescriptor,
  82. IE_AlternativeTrafficDescriptor,
  83. IE_ExtendedQOS,
  84. IE_EndToEndTransitDelay,
  85. IE_ABRSetupParameters,
  86. IE_ABRAdditionalParameters,
  87. IE_LIJParameters,
  88. IE_LeafSequenceNumber,
  89. IE_ConnectionScopeSelection,
  90. IE_UserUser,
  91. IE_GenericIDTransport,
  92. IE_ConnectedNumber, // invalid to use in request
  93. IE_ConnectedSubaddress, // invalid to use in request
  94. #endif // MS_UNI4
  95. // End of request IEs
  96. IE_NextRequest, // invalid to use in request
  97. // These identify empty IE buffers, to hold a possible response
  98. IE_Cause_Empty = IE_Cause | ATM_IE_EMPTY_FLAG,
  99. #ifdef MS_UNI4
  100. IE_ConnectionId_Empty = IE_ConnectionId | ATM_IE_EMPTY_FLAG,
  101. IE_ConnectedNumber_Empty = IE_ConnectedNumber | ATM_IE_EMPTY_FLAG,
  102. IE_ConnectedSubaddress_Empty = IE_ConnectedSubaddress | ATM_IE_EMPTY_FLAG,
  103. IE_NotificationIndicator_Empty = IE_NotificationIndicator | ATM_IE_EMPTY_FLAG,
  104. IE_UserUser_Empty = IE_UserUser | ATM_IE_EMPTY_FLAG,
  105. IE_GenericIDTransport_Empty = IE_GenericIDTransport | ATM_IE_EMPTY_FLAG,
  106. #endif // MS_UNI4
  107. // These identify response IEs
  108. IE_Cause_Response = IE_Cause | ATM_IE_RESPONSE_FLAG,
  109. IE_AALParameters_Response = IE_AALParameters | ATM_IE_RESPONSE_FLAG,
  110. IE_BLLI_Response = IE_BLLI | ATM_IE_RESPONSE_FLAG,
  111. #ifdef MS_UNI4
  112. IE_BLLI_AddOn_Response = IE_BLLI_AddOn | ATM_IE_RESPONSE_FLAG,
  113. IE_TrafficDescriptor_Response = IE_TrafficDescriptor | ATM_IE_RESPONSE_FLAG,
  114. IE_TrafficDescriptor_AddOn_Response = IE_TrafficDescriptor_AddOn| ATM_IE_RESPONSE_FLAG,
  115. IE_ConnectionId_Response = IE_ConnectionId | ATM_IE_RESPONSE_FLAG,
  116. IE_NotificationIndicator_Response = IE_NotificationIndicator | ATM_IE_RESPONSE_FLAG,
  117. IE_ExtendedQOS_Response = IE_ExtendedQOS | ATM_IE_RESPONSE_FLAG,
  118. IE_EndToEndTransitDelay_Response = IE_EndToEndTransitDelay | ATM_IE_RESPONSE_FLAG,
  119. IE_ABRSetupParameters_Response = IE_ABRSetupParameters | ATM_IE_RESPONSE_FLAG,
  120. IE_ABRAdditionalParameters_Response = IE_ABRAdditionalParameters| ATM_IE_RESPONSE_FLAG,
  121. IE_ConnectedNumber_Response = IE_ConnectedNumber | ATM_IE_RESPONSE_FLAG,
  122. IE_ConnectedSubaddress_Response = IE_ConnectedSubaddress | ATM_IE_RESPONSE_FLAG,
  123. IE_UserUser_Response = IE_UserUser | ATM_IE_RESPONSE_FLAG,
  124. IE_GenericIDTransport_Response = IE_GenericIDTransport | ATM_IE_RESPONSE_FLAG,
  125. #endif // MS_UNI4
  126. } Q2931_IE_TYPE;
  127. //
  128. // Common header for each Information Element
  129. //
  130. typedef struct _Q2931_IE
  131. {
  132. Q2931_IE_TYPE IEType;
  133. ULONG IELength; // Bytes, including IEType and IELength fields
  134. UCHAR IE[1];
  135. } Q2931_IE, *PQ2931_IE;
  136. //
  137. // Definitions for SapType in CO_SAP
  138. //
  139. #define SAP_TYPE_NSAP 0x00000001
  140. #define SAP_TYPE_E164 0x00000002
  141. //
  142. // Values used for the Mode field in AAL5_PARAMETERS
  143. //
  144. #define AAL5_MODE_MESSAGE 0x01
  145. #define AAL5_MODE_STREAMING 0x02
  146. //
  147. // Values used for the SSCSType field in AAL5_PARAMETERS
  148. //
  149. #define AAL5_SSCS_NULL 0x00
  150. #define AAL5_SSCS_SSCOP_ASSURED 0x01
  151. #define AAL5_SSCS_SSCOP_NON_ASSURED 0x02
  152. #define AAL5_SSCS_FRAME_RELAY 0x04
  153. //
  154. // AAL Parameters
  155. //
  156. typedef struct _AAL1_PARAMETERS
  157. {
  158. UCHAR Subtype;
  159. UCHAR CBRRate;
  160. USHORT Multiplier; // optional (exception: zero if absent)
  161. UCHAR SourceClockRecoveryMethod; // optional
  162. UCHAR ErrorCorrectionMethod; // optional
  163. USHORT StructuredDataTransferBlocksize; // optional (exception: zero if absent)
  164. UCHAR PartiallyFilledCellsMethod; // optional
  165. } AAL1_PARAMETERS, *PAAL1_PARAMETERS;
  166. typedef struct _AAL34_PARAMETERS
  167. {
  168. USHORT ForwardMaxCPCSSDUSize;
  169. USHORT BackwardMaxCPCSSDUSize;
  170. USHORT LowestMID; // optional
  171. USHORT HighestMID; // optional
  172. UCHAR SSCSType; // optional
  173. } AAL34_PARAMETERS, *PAAL34_PARAMETERS;
  174. typedef struct _AAL5_PARAMETERS
  175. {
  176. ULONG ForwardMaxCPCSSDUSize;
  177. ULONG BackwardMaxCPCSSDUSize;
  178. UCHAR Mode;
  179. UCHAR SSCSType; // optional
  180. } AAL5_PARAMETERS, *PAAL5_PARAMETERS;
  181. typedef struct _AALUSER_PARAMETERS
  182. {
  183. ULONG UserDefined;
  184. } AALUSER_PARAMETERS, *PAALUSER_PARAMETERS;
  185. typedef struct _AAL_PARAMETERS_IE
  186. {
  187. ATM_AAL_TYPE AALType;
  188. union
  189. {
  190. AAL1_PARAMETERS AAL1Parameters;
  191. AAL34_PARAMETERS AAL34Parameters;
  192. AAL5_PARAMETERS AAL5Parameters;
  193. AALUSER_PARAMETERS AALUserParameters;
  194. } AALSpecificParameters;
  195. } AAL_PARAMETERS_IE, *PAAL_PARAMETERS_IE;
  196. //
  197. // ATM Traffic Descriptor
  198. //
  199. typedef struct _ATM_TRAFFIC_DESCRIPTOR // For one direction
  200. {
  201. ULONG PeakCellRateCLP0; // optional
  202. ULONG PeakCellRateCLP01; // optional
  203. ULONG SustainableCellRateCLP0; // optional
  204. ULONG SustainableCellRateCLP01; // optional
  205. ULONG MaximumBurstSizeCLP0; // optional
  206. ULONG MaximumBurstSizeCLP01; // optional
  207. BOOLEAN Tagging;
  208. } ATM_TRAFFIC_DESCRIPTOR, *PATM_TRAFFIC_DESCRIPTOR;
  209. typedef struct _ATM_TRAFFIC_DESCRIPTOR_IE
  210. {
  211. ATM_TRAFFIC_DESCRIPTOR ForwardTD;
  212. ATM_TRAFFIC_DESCRIPTOR BackwardTD;
  213. BOOLEAN BestEffort;
  214. } ATM_TRAFFIC_DESCRIPTOR_IE, *PATM_TRAFFIC_DESCRIPTOR_IE;
  215. #ifdef MS_UNI4
  216. //
  217. // ATM Traffic Descriptor Add-On for UNI 4.0+
  218. //
  219. // REQUIREMENT: An add-on IE must follow immediately after its ancestor IE.
  220. //
  221. typedef struct _ATM_TRAFFIC_DESCRIPTOR_ADDON // For one direction
  222. {
  223. ULONG ABRMinimumCellRateCLP01; // optional
  224. BOOLEAN FrameDiscard;
  225. } ATM_TRAFFIC_DESCRIPTOR_ADDON, *PATM_TRAFFIC_DESCRIPTOR_ADDON;
  226. typedef struct _ATM_TRAFFIC_DESCRIPTOR_IE_ADDON
  227. {
  228. ATM_TRAFFIC_DESCRIPTOR_ADDON ForwardTD;
  229. ATM_TRAFFIC_DESCRIPTOR_ADDON BackwardTD;
  230. } ATM_TRAFFIC_DESCRIPTOR_IE_ADDON, *PATM_TRAFFIC_DESCRIPTOR_IE_ADDON;
  231. #endif // MS_UNI4
  232. #ifdef MS_UNI4
  233. //
  234. // Alternative Traffic Descriptor IE for UNI 4.0+
  235. //
  236. typedef struct ATM_ALTERNATIVE_TRAFFIC_DESCRIPTOR_IE
  237. {
  238. ATM_TRAFFIC_DESCRIPTOR_IE Part1;
  239. ATM_TRAFFIC_DESCRIPTOR_IE_ADDON Part2;
  240. } ATM_ALTERNATIVE_TRAFFIC_DESCRIPTOR_IE, *PATM_ALTERNATIVE_TRAFFIC_DESCRIPTOR_IE;
  241. #endif // MS_UNI4
  242. #ifdef MS_UNI4
  243. //
  244. // ATM Minimum Acceptable Traffic Descriptor
  245. //
  246. typedef struct _ATM_MINIMUM_TRAFFIC_DESCRIPTOR // For one direction
  247. {
  248. ULONG PeakCellRateCLP0; // optional
  249. ULONG PeakCellRateCLP01; // optional
  250. ULONG MinimumCellRateCLP01; // optional
  251. } ATM_MINIMUM_TRAFFIC_DESCRIPTOR, *PATM_MINIMUM_TRAFFIC_DESCRIPTOR;
  252. typedef struct _ATM_MINIMUM_TRAFFIC_DESCRIPTOR_IE
  253. {
  254. ATM_MINIMUM_TRAFFIC_DESCRIPTOR ForwardTD;
  255. ATM_MINIMUM_TRAFFIC_DESCRIPTOR BackwardTD;
  256. } ATM_MINIMUM_TRAFFIC_DESCRIPTOR_IE, *PATM_MINIMUM_TRAFFIC_DESCRIPTOR_IE;
  257. #endif // MS_UNI4
  258. //
  259. // values used for the BearerClass field in the Broadband Bearer Capability
  260. // and UNI 4.0 Broadband Bearer Capability IEs.
  261. //
  262. #define BCOB_A 0x00 // Bearer class A
  263. #define BCOB_C 0x01 // Bearer class C
  264. #define BCOB_X 0x02 // Bearer class X
  265. #ifdef MS_UNI4_NOT_USED
  266. #define BCOB_VP_SERVICE 0x03 // VP service
  267. #endif
  268. //
  269. // values used for the TrafficType field in the Broadband Bearer Capability IE
  270. //
  271. #define TT_NOIND 0x00 // No indication of traffic type
  272. #define TT_CBR 0x04 // Constant bit rate
  273. #ifdef MS_UNI3_ERROR_KEPT
  274. #define TT_VBR 0x06 // Variable bit rate
  275. #else
  276. #define TT_VBR 0x08 // Variable bit rate
  277. #endif
  278. //
  279. // values used for the TimingRequirements field in the Broadband Bearer Capability IE
  280. //
  281. #define TR_NOIND 0x00 // No timing requirement indication
  282. #define TR_END_TO_END 0x01 // End-to-end timing required
  283. #define TR_NO_END_TO_END 0x02 // End-to-end timing not required
  284. //
  285. // values used for the ClippingSusceptability field in the Broadband Bearer Capability
  286. // and UNI 4.0 Broadband Bearer Capability IEs.
  287. //
  288. #define CLIP_NOT 0x00 // Not susceptible to clipping
  289. #define CLIP_SUS 0x20 // Susceptible to clipping
  290. //
  291. // values used for the UserPlaneConnectionConfig field in
  292. // the Broadband Bearer Capability
  293. // and UNI 4.0 Broadband Bearer Capability IEs.
  294. //
  295. #define UP_P2P 0x00 // Point-to-point connection
  296. #define UP_P2MP 0x01 // Point-to-multipoint connection
  297. //
  298. // Broadband Bearer Capability for UNI 3.1
  299. //
  300. typedef struct _ATM_BROADBAND_BEARER_CAPABILITY_IE
  301. {
  302. UCHAR BearerClass;
  303. UCHAR TrafficType;
  304. UCHAR TimingRequirements;
  305. UCHAR ClippingSusceptability;
  306. UCHAR UserPlaneConnectionConfig;
  307. } ATM_BROADBAND_BEARER_CAPABILITY_IE, *PATM_BROADBAND_BEARER_CAPABILITY_IE;
  308. #ifdef MS_UNI4
  309. //
  310. // values used for the TransferCapability field in the UNI 4.0 Broadband Bearer Capability IE
  311. //
  312. // Usage Usage Corresponding UNI3.x values
  313. // UNI 4.0 UNI 3.0 TrafficType TimingRequirements
  314. // ------------ ------- ----------- ------------------
  315. #define XCAP_NRT_VBR_RCV_0 0x00 // Only rcv NOIND NOIND
  316. #define XCAP_RT_VBR_RCV_1 0x01 // Only rcv NOIND END_TO_END
  317. #define XCAP_NRT_VBR_RCV_2 0x02 // Only rcv NOIND NO_END_TO_END
  318. #define XCAP_CBR_RCV_4 0x04 // Only rcv CBR NOIND
  319. #define XCAP_CBR 0x05 // CBR END_TO_END
  320. #define XCAP_CBR_RCV_6 0x06 // Only rcv CBR NO_END_TO_END
  321. #define XCAP_CBR_W_CLR 0x07 // None CBR <reserved>
  322. #define XCAP_NRT_VBR_RCV_8 0x08 // Only rcv VBR NOIND
  323. #define XCAP_RT_VBR 0x09 // VBR END_TO_END
  324. #define XCAP_NRT_VBR 0x0A // VBR NO_END_TO_END
  325. #define XCAP_NRT_VBR_W_CLR 0x0B // None VBR <reserved>
  326. #define XCAP_ABR 0x0C // None <reserved> NOIND
  327. #define XCAP_RT_VBR_W_CLR 0x13 // None (NOIND) <reserved>
  328. //
  329. // Broadband Bearer Capability for UNI 4.0+
  330. // Note: This can be used for UNI 3.1 as well.
  331. //
  332. typedef struct _ATM_BROADBAND_BEARER_CAPABILITY_IE_UNI40
  333. {
  334. UCHAR BearerClass;
  335. UCHAR TransferCapability; // optional
  336. UCHAR ClippingSusceptability;
  337. UCHAR UserPlaneConnectionConfig;
  338. } ATM_BROADBAND_BEARER_CAPABILITY_IE_UNI40, *PATM_BROADBAND_BEARER_CAPABILITY_IE_UNI40;
  339. #endif // MS_UNI4
  340. //
  341. // values used for the HighLayerInfoType field in ATM_BHLI
  342. //
  343. #define BHLI_ISO 0x00 // ISO
  344. #define BHLI_UserSpecific 0x01 // User Specific
  345. #define BHLI_HighLayerProfile 0x02 // High layer profile (only in UNI3.0)
  346. #define BHLI_VendorSpecificAppId 0x03 // Vendor-Specific Application ID
  347. //
  348. // Broadband High layer Information
  349. //
  350. typedef struct _ATM_BHLI_IE
  351. {
  352. ULONG HighLayerInfoType; // High Layer Information Type
  353. ULONG HighLayerInfoLength; // number of bytes in HighLayerInfo
  354. UCHAR HighLayerInfo[8]; // The value dependent on the
  355. // HighLayerInfoType field
  356. } ATM_BHLI_IE, *PATM_BHLI_IE;
  357. //
  358. // values used for Layer2Protocol in B-LLI
  359. //
  360. #define BLLI_L2_ISO_1745 0x01 // Basic mode ISO 1745
  361. #define BLLI_L2_Q921 0x02 // CCITT Rec. Q.921
  362. #define BLLI_L2_X25L 0x06 // CCITT Rec. X.25, link layer
  363. #define BLLI_L2_X25M 0x07 // CCITT Rec. X.25, multilink
  364. #define BLLI_L2_ELAPB 0x08 // Extended LAPB; for half duplex operation
  365. #ifdef MS_UNI3_ERROR_KEPT
  366. #define BLLI_L2_HDLC_NRM 0x09 // HDLC NRM (ISO 4335)
  367. #define BLLI_L2_HDLC_ABM 0x0A // HDLC ABM (ISO 4335)
  368. #define BLLI_L2_HDLC_ARM 0x0B // HDLC ARM (ISO 4335)
  369. #else
  370. #define BLLI_L2_HDLC_ARM 0x09 // HDLC ARM (ISO 4335)
  371. #define BLLI_L2_HDLC_NRM 0x0A // HDLC NRM (ISO 4335)
  372. #define BLLI_L2_HDLC_ABM 0x0B // HDLC ABM (ISO 4335)
  373. #endif
  374. #define BLLI_L2_LLC 0x0C // LAN logical link control (ISO 8802/2)
  375. #define BLLI_L2_X75 0x0D // CCITT Rec. X.75, single link procedure
  376. #define BLLI_L2_Q922 0x0E // CCITT Rec. Q.922
  377. #define BLLI_L2_USER_SPECIFIED 0x10 // User Specified
  378. #define BLLI_L2_ISO_7776 0x11 // ISO 7776 DTE-DTE operation
  379. //
  380. // values used for Layer3Protocol in B-LLI
  381. //
  382. #define BLLI_L3_X25 0x06 // CCITT Rec. X.25, packet layer
  383. #define BLLI_L3_ISO_8208 0x07 // ISO/IEC 8208 (X.25 packet layer for DTE
  384. #define BLLI_L3_X223 0x08 // X.223/ISO 8878
  385. #define BLLI_L3_SIO_8473 0x09 // ISO/IEC 8473 (OSI connectionless)
  386. #define BLLI_L3_T70 0x0A // CCITT Rec. T.70 min. network layer
  387. #define BLLI_L3_ISO_TR9577 0x0B // ISO/IEC TR 9577 Network Layer Protocol ID
  388. #define BLLI_L3_USER_SPECIFIED 0x10 // User Specified
  389. #ifdef MS_UNI4
  390. #define BLLI_L3_H310 0x0C // ITU H.310
  391. #define BLLI_L3_H321 0x0D // ITU H.321
  392. #endif // MS_UNI4
  393. //
  394. // values used for Layer3IPI in struct B-LLI
  395. //
  396. #define BLLI_L3_IPI_SNAP 0x80 // IEEE 802.1 SNAP identifier
  397. #define BLLI_L3_IPI_IP 0xCC // Internet Protocol (IP) identifier
  398. //
  399. // Broadband Lower Layer Information
  400. //
  401. typedef struct _ATM_BLLI_IE
  402. {
  403. ULONG Layer2Protocol;
  404. UCHAR Layer2Mode;
  405. UCHAR Layer2WindowSize;
  406. ULONG Layer2UserSpecifiedProtocol;
  407. ULONG Layer3Protocol;
  408. UCHAR Layer3Mode;
  409. UCHAR Layer3DefaultPacketSize;
  410. UCHAR Layer3PacketWindowSize;
  411. ULONG Layer3UserSpecifiedProtocol;
  412. ULONG Layer3IPI;
  413. UCHAR SnapId[5];
  414. } ATM_BLLI_IE, *PATM_BLLI_IE;
  415. #ifdef MS_UNI4
  416. //
  417. // Values used for Layer3H310TerminalType in struct B-LLI ADDON
  418. //
  419. #define BLLI_L3_H310_TT_RECEIVE_ONLY 0x01
  420. #define BLLI_L3_H310_TT_SEND_ONLY 0x02
  421. #define BLLI_L3_H310_TT_RECEIVE_AND_SEND 0x03
  422. //
  423. // Values used for Layer3H310ForwardMultiplexingCapability
  424. // and Layer3H310BackwardMultiplexingCapability in struct B-LLI ADDON
  425. //
  426. #define BLLI_L3_H310_MUX_NONE 0x00
  427. #define BLLI_L3_H310_MUX_TRANSPORT_STREAM 0x01
  428. #define BLLI_L3_H310_MUX_TRANSPORT_STREAM_WITH_FEC 0x02
  429. #define BLLI_L3_H310_MUX_PROGRAM_STREAM 0x03
  430. #define BLLI_L3_H310_MUX_PROGRAM_STREAM_WITH_FEC 0x04
  431. #define BLLI_L3_H310_MUX_H221 0x05
  432. //
  433. // Broadband Lower Layer Information Add-On for UNI4.0+
  434. //
  435. // REQUIREMENT: An add-on IE must follow immediately after its ancestor IE.
  436. //
  437. typedef struct _ATM_BLLI_IE_ADDON
  438. {
  439. UCHAR Layer3H310TerminalType; // optional
  440. UCHAR Layer3H310ForwardMultiplexingCapability; // optional
  441. UCHAR Layer3H310BackwardMultiplexingCapability; // optional
  442. } ATM_BLLI_IE_ADDON, *PATM_BLLI_IE_ADDON;
  443. #endif // MS_UNI4
  444. //
  445. // Values used for PresentationIndication in struct ATM_CALLING_PARTY_NUMBER_IE
  446. //
  447. #define CALLING_NUMBER_PRESENTATION_ALLOWED 0x00
  448. #define CALLING_NUMBER_PRESENTATION_RESTRICTED 0x01
  449. #define CALLING_NUMBER_PRESENTATION_NOT_AVAIL 0x02
  450. #define CALLING_NUMBER_PRESENTATION_RESERVED 0x03
  451. //
  452. // Values used for ScreeningIndicator in struct ATM_CALLING_PARTY_NUMBER_IE
  453. //
  454. #define CALLING_NUMBER_SCREENING_USER_PROVIDED_NOT_SCREENED 0x00
  455. #define CALLING_NUMBER_SCREENING_USER_PROVIDED_PASSED_SCREENING 0x01
  456. #define CALLING_NUMBER_SCREENING_USER_PROVIDED_FAILED_SCREENING 0x02
  457. #define CALLING_NUMBER_SCREENING_NW_PROVIDED 0x03
  458. //
  459. // Called Party Number
  460. //
  461. // If present, this IE overrides the Called Address specified in
  462. // the main parameter block.
  463. //
  464. typedef ATM_ADDRESS ATM_CALLED_PARTY_NUMBER_IE;
  465. //
  466. // Called Party Subaddress
  467. //
  468. typedef ATM_ADDRESS ATM_CALLED_PARTY_SUBADDRESS_IE;
  469. //
  470. // Calling Party Number
  471. //
  472. typedef struct _ATM_CALLING_PARTY_NUMBER_IE
  473. {
  474. ATM_ADDRESS Number;
  475. UCHAR PresentationIndication; // optional
  476. UCHAR ScreeningIndicator; // optional
  477. } ATM_CALLING_PARTY_NUMBER_IE, *PATM_CALLING_PARTY_NUMBER_IE;
  478. //
  479. // Calling Party Subaddress
  480. //
  481. typedef ATM_ADDRESS ATM_CALLING_PARTY_SUBADDRESS_IE;
  482. #ifdef MS_UNI4
  483. //
  484. // Connected Number IE for UNI 4.0 (for COLP Supplementary Services option)
  485. //
  486. typedef ATM_CALLING_PARTY_NUMBER_IE ATM_CONNECTED_NUMBER_IE, *PATM_CONNECTED_NUMBER_IE;
  487. //
  488. // Connected Subaddress IE for UNI 4.0 (for COLP Supplementary Services option)
  489. //
  490. typedef ATM_CALLING_PARTY_SUBADDRESS_IE ATM_CONNECTED_SUBADDRESS_IE, *PATM_CONNECTED_SUBADDRESS_IE;
  491. #endif // MS_UNI4
  492. //
  493. // Values used for the QOSClassForward and QOSClassBackward
  494. // fields in ATM_QOS_CLASS_IE
  495. //
  496. #define QOS_CLASS0 0x00
  497. #define QOS_CLASS1 0x01
  498. #define QOS_CLASS2 0x02
  499. #define QOS_CLASS3 0x03
  500. #define QOS_CLASS4 0x04
  501. //
  502. // QOS Class
  503. //
  504. typedef struct _ATM_QOS_CLASS_IE
  505. {
  506. UCHAR QOSClassForward;
  507. UCHAR QOSClassBackward;
  508. } ATM_QOS_CLASS_IE, *PATM_QOS_CLASS_IE;
  509. #ifdef MS_UNI4
  510. //
  511. // Values used for the Origin field in ATM_EXTENDED_QOS_PARAMETERS_IE
  512. //
  513. #define ATM_XQOS_ORIGINATING_USER 0x00
  514. #define ATM_XQOS_INTERMEDIATE_NW 0x01
  515. //
  516. // Extended QoS Parameters for UNI 4.0+
  517. //
  518. typedef struct _ATM_EXTENDED_QOS_PARAMETERS_IE
  519. {
  520. UCHAR Origin;
  521. UCHAR Filler[3];
  522. ULONG AcceptableForwardPeakCDV; // optional
  523. ULONG AcceptableBackwardPeakCDV; // optional
  524. ULONG CumulativeForwardPeakCDV; // optional
  525. ULONG CumulativeBackwardPeakCDV; // optional
  526. UCHAR AcceptableForwardCLR; // optional
  527. UCHAR AcceptableBackwardCLR; // optional
  528. } ATM_EXTENDED_QOS_PARAMETERS_IE, *PATM_EXTENDED_QOS_PARAMETERS_IE;
  529. #endif // MS_UNI4
  530. //
  531. // Broadband Sending Complete
  532. //
  533. typedef struct _ATM_BROADBAND_SENDING_COMPLETE_IE
  534. {
  535. UCHAR SendingComplete;
  536. } ATM_BROADBAND_SENDING_COMPLETE_IE, *PATM_BROADBAND_SENDING_COMPLETE_IE;
  537. //
  538. // Values used for the TypeOfNetworkId field in ATM_TRANSIT_NETWORK_SELECTION_IE
  539. //
  540. #define TNS_TYPE_NATIONAL 0x40
  541. //
  542. // Values used for the NetworkIdPlan field in ATM_TRANSIT_NETWORK_SELECTION_IE
  543. //
  544. #define TNS_PLAN_CARRIER_ID_CODE 0x01
  545. //
  546. // Transit Network Selection
  547. //
  548. typedef struct _ATM_TRANSIT_NETWORK_SELECTION_IE
  549. {
  550. UCHAR TypeOfNetworkId;
  551. UCHAR NetworkIdPlan;
  552. UCHAR NetworkIdLength;
  553. UCHAR NetworkId[1];
  554. } ATM_TRANSIT_NETWORK_SELECTION_IE, *PATM_TRANSIT_NETWORK_SELECTION_IE;
  555. //
  556. // Values used for the Location field in struct ATM_CAUSE_IE
  557. //
  558. #define ATM_CAUSE_LOC_USER 0x00
  559. #define ATM_CAUSE_LOC_PRIVATE_LOCAL 0x01
  560. #define ATM_CAUSE_LOC_PUBLIC_LOCAL 0x02
  561. #define ATM_CAUSE_LOC_TRANSIT_NETWORK 0x03
  562. #define ATM_CAUSE_LOC_PUBLIC_REMOTE 0x04
  563. #define ATM_CAUSE_LOC_PRIVATE_REMOTE 0x05
  564. #ifdef MS_UNI3_ERROR_KEPT
  565. #define ATM_CAUSE_LOC_INTERNATIONAL_NETWORK 0x06
  566. #else
  567. #define ATM_CAUSE_LOC_INTERNATIONAL_NETWORK 0x07
  568. #endif
  569. #define ATM_CAUSE_LOC_BEYOND_INTERWORKING 0x0A
  570. //
  571. // Values used for the Cause field in struct ATM_CAUSE_IE
  572. //
  573. #ifdef MS_UNI4
  574. #define ATM_CAUSE_UNALLOCATED_NUMBER 0x01
  575. #define ATM_CAUSE_NO_ROUTE_TO_TRANSIT_NETWORK 0x02
  576. #define ATM_CAUSE_NO_ROUTE_TO_DESTINATION 0x03
  577. #define ATM_CAUSE_SEND_SPECIAL_TONE 0x04 // UNI 4.0+
  578. #define ATM_CAUSE_MISDIALLED_TRUNK_PREFIX 0x05 // UNI 4.0+
  579. #define ATM_CAUSE_CHANNEL_UNACCEPTABLE 0x06 // UNI 4.0+
  580. #define ATM_CAUSE_CALL_AWARDED_IN_EST_CHAN 0x07 // UNI 4.0+
  581. #define ATM_CAUSE_PREEMPTION 0x08 // UNI 4.0+
  582. #define ATM_CAUSE_PREEMPTION_CIRC_RES_REUSE 0x09 // UNI 4.0+
  583. #define ATM_CAUSE_VPI_VCI_UNACCEPTABLE 0x0A // UNI 3.0 only!
  584. #define ATM_CAUSE_NORMAL_CALL_CLEARING 0x10 // UNI 3.1+
  585. #define ATM_CAUSE_USER_BUSY 0x11
  586. #define ATM_CAUSE_NO_USER_RESPONDING 0x12
  587. #define ATM_CAUSE_NO_ANSWER_FROM_USER_ALERTED 0x13 // UNI 4.0+
  588. #define ATM_CAUSE_SUBSCRIBER_ABSENT 0x14 // UNI 4.0+
  589. #define ATM_CAUSE_CALL_REJECTED 0x15
  590. #define ATM_CAUSE_NUMBER_CHANGED 0x16
  591. #define ATM_CAUSE_USER_REJECTS_CLIR 0x17
  592. #define ATM_CAUSE_NONSELECTED_USER_CLEARING 0x1A // UNI 4.0+
  593. #define ATM_CAUSE_DESTINATION_OUT_OF_ORDER 0x1B
  594. #define ATM_CAUSE_INVALID_NUMBER_FORMAT 0x1C
  595. #define ATM_CAUSE_FACILITY_REJECTED 0x1D // UNI 4.0+
  596. #define ATM_CAUSE_STATUS_ENQUIRY_RESPONSE 0x1E
  597. #define ATM_CAUSE_NORMAL_UNSPECIFIED 0x1F
  598. #define ATM_CAUSE_TOO_MANY_ADD_PARTY 0x20 // UNI 4.0+
  599. #define ATM_CAUSE_NO_CIRCUIT_CHANNEL_AVAIL 0x22 // UNI 4.0+
  600. #define ATM_CAUSE_VPI_VCI_UNAVAILABLE 0x23
  601. #define ATM_CAUSE_VPCI_VCI_ASSIGN_FAIL 0x24 // UNI 3.1+
  602. #define ATM_CAUSE_USER_CELL_RATE_UNAVAILABLE 0x25 // UNI 3.1+
  603. #define ATM_CAUSE_NETWORK_OUT_OF_ORDER 0x26
  604. #define ATM_CAUSE_PFM_CONNECTION_OUT_OF_ORDER 0x27 // UNI 4.0+
  605. #define ATM_CAUSE_PFM_CONNNECTION_OPERATIONAL 0x28 // UNI 4.0+
  606. #define ATM_CAUSE_TEMPORARY_FAILURE 0x29
  607. #define ATM_CAUSE_SWITCH_EQUIPM_CONGESTED 0x2A // UNI 4.0+
  608. #define ATM_CAUSE_ACCESS_INFORMAION_DISCARDED 0x2B
  609. #define ATM_CAUSE_REQUESTED_CIRC_CHANNEL_NOT_AVAIL 0x2C // UNI 4.0+
  610. #define ATM_CAUSE_NO_VPI_VCI_AVAILABLE 0x2D
  611. #define ATM_CAUSE_RESOURCE_UNAVAILABLE 0x2F
  612. #define ATM_CAUSE_QOS_UNAVAILABLE 0x31
  613. #define ATM_CAUSE_REQ_FACILITY_NOT_SUBSCRIBED 0x32 // UNI 4.0+
  614. #define ATM_CAUSE_USER_CELL_RATE_UNAVAILABLE__UNI30 0x33 // UNI 3.0 only!
  615. #define ATM_CAUSE_OUTG_CALLS_BARRED_W_CUG 0x35 // UNI 4.0+
  616. #define ATM_CAUSE_INCOM_CALLS_BARRED_W_CUG 0x37 // UNI 4.0+
  617. #define ATM_CAUSE_BEARER_CAPABILITY_UNAUTHORIZED 0x39
  618. #define ATM_CAUSE_BEARER_CAPABILITY_UNAVAILABLE 0x3A
  619. #define ATM_CAUSE_INCONSIST_OUTG_ACCESS_INFO 0x3E // UNI 4.0+
  620. #define ATM_CAUSE_OPTION_UNAVAILABLE 0x3F
  621. #define ATM_CAUSE_BEARER_CAPABILITY_UNIMPLEMENTED 0x41
  622. #define ATM_CAUSE_CHANNEL_TYPE_NOT_IMPLEMENTED 0x42 // UNI 4.0+
  623. #define ATM_CAUSE_REQ_FACILITY_NOT_IMPLEMENTED 0x45 // UNI 4.0+
  624. #define ATM_CAUSE_ONLY_RESTR_BEAR_CAP_AVAIL 0x46 // UNI 4.0+
  625. #define ATM_CAUSE_UNSUPPORTED_TRAFFIC_PARAMETERS 0x49
  626. #define ATM_CAUSE_AAL_PARAMETERS_UNSUPPORTED 0x4E // UNI 3.1+
  627. #define ATM_CAUSE_SERVICE_OPTION_NOT_AVAIL 0x4F // UNI 4.0+
  628. #define ATM_CAUSE_INVALID_CALL_REFERENCE 0x51
  629. #define ATM_CAUSE_CHANNEL_NONEXISTENT 0x52
  630. #define ATM_CAUSE_SUSP_CALL_EXISTS_NOT_CALL_ID 0x53 // UNI 4.0+
  631. #define ATM_CAUSE_CALL_ID_IN_USE 0x54 // UNI 4.0+
  632. #define ATM_CAUSE_NO_CALL_SUSPENDED 0x55 // UNI 4.0+
  633. #define ATM_CAUSE_CALL_W_REQ_ID_CLEARED 0x56 // UNI 4.0+
  634. #define ATM_CAUSE_USER_NOT_MEMBER_CUG 0x57 // UNI 4.0+
  635. #define ATM_CAUSE_INCOMPATIBLE_DESTINATION 0x58
  636. #define ATM_CAUSE_INVALID_ENDPOINT_REFERENCE 0x59
  637. #define ATM_CAUSE_NON_EXISTENT_CUG 0x5A // UNI 4.0+
  638. #define ATM_CAUSE_INVALID_TRANSIT_NETWORK_SELECTION 0x5B
  639. #define ATM_CAUSE_TOO_MANY_PENDING_ADD_PARTY 0x5C
  640. #define ATM_CAUSE_AAL_PARAMETERS_UNSUPPORTED__UNI30 0x5D // UNI 3.0 only!
  641. #define ATM_CAUSE_INVALID_MSG_UNSPECIFIED 0x5F // UNI 4.0+
  642. #define ATM_CAUSE_MANDATORY_IE_MISSING 0x60
  643. #define ATM_CAUSE_UNIMPLEMENTED_MESSAGE_TYPE 0x61
  644. #define ATM_CAUSE_MSG_CONFL_STATE_OR_UNIMPL 0x62 // UNI 4.0+
  645. #define ATM_CAUSE_UNIMPLEMENTED_IE 0x63
  646. #define ATM_CAUSE_INVALID_IE_CONTENTS 0x64
  647. #define ATM_CAUSE_INVALID_STATE_FOR_MESSAGE 0x65
  648. #define ATM_CAUSE_RECOVERY_ON_TIMEOUT 0x66
  649. #define ATM_CAUSE_IE_INVAL_UNIMPL_PASSED_ON 0x67 // UNI 4.0+
  650. #define ATM_CAUSE_INCORRECT_MESSAGE_LENGTH 0x68
  651. #define ATM_CAUSE_UNRECOGNIZED_PARM_MSG_DISCARDED 0x6E // UNI 4.0+
  652. #define ATM_CAUSE_PROTOCOL_ERROR 0x6F
  653. #define ATM_CAUSE_INTERWORKING_UNSPECIFIED 0x7F // UNI 4.0+
  654. #else // !MS_UNI4
  655. #define ATM_CAUSE_UNALLOCATED_NUMBER 0x01
  656. #define ATM_CAUSE_NO_ROUTE_TO_TRANSIT_NETWORK 0x02
  657. #define ATM_CAUSE_NO_ROUTE_TO_DESTINATION 0x03
  658. #define ATM_CAUSE_VPI_VCI_UNACCEPTABLE 0x0A
  659. #define ATM_CAUSE_NORMAL_CALL_CLEARING 0x10
  660. #define ATM_CAUSE_USER_BUSY 0x11
  661. #define ATM_CAUSE_NO_USER_RESPONDING 0x12
  662. #define ATM_CAUSE_CALL_REJECTED 0x15
  663. #define ATM_CAUSE_NUMBER_CHANGED 0x16
  664. #define ATM_CAUSE_USER_REJECTS_CLIR 0x17
  665. #define ATM_CAUSE_DESTINATION_OUT_OF_ORDER 0x1B
  666. #define ATM_CAUSE_INVALID_NUMBER_FORMAT 0x1C
  667. #define ATM_CAUSE_STATUS_ENQUIRY_RESPONSE 0x1E
  668. #define ATM_CAUSE_NORMAL_UNSPECIFIED 0x1F
  669. #define ATM_CAUSE_VPI_VCI_UNAVAILABLE 0x23
  670. #define ATM_CAUSE_NETWORK_OUT_OF_ORDER 0x26
  671. #define ATM_CAUSE_TEMPORARY_FAILURE 0x29
  672. #define ATM_CAUSE_ACCESS_INFORMAION_DISCARDED 0x2B
  673. #define ATM_CAUSE_NO_VPI_VCI_AVAILABLE 0x2D
  674. #define ATM_CAUSE_RESOURCE_UNAVAILABLE 0x2F
  675. #define ATM_CAUSE_QOS_UNAVAILABLE 0x31
  676. #define ATM_CAUSE_USER_CELL_RATE_UNAVAILABLE 0x33
  677. #define ATM_CAUSE_BEARER_CAPABILITY_UNAUTHORIZED 0x39
  678. #define ATM_CAUSE_BEARER_CAPABILITY_UNAVAILABLE 0x3A
  679. #define ATM_CAUSE_OPTION_UNAVAILABLE 0x3F
  680. #define ATM_CAUSE_BEARER_CAPABILITY_UNIMPLEMENTED 0x41
  681. #define ATM_CAUSE_UNSUPPORTED_TRAFFIC_PARAMETERS 0x49
  682. #define ATM_CAUSE_INVALID_CALL_REFERENCE 0x51
  683. #define ATM_CAUSE_CHANNEL_NONEXISTENT 0x52
  684. #define ATM_CAUSE_INCOMPATIBLE_DESTINATION 0x58
  685. #define ATM_CAUSE_INVALID_ENDPOINT_REFERENCE 0x59
  686. #define ATM_CAUSE_INVALID_TRANSIT_NETWORK_SELECTION 0x5B
  687. #define ATM_CAUSE_TOO_MANY_PENDING_ADD_PARTY 0x5C
  688. #define ATM_CAUSE_AAL_PARAMETERS_UNSUPPORTED 0x5D
  689. #define ATM_CAUSE_MANDATORY_IE_MISSING 0x60
  690. #define ATM_CAUSE_UNIMPLEMENTED_MESSAGE_TYPE 0x61
  691. #define ATM_CAUSE_UNIMPLEMENTED_IE 0x63
  692. #define ATM_CAUSE_INVALID_IE_CONTENTS 0x64
  693. #define ATM_CAUSE_INVALID_STATE_FOR_MESSAGE 0x65
  694. #define ATM_CAUSE_RECOVERY_ON_TIMEOUT 0x66
  695. #define ATM_CAUSE_INCORRECT_MESSAGE_LENGTH 0x68
  696. #define ATM_CAUSE_PROTOCOL_ERROR 0x6F
  697. #endif // !MS_UNI4
  698. //
  699. // Values used for the Condition portion of the Diagnostics field
  700. // in struct ATM_CAUSE_IE, for certain Cause values
  701. //
  702. #define ATM_CAUSE_COND_UNKNOWN 0x00
  703. #define ATM_CAUSE_COND_PERMANENT 0x01
  704. #define ATM_CAUSE_COND_TRANSIENT 0x02
  705. //
  706. // Values used for the Rejection Reason portion of the Diagnostics field
  707. // in struct ATM_CAUSE_IE, for certain Cause values
  708. //
  709. #define ATM_CAUSE_REASON_USER 0x00
  710. #define ATM_CAUSE_REASON_IE_MISSING 0x04
  711. #define ATM_CAUSE_REASON_IE_INSUFFICIENT 0x08
  712. //
  713. // Values used for the P-U flag of the Diagnostics field
  714. // in struct ATM_CAUSE_IE, for certain Cause values
  715. //
  716. #define ATM_CAUSE_PU_PROVIDER 0x00
  717. #define ATM_CAUSE_PU_USER 0x08
  718. //
  719. // Values used for the N-A flag of the Diagnostics field
  720. // in struct ATM_CAUSE_IE, for certain Cause values
  721. //
  722. #define ATM_CAUSE_NA_NORMAL 0x00
  723. #define ATM_CAUSE_NA_ABNORMAL 0x04
  724. #ifdef MS_UNI4
  725. //
  726. // values used for placing IE identifiers in the Diagnostics field
  727. //
  728. #define ATM_CAUSE_DIAG_IE_NARROW_BEARER_CAPABILITY 0x04
  729. #define ATM_CAUSE_DIAG_IE_CAUSE 0x08
  730. #define ATM_CAUSE_DIAG_IE_CALL_STATE 0x14
  731. #define ATM_CAUSE_DIAG_IE_PROGRESS_IND 0x1E
  732. #define ATM_CAUSE_DIAG_IE_NOTIF_IND 0x27
  733. #define ATM_CAUSE_DIAG_IE_END_TO_END_TDELAY 0x42
  734. #define ATM_CAUSE_DIAG_IE_CONNECTED_NUMBER 0x4C
  735. #define ATM_CAUSE_DIAG_IE_CONNECTED_SUBADDR 0x4D
  736. #define ATM_CAUSE_DIAG_IE_ENDPOINT_REF 0x54
  737. #define ATM_CAUSE_DIAG_IE_ENDPOINT_STATE 0x55
  738. #define ATM_CAUSE_DIAG_IE_AAL_PARMS 0x58
  739. #define ATM_CAUSE_DIAG_IE_TRAFFIC_DESCRIPTOR 0x59
  740. #define ATM_CAUSE_DIAG_IE_CONNECTION_ID 0x5A
  741. #define ATM_CAUSE_DIAG_IE_OAM_TRAFFIC_DESCRIPTOR 0x5B
  742. #define ATM_CAUSE_DIAG_IE_QOS 0x5C
  743. #define ATM_CAUSE_DIAG_IE_HIGH_LAYER_INFO 0x5D
  744. #define ATM_CAUSE_DIAG_IE_BEARER_CAPABILITY 0x5E
  745. #define ATM_CAUSE_DIAG_IE_LOW_LAYER_INFO 0x5F
  746. #define ATM_CAUSE_DIAG_IE_LOCKING_SHIFT 0x60
  747. #define ATM_CAUSE_DIAG_IE_NON_LOCKING_SHIFT 0x61
  748. #define ATM_CAUSE_DIAG_IE_SENDING_COMPLETE 0x62
  749. #define ATM_CAUSE_DIAG_IE_REPEAT_INDICATOR 0x63
  750. #define ATM_CAUSE_DIAG_IE_CALLING_PARTY_NUMBER 0x6C
  751. #define ATM_CAUSE_DIAG_IE_CALLING_PARTY_SUBADDR 0x6D
  752. #define ATM_CAUSE_DIAG_IE_CALLED_PARTY_NUMBER 0x70
  753. #define ATM_CAUSE_DIAG_IE_CALLED_PARTY_SUBADDR 0x71
  754. #define ATM_CAUSE_DIAG_IE_TRANSIT_NETWORK_SELECT 0x78
  755. #define ATM_CAUSE_DIAG_IE_RESTART_INDICATOR 0x79
  756. #define ATM_CAUSE_DIAG_IE_NARROW_LOW_LAYER_COMPAT 0x7C
  757. #define ATM_CAUSE_DIAG_IE_NARROW_HIGH_LAYER_COMPAT 0x7D
  758. #define ATM_CAUSE_DIAG_IE_USER_USER 0x7E
  759. #define ATM_CAUSE_DIAG_IE_GENERIC_ID 0x7F
  760. #define ATM_CAUSE_DIAG_IE_MIN_TRAFFIC_DESCRIPTOR 0x81
  761. #define ATM_CAUSE_DIAG_IE_ALT_TRAFFIC_DESCRIPTOR 0x82
  762. #define ATM_CAUSE_DIAG_IE_ABR_SETUP_PARMS 0x84
  763. #define ATM_CAUSE_DIAG_IE_CALLED_SOFT_PVPC_PVCC 0xE0
  764. #define ATM_CAUSE_DIAG_IE_CRANKBACK 0xE1
  765. #define ATM_CAUSE_DIAG_IE_DESIGNATED_TRANSIT_LIST 0xE2
  766. #define ATM_CAUSE_DIAG_IE_CALLING_SOFT_PVPC_PVCC 0xE3
  767. #define ATM_CAUSE_DIAG_IE_ABR_ADD_PARMS 0xE4
  768. #define ATM_CAUSE_DIAG_IE_LIJ_CALL_ID 0xE8
  769. #define ATM_CAUSE_DIAG_IE_LIJ_PARMS 0xE9
  770. #define ATM_CAUSE_DIAG_IE_LEAF_SEQ_NO 0xEA
  771. #define ATM_CAUSE_DIAG_IE_CONNECTION_SCOPE_SELECT 0xEB
  772. #define ATM_CAUSE_DIAG_IE_EXTENDED_QOS 0xEC
  773. //
  774. // values used for placing IE subfield identifiers in the Diagnostics field
  775. //
  776. #define ATM_CAUSE_DIAG_RATE_ID_FW_PEAK_CLP0 0x82
  777. #define ATM_CAUSE_DIAG_RATE_ID_BW_PEAK_CLP0 0x83
  778. #define ATM_CAUSE_DIAG_RATE_ID_FW_PEAK_CLP01 0x84
  779. #define ATM_CAUSE_DIAG_RATE_ID_BW_PEAK_CLP01 0x85
  780. #define ATM_CAUSE_DIAG_RATE_ID_FW_SUST_CLP0 0x88
  781. #define ATM_CAUSE_DIAG_RATE_ID_BW_SUST_CLP0 0x89
  782. #define ATM_CAUSE_DIAG_RATE_ID_FW_SUST_CLP01 0x90
  783. #define ATM_CAUSE_DIAG_RATE_ID_BW_SUST_CLP01 0x91
  784. #define ATM_CAUSE_DIAG_RATE_ID_FW_ABR_MIN_CLP01 0x92
  785. #define ATM_CAUSE_DIAG_RATE_ID_BW_ABR_MIN_CLP01 0x93
  786. #define ATM_CAUSE_DIAG_RATE_ID_FW_BURST_CLP0 0xA0
  787. #define ATM_CAUSE_DIAG_RATE_ID_BW_BURST_CLP0 0xA1
  788. #define ATM_CAUSE_DIAG_RATE_ID_FW_BURST_CLP01 0xB0
  789. #define ATM_CAUSE_DIAG_RATE_ID_BW_BURST_CLP01 0xB1
  790. #define ATM_CAUSE_DIAG_RATE_ID_BEST_EFFORT 0xBE
  791. #define ATM_CAUSE_DIAG_RATE_ID_TM_OPTIONS 0xBF
  792. //
  793. // Values used for placing a CCBS indicator in the Diagnostics field
  794. //
  795. #define ATM_CAUSE_DIAG_CCBS_SPARE 0x00
  796. #define ATM_CAUSE_DIAG_CCBS_CCBS_POSSIBLE 0x01
  797. #define ATM_CAUSE_DIAG_CCBS_CCBS_NOT_POSSIBLE 0x02
  798. //
  799. // Values used for placing Attribute Numbers in the Diagnostics field
  800. //
  801. #define ATM_CAUSE_DIAG_ATTR_NO_INFO_XFER_CAP 0x31
  802. #define ATM_CAUSE_DIAG_ATTR_NO_INFO_XFER_MODE 0x32
  803. #define ATM_CAUSE_DIAG_ATTR_NO_INFO_XFER_RATE 0x33
  804. #define ATM_CAUSE_DIAG_ATTR_NO_STRUCTURE 0x34
  805. #define ATM_CAUSE_DIAG_ATTR_NO_CONFIG 0x35
  806. #define ATM_CAUSE_DIAG_ATTR_NO_ESTABL 0x36
  807. #define ATM_CAUSE_DIAG_ATTR_NO_SYMMETRY 0x37
  808. #define ATM_CAUSE_DIAG_ATTR_NO_INFO_XFER_RATE2 0x38
  809. #define ATM_CAUSE_DIAG_ATTR_NO_LAYER_ID 0x39
  810. #define ATM_CAUSE_DIAG_ATTR_NO_RATE_MULT 0x3A
  811. #endif // MS_UNI4
  812. //
  813. // Cause
  814. //
  815. // Note: If used as empty buffer for response IE, then the DiagnosticsLength
  816. // MUST be filled in correctly, to show available buffer length.
  817. //
  818. typedef struct _ATM_CAUSE_IE
  819. {
  820. UCHAR Location;
  821. UCHAR Cause;
  822. UCHAR DiagnosticsLength;
  823. UCHAR Diagnostics[4]; // Variable length information (minimum 4 bytes)
  824. } ATM_CAUSE_IE, *PATM_CAUSE_IE;
  825. #ifdef MS_UNI4
  826. //
  827. // Connection Identifier IE for UNI 4.0+
  828. //
  829. // Setting VPCI to SAP_FIELD_ABSENT, means it is "VP-associated" signalling,
  830. // (which is not supported by this CallManager);
  831. //
  832. // Otherwise we assume "explicit VPCI" (this is the normal setting),
  833. // and the Vpci value is used.
  834. //
  835. // Setting the VCI to SAP_FIELD_ABSENT, means it is "switched VP",
  836. // which is not supported by this CallManager;
  837. //
  838. // Setting the VCI to SAP_FIELD_ANY, means it is "explicit VPCI, any VCI";
  839. //
  840. // Setting both the Vpci and the Vci fields to SAP_FIELD_ANY,
  841. // or setting both the Vpci and the Vci fields to SAP_FIELD_ABSENT,
  842. // means that the ConnectionId is not defined,
  843. // so it will not be sent to the peer.
  844. // (This allows an empty ConnectionIdentifier IE to hold the response).
  845. //
  846. // Otherwise we assume "explicit VPCI, explicit VCI" (this is the normal
  847. // setting), and the Vci value is used.
  848. //
  849. typedef struct _ATM_CONNECTION_ID_IE
  850. {
  851. ULONG Vpci; // Optional: Can use SAP_FIELD_ANY or SAP_FIELD_ABSENT here.
  852. ULONG Vci; // Optional: Can use SAP_FIELD_ANY or SAP_FIELD_ABSENT here.
  853. } ATM_CONNECTION_ID_IE, *PATM_CONNECTION_ID_IE;
  854. #endif // MS_UNI4
  855. #ifdef MS_UNI4
  856. //
  857. // End-to-End Transit Delay IE for UNI 4.0+
  858. //
  859. typedef struct _ATM_END_TO_END_TRANSIT_DELAY_IE
  860. {
  861. ULONG CumulativeTransitDelay; // optional (Milliseconds)
  862. ULONG MaximumEndToEndTransitDelay; // optional (Milliseconds)
  863. BOOLEAN NetworkGenerated;
  864. } ATM_END_TO_END_TRANSIT_DELAY_IE, *PATM_END_TO_END_TRANSIT_DELAY_IE;
  865. #endif // MS_UNI4
  866. #ifdef MS_UNI4
  867. //
  868. // Notification Indicator IE for UNI 4.0+
  869. //
  870. // Note: If used as empty buffer for response IE, then the InformationLength
  871. // MUST be filled in correctly, to show available buffer length.
  872. //
  873. typedef struct _ATM_NOTIFICATION_INDICATOR_IE
  874. {
  875. USHORT NotificationId;
  876. USHORT InformationLength;
  877. UCHAR NotificationInformation[1]; // Variable length information
  878. } ATM_NOTIFICATION_INDICATOR_IE, *PATM_NOTIFICATION_INDICATOR_IE;
  879. #endif // MS_UNI4
  880. #ifdef MS_UNI4
  881. //
  882. // User-User IE for UNI 4.0+ (for UUS Supplementary Services option)
  883. //
  884. // Note: If used as empty buffer for response IE, then the InformationLength
  885. // MUST be filled in correctly, to show available buffer length.
  886. //
  887. typedef struct _ATM_USER_USER_IE
  888. {
  889. UCHAR ProtocolDescriminator;
  890. UCHAR Filler[1];
  891. USHORT InformationLength;
  892. UCHAR UserUserInformation[1]; // Variable length information
  893. } ATM_USER_USER_IE, *PATM_USER_USER_IE;
  894. #endif // MS_UNI4
  895. #ifdef MS_UNI4
  896. //
  897. // Generic ID Transport IE for UNI 4.0+
  898. //
  899. // Note: If used as empty buffer for response IE, then the InformationLength
  900. // MUST be filled in correctly, to show available buffer length.
  901. //
  902. typedef struct _ATM_GENERIC_ID_TRANSPORT_IE
  903. {
  904. USHORT InformationLength;
  905. UCHAR GenericIDInformation[1]; // Variable length information
  906. } ATM_GENERIC_ID_TRANSPORT_IE, *PATM_GENERIC_ID_TRANSPORT_IE;
  907. #endif // MS_UNI4
  908. //
  909. // Leaf Initiated Join (LIJ) Identifier
  910. //
  911. typedef struct _ATM_LIJ_CALLID_IE
  912. {
  913. ULONG Identifier;
  914. } ATM_LIJ_CALLID_IE, *PATM_LIJ_CALLID_IE;
  915. #ifdef MS_UNI4
  916. //
  917. // Values used for the ScreeningIndication field in struct ATM_LIJ_PARAMETERS_IE
  918. //
  919. #define ATM_LIJ_PARMS_SCREEN_NO_ROOT_NOTIF 0x00
  920. //
  921. // Leaf Initiated Join (LIJ) Parameters IE for UNI 4.0+
  922. //
  923. typedef struct _ATM_LIJ_PARAMETERS_IE
  924. {
  925. UCHAR ScreeningIndication;
  926. } ATM_LIJ_PARAMETERS_IE, *PATM_LIJ_PARAMETERS_IE;
  927. #endif // MS_UNI4
  928. #ifdef MS_UNI4
  929. //
  930. // Leaf Sequence Number IE for UNI 4.0+
  931. //
  932. typedef struct _ATM_LEAF_SEQUENCE_NUMBER_IE
  933. {
  934. ULONG SequenceNumber;
  935. } ATM_LEAF_SEQUENCE_NUMBER_IE, *PATM_LEAF_SEQUENCE_NUMBER_IE;
  936. #endif // MS_UNI4
  937. #ifdef MS_UNI4
  938. //
  939. // Values used for the ConnectionScopeType field in _ATM_CONNECTION_SCOPE_SELECTION_IE
  940. //
  941. #define ATM_SCOPE_TYPE_ORGANIZATIONAL 0x01
  942. //
  943. // Values used for the ConnectionScopeSelection field in _ATM_CONNECTION_SCOPE_SELECTION_IE
  944. //
  945. #define ATM_SCOPE_ORGANIZATIONAL_LOCAL_NW 0x01
  946. #define ATM_SCOPE_ORGANIZATIONAL_LOCAL_NW_PLUS1 0x02
  947. #define ATM_SCOPE_ORGANIZATIONAL_LOCAL_NW_PLUS2 0x03
  948. #define ATM_SCOPE_ORGANIZATIONAL_SITE_MINUS1 0x04
  949. #define ATM_SCOPE_ORGANIZATIONAL_INTRA_SITE 0x05
  950. #define ATM_SCOPE_ORGANIZATIONAL_SITE_PLUS1 0x06
  951. #define ATM_SCOPE_ORGANIZATIONAL_ORG_MINUS1 0x07
  952. #define ATM_SCOPE_ORGANIZATIONAL_INTRA_ORG 0x08
  953. #define ATM_SCOPE_ORGANIZATIONAL_ORG_PLUS1 0x09
  954. #define ATM_SCOPE_ORGANIZATIONAL_COMM_MINUS1 0x0A
  955. #define ATM_SCOPE_ORGANIZATIONAL_INTRA_COMM 0x0B
  956. #define ATM_SCOPE_ORGANIZATIONAL_COMM_PLUS1 0x0C
  957. #define ATM_SCOPE_ORGANIZATIONAL_REGIONAL 0x0D
  958. #define ATM_SCOPE_ORGANIZATIONAL_INTER_REGIONAL 0x0E
  959. #define ATM_SCOPE_ORGANIZATIONAL_GLOBAL 0x0F
  960. //
  961. // Connection Scope Selection IE for UNI 4.0+
  962. //
  963. typedef struct _ATM_CONNECTION_SCOPE_SELECTION_IE
  964. {
  965. UCHAR ConnectionScopeType;
  966. UCHAR ConnectionScopeSelection;
  967. } ATM_CONNECTION_SCOPE_SELECTION_IE, *PATM_CONNECTION_SCOPE_SELECTION_IE;
  968. #endif // MS_UNI4
  969. #ifdef MS_UNI4
  970. //
  971. // Values used for the XxxxAdditionalParameters fields in _ATM_ABR_ADDITIONAL_PARAMETERS_IE
  972. //
  973. #define ATM_ABR_PARMS_NRM_PRESENT 0x80000000
  974. #define ATM_ABR_PARMS_TRM_PRESENT 0x40000000
  975. #define ATM_ABR_PARMS_CDF_PRESENT 0x20000000
  976. #define ATM_ABR_PARMS_ADTF_PRESENT 0x10000000
  977. #define ATM_ABR_PARMS_NRM_MASK 0x0E000000
  978. #define ATM_ABR_PARMS_NRM_SHIFT 25
  979. #define ATM_ABR_PARMS_TRM_MASK 0x01C00000
  980. #define ATM_ABR_PARMS_TRM_SHIFT 22
  981. #define ATM_ABR_PARMS_CDF_MASK 0x00380000
  982. #define ATM_ABR_PARMS_CDF_SHIFT 19
  983. #define ATM_ABR_PARMS_ADTF_MASK 0x0007FE00
  984. #define ATM_ABR_PARMS_ADTF_SHIFT 9
  985. #define ATM_ABR_PARMS_NRM_DEFAULT 4
  986. #define ATM_ABR_PARMS_TRM_DEFAULT 7
  987. #define ATM_ABR_PARMS_CDF_DEFAULT 3
  988. #define ATM_ABR_PARMS_ADTF_DEFAULT 50
  989. typedef struct _ATM_ABR_ADDITIONAL_PARAMETERS_IE
  990. {
  991. ULONG ForwardAdditionalParameters;
  992. ULONG BackwardAdditionalParameters;
  993. } ATM_ABR_ADDITIONAL_PARAMETERS_IE, *PATM_ABR_ADDITIONAL_PARAMETERS_IE;
  994. #endif // MS_UNI4
  995. #ifdef MS_UNI4
  996. //
  997. // ABR Setup Parameters IE for UNI 4.0+
  998. //
  999. typedef struct _ATM_ABR_SETUP_PARAMETERS_IE
  1000. {
  1001. ULONG ForwardABRInitialCellRateCLP01; // optional
  1002. ULONG BackwardABRInitialCellRateCLP01; // optional
  1003. ULONG ForwardABRTransientBufferExposure; // optional
  1004. ULONG BackwardABRTransientBufferExposure; // optional
  1005. ULONG CumulativeRmFixedRTT;
  1006. UCHAR ForwardABRRateIncreaseFactorLog2; // optional (0..15 [log2(RIF*32768)])
  1007. UCHAR BackwardABRRateIncreaseFactorLog2; // optional (0..15 [log2(RIF*32768)])
  1008. UCHAR ForwardABRRateDecreaseFactorLog2; // optional (0..15 [log2(RDF*32768)])
  1009. UCHAR BackwardABRRateDecreaseFactorLog2; // optional (0..15 [log2(RDF*32768)])
  1010. } ATM_ABR_SETUP_PARAMETERS_IE, *PATM_ABR_SETUP_PARAMETERS_IE;
  1011. #endif // MS_UNI4
  1012. //
  1013. // Raw Information Element - the user can fill in whatever he wants
  1014. //
  1015. typedef struct _ATM_RAW_IE
  1016. {
  1017. ULONG RawIELength;
  1018. ULONG RawIEType;
  1019. UCHAR RawIEValue[1]; // Vaiable length information
  1020. } ATM_RAW_IE, *PATM_RAW_IE;
  1021. //
  1022. // This is the value of the ParamType field in the CO_SPECIFIC_PARAMETERS structure
  1023. // when the Parameters[] field contains ATM media specific values in the structure
  1024. // ATM_MEDIA_PARAMETERS.
  1025. //
  1026. #define ATM_MEDIA_SPECIFIC 0x00000001
  1027. //
  1028. // The Q2931 Call Manager Specific parameters that goes into the
  1029. // CallMgrParameters->CallMgrSpecific.Parameters
  1030. //
  1031. typedef struct _Q2931_CALLMGR_PARAMETERS
  1032. {
  1033. ATM_ADDRESS CalledParty;
  1034. ATM_ADDRESS CallingParty;
  1035. ULONG InfoElementCount;
  1036. UCHAR InfoElements[1]; // one or more info elements
  1037. } Q2931_CALLMGR_PARAMETERS, *PQ2931_CALLMGR_PARAMETERS;
  1038. //
  1039. // This is the specific portion of either the Media parameters or the CallMgr
  1040. // Parameters. The following define is used in the ParamType field
  1041. // depending on the signaling type.
  1042. //
  1043. #define CALLMGR_SPECIFIC_Q2931 0x00000001
  1044. typedef struct _ATM_VPIVCI
  1045. {
  1046. ULONG Vpi;
  1047. ULONG Vci;
  1048. } ATM_VPIVCI, *PATM_VPIVCI;
  1049. //
  1050. // ATM Service Category
  1051. //
  1052. #define ATM_SERVICE_CATEGORY_CBR 1 // Constant Bit Rate
  1053. #define ATM_SERVICE_CATEGORY_VBR 2 // Variable Bit Rate
  1054. #define ATM_SERVICE_CATEGORY_UBR 4 // Unspecified Bit Rate
  1055. #define ATM_SERVICE_CATEGORY_ABR 8 // Available Bit Rate
  1056. typedef ULONG ATM_SERVICE_CATEGORY, *PATM_SERVICE_CATEGORY;
  1057. //
  1058. // ATM flow parameters for use in specifying Media parameters
  1059. //
  1060. typedef struct _ATM_FLOW_PARAMETERS
  1061. {
  1062. ATM_SERVICE_CATEGORY ServiceCategory;
  1063. ULONG AverageCellRate; // in cells/sec
  1064. ULONG PeakCellRate; // in cells/sec
  1065. ULONG MinimumCellRate; // in cells/sec (ABR MCR)
  1066. ULONG InitialCellRate; // in cells/sec (ABR ICR)
  1067. ULONG BurstLengthCells; // in cells
  1068. ULONG MaxSduSize; // MTU in bytes
  1069. ULONG TransientBufferExposure; // in cells (ABR TBE)
  1070. ULONG CumulativeRMFixedRTT; // in microseconds (ABR FRTT)
  1071. UCHAR RateIncreaseFactor; // UNI 4.0 coding (ABR RIF)
  1072. UCHAR RateDecreaseFactor; // UNI 4.0 coding (ABR RDF)
  1073. USHORT ACRDecreaseTimeFactor; // UNI 4.0 coding (ABR ADTF)
  1074. UCHAR MaximumCellsPerForwardRMCell; // UNI 4.0 coding (ABR Nrm)
  1075. UCHAR MaximumForwardRMCellInterval; // UNI 4.0 coding (ABR Trm)
  1076. UCHAR CutoffDecreaseFactor; // UNI 4.0 coding (ABR CDF)
  1077. UCHAR Reserved1; // padding
  1078. ULONG MissingRMCellCount; // (ABR CRM)
  1079. ULONG Reserved2;
  1080. ULONG Reserved3;
  1081. } ATM_FLOW_PARAMETERS, *PATM_FLOW_PARAMETERS;
  1082. //
  1083. // ATM Specific Media parameters - this is the Media specific structure for ATM
  1084. // that goes into MediaParameters->MediaSpecific.Parameters.
  1085. //
  1086. typedef struct _ATM_MEDIA_PARAMETERS
  1087. {
  1088. ATM_VPIVCI ConnectionId;
  1089. ATM_AAL_TYPE AALType;
  1090. ULONG CellDelayVariationCLP0;
  1091. ULONG CellDelayVariationCLP1;
  1092. ULONG CellLossRatioCLP0;
  1093. ULONG CellLossRatioCLP1;
  1094. ULONG CellTransferDelayCLP0;
  1095. ULONG CellTransferDelayCLP1;
  1096. ULONG DefaultCLP;
  1097. ATM_FLOW_PARAMETERS Transmit;
  1098. ATM_FLOW_PARAMETERS Receive;
  1099. } ATM_MEDIA_PARAMETERS, *PATM_MEDIA_PARAMETERS;
  1100. #ifdef MS_UNI4
  1101. //
  1102. // Generic ATM Call Manager Specific parameters.
  1103. // These may be used for call/leaf teardown and for certain NdisCoRequest calls.
  1104. //
  1105. // When used for closing a call and for dropping a leaf, by either client or
  1106. // Call Manager, this struct is referenced by the `Buffer` parameter of
  1107. // the relevant NDIS functions.
  1108. //
  1109. // When used for NdisCoRequest calls to make ATM UNI protocol specific
  1110. // requests and indications
  1111. // OID_ATM_CALL_PROCEEDING
  1112. // OID_ATM_CALL_ALERTING
  1113. // OID_ATM_LEAF_ALERTING
  1114. // OID_ATM_CALL_NOTIFY
  1115. // this struct is referenced by the `InformationBuffer` parameter.
  1116. //
  1117. typedef struct _Q2931_CALLMGR_SUBSEQUENT_PARAMETERS
  1118. {
  1119. ULONG InfoElementCount;
  1120. UCHAR InfoElements[1]; // one or more info elements
  1121. } Q2931_CALLMGR_SUBSEQUENT_PARAMETERS, *PQ2931_CALLMGR_SUBSEQUENT_PARAMETERS;
  1122. #endif // MS_UNI4
  1123. #ifdef MS_UNI4
  1124. //
  1125. // Field values that may be used whereever applicable to signify absence
  1126. // of data or wildcard data.
  1127. //
  1128. #endif // MS_UNI4
  1129. #ifndef SAP_FIELD_ABSENT
  1130. #define SAP_FIELD_ABSENT ((ULONG)0xfffffffe)
  1131. #endif
  1132. #ifndef SAP_FIELD_ABSENT_USHORT
  1133. #define SAP_FIELD_ABSENT_USHORT ((USHORT)0xfffe)
  1134. #endif
  1135. #ifndef SAP_FIELD_ABSENT_UCHAR
  1136. #define SAP_FIELD_ABSENT_UCHAR ((UCHAR)0xfe)
  1137. #endif
  1138. #ifndef SAP_FIELD_ANY
  1139. #define SAP_FIELD_ANY ((ULONG)0xffffffff)
  1140. #endif
  1141. #define SAP_FIELD_ANY_AESA_SEL ((ULONG)0xfffffffa) // SEL is wild-carded
  1142. #define SAP_FIELD_ANY_AESA_REST ((ULONG)0xfffffffb) // All of the address
  1143. // except SEL, is wild-carded
  1144. //
  1145. // The ATM Specific SAP definition
  1146. //
  1147. typedef struct _ATM_SAP
  1148. {
  1149. ATM_BLLI_IE Blli;
  1150. ATM_BHLI_IE Bhli;
  1151. ULONG NumberOfAddresses;
  1152. UCHAR Addresses[1]; // each of type ATM_ADDRESS
  1153. } ATM_SAP, *PATM_SAP;
  1154. //
  1155. // The ATM Specific SAP definition when adding PVCs
  1156. //
  1157. typedef struct _ATM_PVC_SAP
  1158. {
  1159. ATM_BLLI_IE Blli;
  1160. ATM_BHLI_IE Bhli;
  1161. } ATM_PVC_SAP, *PATM_PVC_SAP;
  1162. //
  1163. // The structure passed in the Parameters field of the CO_SPECIFIC_PARAMETERS
  1164. // structure passed in an ADD PVC request for Q.2931
  1165. //
  1166. typedef struct _Q2931_ADD_PVC
  1167. {
  1168. ATM_ADDRESS CalledParty;
  1169. ATM_ADDRESS CallingParty;
  1170. ATM_VPIVCI ConnectionId;
  1171. ATM_AAL_TYPE AALType;
  1172. ATM_FLOW_PARAMETERS ForwardFP;
  1173. ATM_FLOW_PARAMETERS BackwardFP;
  1174. ULONG Flags;
  1175. ATM_PVC_SAP LocalSap;
  1176. ATM_PVC_SAP DestinationSap;
  1177. BOOLEAN LIJIdPresent;
  1178. ATM_LIJ_CALLID_IE LIJId;
  1179. } Q2931_ADD_PVC, *PQ2931_ADD_PVC;
  1180. //
  1181. // These flags are defined to be used with Q2931_ADD_PVC above
  1182. //
  1183. // this VC should be used by the CallMgr as the signaling VC now
  1184. #define CO_FLAG_SIGNALING_VC 0x00000001
  1185. //
  1186. // use this flag when the VC cannot be used for a MakeCall - incoming call only
  1187. // the call mgr can then be optimized not to search these PVCs during make call
  1188. // processing.
  1189. #define CO_FLAG_NO_DEST_SAP 0x00000002
  1190. //
  1191. // Use this flag for a PVC that cannot be used to indicate an incoming call.
  1192. //
  1193. #define CO_FLAG_NO_LOCAL_SAP 0x00000004
  1194. //
  1195. // the structure passed in the Parameters field of the CO_SPECIFIC_PARAMETERS
  1196. // structure passed in an NDIS_CO_PVC request for Q2931
  1197. //
  1198. typedef struct _Q2931_DELETE_PVC
  1199. {
  1200. ATM_VPIVCI ConnectionId;
  1201. } Q2931_DELETE_PVC, *PQ2931_DELETE_PVC;
  1202. typedef struct _CO_GET_CALL_INFORMATION
  1203. {
  1204. ULONG CallInfoType;
  1205. ULONG CallInfoLength;
  1206. PVOID CallInfoBuffer;
  1207. } CO_GET_CALL_INFORMATION, *PCO_GET_CALL_INFORMATION;
  1208. //
  1209. // the structure for returning the supported VC rates from the miniport,
  1210. // returned in response to OID_ATM_SUPPORTED_VC_RATES
  1211. //
  1212. typedef struct _ATM_VC_RATES_SUPPORTED
  1213. {
  1214. ULONG MinCellRate;
  1215. ULONG MaxCellRate;
  1216. } ATM_VC_RATES_SUPPORTED, *PATM_VC_RATES_SUPPORTED;
  1217. //
  1218. // NDIS_PACKET out of band information for ATM.
  1219. //
  1220. typedef struct _ATM_AAL_OOB_INFO
  1221. {
  1222. ATM_AAL_TYPE AalType;
  1223. union
  1224. {
  1225. struct _ATM_AAL5_INFO
  1226. {
  1227. BOOLEAN CellLossPriority;
  1228. UCHAR UserToUserIndication;
  1229. UCHAR CommonPartIndicator;
  1230. } ATM_AAL5_INFO;
  1231. struct _ATM_AAL0_INFO
  1232. {
  1233. BOOLEAN CellLossPriority;
  1234. UCHAR PayLoadTypeIdentifier;
  1235. } ATM_AAL0_INFO;
  1236. };
  1237. } ATM_AAL_OOB_INFO, *PATM_AAL_OOB_INFO;
  1238. //
  1239. // Physical Line Speeds in bits/sec.
  1240. //
  1241. #define ATM_PHYS_RATE_SONET_STS3C 155520000
  1242. #define ATM_PHYS_RATE_IBM_25 25600000
  1243. //
  1244. // ATM cell layer transfer capacities in bits/sec. This is the throughput
  1245. // available for ATM cells, after allowing for physical framing overhead.
  1246. //
  1247. #define ATM_CELL_TRANSFER_CAPACITY_SONET_STS3C 149760000
  1248. #define ATM_CELL_TRANSFER_CAPACITY_IBM_25 25125926
  1249. //
  1250. // User data rate in units of 100 bits/sec. This is returned in response to
  1251. // the OID_GEN_CO_LINK_SPEED query. This is the effective rate of
  1252. // transfer of data available to the ATM layer user, after allowing for
  1253. // the ATM cell header.
  1254. //
  1255. #define ATM_USER_DATA_RATE_SONET_155 1356317
  1256. #define ATM_USER_DATA_RATE_IBM_25 227556
  1257. //
  1258. // The ATM Service Registry MIB Table is used to locate ATM network
  1259. // services. OID_ATM_GET_SERVICE_ADDRESS is used by clients to access
  1260. // this table.
  1261. //
  1262. typedef ULONG ATM_SERVICE_REGISTRY_TYPE;
  1263. #define ATM_SERVICE_REGISTRY_LECS 1 // LAN Emulation Configuration Server
  1264. #define ATM_SERVICE_REGISTRY_ANS 2 // ATM Name Server
  1265. //
  1266. // Structure passed to OID_ATM_GET_SERVICE_ADDRESS.
  1267. //
  1268. typedef struct _ATM_SERVICE_ADDRESS_LIST
  1269. {
  1270. ATM_SERVICE_REGISTRY_TYPE ServiceRegistryType;
  1271. ULONG NumberOfAddressesAvailable;
  1272. ULONG NumberOfAddressesReturned;
  1273. ATM_ADDRESS Address[1];
  1274. } ATM_SERVICE_ADDRESS_LIST, *PATM_SERVICE_ADDRESS_LIST;
  1275. #endif // _ATM_H_