test: atm40.h Source File

Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

# atm40.h

Go to the documentation of this file.

    00001 /*++
    00002
    00003 Copyright (c) 1990-1994  Microsoft Corporation
    00004
    00005 Module Name:
    00006
    00007         atm.h
    00008
    00009 Abstract:
    00010
    00011         This module defines the structures, macros, and manifests available
    00012         to ATM aware components.
    00013
    00014 Author:
    00015
    00016         Jameel Hyder - jameelh@microsoft.com
    00017
    00018 Revision History:
    00019
    00020         Initial Version - March 1996
    00021 #ifdef MS_UNI4
    00022         John Dalgas (v-jdalga)  09/18/97                added support for UNI4.0 ATM CM
    00023 #endif // MS_UNI4
    00024
    00025 --*/
    00026
    00027 #ifndef _ATM_H_
    00028 #define _ATM_H_
    00029
    00030 //
    00031 // Address type
    00032 //
    00033 typedef ULONG   ATM_ADDRESSTYPE;
    00034
    00035 #define ATM_NSAP                                0
    00036 #define ATM_E164                                1
    00037
    00038 //
    00039 // ATM Address
    00040 //
    00041 #define ATM_MAC_ADDRESS_LENGTH  6               // Same as 802.x
    00042 #define ATM_ADDRESS_LENGTH              20
    00043
    00044 //
    00045 //  Special characters in ATM address string used in textual representations
    00046 //
    00047 #define ATM_ADDR_BLANK_CHAR                             L' '
    00048 #define ATM_ADDR_PUNCTUATION_CHAR               L'.'
    00049 #define ATM_ADDR_E164_START_CHAR                L'+'
    00050
    00051 typedef struct _ATM_ADDRESS
    00052 {
    00053         ATM_ADDRESSTYPE                         AddressType;
    00054         ULONG                                           NumberOfDigits;
    00055         UCHAR                                           Address[ATM_ADDRESS_LENGTH];
    00056 } ATM_ADDRESS, *PATM_ADDRESS;
    00057
    00058
    00059
    00060 //
    00061 // AAL types that the miniport supports
    00062 //
    00063 #define AAL_TYPE_AAL0                   1
    00064 #define AAL_TYPE_AAL1                   2
    00065 #define AAL_TYPE_AAL34                  4
    00066 #define AAL_TYPE_AAL5                   8
    00067
    00068 typedef ULONG   ATM_AAL_TYPE, *PATM_AAL_TYPE;
    00069
    00070
    00071 //
    00072 // Flags for Information Element types
    00073 //
    00074 #define ATM_IE_RESPONSE_FLAG            0x80000000
    00075 #define ATM_IE_EMPTY_FLAG                       0x40000000
    00076
    00077
    00078 //
    00079 // Types of Information Elements
    00080 //
    00081 typedef enum
    00082 {
    00083         // These identify request IEs
    00084         IE_AALParameters,
    00085         IE_TrafficDescriptor,
    00086         IE_BroadbandBearerCapability,
    00087         IE_BHLI,
    00088         IE_BLLI,
    00089         IE_CalledPartyNumber,
    00090         IE_CalledPartySubaddress,
    00091         IE_CallingPartyNumber,
    00092         IE_CallingPartySubaddress,
    00093         IE_Cause,
    00094         IE_QOSClass,
    00095         IE_TransitNetworkSelection,
    00096         IE_BroadbandSendingComplete,
    00097         IE_LIJCallId,
    00098         IE_Raw,
    00099 #ifdef MS_UNI4
    00100         IE_TrafficDescriptor_AddOn,
    00101         IE_BroadbandBearerCapability_Uni40,
    00102         IE_BLLI_AddOn,
    00103         IE_ConnectionId,
    00104         IE_NotificationIndicator,
    00105         IE_MinimumTrafficDescriptor,
    00106         IE_AlternativeTrafficDescriptor,
    00107         IE_ExtendedQOS,
    00108         IE_EndToEndTransitDelay,
    00109         IE_ABRSetupParameters,
    00110         IE_ABRAdditionalParameters,
    00111         IE_LIJParameters,
    00112         IE_LeafSequenceNumber,
    00113         IE_ConnectionScopeSelection,
    00114         IE_UserUser,
    00115         IE_GenericIDTransport,
    00116         IE_ConnectedNumber,                                     // invalid to use in request
    00117         IE_ConnectedSubaddress,                 // invalid to use in request
    00118 #endif // MS_UNI4
    00119         // End of request IEs
    00120         IE_NextRequest,                                         // invalid to use in request
    00121
    00122         // These identify empty IE buffers, to hold a possible response
    00123         IE_Cause_Empty                                          = IE_Cause                                      | ATM_IE_EMPTY_FLAG,
    00124 #ifdef MS_UNI4
    00125         IE_ConnectionId_Empty                           = IE_ConnectionId                       | ATM_IE_EMPTY_FLAG,
    00126         IE_ConnectedNumber_Empty                        = IE_ConnectedNumber            | ATM_IE_EMPTY_FLAG,
    00127         IE_ConnectedSubaddress_Empty            = IE_ConnectedSubaddress        | ATM_IE_EMPTY_FLAG,
    00128         IE_NotificationIndicator_Empty          = IE_NotificationIndicator      | ATM_IE_EMPTY_FLAG,
    00129         IE_UserUser_Empty                                       = IE_UserUser                           | ATM_IE_EMPTY_FLAG,
    00130         IE_GenericIDTransport_Empty                     = IE_GenericIDTransport         | ATM_IE_EMPTY_FLAG,
    00131 #endif // MS_UNI4
    00132
    00133         // These identify response IEs
    00134         IE_Cause_Response                                       = IE_Cause                                      | ATM_IE_RESPONSE_FLAG,
    00135         IE_AALParameters_Response                       = IE_AALParameters                      | ATM_IE_RESPONSE_FLAG,
    00136         IE_BLLI_Response                                        = IE_BLLI                                       | ATM_IE_RESPONSE_FLAG,
    00137 #ifdef MS_UNI4
    00138         IE_BLLI_AddOn_Response                          = IE_BLLI_AddOn                         | ATM_IE_RESPONSE_FLAG,
    00139         IE_TrafficDescriptor_Response           = IE_TrafficDescriptor          | ATM_IE_RESPONSE_FLAG,
    00140         IE_TrafficDescriptor_AddOn_Response     = IE_TrafficDescriptor_AddOn| ATM_IE_RESPONSE_FLAG,
    00141         IE_ConnectionId_Response                        = IE_ConnectionId                       | ATM_IE_RESPONSE_FLAG,
    00142         IE_NotificationIndicator_Response       = IE_NotificationIndicator      | ATM_IE_RESPONSE_FLAG,
    00143         IE_ExtendedQOS_Response                         = IE_ExtendedQOS                        | ATM_IE_RESPONSE_FLAG,
    00144         IE_EndToEndTransitDelay_Response        = IE_EndToEndTransitDelay       | ATM_IE_RESPONSE_FLAG,
    00145         IE_ABRSetupParameters_Response          = IE_ABRSetupParameters         | ATM_IE_RESPONSE_FLAG,
    00146         IE_ABRAdditionalParameters_Response     = IE_ABRAdditionalParameters| ATM_IE_RESPONSE_FLAG,
    00147         IE_ConnectedNumber_Response                     = IE_ConnectedNumber            | ATM_IE_RESPONSE_FLAG,
    00148         IE_ConnectedSubaddress_Response         = IE_ConnectedSubaddress        | ATM_IE_RESPONSE_FLAG,
    00149         IE_UserUser_Response                            = IE_UserUser                           | ATM_IE_RESPONSE_FLAG,
    00150         IE_GenericIDTransport_Response          = IE_GenericIDTransport         | ATM_IE_RESPONSE_FLAG,
    00151 #endif // MS_UNI4
    00152 } Q2931_IE_TYPE;
    00153
    00154
    00155
    00156 //
    00157 // Common header for each Information Element
    00158 //
    00159 typedef struct _Q2931_IE
    00160 {
    00161         Q2931_IE_TYPE                           IEType;
    00162         ULONG                                           IELength;       // Bytes, including IEType and IELength fields
    00163         UCHAR                                           IE[1];
    00164 } Q2931_IE, *PQ2931_IE;
    00165
    00166
    00167 //
    00168 // Definitions for SapType in CO_SAP
    00169 //
    00170 #define SAP_TYPE_NSAP                   0x00000001
    00171 #define SAP_TYPE_E164                   0x00000002
    00172
    00173 //
    00174 // Values used for the Mode field in AAL5_PARAMETERS
    00175 //
    00176 #define AAL5_MODE_MESSAGE                       0x01
    00177 #define AAL5_MODE_STREAMING                     0x02
    00178
    00179 //
    00180 // Values used for the SSCSType field in AAL5_PARAMETERS
    00181 //
    00182 #define AAL5_SSCS_NULL                          0x00
    00183 #define AAL5_SSCS_SSCOP_ASSURED         0x01
    00184 #define AAL5_SSCS_SSCOP_NON_ASSURED     0x02
    00185 #define AAL5_SSCS_FRAME_RELAY           0x04
    00186
    00187
    00188 //
    00189 // AAL Parameters
    00190 //
    00191 typedef struct _AAL1_PARAMETERS
    00192 {
    00193         UCHAR                                           Subtype;
    00194         UCHAR                                           CBRRate;
    00195         USHORT                                          Multiplier;                                                     // optional (exception: zero if absent)
    00196         UCHAR                                           SourceClockRecoveryMethod;                      // optional
    00197         UCHAR                                           ErrorCorrectionMethod;                          // optional
    00198         USHORT                                          StructuredDataTransferBlocksize;        // optional (exception: zero if absent)
    00199         UCHAR                                           PartiallyFilledCellsMethod;                     // optional
    00200 } AAL1_PARAMETERS, *PAAL1_PARAMETERS;
    00201
    00202 typedef struct _AAL34_PARAMETERS
    00203 {
    00204         USHORT                                          ForwardMaxCPCSSDUSize;
    00205         USHORT                                          BackwardMaxCPCSSDUSize;
    00206         USHORT                                          LowestMID;                                      // optional
    00207         USHORT                                          HighestMID;                                     // optional
    00208         UCHAR                                           SSCSType;                                       // optional
    00209 } AAL34_PARAMETERS, *PAAL34_PARAMETERS;
    00210
    00211 typedef struct _AAL5_PARAMETERS
    00212 {
    00213         ULONG                                           ForwardMaxCPCSSDUSize;
    00214         ULONG                                           BackwardMaxCPCSSDUSize;
    00215         UCHAR                                           Mode;
    00216         UCHAR                                           SSCSType;                                       // optional
    00217 } AAL5_PARAMETERS, *PAAL5_PARAMETERS;
    00218
    00219 typedef struct _AALUSER_PARAMETERS
    00220 {
    00221         ULONG                                           UserDefined;
    00222 } AALUSER_PARAMETERS, *PAALUSER_PARAMETERS;
    00223
    00224 typedef struct _AAL_PARAMETERS_IE
    00225 {
    00226         ATM_AAL_TYPE                            AALType;
    00227         union
    00228         {
    00229                 AAL1_PARAMETERS                 AAL1Parameters;
    00230                 AAL34_PARAMETERS                AAL34Parameters;
    00231                 AAL5_PARAMETERS                 AAL5Parameters;
    00232                 AALUSER_PARAMETERS              AALUserParameters;
    00233         } AALSpecificParameters;
    00234
    00235 } AAL_PARAMETERS_IE, *PAAL_PARAMETERS_IE;
    00236
    00237 //
    00238 // ATM Traffic Descriptor
    00239 //
    00240 typedef struct _ATM_TRAFFIC_DESCRIPTOR  // For one direction
    00241 {
    00242         ULONG                                           PeakCellRateCLP0;                       // optional
    00243         ULONG                                           PeakCellRateCLP01;                      // optional
    00244         ULONG                                           SustainableCellRateCLP0;        // optional
    00245         ULONG                                           SustainableCellRateCLP01;       // optional
    00246         ULONG                                           MaximumBurstSizeCLP0;           // optional
    00247         ULONG                                           MaximumBurstSizeCLP01;          // optional
    00248         BOOLEAN                                         Tagging;
    00249 } ATM_TRAFFIC_DESCRIPTOR, *PATM_TRAFFIC_DESCRIPTOR;
    00250
    00251
    00252 typedef struct _ATM_TRAFFIC_DESCRIPTOR_IE
    00253 {
    00254         ATM_TRAFFIC_DESCRIPTOR          ForwardTD;
    00255         ATM_TRAFFIC_DESCRIPTOR          BackwardTD;
    00256         BOOLEAN                                         BestEffort;
    00257 } ATM_TRAFFIC_DESCRIPTOR_IE, *PATM_TRAFFIC_DESCRIPTOR_IE;
    00258
    00259
    00260 #ifdef MS_UNI4
    00261 //
    00262 // ATM Traffic Descriptor Add-On for UNI 4.0+
    00263 //
    00264 // REQUIREMENT: An add-on IE must follow immediately after its ancestor IE.
    00265 //
    00266 typedef struct _ATM_TRAFFIC_DESCRIPTOR_ADDON    // For one direction
    00267 {
    00268         ULONG                                           ABRMinimumCellRateCLP01;        // optional
    00269         BOOLEAN                                         FrameDiscard;
    00270 } ATM_TRAFFIC_DESCRIPTOR_ADDON, *PATM_TRAFFIC_DESCRIPTOR_ADDON;
    00271
    00272
    00273 typedef struct _ATM_TRAFFIC_DESCRIPTOR_IE_ADDON
    00274 {
    00275         ATM_TRAFFIC_DESCRIPTOR_ADDON            ForwardTD;
    00276         ATM_TRAFFIC_DESCRIPTOR_ADDON            BackwardTD;
    00277 } ATM_TRAFFIC_DESCRIPTOR_IE_ADDON, *PATM_TRAFFIC_DESCRIPTOR_IE_ADDON;
    00278
    00279 #endif // MS_UNI4
    00280
    00281
    00282 #ifdef MS_UNI4
    00283 //
    00284 // Alternative Traffic Descriptor IE for UNI 4.0+
    00285 //
    00286 typedef struct ATM_ALTERNATIVE_TRAFFIC_DESCRIPTOR_IE
    00287 {
    00288         ATM_TRAFFIC_DESCRIPTOR_IE                       Part1;
    00289         ATM_TRAFFIC_DESCRIPTOR_IE_ADDON         Part2;
    00290 } ATM_ALTERNATIVE_TRAFFIC_DESCRIPTOR_IE, *PATM_ALTERNATIVE_TRAFFIC_DESCRIPTOR_IE;
    00291
    00292 #endif // MS_UNI4
    00293
    00294
    00295 #ifdef MS_UNI4
    00296 //
    00297 // ATM Minimum Acceptable Traffic Descriptor
    00298 //
    00299 typedef struct _ATM_MINIMUM_TRAFFIC_DESCRIPTOR  // For one direction
    00300 {
    00301         ULONG                                           PeakCellRateCLP0;                       // optional
    00302         ULONG                                           PeakCellRateCLP01;                      // optional
    00303         ULONG                                           MinimumCellRateCLP01;           // optional
    00304 } ATM_MINIMUM_TRAFFIC_DESCRIPTOR, *PATM_MINIMUM_TRAFFIC_DESCRIPTOR;
    00305
    00306
    00307 typedef struct _ATM_MINIMUM_TRAFFIC_DESCRIPTOR_IE
    00308 {
    00309         ATM_MINIMUM_TRAFFIC_DESCRIPTOR          ForwardTD;
    00310         ATM_MINIMUM_TRAFFIC_DESCRIPTOR          BackwardTD;
    00311 } ATM_MINIMUM_TRAFFIC_DESCRIPTOR_IE, *PATM_MINIMUM_TRAFFIC_DESCRIPTOR_IE;
    00312
    00313 #endif // MS_UNI4
    00314
    00315
    00316 //
    00317 // values used for the BearerClass field in the Broadband Bearer Capability
    00318 // and UNI 4.0 Broadband Bearer Capability IEs.
    00319 //
    00320
    00321
    00322 #define BCOB_A                                  0x00    // Bearer class A
    00323 #define BCOB_C                                  0x01    // Bearer class C
    00324 #define BCOB_X                                  0x02    // Bearer class X
    00325 #ifdef MS_UNI4_NOT_USED
    00326 #define BCOB_VP_SERVICE                 0x03    // VP service
    00327 #endif
    00328
    00329 //
    00330 // values used for the TrafficType field in the Broadband Bearer Capability IE
    00331 //
    00332 #define TT_NOIND                                0x00    // No indication of traffic type
    00333 #define TT_CBR                                  0x04    // Constant bit rate
    00334 #ifdef MS_UNI3_ERROR_KEPT
    00335 #define TT_VBR                                  0x06    // Variable bit rate
    00336 #else
    00337 #define TT_VBR                                  0x08    // Variable bit rate
    00338 #endif
    00339
    00340 //
    00341 // values used for the TimingRequirements field in the Broadband Bearer Capability IE
    00342 //
    00343 #define TR_NOIND                                0x00    // No timing requirement indication
    00344 #define TR_END_TO_END                   0x01    // End-to-end timing required
    00345 #define TR_NO_END_TO_END                0x02    // End-to-end timing not required
    00346
    00347 //
    00348 // values used for the ClippingSusceptability field in the Broadband Bearer Capability
    00349 // and UNI 4.0 Broadband Bearer Capability IEs.
    00350 //
    00351 #define CLIP_NOT                                0x00    // Not susceptible to clipping
    00352 #define CLIP_SUS                                0x20    // Susceptible to clipping
    00353
    00354 //
    00355 // values used for the UserPlaneConnectionConfig field in
    00356 // the Broadband Bearer Capability
    00357 // and UNI 4.0 Broadband Bearer Capability IEs.
    00358 //
    00359 #define UP_P2P                                  0x00    // Point-to-point connection
    00360 #define UP_P2MP                                 0x01    // Point-to-multipoint connection
    00361
    00362
    00363 //
    00364 // Broadband Bearer Capability for UNI 3.1
    00365 //
    00366 typedef struct _ATM_BROADBAND_BEARER_CAPABILITY_IE
    00367 {
    00368         UCHAR                   BearerClass;
    00369         UCHAR                   TrafficType;
    00370         UCHAR                   TimingRequirements;
    00371         UCHAR                   ClippingSusceptability;
    00372         UCHAR                   UserPlaneConnectionConfig;
    00373 } ATM_BROADBAND_BEARER_CAPABILITY_IE, *PATM_BROADBAND_BEARER_CAPABILITY_IE;
    00374
    00375
    00376 #ifdef MS_UNI4
    00377 //
    00378 // values used for the TransferCapability field in the UNI 4.0 Broadband Bearer Capability IE
    00379 //
    00380                                                                         // Usage                Usage   Corresponding UNI3.x values
    00381                                                                         // UNI 4.0              UNI 3.0 TrafficType     TimingRequirements
    00382                                                                         // ------------ ------- -----------     ------------------
    00383 #define XCAP_NRT_VBR_RCV_0      0x00    // Only rcv                             NOIND           NOIND
    00384 #define XCAP_RT_VBR_RCV_1       0x01    // Only rcv                             NOIND           END_TO_END
    00385 #define XCAP_NRT_VBR_RCV_2      0x02    // Only rcv                             NOIND           NO_END_TO_END
    00386 #define XCAP_CBR_RCV_4          0x04    // Only rcv                             CBR                     NOIND
    00387 #define XCAP_CBR                        0x05    //                                              CBR                     END_TO_END
    00388 #define XCAP_CBR_RCV_6          0x06    // Only rcv                             CBR                     NO_END_TO_END
    00389 #define XCAP_CBR_W_CLR          0x07    //                              None    CBR                     <reserved>
    00390 #define XCAP_NRT_VBR_RCV_8      0x08    // Only rcv                             VBR                     NOIND
    00391 #define XCAP_RT_VBR                     0x09    //                                              VBR                     END_TO_END
    00392 #define XCAP_NRT_VBR            0x0A    //                                              VBR                     NO_END_TO_END
    00393 #define XCAP_NRT_VBR_W_CLR      0x0B    //                              None    VBR                     <reserved>
    00394 #define XCAP_ABR                        0x0C    //                              None    <reserved>      NOIND
    00395 #define XCAP_RT_VBR_W_CLR       0x13    //                              None    (NOIND) <reserved>
    00396
    00397 //
    00398 // Broadband Bearer Capability for UNI 4.0+
    00399 // Note: This can be used for UNI 3.1 as well.
    00400 //
    00401 typedef struct _ATM_BROADBAND_BEARER_CAPABILITY_IE_UNI40
    00402 {
    00403         UCHAR                   BearerClass;
    00404         UCHAR                   TransferCapability;                             // optional
    00405         UCHAR                   ClippingSusceptability;
    00406         UCHAR                   UserPlaneConnectionConfig;
    00407 } ATM_BROADBAND_BEARER_CAPABILITY_IE_UNI40, *PATM_BROADBAND_BEARER_CAPABILITY_IE_UNI40;
    00408 #endif // MS_UNI4
    00409
    00410
    00411 //
    00412 // values used for the HighLayerInfoType field in ATM_BHLI
    00413 //
    00414 #define BHLI_ISO                                0x00    // ISO
    00415 #define BHLI_UserSpecific               0x01    // User Specific
    00416 #define BHLI_HighLayerProfile   0x02    // High layer profile (only in UNI3.0)
    00417 #define BHLI_VendorSpecificAppId 0x03   // Vendor-Specific Application ID
    00418
    00419 //
    00420 // Broadband High layer Information
    00421 //
    00422 typedef struct _ATM_BHLI_IE
    00423 {
    00424         ULONG                   HighLayerInfoType;              // High Layer Information Type
    00425         ULONG                   HighLayerInfoLength;    // number of bytes in HighLayerInfo
    00426         UCHAR                   HighLayerInfo[8];               // The value dependent on the
    00427                                                                                         // HighLayerInfoType field
    00428 } ATM_BHLI_IE, *PATM_BHLI_IE;
    00429
    00430 //
    00431 // values used for Layer2Protocol in B-LLI
    00432 //
    00433 #define BLLI_L2_ISO_1745                0x01    // Basic mode ISO 1745
    00434 #define BLLI_L2_Q921                    0x02    // CCITT Rec. Q.921
    00435 #define BLLI_L2_X25L                    0x06    // CCITT Rec. X.25, link layer
    00436 #define BLLI_L2_X25M                    0x07    // CCITT Rec. X.25, multilink
    00437 #define BLLI_L2_ELAPB                   0x08    // Extended LAPB; for half duplex operation
    00438 #ifdef MS_UNI3_ERROR_KEPT
    00439 #define BLLI_L2_HDLC_NRM                0x09    // HDLC NRM (ISO 4335)
    00440 #define BLLI_L2_HDLC_ABM                0x0A    // HDLC ABM (ISO 4335)
    00441 #define BLLI_L2_HDLC_ARM                0x0B    // HDLC ARM (ISO 4335)
    00442 #else
    00443 #define BLLI_L2_HDLC_ARM                0x09    // HDLC ARM (ISO 4335)
    00444 #define BLLI_L2_HDLC_NRM                0x0A    // HDLC NRM (ISO 4335)
    00445 #define BLLI_L2_HDLC_ABM                0x0B    // HDLC ABM (ISO 4335)
    00446 #endif
    00447 #define BLLI_L2_LLC                             0x0C    // LAN logical link control (ISO 8802/2)
    00448 #define BLLI_L2_X75                             0x0D    // CCITT Rec. X.75, single link procedure
    00449 #define BLLI_L2_Q922                    0x0E    // CCITT Rec. Q.922
    00450 #define BLLI_L2_USER_SPECIFIED  0x10    // User Specified
    00451 #define BLLI_L2_ISO_7776                0x11    // ISO 7776 DTE-DTE operation
    00452
    00453 //
    00454 // values used for Layer3Protocol in B-LLI
    00455 //
    00456 #define BLLI_L3_X25                             0x06    // CCITT Rec. X.25, packet layer
    00457 #define BLLI_L3_ISO_8208                0x07    // ISO/IEC 8208 (X.25 packet layer for DTE
    00458 #define BLLI_L3_X223                    0x08    // X.223/ISO 8878
    00459 #define BLLI_L3_SIO_8473                0x09    // ISO/IEC 8473 (OSI connectionless)
    00460 #define BLLI_L3_T70                             0x0A    // CCITT Rec. T.70 min. network layer
    00461 #define BLLI_L3_ISO_TR9577              0x0B    // ISO/IEC TR 9577 Network Layer Protocol ID
    00462 #define BLLI_L3_USER_SPECIFIED  0x10    // User Specified
    00463 #ifdef MS_UNI4
    00464 #define BLLI_L3_H310                    0x0C    // ITU H.310
    00465 #define BLLI_L3_H321                    0x0D    // ITU H.321
    00466 #endif // MS_UNI4
    00467
    00468 //
    00469 // values used for Layer3IPI in struct B-LLI
    00470 //
    00471 #define BLLI_L3_IPI_SNAP                0x80    // IEEE 802.1 SNAP identifier
    00472 #define BLLI_L3_IPI_IP                  0xCC    // Internet Protocol (IP) identifier
    00473
    00474 //
    00475 // Broadband Lower Layer Information
    00476 //
    00477 typedef struct _ATM_BLLI_IE
    00478 {
    00479         ULONG                                           Layer2Protocol;
    00480         UCHAR                                           Layer2Mode;
    00481         UCHAR                                           Layer2WindowSize;
    00482         ULONG                                           Layer2UserSpecifiedProtocol;
    00483         ULONG                                           Layer3Protocol;
    00484         UCHAR                                           Layer3Mode;
    00485         UCHAR                                           Layer3DefaultPacketSize;
    00486         UCHAR                                           Layer3PacketWindowSize;
    00487         ULONG                                           Layer3UserSpecifiedProtocol;
    00488         ULONG                                           Layer3IPI;
    00489         UCHAR                                           SnapId[5];
    00490 } ATM_BLLI_IE, *PATM_BLLI_IE;
    00491
    00492
    00493 #ifdef MS_UNI4
    00494
    00495 //
    00496 // Values used for Layer3H310TerminalType in struct B-LLI ADDON
    00497 //
    00498 #define BLLI_L3_H310_TT_RECEIVE_ONLY            0x01
    00499 #define BLLI_L3_H310_TT_SEND_ONLY                       0x02
    00500 #define BLLI_L3_H310_TT_RECEIVE_AND_SEND        0x03
    00501
    00502
    00503 //
    00504 // Values used for Layer3H310ForwardMultiplexingCapability
    00505 // and Layer3H310BackwardMultiplexingCapability in struct B-LLI ADDON
    00506 //
    00507 #define BLLI_L3_H310_MUX_NONE                                           0x00
    00508 #define BLLI_L3_H310_MUX_TRANSPORT_STREAM                       0x01
    00509 #define BLLI_L3_H310_MUX_TRANSPORT_STREAM_WITH_FEC      0x02
    00510 #define BLLI_L3_H310_MUX_PROGRAM_STREAM                         0x03
    00511 #define BLLI_L3_H310_MUX_PROGRAM_STREAM_WITH_FEC        0x04
    00512 #define BLLI_L3_H310_MUX_H221                                           0x05
    00513
    00514
    00515 //
    00516 // Broadband Lower Layer Information Add-On for UNI4.0+
    00517 //
    00518 // REQUIREMENT: An add-on IE must follow immediately after its ancestor IE.
    00519 //
    00520 typedef struct _ATM_BLLI_IE_ADDON
    00521 {
    00522         UCHAR                                           Layer3H310TerminalType;                                         // optional
    00523         UCHAR                                           Layer3H310ForwardMultiplexingCapability;        // optional
    00524         UCHAR                                           Layer3H310BackwardMultiplexingCapability;       // optional
    00525 } ATM_BLLI_IE_ADDON, *PATM_BLLI_IE_ADDON;
    00526
    00527 #endif // MS_UNI4
    00528
    00529
    00530 //
    00531 // Values used for PresentationIndication in struct ATM_CALLING_PARTY_NUMBER_IE
    00532 //
    00533
    00534 #define CALLING_NUMBER_PRESENTATION_ALLOWED                     0x00
    00535 #define CALLING_NUMBER_PRESENTATION_RESTRICTED          0x01
    00536 #define CALLING_NUMBER_PRESENTATION_NOT_AVAIL           0x02
    00537 #define CALLING_NUMBER_PRESENTATION_RESERVED            0x03
    00538
    00539 //
    00540 // Values used for ScreeningIndicator in struct ATM_CALLING_PARTY_NUMBER_IE
    00541 //
    00542
    00543 #define CALLING_NUMBER_SCREENING_USER_PROVIDED_NOT_SCREENED             0x00
    00544 #define CALLING_NUMBER_SCREENING_USER_PROVIDED_PASSED_SCREENING 0x01
    00545 #define CALLING_NUMBER_SCREENING_USER_PROVIDED_FAILED_SCREENING 0x02
    00546 #define CALLING_NUMBER_SCREENING_NW_PROVIDED                                    0x03
    00547
    00548
    00549 //
    00550 // Called Party Number
    00551 //
    00552 // If present, this IE overrides the Called Address specified in
    00553 // the main parameter block.
    00554 //
    00555 typedef ATM_ADDRESS     ATM_CALLED_PARTY_NUMBER_IE;
    00556
    00557
    00558 //
    00559 // Called Party Subaddress
    00560 //
    00561 typedef ATM_ADDRESS     ATM_CALLED_PARTY_SUBADDRESS_IE;
    00562
    00563
    00564
    00565 //
    00566 // Calling Party Number
    00567 //
    00568 typedef struct _ATM_CALLING_PARTY_NUMBER_IE
    00569 {
    00570         ATM_ADDRESS                                     Number;
    00571         UCHAR                                           PresentationIndication;         // optional
    00572         UCHAR                                           ScreeningIndicator;                     // optional
    00573 } ATM_CALLING_PARTY_NUMBER_IE, *PATM_CALLING_PARTY_NUMBER_IE;
    00574
    00575
    00576 //
    00577 // Calling Party Subaddress
    00578 //
    00579 typedef ATM_ADDRESS     ATM_CALLING_PARTY_SUBADDRESS_IE;
    00580
    00581
    00582 #ifdef MS_UNI4
    00583 //
    00584 // Connected Number IE for UNI 4.0 (for COLP Supplementary Services option)
    00585 //
    00586 typedef ATM_CALLING_PARTY_NUMBER_IE ATM_CONNECTED_NUMBER_IE, *PATM_CONNECTED_NUMBER_IE;
    00587
    00588
    00589 //
    00590 // Connected Subaddress IE for UNI 4.0 (for COLP Supplementary Services option)
    00591 //
    00592 typedef ATM_CALLING_PARTY_SUBADDRESS_IE ATM_CONNECTED_SUBADDRESS_IE, *PATM_CONNECTED_SUBADDRESS_IE;
    00593
    00594 #endif // MS_UNI4
    00595
    00596
    00597 //
    00598 // Values used for the QOSClassForward and QOSClassBackward
    00599 // fields in ATM_QOS_CLASS_IE
    00600 //
    00601 #define QOS_CLASS0                              0x00
    00602 #define QOS_CLASS1                              0x01
    00603 #define QOS_CLASS2                              0x02
    00604 #define QOS_CLASS3                              0x03
    00605 #define QOS_CLASS4                              0x04
    00606
    00607 //
    00608 // QOS Class
    00609 //
    00610 typedef struct _ATM_QOS_CLASS_IE
    00611 {
    00612         UCHAR                                           QOSClassForward;
    00613         UCHAR                                           QOSClassBackward;
    00614 } ATM_QOS_CLASS_IE, *PATM_QOS_CLASS_IE;
    00615
    00616
    00617 #ifdef MS_UNI4
    00618 //
    00619 // Values used for the Origin field in ATM_EXTENDED_QOS_PARAMETERS_IE
    00620 //
    00621 #define ATM_XQOS_ORIGINATING_USER       0x00
    00622 #define ATM_XQOS_INTERMEDIATE_NW        0x01
    00623
    00624 //
    00625 // Extended QoS Parameters for UNI 4.0+
    00626 //
    00627 typedef struct _ATM_EXTENDED_QOS_PARAMETERS_IE
    00628 {
    00629         UCHAR                                           Origin;
    00630         UCHAR                                           Filler[3];
    00631         ULONG                                           AcceptableForwardPeakCDV;       // optional
    00632         ULONG                                           AcceptableBackwardPeakCDV;      // optional
    00633         ULONG                                           CumulativeForwardPeakCDV;       // optional
    00634         ULONG                                           CumulativeBackwardPeakCDV;      // optional
    00635         UCHAR                                           AcceptableForwardCLR;           // optional
    00636         UCHAR                                           AcceptableBackwardCLR;          // optional
    00637 } ATM_EXTENDED_QOS_PARAMETERS_IE, *PATM_EXTENDED_QOS_PARAMETERS_IE;
    00638
    00639 #endif // MS_UNI4
    00640
    00641
    00642 //
    00643 // Broadband Sending Complete
    00644 //
    00645 typedef struct _ATM_BROADBAND_SENDING_COMPLETE_IE
    00646 {
    00647         UCHAR                                           SendingComplete;
    00648 } ATM_BROADBAND_SENDING_COMPLETE_IE, *PATM_BROADBAND_SENDING_COMPLETE_IE;
    00649
    00650
    00651 //
    00652 // Values used for the TypeOfNetworkId field in ATM_TRANSIT_NETWORK_SELECTION_IE
    00653 //
    00654 #define TNS_TYPE_NATIONAL                       0x40
    00655
    00656 //
    00657 // Values used for the NetworkIdPlan field in ATM_TRANSIT_NETWORK_SELECTION_IE
    00658 //
    00659 #define TNS_PLAN_CARRIER_ID_CODE        0x01
    00660
    00661 //
    00662 // Transit Network Selection
    00663 //
    00664 typedef struct _ATM_TRANSIT_NETWORK_SELECTION_IE
    00665 {
    00666         UCHAR                                           TypeOfNetworkId;
    00667         UCHAR                                           NetworkIdPlan;
    00668         UCHAR                                           NetworkIdLength;
    00669         UCHAR                                           NetworkId[1];
    00670 } ATM_TRANSIT_NETWORK_SELECTION_IE, *PATM_TRANSIT_NETWORK_SELECTION_IE;
    00671
    00672
    00673 //
    00674 // Values used for the Location field in struct ATM_CAUSE_IE
    00675 //
    00676 #define ATM_CAUSE_LOC_USER                                                      0x00
    00677 #define ATM_CAUSE_LOC_PRIVATE_LOCAL                                     0x01
    00678 #define ATM_CAUSE_LOC_PUBLIC_LOCAL                                      0x02
    00679 #define ATM_CAUSE_LOC_TRANSIT_NETWORK                           0x03
    00680 #define ATM_CAUSE_LOC_PUBLIC_REMOTE                                     0x04
    00681 #define ATM_CAUSE_LOC_PRIVATE_REMOTE                            0x05
    00682 #ifdef MS_UNI3_ERROR_KEPT
    00683 #define ATM_CAUSE_LOC_INTERNATIONAL_NETWORK                     0x06
    00684 #else
    00685 #define ATM_CAUSE_LOC_INTERNATIONAL_NETWORK                     0x07
    00686 #endif
    00687 #define ATM_CAUSE_LOC_BEYOND_INTERWORKING                       0x0A
    00688
    00689 //
    00690 // Values used for the Cause field in struct ATM_CAUSE_IE
    00691 //
    00692 #ifdef MS_UNI4
    00693 #define ATM_CAUSE_UNALLOCATED_NUMBER                            0x01
    00694 #define ATM_CAUSE_NO_ROUTE_TO_TRANSIT_NETWORK           0x02
    00695 #define ATM_CAUSE_NO_ROUTE_TO_DESTINATION                       0x03
    00696 #define ATM_CAUSE_SEND_SPECIAL_TONE                                     0x04    // UNI 4.0+
    00697 #define ATM_CAUSE_MISDIALLED_TRUNK_PREFIX                       0x05    // UNI 4.0+
    00698 #define ATM_CAUSE_CHANNEL_UNACCEPTABLE                          0x06    // UNI 4.0+
    00699 #define ATM_CAUSE_CALL_AWARDED_IN_EST_CHAN                      0x07    // UNI 4.0+
    00700 #define ATM_CAUSE_PREEMPTION                                            0x08    // UNI 4.0+
    00701 #define ATM_CAUSE_PREEMPTION_CIRC_RES_REUSE                     0x09    // UNI 4.0+
    00702 #define ATM_CAUSE_VPI_VCI_UNACCEPTABLE                          0x0A    // UNI 3.0 only!
    00703 #define ATM_CAUSE_NORMAL_CALL_CLEARING                          0x10    // UNI 3.1+
    00704 #define ATM_CAUSE_USER_BUSY                                                     0x11
    00705 #define ATM_CAUSE_NO_USER_RESPONDING                            0x12
    00706 #define ATM_CAUSE_NO_ANSWER_FROM_USER_ALERTED           0x13    // UNI 4.0+
    00707 #define ATM_CAUSE_SUBSCRIBER_ABSENT                                     0x14    // UNI 4.0+
    00708 #define ATM_CAUSE_CALL_REJECTED                                         0x15
    00709 #define ATM_CAUSE_NUMBER_CHANGED                                        0x16
    00710 #define ATM_CAUSE_USER_REJECTS_CLIR                                     0x17
    00711 #define ATM_CAUSE_NONSELECTED_USER_CLEARING                     0x1A    // UNI 4.0+
    00712 #define ATM_CAUSE_DESTINATION_OUT_OF_ORDER                      0x1B
    00713 #define ATM_CAUSE_INVALID_NUMBER_FORMAT                         0x1C
    00714 #define ATM_CAUSE_FACILITY_REJECTED                                     0x1D    // UNI 4.0+
    00715 #define ATM_CAUSE_STATUS_ENQUIRY_RESPONSE                       0x1E
    00716 #define ATM_CAUSE_NORMAL_UNSPECIFIED                            0x1F
    00717 #define ATM_CAUSE_TOO_MANY_ADD_PARTY                            0x20    // UNI 4.0+
    00718 #define ATM_CAUSE_NO_CIRCUIT_CHANNEL_AVAIL                      0x22    // UNI 4.0+
    00719 #define ATM_CAUSE_VPI_VCI_UNAVAILABLE                           0x23
    00720 #define ATM_CAUSE_VPCI_VCI_ASSIGN_FAIL                          0x24    // UNI 3.1+
    00721 #define ATM_CAUSE_USER_CELL_RATE_UNAVAILABLE            0x25    // UNI 3.1+
    00722 #define ATM_CAUSE_NETWORK_OUT_OF_ORDER                          0x26
    00723 #define ATM_CAUSE_PFM_CONNECTION_OUT_OF_ORDER           0x27    // UNI 4.0+
    00724 #define ATM_CAUSE_PFM_CONNNECTION_OPERATIONAL           0x28    // UNI 4.0+
    00725 #define ATM_CAUSE_TEMPORARY_FAILURE                                     0x29
    00726 #define ATM_CAUSE_SWITCH_EQUIPM_CONGESTED                       0x2A    // UNI 4.0+
    00727 #define ATM_CAUSE_ACCESS_INFORMAION_DISCARDED           0x2B
    00728 #define ATM_CAUSE_REQUESTED_CIRC_CHANNEL_NOT_AVAIL      0x2C    // UNI 4.0+
    00729 #define ATM_CAUSE_NO_VPI_VCI_AVAILABLE                          0x2D
    00730 #define ATM_CAUSE_RESOURCE_UNAVAILABLE                          0x2F
    00731 #define ATM_CAUSE_QOS_UNAVAILABLE                                       0x31
    00732 #define ATM_CAUSE_REQ_FACILITY_NOT_SUBSCRIBED           0x32    // UNI 4.0+
    00733 #define ATM_CAUSE_USER_CELL_RATE_UNAVAILABLE__UNI30     0x33    // UNI 3.0 only!
    00734 #define ATM_CAUSE_OUTG_CALLS_BARRED_W_CUG                       0x35    // UNI 4.0+
    00735 #define ATM_CAUSE_INCOM_CALLS_BARRED_W_CUG                      0x37    // UNI 4.0+
    00736 #define ATM_CAUSE_BEARER_CAPABILITY_UNAUTHORIZED        0x39
    00737 #define ATM_CAUSE_BEARER_CAPABILITY_UNAVAILABLE         0x3A
    00738 #define ATM_CAUSE_INCONSIST_OUTG_ACCESS_INFO            0x3E    // UNI 4.0+
    00739 #define ATM_CAUSE_OPTION_UNAVAILABLE                            0x3F
    00740 #define ATM_CAUSE_BEARER_CAPABILITY_UNIMPLEMENTED       0x41
    00741 #define ATM_CAUSE_CHANNEL_TYPE_NOT_IMPLEMENTED          0x42    // UNI 4.0+
    00742 #define ATM_CAUSE_REQ_FACILITY_NOT_IMPLEMENTED          0x45    // UNI 4.0+
    00743 #define ATM_CAUSE_ONLY_RESTR_BEAR_CAP_AVAIL                     0x46    // UNI 4.0+
    00744 #define ATM_CAUSE_UNSUPPORTED_TRAFFIC_PARAMETERS        0x49
    00745 #define ATM_CAUSE_AAL_PARAMETERS_UNSUPPORTED            0x4E    // UNI 3.1+
    00746 #define ATM_CAUSE_SERVICE_OPTION_NOT_AVAIL                      0x4F    // UNI 4.0+
    00747 #define ATM_CAUSE_INVALID_CALL_REFERENCE                        0x51
    00748 #define ATM_CAUSE_CHANNEL_NONEXISTENT                           0x52
    00749 #define ATM_CAUSE_SUSP_CALL_EXISTS_NOT_CALL_ID          0x53    // UNI 4.0+
    00750 #define ATM_CAUSE_CALL_ID_IN_USE                                        0x54    // UNI 4.0+
    00751 #define ATM_CAUSE_NO_CALL_SUSPENDED                                     0x55    // UNI 4.0+
    00752 #define ATM_CAUSE_CALL_W_REQ_ID_CLEARED                         0x56    // UNI 4.0+
    00753 #define ATM_CAUSE_USER_NOT_MEMBER_CUG                           0x57    // UNI 4.0+
    00754 #define ATM_CAUSE_INCOMPATIBLE_DESTINATION                      0x58
    00755 #define ATM_CAUSE_INVALID_ENDPOINT_REFERENCE            0x59
    00756 #define ATM_CAUSE_NON_EXISTENT_CUG                                      0x5A    // UNI 4.0+
    00757 #define ATM_CAUSE_INVALID_TRANSIT_NETWORK_SELECTION     0x5B
    00758 #define ATM_CAUSE_TOO_MANY_PENDING_ADD_PARTY            0x5C
    00759 #define ATM_CAUSE_AAL_PARAMETERS_UNSUPPORTED__UNI30     0x5D    // UNI 3.0 only!
    00760 #define ATM_CAUSE_INVALID_MSG_UNSPECIFIED                       0x5F    // UNI 4.0+
    00761 #define ATM_CAUSE_MANDATORY_IE_MISSING                          0x60
    00762 #define ATM_CAUSE_UNIMPLEMENTED_MESSAGE_TYPE            0x61
    00763 #define ATM_CAUSE_MSG_CONFL_STATE_OR_UNIMPL                     0x62    // UNI 4.0+
    00764 #define ATM_CAUSE_UNIMPLEMENTED_IE                                      0x63
    00765 #define ATM_CAUSE_INVALID_IE_CONTENTS                           0x64
    00766 #define ATM_CAUSE_INVALID_STATE_FOR_MESSAGE                     0x65
    00767 #define ATM_CAUSE_RECOVERY_ON_TIMEOUT                           0x66
    00768 #define ATM_CAUSE_IE_INVAL_UNIMPL_PASSED_ON                     0x67    // UNI 4.0+
    00769 #define ATM_CAUSE_INCORRECT_MESSAGE_LENGTH                      0x68
    00770 #define ATM_CAUSE_UNRECOGNIZED_PARM_MSG_DISCARDED       0x6E    // UNI 4.0+
    00771 #define ATM_CAUSE_PROTOCOL_ERROR                                        0x6F
    00772 #define ATM_CAUSE_INTERWORKING_UNSPECIFIED                      0x7F    // UNI 4.0+
    00773
    00774 #else // !MS_UNI4
    00775
    00776 #define ATM_CAUSE_UNALLOCATED_NUMBER                            0x01
    00777 #define ATM_CAUSE_NO_ROUTE_TO_TRANSIT_NETWORK           0x02
    00778 #define ATM_CAUSE_NO_ROUTE_TO_DESTINATION                       0x03
    00779 #define ATM_CAUSE_VPI_VCI_UNACCEPTABLE                          0x0A
    00780 #define ATM_CAUSE_NORMAL_CALL_CLEARING                          0x10
    00781 #define ATM_CAUSE_USER_BUSY                                                     0x11
    00782 #define ATM_CAUSE_NO_USER_RESPONDING                            0x12
    00783 #define ATM_CAUSE_CALL_REJECTED                                         0x15
    00784 #define ATM_CAUSE_NUMBER_CHANGED                                        0x16
    00785 #define ATM_CAUSE_USER_REJECTS_CLIR                                     0x17
    00786 #define ATM_CAUSE_DESTINATION_OUT_OF_ORDER                      0x1B
    00787 #define ATM_CAUSE_INVALID_NUMBER_FORMAT                         0x1C
    00788 #define ATM_CAUSE_STATUS_ENQUIRY_RESPONSE                       0x1E
    00789 #define ATM_CAUSE_NORMAL_UNSPECIFIED                            0x1F
    00790 #define ATM_CAUSE_VPI_VCI_UNAVAILABLE                           0x23
    00791 #define ATM_CAUSE_NETWORK_OUT_OF_ORDER                          0x26
    00792 #define ATM_CAUSE_TEMPORARY_FAILURE                                     0x29
    00793 #define ATM_CAUSE_ACCESS_INFORMAION_DISCARDED           0x2B
    00794 #define ATM_CAUSE_NO_VPI_VCI_AVAILABLE                          0x2D
    00795 #define ATM_CAUSE_RESOURCE_UNAVAILABLE                          0x2F
    00796 #define ATM_CAUSE_QOS_UNAVAILABLE                                       0x31
    00797 #define ATM_CAUSE_USER_CELL_RATE_UNAVAILABLE            0x33
    00798 #define ATM_CAUSE_BEARER_CAPABILITY_UNAUTHORIZED        0x39
    00799 #define ATM_CAUSE_BEARER_CAPABILITY_UNAVAILABLE         0x3A
    00800 #define ATM_CAUSE_OPTION_UNAVAILABLE                            0x3F
    00801 #define ATM_CAUSE_BEARER_CAPABILITY_UNIMPLEMENTED       0x41
    00802 #define ATM_CAUSE_UNSUPPORTED_TRAFFIC_PARAMETERS        0x49
    00803 #define ATM_CAUSE_INVALID_CALL_REFERENCE                        0x51
    00804 #define ATM_CAUSE_CHANNEL_NONEXISTENT                           0x52
    00805 #define ATM_CAUSE_INCOMPATIBLE_DESTINATION                      0x58
    00806 #define ATM_CAUSE_INVALID_ENDPOINT_REFERENCE            0x59
    00807 #define ATM_CAUSE_INVALID_TRANSIT_NETWORK_SELECTION     0x5B
    00808 #define ATM_CAUSE_TOO_MANY_PENDING_ADD_PARTY            0x5C
    00809 #define ATM_CAUSE_AAL_PARAMETERS_UNSUPPORTED            0x5D
    00810 #define ATM_CAUSE_MANDATORY_IE_MISSING                          0x60
    00811 #define ATM_CAUSE_UNIMPLEMENTED_MESSAGE_TYPE            0x61
    00812 #define ATM_CAUSE_UNIMPLEMENTED_IE                                      0x63
    00813 #define ATM_CAUSE_INVALID_IE_CONTENTS                           0x64
    00814 #define ATM_CAUSE_INVALID_STATE_FOR_MESSAGE                     0x65
    00815 #define ATM_CAUSE_RECOVERY_ON_TIMEOUT                           0x66
    00816 #define ATM_CAUSE_INCORRECT_MESSAGE_LENGTH                      0x68
    00817 #define ATM_CAUSE_PROTOCOL_ERROR                                        0x6F
    00818 #endif // !MS_UNI4
    00819
    00820 //
    00821 // Values used for the Condition portion of the Diagnostics field
    00822 // in struct ATM_CAUSE_IE, for certain Cause values
    00823 //
    00824 #define ATM_CAUSE_COND_UNKNOWN                                          0x00
    00825 #define ATM_CAUSE_COND_PERMANENT                                        0x01
    00826 #define ATM_CAUSE_COND_TRANSIENT                                        0x02
    00827
    00828 //
    00829 // Values used for the Rejection Reason portion of the Diagnostics field
    00830 // in struct ATM_CAUSE_IE, for certain Cause values
    00831 //
    00832 #define ATM_CAUSE_REASON_USER                                           0x00
    00833 #define ATM_CAUSE_REASON_IE_MISSING                                     0x04
    00834 #define ATM_CAUSE_REASON_IE_INSUFFICIENT                        0x08
    00835
    00836 //
    00837 // Values used for the P-U flag of the Diagnostics field
    00838 // in struct ATM_CAUSE_IE, for certain Cause values
    00839 //
    00840 #define ATM_CAUSE_PU_PROVIDER                                           0x00
    00841 #define ATM_CAUSE_PU_USER                                                       0x08
    00842
    00843 //
    00844 // Values used for the N-A flag of the Diagnostics field
    00845 // in struct ATM_CAUSE_IE, for certain Cause values
    00846 //
    00847 #define ATM_CAUSE_NA_NORMAL                                                     0x00
    00848 #define ATM_CAUSE_NA_ABNORMAL                                           0x04
    00849
    00850 #ifdef MS_UNI4
    00851 //
    00852 // values used for placing IE identifiers in the Diagnostics field
    00853 //
    00854 #define ATM_CAUSE_DIAG_IE_NARROW_BEARER_CAPABILITY      0x04
    00855 #define ATM_CAUSE_DIAG_IE_CAUSE                                         0x08
    00856 #define ATM_CAUSE_DIAG_IE_CALL_STATE                            0x14
    00857 #define ATM_CAUSE_DIAG_IE_PROGRESS_IND                          0x1E
    00858 #define ATM_CAUSE_DIAG_IE_NOTIF_IND                                     0x27
    00859 #define ATM_CAUSE_DIAG_IE_END_TO_END_TDELAY                     0x42
    00860 #define ATM_CAUSE_DIAG_IE_CONNECTED_NUMBER                      0x4C
    00861 #define ATM_CAUSE_DIAG_IE_CONNECTED_SUBADDR                     0x4D
    00862 #define ATM_CAUSE_DIAG_IE_ENDPOINT_REF                          0x54
    00863 #define ATM_CAUSE_DIAG_IE_ENDPOINT_STATE                        0x55
    00864 #define ATM_CAUSE_DIAG_IE_AAL_PARMS                                     0x58
    00865 #define ATM_CAUSE_DIAG_IE_TRAFFIC_DESCRIPTOR            0x59
    00866 #define ATM_CAUSE_DIAG_IE_CONNECTION_ID                         0x5A
    00867 #define ATM_CAUSE_DIAG_IE_OAM_TRAFFIC_DESCRIPTOR        0x5B
    00868 #define ATM_CAUSE_DIAG_IE_QOS                                           0x5C
    00869 #define ATM_CAUSE_DIAG_IE_HIGH_LAYER_INFO                       0x5D
    00870 #define ATM_CAUSE_DIAG_IE_BEARER_CAPABILITY                     0x5E
    00871 #define ATM_CAUSE_DIAG_IE_LOW_LAYER_INFO                        0x5F
    00872 #define ATM_CAUSE_DIAG_IE_LOCKING_SHIFT                         0x60
    00873 #define ATM_CAUSE_DIAG_IE_NON_LOCKING_SHIFT                     0x61
    00874 #define ATM_CAUSE_DIAG_IE_SENDING_COMPLETE                      0x62
    00875 #define ATM_CAUSE_DIAG_IE_REPEAT_INDICATOR                      0x63
    00876 #define ATM_CAUSE_DIAG_IE_CALLING_PARTY_NUMBER          0x6C
    00877 #define ATM_CAUSE_DIAG_IE_CALLING_PARTY_SUBADDR         0x6D
    00878 #define ATM_CAUSE_DIAG_IE_CALLED_PARTY_NUMBER           0x70
    00879 #define ATM_CAUSE_DIAG_IE_CALLED_PARTY_SUBADDR          0x71
    00880 #define ATM_CAUSE_DIAG_IE_TRANSIT_NETWORK_SELECT        0x78
    00881 #define ATM_CAUSE_DIAG_IE_RESTART_INDICATOR                     0x79
    00882 #define ATM_CAUSE_DIAG_IE_NARROW_LOW_LAYER_COMPAT       0x7C
    00883 #define ATM_CAUSE_DIAG_IE_NARROW_HIGH_LAYER_COMPAT      0x7D
    00884 #define ATM_CAUSE_DIAG_IE_USER_USER                                     0x7E
    00885 #define ATM_CAUSE_DIAG_IE_GENERIC_ID                            0x7F
    00886 #define ATM_CAUSE_DIAG_IE_MIN_TRAFFIC_DESCRIPTOR        0x81
    00887 #define ATM_CAUSE_DIAG_IE_ALT_TRAFFIC_DESCRIPTOR        0x82
    00888 #define ATM_CAUSE_DIAG_IE_ABR_SETUP_PARMS                       0x84
    00889 #define ATM_CAUSE_DIAG_IE_CALLED_SOFT_PVPC_PVCC         0xE0
    00890 #define ATM_CAUSE_DIAG_IE_CRANKBACK                                     0xE1
    00891 #define ATM_CAUSE_DIAG_IE_DESIGNATED_TRANSIT_LIST       0xE2
    00892 #define ATM_CAUSE_DIAG_IE_CALLING_SOFT_PVPC_PVCC        0xE3
    00893 #define ATM_CAUSE_DIAG_IE_ABR_ADD_PARMS                         0xE4
    00894 #define ATM_CAUSE_DIAG_IE_LIJ_CALL_ID                           0xE8
    00895 #define ATM_CAUSE_DIAG_IE_LIJ_PARMS                                     0xE9
    00896 #define ATM_CAUSE_DIAG_IE_LEAF_SEQ_NO                           0xEA
    00897 #define ATM_CAUSE_DIAG_IE_CONNECTION_SCOPE_SELECT       0xEB
    00898 #define ATM_CAUSE_DIAG_IE_EXTENDED_QOS                          0xEC
    00899
    00900 //
    00901 // values used for placing IE subfield identifiers in the Diagnostics field
    00902 //
    00903 #define ATM_CAUSE_DIAG_RATE_ID_FW_PEAK_CLP0                     0x82
    00904 #define ATM_CAUSE_DIAG_RATE_ID_BW_PEAK_CLP0                     0x83
    00905 #define ATM_CAUSE_DIAG_RATE_ID_FW_PEAK_CLP01            0x84
    00906 #define ATM_CAUSE_DIAG_RATE_ID_BW_PEAK_CLP01            0x85
    00907 #define ATM_CAUSE_DIAG_RATE_ID_FW_SUST_CLP0                     0x88
    00908 #define ATM_CAUSE_DIAG_RATE_ID_BW_SUST_CLP0                     0x89
    00909 #define ATM_CAUSE_DIAG_RATE_ID_FW_SUST_CLP01            0x90
    00910 #define ATM_CAUSE_DIAG_RATE_ID_BW_SUST_CLP01            0x91
    00911 #define ATM_CAUSE_DIAG_RATE_ID_FW_ABR_MIN_CLP01         0x92
    00912 #define ATM_CAUSE_DIAG_RATE_ID_BW_ABR_MIN_CLP01         0x93
    00913 #define ATM_CAUSE_DIAG_RATE_ID_FW_BURST_CLP0            0xA0
    00914 #define ATM_CAUSE_DIAG_RATE_ID_BW_BURST_CLP0            0xA1
    00915 #define ATM_CAUSE_DIAG_RATE_ID_FW_BURST_CLP01           0xB0
    00916 #define ATM_CAUSE_DIAG_RATE_ID_BW_BURST_CLP01           0xB1
    00917 #define ATM_CAUSE_DIAG_RATE_ID_BEST_EFFORT                      0xBE
    00918 #define ATM_CAUSE_DIAG_RATE_ID_TM_OPTIONS                       0xBF
    00919
    00920 //
    00921 // Values used for placing a CCBS indicator in the Diagnostics field
    00922 //
    00923 #define ATM_CAUSE_DIAG_CCBS_SPARE                                       0x00
    00924 #define ATM_CAUSE_DIAG_CCBS_CCBS_POSSIBLE                       0x01
    00925 #define ATM_CAUSE_DIAG_CCBS_CCBS_NOT_POSSIBLE           0x02
    00926
    00927 //
    00928 // Values used for placing Attribute Numbers in the Diagnostics field
    00929 //
    00930 #define ATM_CAUSE_DIAG_ATTR_NO_INFO_XFER_CAP            0x31
    00931 #define ATM_CAUSE_DIAG_ATTR_NO_INFO_XFER_MODE           0x32
    00932 #define ATM_CAUSE_DIAG_ATTR_NO_INFO_XFER_RATE           0x33
    00933 #define ATM_CAUSE_DIAG_ATTR_NO_STRUCTURE                        0x34
    00934 #define ATM_CAUSE_DIAG_ATTR_NO_CONFIG                           0x35
    00935 #define ATM_CAUSE_DIAG_ATTR_NO_ESTABL                           0x36
    00936 #define ATM_CAUSE_DIAG_ATTR_NO_SYMMETRY                         0x37
    00937 #define ATM_CAUSE_DIAG_ATTR_NO_INFO_XFER_RATE2          0x38
    00938 #define ATM_CAUSE_DIAG_ATTR_NO_LAYER_ID                         0x39
    00939 #define ATM_CAUSE_DIAG_ATTR_NO_RATE_MULT                        0x3A
    00940
    00941 #endif // MS_UNI4
    00942
    00943
    00944 //
    00945 // Cause
    00946 //
    00947 // Note: If used as empty buffer for response IE, then the DiagnosticsLength
    00948 //               MUST be filled in correctly, to show available buffer length.
    00949 //
    00950 typedef struct _ATM_CAUSE_IE
    00951 {
    00952         UCHAR                                           Location;
    00953         UCHAR                                           Cause;
    00954         UCHAR                                           DiagnosticsLength;
    00955         UCHAR                                           Diagnostics[4];         // Variable length information (minimum 4 bytes)
    00956 } ATM_CAUSE_IE, *PATM_CAUSE_IE;
    00957
    00958
    00959 #ifdef MS_UNI4
    00960 //
    00961 // Connection Identifier IE for UNI 4.0+
    00962 //
    00963 // Setting VPCI to SAP_FIELD_ABSENT, means it is "VP-associated" signalling,
    00964 // (which is not supported by this CallManager);
    00965 //
    00966 // Otherwise we assume "explicit VPCI" (this is the normal setting),
    00967 // and the Vpci value is used.
    00968 //
    00969 // Setting the VCI to SAP_FIELD_ABSENT, means it is "switched VP",
    00970 // which is not supported by this CallManager;
    00971 //
    00972 // Setting the VCI to SAP_FIELD_ANY, means it is "explicit VPCI, any VCI";
    00973 //
    00974 // Setting both the Vpci and the Vci fields to SAP_FIELD_ANY,
    00975 // or setting both the Vpci and the Vci fields to SAP_FIELD_ABSENT,
    00976 // means that the ConnectionId is not defined,
    00977 // so it will not be sent to the peer.
    00978 // (This allows an empty ConnectionIdentifier IE to hold the response).
    00979 //
    00980 // Otherwise we assume "explicit VPCI, explicit VCI" (this is the normal
    00981 // setting), and the Vci value is used.
    00982 //
    00983 typedef struct _ATM_CONNECTION_ID_IE
    00984 {
    00985         ULONG                                           Vpci;   // Optional: Can use SAP_FIELD_ANY or SAP_FIELD_ABSENT here.
    00986         ULONG                                           Vci;    // Optional: Can use SAP_FIELD_ANY or SAP_FIELD_ABSENT here.
    00987 } ATM_CONNECTION_ID_IE, *PATM_CONNECTION_ID_IE;
    00988
    00989 #endif // MS_UNI4
    00990
    00991
    00992 #ifdef MS_UNI4
    00993 //
    00994 // End-to-End Transit Delay IE for UNI 4.0+
    00995 //
    00996 typedef struct _ATM_END_TO_END_TRANSIT_DELAY_IE
    00997 {
    00998         ULONG                                           CumulativeTransitDelay;                 // optional (Milliseconds)
    00999         ULONG                                           MaximumEndToEndTransitDelay;    // optional (Milliseconds)
    01000         BOOLEAN                                         NetworkGenerated;
    01001 } ATM_END_TO_END_TRANSIT_DELAY_IE, *PATM_END_TO_END_TRANSIT_DELAY_IE;
    01002
    01003 #endif // MS_UNI4
    01004
    01005
    01006 #ifdef MS_UNI4
    01007 //
    01008 // Notification Indicator IE for UNI 4.0+
    01009 //
    01010 // Note: If used as empty buffer for response IE, then the InformationLength
    01011 //               MUST be filled in correctly, to show available buffer length.
    01012 //
    01013 typedef struct _ATM_NOTIFICATION_INDICATOR_IE
    01014 {
    01015         USHORT                                          NotificationId;
    01016         USHORT                                          InformationLength;
    01017         UCHAR                                           NotificationInformation[1];             // Variable length information
    01018 } ATM_NOTIFICATION_INDICATOR_IE, *PATM_NOTIFICATION_INDICATOR_IE;
    01019
    01020 #endif // MS_UNI4
    01021
    01022
    01023 #ifdef MS_UNI4
    01024 //
    01025 // User-User IE for UNI 4.0+ (for UUS Supplementary Services option)
    01026 //
    01027 // Note: If used as empty buffer for response IE, then the InformationLength
    01028 //               MUST be filled in correctly, to show available buffer length.
    01029 //
    01030 typedef struct _ATM_USER_USER_IE
    01031 {
    01032         UCHAR                                           ProtocolDescriminator;
    01033         UCHAR                                           Filler[1];
    01034         USHORT                                          InformationLength;
    01035         UCHAR                                           UserUserInformation[1];                 // Variable length information
    01036 } ATM_USER_USER_IE, *PATM_USER_USER_IE;
    01037
    01038 #endif // MS_UNI4
    01039
    01040
    01041 #ifdef MS_UNI4
    01042 //
    01043 // Generic ID Transport IE for UNI 4.0+
    01044 //
    01045 // Note: If used as empty buffer for response IE, then the InformationLength
    01046 //               MUST be filled in correctly, to show available buffer length.
    01047 //
    01048 typedef struct _ATM_GENERIC_ID_TRANSPORT_IE
    01049 {
    01050         USHORT                                          InformationLength;
    01051         UCHAR                                           GenericIDInformation[1];                // Variable length information
    01052 } ATM_GENERIC_ID_TRANSPORT_IE, *PATM_GENERIC_ID_TRANSPORT_IE;
    01053
    01054 #endif // MS_UNI4
    01055
    01056
    01057 //
    01058 // Leaf Initiated Join (LIJ) Identifier
    01059 //
    01060 typedef struct _ATM_LIJ_CALLID_IE
    01061 {
    01062         ULONG                                           Identifier;
    01063 } ATM_LIJ_CALLID_IE, *PATM_LIJ_CALLID_IE;
    01064
    01065
    01066 #ifdef MS_UNI4
    01067 //
    01068 // Values used for the ScreeningIndication field in struct ATM_LIJ_PARAMETERS_IE
    01069 //
    01070 #define ATM_LIJ_PARMS_SCREEN_NO_ROOT_NOTIF      0x00
    01071
    01072 //
    01073 // Leaf Initiated Join (LIJ) Parameters IE for UNI 4.0+
    01074 //
    01075 typedef struct _ATM_LIJ_PARAMETERS_IE
    01076 {
    01077         UCHAR                                           ScreeningIndication;
    01078 } ATM_LIJ_PARAMETERS_IE, *PATM_LIJ_PARAMETERS_IE;
    01079
    01080 #endif // MS_UNI4
    01081
    01082
    01083 #ifdef MS_UNI4
    01084 //
    01085 // Leaf Sequence Number IE for UNI 4.0+
    01086 //
    01087 typedef struct _ATM_LEAF_SEQUENCE_NUMBER_IE
    01088 {
    01089         ULONG                                           SequenceNumber;
    01090 } ATM_LEAF_SEQUENCE_NUMBER_IE, *PATM_LEAF_SEQUENCE_NUMBER_IE;
    01091
    01092 #endif // MS_UNI4
    01093
    01094
    01095 #ifdef MS_UNI4
    01096 //
    01097 // Values used for the ConnectionScopeType field in _ATM_CONNECTION_SCOPE_SELECTION_IE
    01098 //
    01099 #define ATM_SCOPE_TYPE_ORGANIZATIONAL                           0x01
    01100
    01101 //
    01102 // Values used for the ConnectionScopeSelection field in _ATM_CONNECTION_SCOPE_SELECTION_IE
    01103 //
    01104 #define ATM_SCOPE_ORGANIZATIONAL_LOCAL_NW                       0x01
    01105 #define ATM_SCOPE_ORGANIZATIONAL_LOCAL_NW_PLUS1         0x02
    01106 #define ATM_SCOPE_ORGANIZATIONAL_LOCAL_NW_PLUS2         0x03
    01107 #define ATM_SCOPE_ORGANIZATIONAL_SITE_MINUS1            0x04
    01108 #define ATM_SCOPE_ORGANIZATIONAL_INTRA_SITE                     0x05
    01109 #define ATM_SCOPE_ORGANIZATIONAL_SITE_PLUS1                     0x06
    01110 #define ATM_SCOPE_ORGANIZATIONAL_ORG_MINUS1                     0x07
    01111 #define ATM_SCOPE_ORGANIZATIONAL_INTRA_ORG                      0x08
    01112 #define ATM_SCOPE_ORGANIZATIONAL_ORG_PLUS1                      0x09
    01113 #define ATM_SCOPE_ORGANIZATIONAL_COMM_MINUS1            0x0A
    01114 #define ATM_SCOPE_ORGANIZATIONAL_INTRA_COMM                     0x0B
    01115 #define ATM_SCOPE_ORGANIZATIONAL_COMM_PLUS1                     0x0C
    01116 #define ATM_SCOPE_ORGANIZATIONAL_REGIONAL                       0x0D
    01117 #define ATM_SCOPE_ORGANIZATIONAL_INTER_REGIONAL         0x0E
    01118 #define ATM_SCOPE_ORGANIZATIONAL_GLOBAL                         0x0F
    01119
    01120 //
    01121 // Connection Scope Selection IE for UNI 4.0+
    01122 //
    01123 typedef struct _ATM_CONNECTION_SCOPE_SELECTION_IE
    01124 {
    01125         UCHAR                                           ConnectionScopeType;
    01126         UCHAR                                           ConnectionScopeSelection;
    01127 } ATM_CONNECTION_SCOPE_SELECTION_IE, *PATM_CONNECTION_SCOPE_SELECTION_IE;
    01128
    01129 #endif // MS_UNI4
    01130
    01131
    01132 #ifdef MS_UNI4
    01133 //
    01134 // Values used for the XxxxAdditionalParameters fields in _ATM_ABR_ADDITIONAL_PARAMETERS_IE
    01135 //
    01136 #define                 ATM_ABR_PARMS_NRM_PRESENT               0x80000000
    01137 #define                 ATM_ABR_PARMS_TRM_PRESENT               0x40000000
    01138 #define                 ATM_ABR_PARMS_CDF_PRESENT               0x20000000
    01139 #define                 ATM_ABR_PARMS_ADTF_PRESENT              0x10000000
    01140 #define                 ATM_ABR_PARMS_NRM_MASK                  0x0E000000
    01141 #define                 ATM_ABR_PARMS_NRM_SHIFT                 25
    01142 #define                 ATM_ABR_PARMS_TRM_MASK                  0x01C00000
    01143 #define                 ATM_ABR_PARMS_TRM_SHIFT                 22
    01144 #define                 ATM_ABR_PARMS_CDF_MASK                  0x00380000
    01145 #define                 ATM_ABR_PARMS_CDF_SHIFT                 19
    01146 #define                 ATM_ABR_PARMS_ADTF_MASK                 0x0007FE00
    01147 #define                 ATM_ABR_PARMS_ADTF_SHIFT                9
    01148 #define                 ATM_ABR_PARMS_NRM_DEFAULT               4
    01149 #define                 ATM_ABR_PARMS_TRM_DEFAULT               7
    01150 #define                 ATM_ABR_PARMS_CDF_DEFAULT               3
    01151 #define                 ATM_ABR_PARMS_ADTF_DEFAULT              50
    01152
    01153 typedef struct _ATM_ABR_ADDITIONAL_PARAMETERS_IE
    01154 {
    01155         ULONG   ForwardAdditionalParameters;
    01156         ULONG   BackwardAdditionalParameters;
    01157 } ATM_ABR_ADDITIONAL_PARAMETERS_IE, *PATM_ABR_ADDITIONAL_PARAMETERS_IE;
    01158
    01159 #endif // MS_UNI4
    01160
    01161
    01162 #ifdef MS_UNI4
    01163 //
    01164 // ABR Setup Parameters IE for UNI 4.0+
    01165 //
    01166 typedef struct _ATM_ABR_SETUP_PARAMETERS_IE
    01167 {
    01168         ULONG   ForwardABRInitialCellRateCLP01;                 // optional
    01169         ULONG   BackwardABRInitialCellRateCLP01;                // optional
    01170         ULONG   ForwardABRTransientBufferExposure;              // optional
    01171         ULONG   BackwardABRTransientBufferExposure;             // optional
    01172         ULONG   CumulativeRmFixedRTT;
    01173         UCHAR   ForwardABRRateIncreaseFactorLog2;               // optional (0..15 [log2(RIF*32768)])
    01174         UCHAR   BackwardABRRateIncreaseFactorLog2;              // optional (0..15 [log2(RIF*32768)])
    01175         UCHAR   ForwardABRRateDecreaseFactorLog2;               // optional (0..15 [log2(RDF*32768)])
    01176         UCHAR   BackwardABRRateDecreaseFactorLog2;              // optional (0..15 [log2(RDF*32768)])
    01177 } ATM_ABR_SETUP_PARAMETERS_IE, *PATM_ABR_SETUP_PARAMETERS_IE;
    01178
    01179 #endif // MS_UNI4
    01180
    01181
    01182 //
    01183 // Raw Information Element - the user can fill in whatever he wants
    01184 //
    01185 typedef struct _ATM_RAW_IE
    01186 {
    01187         ULONG                                           RawIELength;
    01188         ULONG                                           RawIEType;
    01189         UCHAR                                           RawIEValue[1];          // Vaiable length information
    01190 } ATM_RAW_IE, *PATM_RAW_IE;
    01191
    01192
    01193 //
    01194 // This is the value of the ParamType field in the CO_SPECIFIC_PARAMETERS structure
    01195 // when the Parameters[] field contains ATM media specific values in the structure
    01196 // ATM_MEDIA_PARAMETERS.
    01197 //
    01198 #define ATM_MEDIA_SPECIFIC              0x00000001
    01199
    01200 //
    01201 // The Q2931 Call Manager Specific parameters that goes into the
    01202 // CallMgrParameters->CallMgrSpecific.Parameters
    01203 //
    01204 typedef struct _Q2931_CALLMGR_PARAMETERS
    01205 {
    01206         ATM_ADDRESS                                     CalledParty;
    01207         ATM_ADDRESS                                     CallingParty;
    01208         ULONG                                           InfoElementCount;
    01209         UCHAR                                           InfoElements[1];        // one or more info elements
    01210 } Q2931_CALLMGR_PARAMETERS, *PQ2931_CALLMGR_PARAMETERS;
    01211
    01212
    01213 //
    01214 // This is the specific portion of either the Media parameters or the CallMgr
    01215 // Parameters. The following define is used in the ParamType field
    01216 // depending on the signaling type.
    01217 //
    01218 #define CALLMGR_SPECIFIC_Q2931  0x00000001
    01219
    01220 typedef struct _ATM_VPIVCI
    01221 {
    01222         ULONG                                           Vpi;
    01223         ULONG                                           Vci;
    01224 } ATM_VPIVCI, *PATM_VPIVCI;
    01225
    01226 //
    01227 // ATM Service Category
    01228 //
    01229 #define ATM_SERVICE_CATEGORY_CBR        1       // Constant Bit Rate
    01230 #define ATM_SERVICE_CATEGORY_VBR        2       // Variable Bit Rate
    01231 #define ATM_SERVICE_CATEGORY_UBR        4       // Unspecified Bit Rate
    01232 #define ATM_SERVICE_CATEGORY_ABR        8       // Available Bit Rate
    01233
    01234 typedef ULONG   ATM_SERVICE_CATEGORY, *PATM_SERVICE_CATEGORY;
    01235
    01236
    01237 //
    01238 // ATM flow parameters for use in specifying Media parameters
    01239 //
    01240 typedef struct _ATM_FLOW_PARAMETERS
    01241 {
    01242         ATM_SERVICE_CATEGORY            ServiceCategory;
    01243         ULONG                                           AverageCellRate;                        // in cells/sec
    01244         ULONG                                           PeakCellRate;                           // in cells/sec
    01245         ULONG                                           MinimumCellRate;                        // in cells/sec (ABR MCR)
    01246         ULONG                                           InitialCellRate;                        // in cells/sec (ABR ICR)
    01247         ULONG                                           BurstLengthCells;                       // in cells
    01248         ULONG                                           MaxSduSize;                                     // MTU in bytes
    01249         ULONG                                           TransientBufferExposure;        // in cells (ABR TBE)
    01250         ULONG                                           CumulativeRMFixedRTT;           // in microseconds (ABR FRTT)
    01251         UCHAR                                           RateIncreaseFactor;                     // UNI 4.0 coding (ABR RIF)
    01252         UCHAR                                           RateDecreaseFactor;                     // UNI 4.0 coding (ABR RDF)
    01253         USHORT                                          ACRDecreaseTimeFactor;          // UNI 4.0 coding (ABR ADTF)
    01254         UCHAR                                           MaximumCellsPerForwardRMCell; // UNI 4.0 coding (ABR Nrm)
    01255         UCHAR                                           MaximumForwardRMCellInterval; // UNI 4.0 coding (ABR Trm)
    01256         UCHAR                                           CutoffDecreaseFactor;           // UNI 4.0 coding (ABR CDF)
    01257         UCHAR                                           Reserved1;                                      // padding
    01258         ULONG                                           MissingRMCellCount;                     // (ABR CRM)
    01259         ULONG                                           Reserved2;
    01260         ULONG                                           Reserved3;
    01261 } ATM_FLOW_PARAMETERS, *PATM_FLOW_PARAMETERS;
    01262
    01263 //
    01264 // ATM Specific Media parameters - this is the Media specific structure for ATM
    01265 // that goes into MediaParameters->MediaSpecific.Parameters.
    01266 //
    01267 typedef struct _ATM_MEDIA_PARAMETERS
    01268 {
    01269         ATM_VPIVCI                                      ConnectionId;
    01270         ATM_AAL_TYPE                            AALType;
    01271         ULONG                                           CellDelayVariationCLP0;
    01272         ULONG                                           CellDelayVariationCLP1;
    01273         ULONG                                           CellLossRatioCLP0;
    01274         ULONG                                           CellLossRatioCLP1;
    01275         ULONG                                           CellTransferDelayCLP0;
    01276         ULONG                                           CellTransferDelayCLP1;
    01277         ULONG                                           DefaultCLP;
    01278         ATM_FLOW_PARAMETERS                     Transmit;
    01279         ATM_FLOW_PARAMETERS                     Receive;
    01280 } ATM_MEDIA_PARAMETERS, *PATM_MEDIA_PARAMETERS;
    01281
    01282 #ifdef MS_UNI4
    01283 //
    01284 // Generic ATM Call Manager Specific parameters.
    01285 // These may be used for call/leaf teardown and for certain NdisCoRequest calls.
    01286 //
    01287 // When used for closing a call and for dropping a leaf, by either client or
    01288 // Call Manager, this struct is referenced by the `Buffer` parameter of
    01289 // the relevant NDIS functions.
    01290 //
    01291 // When used for NdisCoRequest calls to make ATM UNI protocol specific
    01292 // requests and indications
    01293 //              OID_ATM_CALL_PROCEEDING
    01294 //              OID_ATM_CALL_ALERTING
    01295 //              OID_ATM_LEAF_ALERTING
    01296 //              OID_ATM_CALL_NOTIFY
    01297 // this struct is referenced by the `InformationBuffer` parameter.
    01298 //
    01299 typedef struct _Q2931_CALLMGR_SUBSEQUENT_PARAMETERS
    01300 {
    01301         ULONG                                           InfoElementCount;
    01302         UCHAR                                           InfoElements[1];        // one or more info elements
    01303 } Q2931_CALLMGR_SUBSEQUENT_PARAMETERS, *PQ2931_CALLMGR_SUBSEQUENT_PARAMETERS;
    01304 #endif // MS_UNI4
    01305
    01306 #ifdef MS_UNI4
    01307 //
    01308 // Field values that may be used whereever applicable to signify absence
    01309 // of data or wildcard data.
    01310 //
    01311 #endif // MS_UNI4
    01312
    01313 #ifndef SAP_FIELD_ABSENT
    01314 #define SAP_FIELD_ABSENT                ((ULONG)0xfffffffe)
    01315 #endif
    01316
    01317 #ifndef SAP_FIELD_ABSENT_USHORT
    01318 #define SAP_FIELD_ABSENT_USHORT ((USHORT)0xfffe)
    01319 #endif
    01320
    01321 #ifndef SAP_FIELD_ABSENT_UCHAR
    01322 #define SAP_FIELD_ABSENT_UCHAR  ((UCHAR)0xfe)
    01323 #endif
    01324
    01325 #ifndef SAP_FIELD_ANY
    01326 #define SAP_FIELD_ANY                   ((ULONG)0xffffffff)
    01327 #endif
    01328
    01329 #define SAP_FIELD_ANY_AESA_SEL  ((ULONG)0xfffffffa)     // SEL is wild-carded
    01330 #define SAP_FIELD_ANY_AESA_REST ((ULONG)0xfffffffb)     // All of the address
    01331                                                                                                         // except SEL, is wild-carded
    01332
    01333 //
    01334 // The ATM Specific SAP definition
    01335 //
    01336 typedef struct _ATM_SAP
    01337 {
    01338         ATM_BLLI_IE                                     Blli;
    01339         ATM_BHLI_IE                                     Bhli;
    01340         ULONG                                           NumberOfAddresses;
    01341         UCHAR                                           Addresses[1];   // each of type ATM_ADDRESS
    01342 } ATM_SAP, *PATM_SAP;
    01343
    01344 //
    01345 // The ATM Specific SAP definition when adding PVCs
    01346 //
    01347 typedef struct _ATM_PVC_SAP
    01348 {
    01349         ATM_BLLI_IE                                     Blli;
    01350         ATM_BHLI_IE                                     Bhli;
    01351 } ATM_PVC_SAP, *PATM_PVC_SAP;
    01352
    01353 //
    01354 // The structure passed in the Parameters field of the CO_SPECIFIC_PARAMETERS
    01355 // structure passed in an ADD PVC request for Q.2931
    01356 //
    01357 typedef struct _Q2931_ADD_PVC
    01358 {
    01359         ATM_ADDRESS                                     CalledParty;
    01360         ATM_ADDRESS                                     CallingParty;
    01361         ATM_VPIVCI                                      ConnectionId;
    01362         ATM_AAL_TYPE                            AALType;
    01363         ATM_FLOW_PARAMETERS                     ForwardFP;
    01364         ATM_FLOW_PARAMETERS                     BackwardFP;
    01365         ULONG                                           Flags;
    01366         ATM_PVC_SAP                                     LocalSap;
    01367         ATM_PVC_SAP                                     DestinationSap;
    01368         BOOLEAN                                         LIJIdPresent;
    01369         ATM_LIJ_CALLID_IE                       LIJId;
    01370 } Q2931_ADD_PVC, *PQ2931_ADD_PVC;
    01371
    01372 //
    01373 // These flags are defined to be used with Q2931_ADD_PVC above
    01374 //
    01375 // this VC should be used by the CallMgr as the signaling VC now
    01376 #define CO_FLAG_SIGNALING_VC    0x00000001
    01377
    01378 //
    01379 // use this flag when the VC cannot be used for a MakeCall - incoming call only
    01380 // the call mgr can then be optimized not to search these PVCs during make call
    01381 // processing.
    01382 #define CO_FLAG_NO_DEST_SAP             0x00000002
    01383
    01384 //
    01385 //  Use this flag for a PVC that cannot be used to indicate an incoming call.
    01386 //
    01387 #define CO_FLAG_NO_LOCAL_SAP    0x00000004
    01388
    01389 //
    01390 // the structure passed in the Parameters field of the CO_SPECIFIC_PARAMETERS
    01391 // structure passed in an NDIS_CO_PVC request for Q2931
    01392 //
    01393 typedef struct _Q2931_DELETE_PVC
    01394 {
    01395         ATM_VPIVCI                                      ConnectionId;
    01396 } Q2931_DELETE_PVC, *PQ2931_DELETE_PVC;
    01397
    01398 typedef struct _CO_GET_CALL_INFORMATION
    01399 {
    01400         ULONG                                           CallInfoType;
    01401         ULONG                                           CallInfoLength;
    01402         PVOID                                           CallInfoBuffer;
    01403 } CO_GET_CALL_INFORMATION, *PCO_GET_CALL_INFORMATION;
    01404
    01405 //
    01406 // the structure for returning the supported VC rates from the miniport,
    01407 // returned in response to OID_ATM_SUPPORTED_VC_RATES
    01408 //
    01409 typedef struct _ATM_VC_RATES_SUPPORTED
    01410 {
    01411         ULONG                                           MinCellRate;
    01412         ULONG                                           MaxCellRate;
    01413 } ATM_VC_RATES_SUPPORTED, *PATM_VC_RATES_SUPPORTED;
    01414
    01415 //
    01416 //      NDIS_PACKET out of band information for ATM.
    01417 //
    01418 typedef struct _ATM_AAL_OOB_INFO
    01419 {
    01420         ATM_AAL_TYPE            AalType;
    01421         union
    01422         {
    01423                 struct _ATM_AAL5_INFO
    01424                 {
    01425                         BOOLEAN         CellLossPriority;
    01426                         UCHAR           UserToUserIndication;
    01427                         UCHAR           CommonPartIndicator;
    01428                 } ATM_AAL5_INFO;
    01429
    01430                 struct _ATM_AAL0_INFO
    01431                 {
    01432                         BOOLEAN         CellLossPriority;
    01433                         UCHAR           PayLoadTypeIdentifier;
    01434                 } ATM_AAL0_INFO;
    01435         };
    01436 } ATM_AAL_OOB_INFO, *PATM_AAL_OOB_INFO;
    01437
    01438
    01439 //
    01440 //  Physical Line Speeds in bits/sec.
    01441 //
    01442 #define ATM_PHYS_RATE_SONET_STS3C                                               155520000
    01443 #define ATM_PHYS_RATE_IBM_25                                                     25600000
    01444
    01445 //
    01446 //  ATM cell layer transfer capacities in bits/sec. This is the throughput
    01447 //  available for ATM cells, after allowing for physical framing overhead.
    01448 //
    01449 #define ATM_CELL_TRANSFER_CAPACITY_SONET_STS3C                  149760000
    01450 #define ATM_CELL_TRANSFER_CAPACITY_IBM_25                                25125926
    01451
    01452
    01453
    01454 //
    01455 //  User data rate in units of 100 bits/sec. This is returned in response to
    01456 //  the OID_GEN_CO_LINK_SPEED query. This is the effective rate of
    01457 //  transfer of data available to the ATM layer user, after allowing for
    01458 //  the ATM cell header.
    01459 //
    01460 #define ATM_USER_DATA_RATE_SONET_155                                      1356317
    01461 #define ATM_USER_DATA_RATE_IBM_25                                      227556
    01462
    01463
    01464
    01465 //
    01466 //  The ATM Service Registry MIB Table is used to locate ATM network
    01467 //  services. OID_ATM_GET_SERVICE_ADDRESS is used by clients to access
    01468 //  this table.
    01469 //
    01470
    01471 typedef ULONG           ATM_SERVICE_REGISTRY_TYPE;
    01472
    01473 #define ATM_SERVICE_REGISTRY_LECS               1       // LAN Emulation Configuration Server
    01474 #define ATM_SERVICE_REGISTRY_ANS                2       // ATM Name Server
    01475
    01476 //
    01477 //  Structure passed to OID_ATM_GET_SERVICE_ADDRESS.
    01478 //
    01479 typedef struct _ATM_SERVICE_ADDRESS_LIST
    01480 {
    01481         ATM_SERVICE_REGISTRY_TYPE       ServiceRegistryType;
    01482         ULONG                                           NumberOfAddressesAvailable;
    01483         ULONG                                           NumberOfAddressesReturned;
    01484         ATM_ADDRESS                                     Address[1];
    01485 } ATM_SERVICE_ADDRESS_LIST, *PATM_SERVICE_ADDRESS_LIST;
    01486
    01487 #endif  //      _ATM_H_
    01488