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.

782 lines
20 KiB

  1. /*++
  2. Copyright (c) Microsoft Corporation. All rights reserved.
  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. NDIS/ATM Development Team
  10. Revision History:
  11. Initial Version - March 1996
  12. --*/
  13. #ifndef _ATM_H_
  14. #define _ATM_H_
  15. //
  16. // Address type
  17. //
  18. typedef ULONG ATM_ADDRESSTYPE;
  19. #define ATM_NSAP 0
  20. #define ATM_E164 1
  21. //
  22. // ATM Address
  23. //
  24. #define ATM_MAC_ADDRESS_LENGTH 6 // Same as 802.x
  25. #define ATM_ADDRESS_LENGTH 20
  26. //
  27. // Special characters in ATM address string used in textual representations
  28. //
  29. #define ATM_ADDR_BLANK_CHAR L' '
  30. #define ATM_ADDR_PUNCTUATION_CHAR L'.'
  31. #define ATM_ADDR_E164_START_CHAR L'+'
  32. typedef struct _ATM_ADDRESS
  33. {
  34. ATM_ADDRESSTYPE AddressType;
  35. ULONG NumberOfDigits;
  36. UCHAR Address[ATM_ADDRESS_LENGTH];
  37. } ATM_ADDRESS, *PATM_ADDRESS;
  38. //
  39. // AAL types that the miniport supports
  40. //
  41. #define AAL_TYPE_AAL0 1
  42. #define AAL_TYPE_AAL1 2
  43. #define AAL_TYPE_AAL34 4
  44. #define AAL_TYPE_AAL5 8
  45. typedef ULONG ATM_AAL_TYPE, *PATM_AAL_TYPE;
  46. //
  47. // Types of Information Elements
  48. //
  49. typedef enum
  50. {
  51. IE_AALParameters,
  52. IE_TrafficDescriptor,
  53. IE_BroadbandBearerCapability,
  54. IE_BHLI,
  55. IE_BLLI,
  56. IE_CalledPartyNumber,
  57. IE_CalledPartySubaddress,
  58. IE_CallingPartyNumber,
  59. IE_CallingPartySubaddress,
  60. IE_Cause,
  61. IE_QOSClass,
  62. IE_TransitNetworkSelection,
  63. IE_BroadbandSendingComplete,
  64. IE_LIJCallId,
  65. IE_Raw
  66. } Q2931_IE_TYPE;
  67. //
  68. // Common header for each Information Element
  69. //
  70. typedef struct _Q2931_IE
  71. {
  72. Q2931_IE_TYPE IEType;
  73. ULONG IELength; // Bytes, including IEType and IELength fields
  74. UCHAR IE[1];
  75. } Q2931_IE, *PQ2931_IE;
  76. //
  77. // Definitions for SapType in CO_SAP
  78. //
  79. #define SAP_TYPE_NSAP 0x00000001
  80. #define SAP_TYPE_E164 0x00000002
  81. //
  82. // Values used for the Mode field in AAL5_PARAMETERS
  83. //
  84. #define AAL5_MODE_MESSAGE 0x01
  85. #define AAL5_MODE_STREAMING 0x02
  86. //
  87. // Values used for the SSCSType field in AAL5_PARAMETERS
  88. //
  89. #define AAL5_SSCS_NULL 0x00
  90. #define AAL5_SSCS_SSCOP_ASSURED 0x01
  91. #define AAL5_SSCS_SSCOP_NON_ASSURED 0x02
  92. #define AAL5_SSCS_FRAME_RELAY 0x04
  93. //
  94. // AAL Parameters
  95. //
  96. typedef struct _AAL1_PARAMETERS
  97. {
  98. UCHAR Subtype;
  99. UCHAR CBRRate;
  100. USHORT Multiplier;
  101. UCHAR SourceClockRecoveryMethod;
  102. UCHAR ErrorCorrectionMethod;
  103. USHORT StructuredDataTransferBlocksize;
  104. UCHAR PartiallyFilledCellsMethod;
  105. } AAL1_PARAMETERS, *PAAL1_PARAMETERS;
  106. typedef struct _AAL34_PARAMETERS
  107. {
  108. USHORT ForwardMaxCPCSSDUSize;
  109. USHORT BackwardMaxCPCSSDUSize;
  110. USHORT LowestMID;
  111. USHORT HighestMID;
  112. UCHAR SSCSType;
  113. } AAL34_PARAMETERS, *PAAL34_PARAMETERS;
  114. typedef struct _AAL5_PARAMETERS
  115. {
  116. ULONG ForwardMaxCPCSSDUSize;
  117. ULONG BackwardMaxCPCSSDUSize;
  118. UCHAR Mode;
  119. UCHAR SSCSType;
  120. } AAL5_PARAMETERS, *PAAL5_PARAMETERS;
  121. typedef struct _AALUSER_PARAMETERS
  122. {
  123. ULONG UserDefined;
  124. } AALUSER_PARAMETERS, *PAALUSER_PARAMETERS;
  125. typedef struct _AAL_PARAMETERS_IE
  126. {
  127. ATM_AAL_TYPE AALType;
  128. union
  129. {
  130. AAL1_PARAMETERS AAL1Parameters;
  131. AAL34_PARAMETERS AAL34Parameters;
  132. AAL5_PARAMETERS AAL5Parameters;
  133. AALUSER_PARAMETERS AALUserParameters;
  134. } AALSpecificParameters;
  135. } AAL_PARAMETERS_IE, *PAAL_PARAMETERS_IE;
  136. //
  137. // ATM Traffic Descriptor
  138. //
  139. typedef struct _ATM_TRAFFIC_DESCRIPTOR // For one direction
  140. {
  141. ULONG PeakCellRateCLP0;
  142. ULONG PeakCellRateCLP01;
  143. ULONG SustainableCellRateCLP0;
  144. ULONG SustainableCellRateCLP01;
  145. ULONG MaximumBurstSizeCLP0;
  146. ULONG MaximumBurstSizeCLP01;
  147. BOOLEAN Tagging;
  148. } ATM_TRAFFIC_DESCRIPTOR, *PATM_TRAFFIC_DESCRIPTOR;
  149. typedef struct _ATM_TRAFFIC_DESCRIPTOR_IE
  150. {
  151. ATM_TRAFFIC_DESCRIPTOR ForwardTD;
  152. ATM_TRAFFIC_DESCRIPTOR BackwardTD;
  153. BOOLEAN BestEffort;
  154. } ATM_TRAFFIC_DESCRIPTOR_IE, *PATM_TRAFFIC_DESCRIPTOR_IE;
  155. //
  156. // values used for the BearerClass field in the Broadband Bearer Capability IE
  157. //
  158. #define BCOB_A 0x00 // Bearer class A
  159. #define BCOB_C 0x01 // Bearer class C
  160. #define BCOB_X 0x02 // Bearer class X
  161. //
  162. // values used for the TrafficType field in the Broadband Bearer Capability IE
  163. //
  164. #define TT_NOIND 0x00 // No indication of traffic type
  165. #define TT_CBR 0x04 // Constant bit rate
  166. #define TT_VBR 0x08 // Variable bit rate
  167. //
  168. // values used for the TimingRequirements field in the Broadband Bearer Capability IE
  169. //
  170. #define TR_NOIND 0x00 // No timing requirement indication
  171. #define TR_END_TO_END 0x01 // End-to-end timing required
  172. #define TR_NO_END_TO_END 0x02 // End-to-end timing not required
  173. //
  174. // values used for the ClippingSusceptability field in the Broadband Bearer Capability IE
  175. //
  176. #define CLIP_NOT 0x00 // Not susceptible to clipping
  177. #define CLIP_SUS 0x20 // Susceptible to clipping
  178. //
  179. // values used for the UserPlaneConnectionConfig field in
  180. // the Broadband Bearer Capability IE
  181. //
  182. #define UP_P2P 0x00 // Point-to-point connection
  183. #define UP_P2MP 0x01 // Point-to-multipoint connection
  184. //
  185. // Broadband Bearer Capability
  186. //
  187. typedef struct _ATM_BROADBAND_BEARER_CAPABILITY_IE
  188. {
  189. UCHAR BearerClass;
  190. UCHAR TrafficType;
  191. UCHAR TimingRequirements;
  192. UCHAR ClippingSusceptability;
  193. UCHAR UserPlaneConnectionConfig;
  194. } ATM_BROADBAND_BEARER_CAPABILITY_IE, *PATM_BROADBAND_BEARER_CAPABILITY_IE;
  195. //
  196. // values used for the HighLayerInfoType field in ATM_BHLI
  197. //
  198. #define BHLI_ISO 0x00 // ISO
  199. #define BHLI_UserSpecific 0x01 // User Specific
  200. #define BHLI_HighLayerProfile 0x02 // High layer profile (only in UNI3.0)
  201. #define BHLI_VendorSpecificAppId 0x03 // Vendor-Specific Application ID
  202. //
  203. // Broadband High layer Information
  204. //
  205. typedef struct _ATM_BHLI_IE
  206. {
  207. ULONG HighLayerInfoType; // High Layer Information Type
  208. ULONG HighLayerInfoLength; // number of bytes in HighLayerInfo
  209. UCHAR HighLayerInfo[8]; // The value dependent on the
  210. // HighLayerInfoType field
  211. } ATM_BHLI_IE, *PATM_BHLI_IE;
  212. //
  213. // values used for Layer2Protocol in B-LLI
  214. //
  215. #define BLLI_L2_ISO_1745 0x01 // Basic mode ISO 1745
  216. #define BLLI_L2_Q921 0x02 // CCITT Rec. Q.921
  217. #define BLLI_L2_X25L 0x06 // CCITT Rec. X.25, link layer
  218. #define BLLI_L2_X25M 0x07 // CCITT Rec. X.25, multilink
  219. #define BLLI_L2_ELAPB 0x08 // Extended LAPB; for half duplex operation
  220. #define BLLI_L2_HDLC_ARM 0x09 // HDLC ARM (ISO 4335)
  221. #define BLLI_L2_HDLC_NRM 0x0A // HDLC NRM (ISO 4335)
  222. #define BLLI_L2_HDLC_ABM 0x0B // HDLC ABM (ISO 4335)
  223. #define BLLI_L2_LLC 0x0C // LAN logical link control (ISO 8802/2)
  224. #define BLLI_L2_X75 0x0D // CCITT Rec. X.75, single link procedure
  225. #define BLLI_L2_Q922 0x0E // CCITT Rec. Q.922
  226. #define BLLI_L2_USER_SPECIFIED 0x10 // User Specified
  227. #define BLLI_L2_ISO_7776 0x11 // ISO 7776 DTE-DTE operation
  228. //
  229. // values used for Layer3Protocol in B-LLI
  230. //
  231. #define BLLI_L3_X25 0x06 // CCITT Rec. X.25, packet layer
  232. #define BLLI_L3_ISO_8208 0x07 // ISO/IEC 8208 (X.25 packet layer for DTE
  233. #define BLLI_L3_X223 0x08 // X.223/ISO 8878
  234. #define BLLI_L3_SIO_8473 0x09 // ISO/IEC 8473 (OSI connectionless)
  235. #define BLLI_L3_T70 0x0A // CCITT Rec. T.70 min. network layer
  236. #define BLLI_L3_ISO_TR9577 0x0B // ISO/IEC TR 9577 Network Layer Protocol ID
  237. #define BLLI_L3_USER_SPECIFIED 0x10 // User Specified
  238. //
  239. // values used for Layer3IPI in struct B-LLI
  240. //
  241. #define BLLI_L3_IPI_SNAP 0x80 // IEEE 802.1 SNAP identifier
  242. #define BLLI_L3_IPI_IP 0xCC // Internet Protocol (IP) identifier
  243. //
  244. // Broadband Lower Layer Information
  245. //
  246. typedef struct _ATM_BLLI_IE
  247. {
  248. ULONG Layer2Protocol;
  249. UCHAR Layer2Mode;
  250. UCHAR Layer2WindowSize;
  251. ULONG Layer2UserSpecifiedProtocol;
  252. ULONG Layer3Protocol;
  253. UCHAR Layer3Mode;
  254. UCHAR Layer3DefaultPacketSize;
  255. UCHAR Layer3PacketWindowSize;
  256. ULONG Layer3UserSpecifiedProtocol;
  257. ULONG Layer3IPI;
  258. UCHAR SnapId[5];
  259. } ATM_BLLI_IE, *PATM_BLLI_IE;
  260. //
  261. // Called Party Number
  262. //
  263. // If present, this IE overrides the Called Address specified in
  264. // the main parameter block.
  265. //
  266. typedef ATM_ADDRESS ATM_CALLED_PARTY_NUMBER_IE;
  267. //
  268. // Called Party Subaddress
  269. //
  270. typedef ATM_ADDRESS ATM_CALLED_PARTY_SUBADDRESS_IE;
  271. //
  272. // Calling Party Number
  273. //
  274. typedef struct _ATM_CALLING_PARTY_NUMBER_IE
  275. {
  276. ATM_ADDRESS Number;
  277. UCHAR PresentationIndication;
  278. UCHAR ScreeningIndicator;
  279. } ATM_CALLING_PARTY_NUMBER_IE, *PATM_CALLING_PARTY_NUMBER_IE;
  280. //
  281. // Calling Party Subaddress
  282. //
  283. typedef ATM_ADDRESS ATM_CALLING_PARTY_SUBADDRESS_IE;
  284. //
  285. // Values used for the QOSClassForward and QOSClassBackward
  286. // fields in ATM_QOS_CLASS_IE
  287. //
  288. #define QOS_CLASS0 0x00
  289. #define QOS_CLASS1 0x01
  290. #define QOS_CLASS2 0x02
  291. #define QOS_CLASS3 0x03
  292. #define QOS_CLASS4 0x04
  293. //
  294. // QOS Class
  295. //
  296. typedef struct _ATM_QOS_CLASS_IE
  297. {
  298. UCHAR QOSClassForward;
  299. UCHAR QOSClassBackward;
  300. } ATM_QOS_CLASS_IE, *PATM_QOS_CLASS_IE;
  301. //
  302. // Broadband Sending Complete
  303. //
  304. typedef struct _ATM_BROADBAND_SENDING_COMPLETE_IE
  305. {
  306. UCHAR SendingComplete;
  307. } ATM_BROADBAND_SENDING_COMPLETE_IE, *PATM_BROADBAND_SENDING_COMPLETE_IE;
  308. //
  309. // Values used for the TypeOfNetworkId field in ATM_TRANSIT_NETWORK_SELECTION_IE
  310. //
  311. #define TNS_TYPE_NATIONAL 0x40
  312. //
  313. // Values used for the NetworkIdPlan field in ATM_TRANSIT_NETWORK_SELECTION_IE
  314. //
  315. #define TNS_PLAN_CARRIER_ID_CODE 0x01
  316. //
  317. // Transit Network Selection
  318. //
  319. typedef struct _ATM_TRANSIT_NETWORK_SELECTION_IE
  320. {
  321. UCHAR TypeOfNetworkId;
  322. UCHAR NetworkIdPlan;
  323. UCHAR NetworkIdLength;
  324. UCHAR NetworkId[1];
  325. } ATM_TRANSIT_NETWORK_SELECTION_IE, *PATM_TRANSIT_NETWORK_SELECTION_IE;
  326. //
  327. // Values used for the Location field in struct ATM_CAUSE_IE
  328. //
  329. #define ATM_CAUSE_LOC_USER 0x00
  330. #define ATM_CAUSE_LOC_PRIVATE_LOCAL 0x01
  331. #define ATM_CAUSE_LOC_PUBLIC_LOCAL 0x02
  332. #define ATM_CAUSE_LOC_TRANSIT_NETWORK 0x03
  333. #define ATM_CAUSE_LOC_PUBLIC_REMOTE 0x04
  334. #define ATM_CAUSE_LOC_PRIVATE_REMOTE 0x05
  335. #define ATM_CAUSE_LOC_INTERNATIONAL_NETWORK 0x07
  336. #define ATM_CAUSE_LOC_BEYOND_INTERWORKING 0x0A
  337. //
  338. // Values used for the Cause field in struct ATM_CAUSE_IE
  339. //
  340. #define ATM_CAUSE_UNALLOCATED_NUMBER 0x01
  341. #define ATM_CAUSE_NO_ROUTE_TO_TRANSIT_NETWORK 0x02
  342. #define ATM_CAUSE_NO_ROUTE_TO_DESTINATION 0x03
  343. #define ATM_CAUSE_VPI_VCI_UNACCEPTABLE 0x0A
  344. #define ATM_CAUSE_NORMAL_CALL_CLEARING 0x10
  345. #define ATM_CAUSE_USER_BUSY 0x11
  346. #define ATM_CAUSE_NO_USER_RESPONDING 0x12
  347. #define ATM_CAUSE_CALL_REJECTED 0x15
  348. #define ATM_CAUSE_NUMBER_CHANGED 0x16
  349. #define ATM_CAUSE_USER_REJECTS_CLIR 0x17
  350. #define ATM_CAUSE_DESTINATION_OUT_OF_ORDER 0x1B
  351. #define ATM_CAUSE_INVALID_NUMBER_FORMAT 0x1C
  352. #define ATM_CAUSE_STATUS_ENQUIRY_RESPONSE 0x1E
  353. #define ATM_CAUSE_NORMAL_UNSPECIFIED 0x1F
  354. #define ATM_CAUSE_VPI_VCI_UNAVAILABLE 0x23
  355. #define ATM_CAUSE_NETWORK_OUT_OF_ORDER 0x26
  356. #define ATM_CAUSE_TEMPORARY_FAILURE 0x29
  357. #define ATM_CAUSE_ACCESS_INFORMAION_DISCARDED 0x2B
  358. #define ATM_CAUSE_NO_VPI_VCI_AVAILABLE 0x2D
  359. #define ATM_CAUSE_RESOURCE_UNAVAILABLE 0x2F
  360. #define ATM_CAUSE_QOS_UNAVAILABLE 0x31
  361. #define ATM_CAUSE_USER_CELL_RATE_UNAVAILABLE 0x33
  362. #define ATM_CAUSE_BEARER_CAPABILITY_UNAUTHORIZED 0x39
  363. #define ATM_CAUSE_BEARER_CAPABILITY_UNAVAILABLE 0x3A
  364. #define ATM_CAUSE_OPTION_UNAVAILABLE 0x3F
  365. #define ATM_CAUSE_BEARER_CAPABILITY_UNIMPLEMENTED 0x41
  366. #define ATM_CAUSE_UNSUPPORTED_TRAFFIC_PARAMETERS 0x49
  367. #define ATM_CAUSE_INVALID_CALL_REFERENCE 0x51
  368. #define ATM_CAUSE_CHANNEL_NONEXISTENT 0x52
  369. #define ATM_CAUSE_INCOMPATIBLE_DESTINATION 0x58
  370. #define ATM_CAUSE_INVALID_ENDPOINT_REFERENCE 0x59
  371. #define ATM_CAUSE_INVALID_TRANSIT_NETWORK_SELECTION 0x5B
  372. #define ATM_CAUSE_TOO_MANY_PENDING_ADD_PARTY 0x5C
  373. #define ATM_CAUSE_AAL_PARAMETERS_UNSUPPORTED 0x5D
  374. #define ATM_CAUSE_MANDATORY_IE_MISSING 0x60
  375. #define ATM_CAUSE_UNIMPLEMENTED_MESSAGE_TYPE 0x61
  376. #define ATM_CAUSE_UNIMPLEMENTED_IE 0x63
  377. #define ATM_CAUSE_INVALID_IE_CONTENTS 0x64
  378. #define ATM_CAUSE_INVALID_STATE_FOR_MESSAGE 0x65
  379. #define ATM_CAUSE_RECOVERY_ON_TIMEOUT 0x66
  380. #define ATM_CAUSE_INCORRECT_MESSAGE_LENGTH 0x68
  381. #define ATM_CAUSE_PROTOCOL_ERROR 0x6F
  382. //
  383. // Values used for the Condition portion of the Diagnostics field
  384. // in struct ATM_CAUSE_IE, for certain Cause values
  385. //
  386. #define ATM_CAUSE_COND_UNKNOWN 0x00
  387. #define ATM_CAUSE_COND_PERMANENT 0x01
  388. #define ATM_CAUSE_COND_TRANSIENT 0x02
  389. //
  390. // Values used for the Rejection Reason portion of the Diagnostics field
  391. // in struct ATM_CAUSE_IE, for certain Cause values
  392. //
  393. #define ATM_CAUSE_REASON_USER 0x00
  394. #define ATM_CAUSE_REASON_IE_MISSING 0x04
  395. #define ATM_CAUSE_REASON_IE_INSUFFICIENT 0x08
  396. //
  397. // Values used for the P-U flag of the Diagnostics field
  398. // in struct ATM_CAUSE_IE, for certain Cause values
  399. //
  400. #define ATM_CAUSE_PU_PROVIDER 0x00
  401. #define ATM_CAUSE_PU_USER 0x08
  402. //
  403. // Values used for the N-A flag of the Diagnostics field
  404. // in struct ATM_CAUSE_IE, for certain Cause values
  405. //
  406. #define ATM_CAUSE_NA_NORMAL 0x00
  407. #define ATM_CAUSE_NA_ABNORMAL 0x04
  408. //
  409. // Cause
  410. //
  411. typedef struct _ATM_CAUSE_IE
  412. {
  413. UCHAR Location;
  414. UCHAR Cause;
  415. UCHAR DiagnosticsLength;
  416. UCHAR Diagnostics[4];
  417. } ATM_CAUSE_IE, *PATM_CAUSE_IE;
  418. //
  419. // Leaf Initiated Join (LIJ) Identifier
  420. //
  421. typedef struct _ATM_LIJ_CALLID_IE
  422. {
  423. ULONG Identifier;
  424. } ATM_LIJ_CALLID_IE, *PATM_LIJ_CALLID_IE;
  425. //
  426. // Raw Information Element - the user can fill in whatever he wants
  427. //
  428. typedef struct _ATM_RAW_IE
  429. {
  430. ULONG RawIELength;
  431. ULONG RawIEType;
  432. UCHAR RawIEValue[1];
  433. } ATM_RAW_IE, *PATM_RAW_IE;
  434. //
  435. // This is the value of the ParamType field in the CO_SPECIFIC_PARAMETERS structure
  436. // when the Parameters[] field contains ATM media specific values in the structure
  437. // ATM_MEDIA_PARAMETERS.
  438. //
  439. #define ATM_MEDIA_SPECIFIC 0x00000001
  440. //
  441. // The Q2931 Call Manager Specific parameters that goes into the
  442. // CallMgrParameters->CallMgrSpecific.Parameters
  443. //
  444. typedef struct _Q2931_CALLMGR_PARAMETERS
  445. {
  446. ATM_ADDRESS CalledParty;
  447. ATM_ADDRESS CallingParty;
  448. ULONG InfoElementCount;
  449. UCHAR InfoElements[1]; // one or more info elements
  450. } Q2931_CALLMGR_PARAMETERS, *PQ2931_CALLMGR_PARAMETERS;
  451. //
  452. // This is the specific portion of either the Media parameters or the CallMgr
  453. // Parameters. The following two defines are used in the ParamType field
  454. // depending on the signaling type.
  455. //
  456. #define CALLMGR_SPECIFIC_Q2931 0x00000001
  457. typedef struct _ATM_VPIVCI
  458. {
  459. ULONG Vpi;
  460. ULONG Vci;
  461. } ATM_VPIVCI, *PATM_VPIVCI;
  462. //
  463. // ATM Service Category
  464. //
  465. #define ATM_SERVICE_CATEGORY_CBR 1 // Constant Bit Rate
  466. #define ATM_SERVICE_CATEGORY_VBR 2 // Variable Bit Rate
  467. #define ATM_SERVICE_CATEGORY_UBR 4 // Unspecified Bit Rate
  468. #define ATM_SERVICE_CATEGORY_ABR 8 // Available Bit Rate
  469. typedef ULONG ATM_SERVICE_CATEGORY, *PATM_SERVICE_CATEGORY;
  470. //
  471. // ATM flow parameters for use in specifying Media parameters
  472. //
  473. typedef struct _ATM_FLOW_PARAMETERS
  474. {
  475. ATM_SERVICE_CATEGORY ServiceCategory;
  476. ULONG AverageCellRate; // in cells/sec
  477. ULONG PeakCellRate; // in cells/sec
  478. ULONG MinimumCellRate; // in cells/sec (ABR MCR)
  479. ULONG InitialCellRate; // in cells/sec (ABR ICR)
  480. ULONG BurstLengthCells; // in cells
  481. ULONG MaxSduSize; // MTU in bytes
  482. ULONG TransientBufferExposure; // in cells (ABR TBE)
  483. ULONG CumulativeRMFixedRTT; // in microseconds (ABR FRTT)
  484. UCHAR RateIncreaseFactor; // UNI 4.0 coding (ABR RIF)
  485. UCHAR RateDecreaseFactor; // UNI 4.0 coding (ABR RDF)
  486. USHORT ACRDecreaseTimeFactor; // UNI 4.0 coding (ABR ADTF)
  487. UCHAR MaximumCellsPerForwardRMCell; // UNI 4.0 coding (ABR Nrm)
  488. UCHAR MaximumForwardRMCellInterval; // UNI 4.0 coding (ABR Trm)
  489. UCHAR CutoffDecreaseFactor; // UNI 4.0 coding (ABR CDF)
  490. UCHAR Reserved1; // padding
  491. ULONG MissingRMCellCount; // (ABR CRM)
  492. ULONG Reserved2;
  493. ULONG Reserved3;
  494. } ATM_FLOW_PARAMETERS, *PATM_FLOW_PARAMETERS;
  495. //
  496. // ATM Specific Media parameters - this is the Media specific structure for ATM
  497. // that goes into MediaParameters->MediaSpecific.Parameters.
  498. //
  499. typedef struct _ATM_MEDIA_PARAMETERS
  500. {
  501. ATM_VPIVCI ConnectionId;
  502. ATM_AAL_TYPE AALType;
  503. ULONG CellDelayVariationCLP0;
  504. ULONG CellDelayVariationCLP1;
  505. ULONG CellLossRatioCLP0;
  506. ULONG CellLossRatioCLP1;
  507. ULONG CellTransferDelayCLP0;
  508. ULONG CellTransferDelayCLP1;
  509. ULONG DefaultCLP;
  510. ATM_FLOW_PARAMETERS Transmit;
  511. ATM_FLOW_PARAMETERS Receive;
  512. } ATM_MEDIA_PARAMETERS, *PATM_MEDIA_PARAMETERS;
  513. // Bit 0 in Reserved1 in ATM_FLOW_PARAMETERS is reserved.
  514. #define ATM_FLOW_PARAMS_RSVD1_MPP 0x01
  515. #ifndef SAP_FIELD_ABSENT
  516. #define SAP_FIELD_ABSENT ((ULONG)0xfffffffe)
  517. #endif
  518. #ifndef SAP_FIELD_ANY
  519. #define SAP_FIELD_ANY ((ULONG)0xffffffff)
  520. #endif
  521. #define SAP_FIELD_ANY_AESA_SEL ((ULONG)0xfffffffa) // SEL is wild-carded
  522. #define SAP_FIELD_ANY_AESA_REST ((ULONG)0xfffffffb) // All of the address
  523. // except SEL, is wild-carded
  524. //
  525. // The ATM Specific SAP definition
  526. //
  527. typedef struct _ATM_SAP
  528. {
  529. ATM_BLLI_IE Blli;
  530. ATM_BHLI_IE Bhli;
  531. ULONG NumberOfAddresses;
  532. UCHAR Addresses[1]; // each of type ATM_ADDRESS
  533. } ATM_SAP, *PATM_SAP;
  534. //
  535. // The ATM Specific SAP definition when adding PVCs
  536. //
  537. typedef struct _ATM_PVC_SAP
  538. {
  539. ATM_BLLI_IE Blli;
  540. ATM_BHLI_IE Bhli;
  541. } ATM_PVC_SAP, *PATM_PVC_SAP;
  542. //
  543. // The structure passed in the Parameters field of the CO_SPECIFIC_PARAMETERS
  544. // structure passed in an ADD PVC request for Q.2931
  545. //
  546. typedef struct _Q2931_ADD_PVC
  547. {
  548. ATM_ADDRESS CalledParty;
  549. ATM_ADDRESS CallingParty;
  550. ATM_VPIVCI ConnectionId;
  551. ATM_AAL_TYPE AALType;
  552. ATM_FLOW_PARAMETERS ForwardFP;
  553. ATM_FLOW_PARAMETERS BackwardFP;
  554. ULONG Flags;
  555. ATM_PVC_SAP LocalSap;
  556. ATM_PVC_SAP DestinationSap;
  557. BOOLEAN LIJIdPresent;
  558. ATM_LIJ_CALLID_IE LIJId;
  559. } Q2931_ADD_PVC, *PQ2931_ADD_PVC;
  560. //
  561. // These flags are defined to be used with Q2931_ADD_PVC above
  562. //
  563. // this VC should be used by the CallMgr as the signaling VC now
  564. #define CO_FLAG_SIGNALING_VC 0x00000001
  565. //
  566. // Use this flag for a PVC that cannot be used for a MakeCall - incoming call only
  567. // the call mgr can then be optimized not to search these PVCs during make call
  568. // processing.
  569. #define CO_FLAG_NO_DEST_SAP 0x00000002
  570. //
  571. // Use this flag for a PVC that cannot be used to indicate an incoming call.
  572. //
  573. #define CO_FLAG_NO_LOCAL_SAP 0x00000004
  574. //
  575. // the structure passed in the Parameters field of the CO_SPECIFIC_PARAMETERS
  576. // structure passed in an NDIS_CO_PVC request for Q2931
  577. //
  578. typedef struct _Q2931_DELETE_PVC
  579. {
  580. ATM_VPIVCI ConnectionId;
  581. } Q2931_DELETE_PVC, *PQ2931_DELETE_PVC;
  582. typedef struct _CO_GET_CALL_INFORMATION
  583. {
  584. ULONG CallInfoType;
  585. ULONG CallInfoLength;
  586. PVOID CallInfoBuffer;
  587. } CO_GET_CALL_INFORMATION, *PCO_GET_CALL_INFORMATION;
  588. //
  589. // the structure for returning the supported VC rates from the miniport,
  590. // returned in response to OID_ATM_SUPPORTED_VC_RATES
  591. //
  592. typedef struct _ATM_VC_RATES_SUPPORTED
  593. {
  594. ULONG MinCellRate;
  595. ULONG MaxCellRate;
  596. } ATM_VC_RATES_SUPPORTED, *PATM_VC_RATES_SUPPORTED;
  597. //
  598. // NDIS_PACKET out of band information for ATM.
  599. //
  600. typedef struct _ATM_AAL_OOB_INFO
  601. {
  602. ATM_AAL_TYPE AalType;
  603. union
  604. {
  605. struct _ATM_AAL5_INFO
  606. {
  607. BOOLEAN CellLossPriority;
  608. UCHAR UserToUserIndication;
  609. UCHAR CommonPartIndicator;
  610. } ATM_AAL5_INFO;
  611. struct _ATM_AAL0_INFO
  612. {
  613. BOOLEAN CellLossPriority;
  614. UCHAR PayLoadTypeIdentifier;
  615. } ATM_AAL0_INFO;
  616. };
  617. } ATM_AAL_OOB_INFO, *PATM_AAL_OOB_INFO;
  618. //
  619. // Physical Line Speeds in bits/sec.
  620. //
  621. #define ATM_PHYS_RATE_SONET_STS3C 155520000
  622. #define ATM_PHYS_RATE_IBM_25 25600000
  623. //
  624. // ATM cell layer transfer capacities in bits/sec. This is the throughput
  625. // available for ATM cells, after allowing for physical framing overhead.
  626. //
  627. #define ATM_CELL_TRANSFER_CAPACITY_SONET_STS3C 149760000
  628. #define ATM_CELL_TRANSFER_CAPACITY_IBM_25 25125926
  629. //
  630. // User data rate in units of 100 bits/sec. This is returned in response to
  631. // the OID_GEN_CO_LINK_SPEED query. This is the effective rate of
  632. // transfer of data available to the ATM layer user, after allowing for
  633. // the ATM cell header.
  634. //
  635. #define ATM_USER_DATA_RATE_SONET_155 1356317
  636. #define ATM_USER_DATA_RATE_IBM_25 227556
  637. //
  638. // The ATM Service Registry MIB Table is used to locate ATM network
  639. // services. OID_ATM_GET_SERVICE_ADDRESS is used by clients to access
  640. // this table.
  641. //
  642. typedef ULONG ATM_SERVICE_REGISTRY_TYPE;
  643. #define ATM_SERVICE_REGISTRY_LECS 1 // LAN Emulation Configuration Server
  644. #define ATM_SERVICE_REGISTRY_ANS 2 // ATM Name Server
  645. //
  646. // Structure passed to OID_ATM_GET_SERVICE_ADDRESS.
  647. //
  648. typedef struct _ATM_SERVICE_ADDRESS_LIST
  649. {
  650. ATM_SERVICE_REGISTRY_TYPE ServiceRegistryType;
  651. ULONG NumberOfAddressesAvailable;
  652. ULONG NumberOfAddressesReturned;
  653. ATM_ADDRESS Address[1];
  654. } ATM_SERVICE_ADDRESS_LIST, *PATM_SERVICE_ADDRESS_LIST;
  655. #endif // _ATM_H_