source: Daodan/MinGW/include/ddk/atm.h@ 1098

Last change on this file since 1098 was 1046, checked in by alloc, 8 years ago

Daodan: Added Windows MinGW and build batch file

File size: 15.5 KB
Line 
1/*
2 * atm.h
3 *
4 * ATM support
5 *
6 * This file is part of the w32api package.
7 *
8 * Contributors:
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
10 *
11 * THIS SOFTWARE IS NOT COPYRIGHTED
12 *
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
15 *
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20 *
21 */
22
23#ifndef __ATM_H
24#define __ATM_H
25
26#if __GNUC__ >=3
27#pragma GCC system_header
28#endif
29
30#ifdef __cplusplus
31extern "C" {
32#endif
33
34typedef ULONG ATM_ADDRESSTYPE;
35
36#define SAP_TYPE_NSAP 1
37#define SAP_TYPE_E164 2
38
39#define ATM_MEDIA_SPECIFIC 1
40
41#define CALLMGR_SPECIFIC_Q2931 1
42
43#define ATM_NSAP 0
44#define ATM_E164 1
45
46#define ATM_MAC_ADDRESS_LENGTH 6
47#define ATM_ADDRESS_LENGTH 20
48
49typedef ULONG ATM_AAL_TYPE, *PATM_AAL_TYPE;
50
51#define AAL_TYPE_AAL0 1
52#define AAL_TYPE_AAL1 2
53#define AAL_TYPE_AAL34 4
54#define AAL_TYPE_AAL5 8
55
56#define ATM_ADDR_BLANK_CHAR L' '
57#define ATM_ADDR_E164_START_CHAR L'+'
58#define ATM_ADDR_PUNCTUATION_CHAR L'.'
59
60typedef enum {
61 IE_AALParameters,
62 IE_TrafficDescriptor,
63 IE_BroadbandBearerCapability,
64 IE_BHLI,
65 IE_BLLI,
66 IE_CalledPartyNumber,
67 IE_CalledPartySubaddress,
68 IE_CallingPartyNumber,
69 IE_CallingPartySubaddress,
70 IE_Cause,
71 IE_QOSClass,
72 IE_TransitNetworkSelection,
73 IE_BroadbandSendingComplete,
74 IE_LIJCallId,
75 IE_Raw
76} Q2931_IE_TYPE;
77
78typedef struct _Q2931_IE {
79 Q2931_IE_TYPE IEType;
80 ULONG IELength;
81 UCHAR IE[1];
82} Q2931_IE, *PQ2931_IE;
83
84typedef struct _AAL1_PARAMETERS {
85 UCHAR Subtype;
86 UCHAR CBRRate;
87 USHORT Multiplier;
88 UCHAR SourceClockRecoveryMethod;
89 UCHAR ErrorCorrectionMethod;
90 USHORT StructuredDataTransferBlocksize;
91 UCHAR PartiallyFilledCellsMethod;
92} AAL1_PARAMETERS, *PAAL1_PARAMETERS;
93
94typedef struct _AAL34_PARAMETERS {
95 USHORT ForwardMaxCPCSSDUSize;
96 USHORT BackwardMaxCPCSSDUSize;
97 USHORT LowestMID;
98 USHORT HighestMID;
99 UCHAR SSCSType;
100} AAL34_PARAMETERS, *PAAL34_PARAMETERS;
101
102/* AAL5_PARAMETERS.Mode constants */
103#define AAL5_MODE_MESSAGE 0x01
104#define AAL5_MODE_STREAMING 0x02
105
106/* AAL5_PARAMETERS.SSCSType constants */
107#define AAL5_SSCS_NULL 0x00
108#define AAL5_SSCS_SSCOP_ASSURED 0x01
109#define AAL5_SSCS_SSCOP_NON_ASSURED 0x02
110#define AAL5_SSCS_FRAME_RELAY 0x04
111
112typedef struct _AAL5_PARAMETERS {
113 ULONG ForwardMaxCPCSSDUSize;
114 ULONG BackwardMaxCPCSSDUSize;
115 UCHAR Mode;
116 UCHAR SSCSType;
117} AAL5_PARAMETERS, *PAAL5_PARAMETERS;
118
119typedef struct _AALUSER_PARAMETERS {
120 ULONG UserDefined;
121} AALUSER_PARAMETERS, *PAALUSER_PARAMETERS;
122
123typedef struct _AAL_PARAMETERS_IE {
124 ATM_AAL_TYPE AALType;
125 union {
126 AAL1_PARAMETERS AAL1Parameters;
127 AAL34_PARAMETERS AAL34Parameters;
128 AAL5_PARAMETERS AAL5Parameters;
129 AALUSER_PARAMETERS AALUserParameters;
130 } AALSpecificParameters;
131} AAL_PARAMETERS_IE, *PAAL_PARAMETERS_IE;
132
133
134/* FIXME: Should the union be anonymous in C++ too? If so,
135 can't define named types _ATM_AAL5_INFO and _ATM_AAL0_INFO
136 within anonymous union for C++. */
137typedef struct _ATM_AAL_OOB_INFO
138{
139 ATM_AAL_TYPE AalType;
140#ifndef __cplusplus
141 _ANONYMOUS_UNION
142#endif
143 union {
144 struct _ATM_AAL5_INFO {
145 BOOLEAN CellLossPriority;
146 UCHAR UserToUserIndication;
147 UCHAR CommonPartIndicator;
148 } ATM_AAL5_INFO;
149
150 struct _ATM_AAL0_INFO {
151 BOOLEAN CellLossPriority;
152 UCHAR PayLoadTypeIdentifier;
153 } ATM_AAL0_INFO;
154#ifndef __cplusplus
155 } DUMMYUNIONNAME;
156#else
157 } u;
158#endif
159} ATM_AAL_OOB_INFO, *PATM_AAL_OOB_INFO;
160
161typedef struct _ATM_ADDRESS {
162 ATM_ADDRESSTYPE AddressType;
163 ULONG NumberOfDigits;
164 UCHAR Address[ATM_ADDRESS_LENGTH];
165} ATM_ADDRESS, *PATM_ADDRESS;
166
167/* ATM_BHLI_IE.HighLayerInfoType constants */
168#define BHLI_ISO 0x00
169#define BHLI_UserSpecific 0x01
170#define BHLI_HighLayerProfile 0x02
171#define BHLI_VendorSpecificAppId 0x03
172
173typedef struct _ATM_BHLI_IE {
174 ULONG HighLayerInfoType;
175 ULONG HighLayerInfoLength;
176 UCHAR HighLayerInfo[8];
177} ATM_BHLI_IE, *PATM_BHLI_IE;
178
179/* ATM_BLLI_IE.Layer2Protocol constants */
180#define BLLI_L2_ISO_1745 0x01
181#define BLLI_L2_Q921 0x02
182#define BLLI_L2_X25L 0x06
183#define BLLI_L2_X25M 0x07
184#define BLLI_L2_ELAPB 0x08
185#define BLLI_L2_HDLC_ARM 0x09
186#define BLLI_L2_HDLC_NRM 0x0A
187#define BLLI_L2_HDLC_ABM 0x0B
188#define BLLI_L2_LLC 0x0C
189#define BLLI_L2_X75 0x0D
190#define BLLI_L2_Q922 0x0E
191#define BLLI_L2_USER_SPECIFIED 0x10
192#define BLLI_L2_ISO_7776 0x11
193
194/* ATM_BLLI_IE.Layer3Protocol constants */
195#define BLLI_L3_X25 0x06
196#define BLLI_L3_ISO_8208 0x07
197#define BLLI_L3_X223 0x08
198#define BLLI_L3_SIO_8473 0x09
199#define BLLI_L3_T70 0x0A
200#define BLLI_L3_ISO_TR9577 0x0B
201#define BLLI_L3_USER_SPECIFIED 0x10
202
203/* ATM_BLLI_IE.Layer3IPI constants */
204#define BLLI_L3_IPI_SNAP 0x80
205#define BLLI_L3_IPI_IP 0xCC
206
207typedef struct _ATM_BLLI_IE {
208 ULONG Layer2Protocol;
209 UCHAR Layer2Mode;
210 UCHAR Layer2WindowSize;
211 ULONG Layer2UserSpecifiedProtocol;
212 ULONG Layer3Protocol;
213 UCHAR Layer3Mode;
214 UCHAR Layer3DefaultPacketSize;
215 UCHAR Layer3PacketWindowSize;
216 ULONG Layer3UserSpecifiedProtocol;
217 ULONG Layer3IPI;
218 UCHAR SnapId[5];
219} ATM_BLLI_IE, *PATM_BLLI_IE;
220
221/* ATM_BROADBAND_BEARER_CAPABILITY_IE.BearerClass constants */
222#define BCOB_A 0x00
223#define BCOB_C 0x01
224#define BCOB_X 0x02
225
226/* ATM_BROADBAND_BEARER_CAPABILITY_IE.TrafficType constants */
227#define TT_NOIND 0x00
228#define TT_CBR 0x04
229#define TT_VBR 0x08
230
231/* ATM_BROADBAND_BEARER_CAPABILITY_IE.TimingRequirements constants */
232#define TR_NOIND 0x00
233#define TR_END_TO_END 0x01
234#define TR_NO_END_TO_END 0x02
235
236/* ATM_BROADBAND_BEARER_CAPABILITY_IE.ClippingSusceptability constants */
237#define CLIP_NOT 0x00
238#define CLIP_SUS 0x20
239
240/* ATM_BROADBAND_BEARER_CAPABILITY_IE.UserPlaneConnectionConfig constants */
241#define UP_P2P 0x00
242#define UP_P2MP 0x01
243
244typedef struct _ATM_BROADBAND_BEARER_CAPABILITY_IE {
245 UCHAR BearerClass;
246 UCHAR TrafficType;
247 UCHAR TimingRequirements;
248 UCHAR ClippingSusceptability;
249 UCHAR UserPlaneConnectionConfig;
250} ATM_BROADBAND_BEARER_CAPABILITY_IE, *PATM_BROADBAND_BEARER_CAPABILITY_IE;
251
252typedef struct _ATM_BROADBAND_SENDING_COMPLETE_IE {
253 UCHAR SendingComplete;
254} ATM_BROADBAND_SENDING_COMPLETE_IE, *PATM_BROADBAND_SENDING_COMPLETE_IE;
255
256typedef struct _ATM_CALLING_PARTY_NUMBER_IE {
257 ATM_ADDRESS Number;
258 UCHAR PresentationIndication;
259 UCHAR ScreeningIndicator;
260} ATM_CALLING_PARTY_NUMBER_IE, *PATM_CALLING_PARTY_NUMBER_IE;
261
262/* ATM_CAUSE_IE.Location constants */
263#define ATM_CAUSE_LOC_USER 0x00
264#define ATM_CAUSE_LOC_PRIVATE_LOCAL 0x01
265#define ATM_CAUSE_LOC_PUBLIC_LOCAL 0x02
266#define ATM_CAUSE_LOC_TRANSIT_NETWORK 0x03
267#define ATM_CAUSE_LOC_PUBLIC_REMOTE 0x04
268#define ATM_CAUSE_LOC_PRIVATE_REMOTE 0x05
269#define ATM_CAUSE_LOC_INTERNATIONAL_NETWORK 0x07
270#define ATM_CAUSE_LOC_BEYOND_INTERWORKING 0x0A
271
272/* ATM_CAUSE_IE.Cause constants */
273#define ATM_CAUSE_UNALLOCATED_NUMBER 0x01
274#define ATM_CAUSE_NO_ROUTE_TO_TRANSIT_NETWORK 0x02
275#define ATM_CAUSE_NO_ROUTE_TO_DESTINATION 0x03
276#define ATM_CAUSE_VPI_VCI_UNACCEPTABLE 0x0A
277#define ATM_CAUSE_NORMAL_CALL_CLEARING 0x10
278#define ATM_CAUSE_USER_BUSY 0x11
279#define ATM_CAUSE_NO_USER_RESPONDING 0x12
280#define ATM_CAUSE_CALL_REJECTED 0x15
281#define ATM_CAUSE_NUMBER_CHANGED 0x16
282#define ATM_CAUSE_USER_REJECTS_CLIR 0x17
283#define ATM_CAUSE_DESTINATION_OUT_OF_ORDER 0x1B
284#define ATM_CAUSE_INVALID_NUMBER_FORMAT 0x1C
285#define ATM_CAUSE_STATUS_ENQUIRY_RESPONSE 0x1E
286#define ATM_CAUSE_NORMAL_UNSPECIFIED 0x1F
287#define ATM_CAUSE_VPI_VCI_UNAVAILABLE 0x23
288#define ATM_CAUSE_NETWORK_OUT_OF_ORDER 0x26
289#define ATM_CAUSE_TEMPORARY_FAILURE 0x29
290#define ATM_CAUSE_ACCESS_INFORMAION_DISCARDED 0x2B
291#define ATM_CAUSE_NO_VPI_VCI_AVAILABLE 0x2D
292#define ATM_CAUSE_RESOURCE_UNAVAILABLE 0x2F
293#define ATM_CAUSE_QOS_UNAVAILABLE 0x31
294#define ATM_CAUSE_USER_CELL_RATE_UNAVAILABLE 0x33
295#define ATM_CAUSE_BEARER_CAPABILITY_UNAUTHORIZED 0x39
296#define ATM_CAUSE_BEARER_CAPABILITY_UNAVAILABLE 0x3A
297#define ATM_CAUSE_OPTION_UNAVAILABLE 0x3F
298#define ATM_CAUSE_BEARER_CAPABILITY_UNIMPLEMENTED 0x41
299#define ATM_CAUSE_UNSUPPORTED_TRAFFIC_PARAMETERS 0x49
300#define ATM_CAUSE_INVALID_CALL_REFERENCE 0x51
301#define ATM_CAUSE_CHANNEL_NONEXISTENT 0x52
302#define ATM_CAUSE_INCOMPATIBLE_DESTINATION 0x58
303#define ATM_CAUSE_INVALID_ENDPOINT_REFERENCE 0x59
304#define ATM_CAUSE_INVALID_TRANSIT_NETWORK_SELECTION 0x5B
305#define ATM_CAUSE_TOO_MANY_PENDING_ADD_PARTY 0x5C
306#define ATM_CAUSE_AAL_PARAMETERS_UNSUPPORTED 0x5D
307#define ATM_CAUSE_MANDATORY_IE_MISSING 0x60
308#define ATM_CAUSE_UNIMPLEMENTED_MESSAGE_TYPE 0x61
309#define ATM_CAUSE_UNIMPLEMENTED_IE 0x63
310#define ATM_CAUSE_INVALID_IE_CONTENTS 0x64
311#define ATM_CAUSE_INVALID_STATE_FOR_MESSAGE 0x65
312#define ATM_CAUSE_RECOVERY_ON_TIMEOUT 0x66
313#define ATM_CAUSE_INCORRECT_MESSAGE_LENGTH 0x68
314#define ATM_CAUSE_PROTOCOL_ERROR 0x6F
315
316/* ATM_CAUSE_IE.Diagnostics constants */
317#define ATM_CAUSE_COND_UNKNOWN 0x00
318#define ATM_CAUSE_COND_PERMANENT 0x01
319#define ATM_CAUSE_COND_TRANSIENT 0x02
320#define ATM_CAUSE_REASON_USER 0x00
321#define ATM_CAUSE_REASON_IE_MISSING 0x04
322#define ATM_CAUSE_REASON_IE_INSUFFICIENT 0x08
323#define ATM_CAUSE_PU_PROVIDER 0x00
324#define ATM_CAUSE_PU_USER 0x08
325#define ATM_CAUSE_NA_NORMAL 0x00
326#define ATM_CAUSE_NA_ABNORMAL 0x04
327
328typedef struct _ATM_CAUSE_IE {
329 UCHAR Location;
330 UCHAR Cause;
331 UCHAR DiagnosticsLength;
332 UCHAR Diagnostics[4];
333} ATM_CAUSE_IE, *PATM_CAUSE_IE;
334
335
336typedef ULONG ATM_SERVICE_CATEGORY, *PATM_SERVICE_CATEGORY;
337
338/* ATM_FLOW_PARAMETERS.ServiceCategory constants */
339#define ATM_SERVICE_CATEGORY_CBR 1
340#define ATM_SERVICE_CATEGORY_VBR 2
341#define ATM_SERVICE_CATEGORY_UBR 4
342#define ATM_SERVICE_CATEGORY_ABR 8
343
344/* ATM_FLOW_PARAMETERS.Reserved1 constants */
345#define ATM_FLOW_PARAMS_RSVD1_MPP 0x01
346
347typedef struct _ATM_FLOW_PARAMETERS {
348 ATM_SERVICE_CATEGORY ServiceCategory;
349 ULONG AverageCellRate;
350 ULONG PeakCellRate;
351 ULONG MinimumCellRate;
352 ULONG InitialCellRate;
353 ULONG BurstLengthCells;
354 ULONG MaxSduSize;
355 ULONG TransientBufferExposure;
356 ULONG CumulativeRMFixedRTT;
357 UCHAR RateIncreaseFactor;
358 UCHAR RateDecreaseFactor;
359 USHORT ACRDecreaseTimeFactor;
360 UCHAR MaximumCellsPerForwardRMCell;
361 UCHAR MaximumForwardRMCellInterval;
362 UCHAR CutoffDecreaseFactor;
363 UCHAR Reserved1;
364 ULONG MissingRMCellCount;
365 ULONG Reserved2;
366 ULONG Reserved3;
367} ATM_FLOW_PARAMETERS, *PATM_FLOW_PARAMETERS;
368
369typedef struct _ATM_VPIVCI {
370 ULONG Vpi;
371 ULONG Vci;
372} ATM_VPIVCI, *PATM_VPIVCI;
373
374typedef struct _ATM_MEDIA_PARAMETERS {
375 ATM_VPIVCI ConnectionId;
376 ATM_AAL_TYPE AALType;
377 ULONG CellDelayVariationCLP0;
378 ULONG CellDelayVariationCLP1;
379 ULONG CellLossRatioCLP0;
380 ULONG CellLossRatioCLP1;
381 ULONG CellTransferDelayCLP0;
382 ULONG CellTransferDelayCLP1;
383 ULONG DefaultCLP;
384 ATM_FLOW_PARAMETERS Transmit;
385 ATM_FLOW_PARAMETERS Receive;
386} ATM_MEDIA_PARAMETERS, *PATM_MEDIA_PARAMETERS;
387
388typedef struct _ATM_PVC_SAP {
389 ATM_BLLI_IE Blli;
390 ATM_BHLI_IE Bhli;
391} ATM_PVC_SAP, *PATM_PVC_SAP;
392
393/* ATM_QOS_CLASS_IE constants */
394#define QOS_CLASS0 0x00
395#define QOS_CLASS1 0x01
396#define QOS_CLASS2 0x02
397#define QOS_CLASS3 0x03
398#define QOS_CLASS4 0x04
399
400typedef struct _ATM_QOS_CLASS_IE {
401 UCHAR QOSClassForward;
402 UCHAR QOSClassBackward;
403} ATM_QOS_CLASS_IE, *PATM_QOS_CLASS_IE;
404
405typedef struct _ATM_RAW_IE {
406 ULONG RawIELength;
407 ULONG RawIEType;
408 UCHAR RawIEValue[1];
409} ATM_RAW_IE, *PATM_RAW_IE;
410
411typedef struct _ATM_SAP {
412 ATM_BLLI_IE Blli;
413 ATM_BHLI_IE Bhli;
414 ULONG NumberOfAddresses;
415 UCHAR Addresses[1];
416} ATM_SAP, *PATM_SAP;
417
418typedef struct _ATM_TRAFFIC_DESCRIPTOR {
419 ULONG PeakCellRateCLP0;
420 ULONG PeakCellRateCLP01;
421 ULONG SustainableCellRateCLP0;
422 ULONG SustainableCellRateCLP01;
423 ULONG MaximumBurstSizeCLP0;
424 ULONG MaximumBurstSizeCLP01;
425 BOOLEAN BestEffort;
426 BOOLEAN Tagging;
427} ATM_TRAFFIC_DESCRIPTOR, *PATM_TRAFFIC_DESCRIPTOR;
428
429typedef struct _ATM_TRAFFIC_DESCRIPTOR_IE {
430 ATM_TRAFFIC_DESCRIPTOR ForwardTD;
431 ATM_TRAFFIC_DESCRIPTOR BackwardTD;
432 BOOLEAN BestEffort;
433} ATM_TRAFFIC_DESCRIPTOR_IE, *PATM_TRAFFIC_DESCRIPTOR_IE;
434
435/* ATM_TRANSIT_NETWORK_SELECTION_IE.TypeOfNetworkId constants */
436#define TNS_TYPE_NATIONAL 0x40
437
438/* ATM_TRANSIT_NETWORK_SELECTION_IE.NetworkIdPlan constants */
439#define TNS_PLAN_CARRIER_ID_CODE 0x01
440
441typedef struct _ATM_TRANSIT_NETWORK_SELECTION_IE {
442 UCHAR TypeOfNetworkId;
443 UCHAR NetworkIdPlan;
444 UCHAR NetworkIdLength;
445 UCHAR NetworkId[1];
446} ATM_TRANSIT_NETWORK_SELECTION_IE, *PATM_TRANSIT_NETWORK_SELECTION_IE;
447
448typedef struct _ATM_LIJ_CALLID_IE {
449 ULONG Identifier;
450} ATM_LIJ_CALLID_IE, *PATM_LIJ_CALLID_IE;
451
452/* Q2931_ADD_PVC.Flags constants */
453#define CO_FLAG_SIGNALING_VC 0x00000001
454#define CO_FLAG_NO_DEST_SAP 0x00000002
455
456typedef struct _Q2931_ADD_PVC {
457 ATM_ADDRESS CalledParty;
458 ATM_ADDRESS CallingParty;
459 ATM_VPIVCI ConnectionId;
460 ATM_AAL_TYPE AALType;
461 ATM_FLOW_PARAMETERS ForwardFP;
462 ATM_FLOW_PARAMETERS BackwardFP;
463 ULONG Flags;
464 ATM_PVC_SAP LocalSap;
465 ATM_PVC_SAP DestinationSap;
466 BOOLEAN LIJIdPresent;
467 ATM_LIJ_CALLID_IE LIJId;
468} Q2931_ADD_PVC, *PQ2931_ADD_PVC;
469
470typedef struct _Q2931_DELETE_PVC {
471 ATM_VPIVCI ConnectionId;
472} Q2931_DELETE_PVC, *PQ2931_DELETE_PVC;
473
474typedef ATM_ADDRESS ATM_CALLED_PARTY_NUMBER_IE;
475typedef ATM_ADDRESS ATM_CALLED_PARTY_SUBADDRESS_IE;
476typedef ATM_ADDRESS ATM_CALLING_PARTY_SUBADDRESS_IE;
477
478typedef struct _Q2931_CALLMGR_PARAMETERS {
479 ATM_ADDRESS CalledParty;
480 ATM_ADDRESS CallingParty;
481 ULONG InfoElementCount;
482 UCHAR InfoElements[1];
483} Q2931_CALLMGR_PARAMETERS, *PQ2931_CALLMGR_PARAMETERS;
484
485typedef struct _ATM_VC_RATES_SUPPORTED {
486 ULONG MinCellRate;
487 ULONG MaxCellRate;
488} ATM_VC_RATES_SUPPORTED, *PATM_VC_RATES_SUPPORTED;
489
490typedef ULONG ATM_SERVICE_REGISTRY_TYPE;
491
492/* ATM_SERVICE_ADDRESS_LIST.ServiceRegistryType constants */
493#define ATM_SERVICE_REGISTRY_LECS 1
494#define ATM_SERVICE_REGISTRY_ANS 2
495
496typedef struct _ATM_SERVICE_ADDRESS_LIST {
497 ATM_SERVICE_REGISTRY_TYPE ServiceRegistryType;
498 ULONG NumberOfAddressesAvailable;
499 ULONG NumberOfAddressesReturned;
500 ATM_ADDRESS Address[1];
501} ATM_SERVICE_ADDRESS_LIST, *PATM_SERVICE_ADDRESS_LIST;
502
503#ifdef __cplusplus
504}
505#endif
506
507#endif /* __ATM_H */
Note: See TracBrowser for help on using the repository browser.