3 * @copy 2012 MinGW.org project
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
12 * The above copyright notice and this permission notice (including the next
13 * paragraph) shall be included in all copies or substantial portions of the
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
29 * This file is part of the w32api package.
32 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
34 * THIS SOFTWARE IS NOT COPYRIGHTED
36 * This source code is offered for use in the public domain. You may
37 * use, modify or distribute it freely.
39 * This code is distributed in the hope that it will be useful but
40 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
41 * DISCLAIMED. This includes but is not limited to warranties of
42 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
48 #pragma GCC system_header
54 typedef ULONG ATM_ADDRESSTYPE;
56 #define SAP_TYPE_NSAP 1
57 #define SAP_TYPE_E164 2
59 #define ATM_MEDIA_SPECIFIC 1
61 #define CALLMGR_SPECIFIC_Q2931 1
66 #define ATM_MAC_ADDRESS_LENGTH 6
67 #define ATM_ADDRESS_LENGTH 20
69 typedef ULONG ATM_AAL_TYPE, *PATM_AAL_TYPE;
71 #define AAL_TYPE_AAL0 1
72 #define AAL_TYPE_AAL1 2
73 #define AAL_TYPE_AAL34 4
74 #define AAL_TYPE_AAL5 8
76 #define ATM_ADDR_BLANK_CHAR L' '
77 #define ATM_ADDR_E164_START_CHAR L'+'
78 #define ATM_ADDR_PUNCTUATION_CHAR L'.'
83 IE_BroadbandBearerCapability,
87 IE_CalledPartySubaddress,
88 IE_CallingPartyNumber,
89 IE_CallingPartySubaddress,
92 IE_TransitNetworkSelection,
93 IE_BroadbandSendingComplete,
98 typedef struct _Q2931_IE {
102 } Q2931_IE, *PQ2931_IE;
104 typedef struct _AAL1_PARAMETERS {
108 UCHAR SourceClockRecoveryMethod;
109 UCHAR ErrorCorrectionMethod;
110 USHORT StructuredDataTransferBlocksize;
111 UCHAR PartiallyFilledCellsMethod;
112 } AAL1_PARAMETERS, *PAAL1_PARAMETERS;
114 typedef struct _AAL34_PARAMETERS {
115 USHORT ForwardMaxCPCSSDUSize;
116 USHORT BackwardMaxCPCSSDUSize;
120 } AAL34_PARAMETERS, *PAAL34_PARAMETERS;
122 /* AAL5_PARAMETERS.Mode constants */
123 #define AAL5_MODE_MESSAGE 0x01
124 #define AAL5_MODE_STREAMING 0x02
126 /* AAL5_PARAMETERS.SSCSType constants */
127 #define AAL5_SSCS_NULL 0x00
128 #define AAL5_SSCS_SSCOP_ASSURED 0x01
129 #define AAL5_SSCS_SSCOP_NON_ASSURED 0x02
130 #define AAL5_SSCS_FRAME_RELAY 0x04
132 typedef struct _AAL5_PARAMETERS {
133 ULONG ForwardMaxCPCSSDUSize;
134 ULONG BackwardMaxCPCSSDUSize;
137 } AAL5_PARAMETERS, *PAAL5_PARAMETERS;
139 typedef struct _AALUSER_PARAMETERS {
141 } AALUSER_PARAMETERS, *PAALUSER_PARAMETERS;
143 typedef struct _AAL_PARAMETERS_IE {
144 ATM_AAL_TYPE AALType;
146 AAL1_PARAMETERS AAL1Parameters;
147 AAL34_PARAMETERS AAL34Parameters;
148 AAL5_PARAMETERS AAL5Parameters;
149 AALUSER_PARAMETERS AALUserParameters;
150 } AALSpecificParameters;
151 } AAL_PARAMETERS_IE, *PAAL_PARAMETERS_IE;
154 /* FIXME: Should the union be anonymous in C++ too? If so,
155 can't define named types _ATM_AAL5_INFO and _ATM_AAL0_INFO
156 within anonymous union for C++. */
157 typedef struct _ATM_AAL_OOB_INFO
159 ATM_AAL_TYPE AalType;
164 struct _ATM_AAL5_INFO {
165 BOOLEAN CellLossPriority;
166 UCHAR UserToUserIndication;
167 UCHAR CommonPartIndicator;
170 struct _ATM_AAL0_INFO {
171 BOOLEAN CellLossPriority;
172 UCHAR PayLoadTypeIdentifier;
179 } ATM_AAL_OOB_INFO, *PATM_AAL_OOB_INFO;
181 typedef struct _ATM_ADDRESS {
182 ATM_ADDRESSTYPE AddressType;
183 ULONG NumberOfDigits;
184 UCHAR Address[ATM_ADDRESS_LENGTH];
185 } ATM_ADDRESS, *PATM_ADDRESS;
187 /* ATM_BHLI_IE.HighLayerInfoType constants */
188 #define BHLI_ISO 0x00
189 #define BHLI_UserSpecific 0x01
190 #define BHLI_HighLayerProfile 0x02
191 #define BHLI_VendorSpecificAppId 0x03
193 typedef struct _ATM_BHLI_IE {
194 ULONG HighLayerInfoType;
195 ULONG HighLayerInfoLength;
196 UCHAR HighLayerInfo[8];
197 } ATM_BHLI_IE, *PATM_BHLI_IE;
199 /* ATM_BLLI_IE.Layer2Protocol constants */
200 #define BLLI_L2_ISO_1745 0x01
201 #define BLLI_L2_Q921 0x02
202 #define BLLI_L2_X25L 0x06
203 #define BLLI_L2_X25M 0x07
204 #define BLLI_L2_ELAPB 0x08
205 #define BLLI_L2_HDLC_ARM 0x09
206 #define BLLI_L2_HDLC_NRM 0x0A
207 #define BLLI_L2_HDLC_ABM 0x0B
208 #define BLLI_L2_LLC 0x0C
209 #define BLLI_L2_X75 0x0D
210 #define BLLI_L2_Q922 0x0E
211 #define BLLI_L2_USER_SPECIFIED 0x10
212 #define BLLI_L2_ISO_7776 0x11
214 /* ATM_BLLI_IE.Layer3Protocol constants */
215 #define BLLI_L3_X25 0x06
216 #define BLLI_L3_ISO_8208 0x07
217 #define BLLI_L3_X223 0x08
218 #define BLLI_L3_SIO_8473 0x09
219 #define BLLI_L3_T70 0x0A
220 #define BLLI_L3_ISO_TR9577 0x0B
221 #define BLLI_L3_USER_SPECIFIED 0x10
223 /* ATM_BLLI_IE.Layer3IPI constants */
224 #define BLLI_L3_IPI_SNAP 0x80
225 #define BLLI_L3_IPI_IP 0xCC
227 typedef struct _ATM_BLLI_IE {
228 ULONG Layer2Protocol;
230 UCHAR Layer2WindowSize;
231 ULONG Layer2UserSpecifiedProtocol;
232 ULONG Layer3Protocol;
234 UCHAR Layer3DefaultPacketSize;
235 UCHAR Layer3PacketWindowSize;
236 ULONG Layer3UserSpecifiedProtocol;
239 } ATM_BLLI_IE, *PATM_BLLI_IE;
241 /* ATM_BROADBAND_BEARER_CAPABILITY_IE.BearerClass constants */
246 /* ATM_BROADBAND_BEARER_CAPABILITY_IE.TrafficType constants */
247 #define TT_NOIND 0x00
251 /* ATM_BROADBAND_BEARER_CAPABILITY_IE.TimingRequirements constants */
252 #define TR_NOIND 0x00
253 #define TR_END_TO_END 0x01
254 #define TR_NO_END_TO_END 0x02
256 /* ATM_BROADBAND_BEARER_CAPABILITY_IE.ClippingSusceptability constants */
257 #define CLIP_NOT 0x00
258 #define CLIP_SUS 0x20
260 /* ATM_BROADBAND_BEARER_CAPABILITY_IE.UserPlaneConnectionConfig constants */
264 typedef struct _ATM_BROADBAND_BEARER_CAPABILITY_IE {
267 UCHAR TimingRequirements;
268 UCHAR ClippingSusceptability;
269 UCHAR UserPlaneConnectionConfig;
270 } ATM_BROADBAND_BEARER_CAPABILITY_IE, *PATM_BROADBAND_BEARER_CAPABILITY_IE;
272 typedef struct _ATM_BROADBAND_SENDING_COMPLETE_IE {
273 UCHAR SendingComplete;
274 } ATM_BROADBAND_SENDING_COMPLETE_IE, *PATM_BROADBAND_SENDING_COMPLETE_IE;
276 typedef struct _ATM_CALLING_PARTY_NUMBER_IE {
278 UCHAR PresentationIndication;
279 UCHAR ScreeningIndicator;
280 } ATM_CALLING_PARTY_NUMBER_IE, *PATM_CALLING_PARTY_NUMBER_IE;
282 /* ATM_CAUSE_IE.Location constants */
283 #define ATM_CAUSE_LOC_USER 0x00
284 #define ATM_CAUSE_LOC_PRIVATE_LOCAL 0x01
285 #define ATM_CAUSE_LOC_PUBLIC_LOCAL 0x02
286 #define ATM_CAUSE_LOC_TRANSIT_NETWORK 0x03
287 #define ATM_CAUSE_LOC_PUBLIC_REMOTE 0x04
288 #define ATM_CAUSE_LOC_PRIVATE_REMOTE 0x05
289 #define ATM_CAUSE_LOC_INTERNATIONAL_NETWORK 0x07
290 #define ATM_CAUSE_LOC_BEYOND_INTERWORKING 0x0A
292 /* ATM_CAUSE_IE.Cause constants */
293 #define ATM_CAUSE_UNALLOCATED_NUMBER 0x01
294 #define ATM_CAUSE_NO_ROUTE_TO_TRANSIT_NETWORK 0x02
295 #define ATM_CAUSE_NO_ROUTE_TO_DESTINATION 0x03
296 #define ATM_CAUSE_VPI_VCI_UNACCEPTABLE 0x0A
297 #define ATM_CAUSE_NORMAL_CALL_CLEARING 0x10
298 #define ATM_CAUSE_USER_BUSY 0x11
299 #define ATM_CAUSE_NO_USER_RESPONDING 0x12
300 #define ATM_CAUSE_CALL_REJECTED 0x15
301 #define ATM_CAUSE_NUMBER_CHANGED 0x16
302 #define ATM_CAUSE_USER_REJECTS_CLIR 0x17
303 #define ATM_CAUSE_DESTINATION_OUT_OF_ORDER 0x1B
304 #define ATM_CAUSE_INVALID_NUMBER_FORMAT 0x1C
305 #define ATM_CAUSE_STATUS_ENQUIRY_RESPONSE 0x1E
306 #define ATM_CAUSE_NORMAL_UNSPECIFIED 0x1F
307 #define ATM_CAUSE_VPI_VCI_UNAVAILABLE 0x23
308 #define ATM_CAUSE_NETWORK_OUT_OF_ORDER 0x26
309 #define ATM_CAUSE_TEMPORARY_FAILURE 0x29
310 #define ATM_CAUSE_ACCESS_INFORMAION_DISCARDED 0x2B
311 #define ATM_CAUSE_NO_VPI_VCI_AVAILABLE 0x2D
312 #define ATM_CAUSE_RESOURCE_UNAVAILABLE 0x2F
313 #define ATM_CAUSE_QOS_UNAVAILABLE 0x31
314 #define ATM_CAUSE_USER_CELL_RATE_UNAVAILABLE 0x33
315 #define ATM_CAUSE_BEARER_CAPABILITY_UNAUTHORIZED 0x39
316 #define ATM_CAUSE_BEARER_CAPABILITY_UNAVAILABLE 0x3A
317 #define ATM_CAUSE_OPTION_UNAVAILABLE 0x3F
318 #define ATM_CAUSE_BEARER_CAPABILITY_UNIMPLEMENTED 0x41
319 #define ATM_CAUSE_UNSUPPORTED_TRAFFIC_PARAMETERS 0x49
320 #define ATM_CAUSE_INVALID_CALL_REFERENCE 0x51
321 #define ATM_CAUSE_CHANNEL_NONEXISTENT 0x52
322 #define ATM_CAUSE_INCOMPATIBLE_DESTINATION 0x58
323 #define ATM_CAUSE_INVALID_ENDPOINT_REFERENCE 0x59
324 #define ATM_CAUSE_INVALID_TRANSIT_NETWORK_SELECTION 0x5B
325 #define ATM_CAUSE_TOO_MANY_PENDING_ADD_PARTY 0x5C
326 #define ATM_CAUSE_AAL_PARAMETERS_UNSUPPORTED 0x5D
327 #define ATM_CAUSE_MANDATORY_IE_MISSING 0x60
328 #define ATM_CAUSE_UNIMPLEMENTED_MESSAGE_TYPE 0x61
329 #define ATM_CAUSE_UNIMPLEMENTED_IE 0x63
330 #define ATM_CAUSE_INVALID_IE_CONTENTS 0x64
331 #define ATM_CAUSE_INVALID_STATE_FOR_MESSAGE 0x65
332 #define ATM_CAUSE_RECOVERY_ON_TIMEOUT 0x66
333 #define ATM_CAUSE_INCORRECT_MESSAGE_LENGTH 0x68
334 #define ATM_CAUSE_PROTOCOL_ERROR 0x6F
336 /* ATM_CAUSE_IE.Diagnostics constants */
337 #define ATM_CAUSE_COND_UNKNOWN 0x00
338 #define ATM_CAUSE_COND_PERMANENT 0x01
339 #define ATM_CAUSE_COND_TRANSIENT 0x02
340 #define ATM_CAUSE_REASON_USER 0x00
341 #define ATM_CAUSE_REASON_IE_MISSING 0x04
342 #define ATM_CAUSE_REASON_IE_INSUFFICIENT 0x08
343 #define ATM_CAUSE_PU_PROVIDER 0x00
344 #define ATM_CAUSE_PU_USER 0x08
345 #define ATM_CAUSE_NA_NORMAL 0x00
346 #define ATM_CAUSE_NA_ABNORMAL 0x04
348 typedef struct _ATM_CAUSE_IE {
351 UCHAR DiagnosticsLength;
352 UCHAR Diagnostics[4];
353 } ATM_CAUSE_IE, *PATM_CAUSE_IE;
356 typedef ULONG ATM_SERVICE_CATEGORY, *PATM_SERVICE_CATEGORY;
358 /* ATM_FLOW_PARAMETERS.ServiceCategory constants */
359 #define ATM_SERVICE_CATEGORY_CBR 1
360 #define ATM_SERVICE_CATEGORY_VBR 2
361 #define ATM_SERVICE_CATEGORY_UBR 4
362 #define ATM_SERVICE_CATEGORY_ABR 8
364 /* ATM_FLOW_PARAMETERS.Reserved1 constants */
365 #define ATM_FLOW_PARAMS_RSVD1_MPP 0x01
367 typedef struct _ATM_FLOW_PARAMETERS {
368 ATM_SERVICE_CATEGORY ServiceCategory;
369 ULONG AverageCellRate;
371 ULONG MinimumCellRate;
372 ULONG InitialCellRate;
373 ULONG BurstLengthCells;
375 ULONG TransientBufferExposure;
376 ULONG CumulativeRMFixedRTT;
377 UCHAR RateIncreaseFactor;
378 UCHAR RateDecreaseFactor;
379 USHORT ACRDecreaseTimeFactor;
380 UCHAR MaximumCellsPerForwardRMCell;
381 UCHAR MaximumForwardRMCellInterval;
382 UCHAR CutoffDecreaseFactor;
384 ULONG MissingRMCellCount;
387 } ATM_FLOW_PARAMETERS, *PATM_FLOW_PARAMETERS;
389 typedef struct _ATM_VPIVCI {
392 } ATM_VPIVCI, *PATM_VPIVCI;
394 typedef struct _ATM_MEDIA_PARAMETERS {
395 ATM_VPIVCI ConnectionId;
396 ATM_AAL_TYPE AALType;
397 ULONG CellDelayVariationCLP0;
398 ULONG CellDelayVariationCLP1;
399 ULONG CellLossRatioCLP0;
400 ULONG CellLossRatioCLP1;
401 ULONG CellTransferDelayCLP0;
402 ULONG CellTransferDelayCLP1;
404 ATM_FLOW_PARAMETERS Transmit;
405 ATM_FLOW_PARAMETERS Receive;
406 } ATM_MEDIA_PARAMETERS, *PATM_MEDIA_PARAMETERS;
408 typedef struct _ATM_PVC_SAP {
411 } ATM_PVC_SAP, *PATM_PVC_SAP;
413 /* ATM_QOS_CLASS_IE constants */
414 #define QOS_CLASS0 0x00
415 #define QOS_CLASS1 0x01
416 #define QOS_CLASS2 0x02
417 #define QOS_CLASS3 0x03
418 #define QOS_CLASS4 0x04
420 typedef struct _ATM_QOS_CLASS_IE {
421 UCHAR QOSClassForward;
422 UCHAR QOSClassBackward;
423 } ATM_QOS_CLASS_IE, *PATM_QOS_CLASS_IE;
425 typedef struct _ATM_RAW_IE {
429 } ATM_RAW_IE, *PATM_RAW_IE;
431 typedef struct _ATM_SAP {
434 ULONG NumberOfAddresses;
436 } ATM_SAP, *PATM_SAP;
438 typedef struct _ATM_TRAFFIC_DESCRIPTOR {
439 ULONG PeakCellRateCLP0;
440 ULONG PeakCellRateCLP01;
441 ULONG SustainableCellRateCLP0;
442 ULONG SustainableCellRateCLP01;
443 ULONG MaximumBurstSizeCLP0;
444 ULONG MaximumBurstSizeCLP01;
447 } ATM_TRAFFIC_DESCRIPTOR, *PATM_TRAFFIC_DESCRIPTOR;
449 typedef struct _ATM_TRAFFIC_DESCRIPTOR_IE {
450 ATM_TRAFFIC_DESCRIPTOR ForwardTD;
451 ATM_TRAFFIC_DESCRIPTOR BackwardTD;
453 } ATM_TRAFFIC_DESCRIPTOR_IE, *PATM_TRAFFIC_DESCRIPTOR_IE;
455 /* ATM_TRANSIT_NETWORK_SELECTION_IE.TypeOfNetworkId constants */
456 #define TNS_TYPE_NATIONAL 0x40
458 /* ATM_TRANSIT_NETWORK_SELECTION_IE.NetworkIdPlan constants */
459 #define TNS_PLAN_CARRIER_ID_CODE 0x01
461 typedef struct _ATM_TRANSIT_NETWORK_SELECTION_IE {
462 UCHAR TypeOfNetworkId;
464 UCHAR NetworkIdLength;
466 } ATM_TRANSIT_NETWORK_SELECTION_IE, *PATM_TRANSIT_NETWORK_SELECTION_IE;
468 typedef struct _ATM_LIJ_CALLID_IE {
470 } ATM_LIJ_CALLID_IE, *PATM_LIJ_CALLID_IE;
472 /* Q2931_ADD_PVC.Flags constants */
473 #define CO_FLAG_SIGNALING_VC 0x00000001
474 #define CO_FLAG_NO_DEST_SAP 0x00000002
476 typedef struct _Q2931_ADD_PVC {
477 ATM_ADDRESS CalledParty;
478 ATM_ADDRESS CallingParty;
479 ATM_VPIVCI ConnectionId;
480 ATM_AAL_TYPE AALType;
481 ATM_FLOW_PARAMETERS ForwardFP;
482 ATM_FLOW_PARAMETERS BackwardFP;
484 ATM_PVC_SAP LocalSap;
485 ATM_PVC_SAP DestinationSap;
486 BOOLEAN LIJIdPresent;
487 ATM_LIJ_CALLID_IE LIJId;
488 } Q2931_ADD_PVC, *PQ2931_ADD_PVC;
490 typedef struct _Q2931_DELETE_PVC {
491 ATM_VPIVCI ConnectionId;
492 } Q2931_DELETE_PVC, *PQ2931_DELETE_PVC;
494 typedef ATM_ADDRESS ATM_CALLED_PARTY_NUMBER_IE;
495 typedef ATM_ADDRESS ATM_CALLED_PARTY_SUBADDRESS_IE;
496 typedef ATM_ADDRESS ATM_CALLING_PARTY_SUBADDRESS_IE;
498 typedef struct _Q2931_CALLMGR_PARAMETERS {
499 ATM_ADDRESS CalledParty;
500 ATM_ADDRESS CallingParty;
501 ULONG InfoElementCount;
502 UCHAR InfoElements[1];
503 } Q2931_CALLMGR_PARAMETERS, *PQ2931_CALLMGR_PARAMETERS;
505 typedef struct _ATM_VC_RATES_SUPPORTED {
508 } ATM_VC_RATES_SUPPORTED, *PATM_VC_RATES_SUPPORTED;
510 typedef ULONG ATM_SERVICE_REGISTRY_TYPE;
512 /* ATM_SERVICE_ADDRESS_LIST.ServiceRegistryType constants */
513 #define ATM_SERVICE_REGISTRY_LECS 1
514 #define ATM_SERVICE_REGISTRY_ANS 2
516 typedef struct _ATM_SERVICE_ADDRESS_LIST {
517 ATM_SERVICE_REGISTRY_TYPE ServiceRegistryType;
518 ULONG NumberOfAddressesAvailable;
519 ULONG NumberOfAddressesReturned;
520 ATM_ADDRESS Address[1];
521 } ATM_SERVICE_ADDRESS_LIST, *PATM_SERVICE_ADDRESS_LIST;