/*
 *  atm.h       ATM definitions
 *
 * =========================================================================
 *
 *                          Open Watcom Project
 *
 * Copyright (c) 2004-2026 The Open Watcom Contributors. All Rights Reserved.
 *
 *    This file is automatically generated. Do not edit directly.
 *
 * =========================================================================
 */

#ifndef _ATM_H_
#define _ATM_H_

#ifndef _ENABLE_AUTODEPEND
 #pragma read_only_file
#endif

#ifdef __cplusplus
extern "C" {
#endif

/* Primitive data types */
typedef ULONG   ATM_ADDRESSTYPE;
typedef ULONG   ATM_AAL_TYPE;
typedef ULONG   *PATM_AAL_TYPE;
typedef ULONG   ATM_SERVICE_CATEGORY;
typedef ULONG   *PATM_SERVICE_CATEGORY;
typedef ULONG   ATM_SERVICE_REGISTRY_TYPE;

/* ATM address types */
#define ATM_NSAP    0L
#define ATM_E164    1L

/* ATM address lengths */
#define ATM_MAC_ADDRESS_LENGTH  6
#define ATM_ADDRESS_LENGTH      20

/* ATM address characters */
#define ATM_ADDR_BLANK_CHAR         L' '
#define ATM_ADDR_PUNCTUATION_CHAR   L'.'
#define ATM_ADDR_E164_START_CHAR    L'+'

/* AAL types */
#define AAL_TYPE_AAL0   1
#define AAL_TYPE_AAL1   2
#define AAL_TYPE_AAL34  4
#define AAL_TYPE_AAL5   8

/* SAP types */
#define SAP_TYPE_NSAP   0x00000001L
#define SAP_TYPE_E164   0x00000002L

/* AAL5 modes */
#define AAL5_MODE_MESSAGE   0x01
#define AAL5_MODE_STREAMING 0x02

/* AAL5 SSCS types */
#define AAL5_SSCS_NULL              0x00
#define AAL5_SSCS_SSCOP_ASSURED     0x01
#define AAL5_SSCS_SSCOP_NON_ASSURED 0x02
#define AAL5_SSCS_FRAME_RELAY       0x04

/* Bearer classes */
#define BCOB_A  0x00
#define BCOB_C  0x01
#define BCOB_X  0x02

/* Traffic types */
#define TT_NOIND    0x00
#define TT_CBR      0x04
#define TT_VBR      0x08

/* Timing requirements */
#define TR_NOIND            0x00
#define TR_END_TO_END       0x01
#define TR_NO_END_TO_END    0x02

/* Clipping susceptabilities */
#define CLIP_NOT    0x00
#define CLIP_SUS    0x20

/* User plane connection configuration values */
#define UP_P2P  0x00
#define UP_P2MP 0x01

/* Broadband high layer information types */
#define BHLI_ISO                    0x00
#define BHLI_UserSpecific           0x01
#define BHLI_HighLayerProfile       0x02
#define BHLI_VendorSpecificAppId    0x03

/* Layer 2 protocols */
#define BLLI_L2_ISO_1745        0x01
#define BLLI_L2_Q921            0x02
#define BLLI_L2_X25L            0x06
#define BLLI_L2_X25M            0x07
#define BLLI_L2_ELAPB           0x08
#define BLLI_L2_HDLC_ARM        0x09
#define BLLI_L2_HDLC_NRM        0x0A
#define BLLI_L2_HDLC_ABM        0x0B
#define BLLI_L2_LLC             0x0C
#define BLLI_L2_X75             0x0D
#define BLLI_L2_Q922            0x0E
#define BLLI_L2_USER_SPECIFIC   0x10
#define BLLI_L2_ISO_7776        0x11

/* Layer 3 protocols */
#define BLLI_L3_X25             0x06
#define BLLI_L3_ISO_8208        0x07
#define BLLI_L3_X223            0x08
#define BLLI_L3_SIO_8473        0x09
#define BLLI_L3_T70             0x0A
#define BLLI_L3_ISO_TR9577      0x0B
#define BLLI_L3_USER_SPECIFIC   0x10

/* Layer 3 initial protocol identifiers */
#define BLLI_L3_IPI_SNAP    0x80
#define BLLI_L3_IPI_IP      0xCC

/* Quality of service classes */
#define QOS_CLASS0  0x00
#define QOS_CLASS1  0x01
#define QOS_CLASS2  0x02
#define QOS_CLASS3  0x03
#define QOS_CLASS4  0x04

/* Transit network selection types */
#define TNS_TYPE_NATIONAL   0x40

/* Transit network selection plans */
#define TNS_PLAN_CARRIER_ID_CODE    0x01

/* ATM cause locations */
#define ATM_CAUSE_LOC_USER                  0x00
#define ATM_CAUSE_LOC_PRIVATE_LOCAL         0x01
#define ATM_CAUSE_LOC_PUBLIC_LOCAL          0x02
#define ATM_CAUSE_LOC_TRANSIT_NETWORK       0x03
#define ATM_CAUSE_LOC_PUBLIC_REMOTE         0x04
#define ATM_CAUSE_LOC_PRIVATE_REMOTE        0x05
#define ATM_CAUSE_LOC_INTERNATIONAL_NETWORK 0x07
#define ATM_CAUSE_LOC_BEYOND_INTERWORKING   0x0A

/* ATM causes */
#define ATM_CAUSE_UNALLOCATED_NUMBER                0x01
#define ATM_CAUSE_NO_ROUTE_TO_TRANSIT_NETWORK       0x02
#define ATM_CAUSE_NO_ROUTE_TO_DESTINATION           0x03
#define ATM_CAUSE_VPI_VCI_UNACCEPTABLE              0x0A
#define ATM_CAUSE_NORMAL_CALL_CLEARING              0x10
#define ATM_CAUSE_USER_BUSY                         0x11
#define ATM_CAUSE_NO_USER_RESPONDING                0x12
#define ATM_CAUSE_CALL_REJECTED                     0x15
#define ATM_CAUSE_NUMBER_CHANGED                    0x16
#define ATM_CAUSE_USER_REJECTS_CLIR                 0x17
#define ATM_CAUSE_DESTINATION_OUT_OF_ORDER          0x1B
#define ATM_CAUSE_INVALID_NUMBER_FORMAT             0x1C
#define ATM_CAUSE_STATUS_ENQUIRY_RESPONSE           0x1E
#define ATM_CAUSE_NORMAL_UNSPECIFIED                0x1F
#define ATM_CAUSE_VPI_VCI_UNAVAILABLE               0x23
#define ATM_CAUSE_NETWORK_OUT_OF_ORDER              0x26
#define ATM_CAUSE_TEMPORARY_FAILURE                 0x29
#define ATM_CAUSE_ACCESS_INFORMATION_DENIED         0x2B
#define ATM_CAUSE_NO_VPI_VCI_AVAILABLE              0x2D
#define ATM_CAUSE_RESOURCE_UNAVAILABLE              0x2F
#define ATM_CAUSE_QOS_UNAVAILABLE                   0x31
#define ATM_CAUSE_USER_CELL_RATE_UNAVAILABLE        0x33
#define ATM_CAUSE_BEARER_CAPABILITY_UNAUTHORIZED    0x39
#define ATM_CAUSE_BEARER_CAPABILITY_UNAVAILABLE     0x3A
#define ATM_CAUSE_OPTION_UNAVAILABLE                0x3F
#define ATM_CAUSE_BEARER_CAPABILITY_UNIMPLEMENTED   0x41
#define ATM_CAUSE_UNSUPPORTED_TRAFFIC_PARAMETERS    0x49
#define ATM_CAUSE_INVALID_CALL_REFERENCE            0x51
#define ATM_CAUSE_CHANNEL_NONEXISTENT               0x52
#define ATM_CAUSE_INCOMPATIBLE_DESTINATION          0x58
#define ATM_CAUSE_INVALID_ENDPOINT_REFERENCE        0x59
#define ATM_CAUSE_INVALID_TRAFFIC_NETWORK_SELECTION 0x5B
#define ATM_CAUSE_TOO_MANY_PENDING_ADD_PARTY        0x5C
#define ATM_CAUSE_AAL_PARAMETERS_UNSUPPORTED        0x5D
#define ATM_CAUSE_MANDATORY_IE_MISSING              0x60
#define ATM_CAUSE_UNIMPLEMENTED_MESSAGE_TYPE        0x61
#define ATM_CAUSE_UNIMPLEMENTED_IE                  0x63
#define ATM_CAUSE_INVALID_IE_CONTENTS               0x64
#define ATM_CAUSE_INVALID_STATE_FOR_MESSAGE         0x65
#define ATM_CAUSE_RECOVERY_ON_TIMEOUT               0x66
#define ATM_CAUSE_INCORRECT_MESSAGE_LENGTH          0x68
#define ATM_CAUSE_PROTOCOL_ERROR                    0x6F

/* ATM cause conditions */
#define ATM_CAUSE_COND_UNKNOWN      0x00
#define ATM_CAUSE_COND_PERMANENT    0x01
#define ATM_CAUSE_COND_TRANSIENT    0x02

/* ATM cause reasons */
#define ATM_CAUSE_REASON_USER               0x00
#define ATM_CAUSE_REASON_IE_MISSING         0x04
#define ATM_CAUSE_REASON_IE_INSUFFICIENT    0x08

/* ATM cause P-U flags */
#define ATM_CAUSE_PU_PROVIDER   0x00
#define ATM_CAUSE_PU_USER       0x08

/* ATM cause N-A flags */
#define ATM_CAUSE_NA_NORMAL     0x00
#define ATM_CAUSE_NA_ABNORMAL   0x04

/* Parameter type special values */
#define ATM_MEDIA_SPECIFIC      0x00000001L
#define CALLMGR_SPECIFIC_Q2931  0x00000001L

/* ATM service categories */
#define ATM_SERVICE_CATEGORY_CBR    1L
#define ATM_SERVICE_CATEGORY_VBR    2L
#define ATM_SERVICE_CATEGORY_UBR    4L
#define ATM_SERVICE_CATEGORY_ABR    8L

/* SAP field values */
#ifndef SAP_FIELD_ABSENT
    #define SAP_FIELD_ABSENT    0xFFFFFFFEL
#endif
#ifndef SAP_FIELD_ANY
    #define SAP_FIELD_ANY       0xFFFFFFFFL
#endif
#define SAP_FIELD_ANY_AESA_SEL  0xFFFFFFFAL
#define SAP_FIELD_ANY_AESA_REST 0xFFFFFFFBL

/* Add PVC flags */
#define CO_FLAG_SIGNALING_VC    0x00000001L
#define CO_FLAG_NO_DEST_SAP     0x00000002L
#define CO_FLAG_NO_LOCAL_SAP    0x00000004L

/* ATM physical rates */
#define ATM_PHYS_RATE_SONET_STS3C   155520000
#define ATM_PHYS_RATE_IBM_25        25600000

/* ATM cell transfer capacities */
#define ATM_CELL_TRANSFER_CAPACITY_SONET_STS3C  149760000
#define ATM_CELL_TRANSFER_CAPACITY_IBM_25       25125926

/* ATM user data rates */
#define ATM_USER_DATA_RATE_SONET_125    1356317
#define ATM_USER_DATA_RATE_IBM_25       227556

/* ATM service registry types */
#define ATM_SERVICE_REGISTRY_LECS   1L
#define ATM_SERVICE_REGISTRY_ANS    2L

/* ATM address */
typedef struct _ATM_ADDRESS {
    ATM_ADDRESSTYPE AddressType;
    ULONG           NumberOfDigits;
    UCHAR           Address[ATM_ADDRESS_LENGTH];
} ATM_ADDRESS;
typedef ATM_ADDRESS *PATM_ADDRESS;
typedef ATM_ADDRESS ATM_CALLED_PARTY_NUMBER_IE;
typedef ATM_ADDRESS ATM_CALLED_PARTY_SUBADDRESS_IE;
typedef ATM_ADDRESS ATM_CALLING_PARTY_SUBADDRESS_IE;

/* Information element types */
typedef enum {
    IE_AALParameters                = 0,
    IE_TrafficDescriptor            = 1,
    IE_BroadbandBearerCapability    = 2,
    IE_BHLI                         = 3,
    IE_BLLI                         = 4,
    IE_CalledPartyNumber            = 5,
    IE_CalledPartySubaddress        = 6,
    IE_CallingPartyNumber           = 7,
    IE_CallingPartySubaddress       = 8,
    IE_Cause                        = 9,
    IE_QOSClass                     = 10,
    IE_TransitNetworkSelection      = 11,
    IE_BroadcastSendingComplete     = 12,
    IE_LIJCallId                    = 13,
    IE_Raw                          = 14
} Q2931_IE_TYPE;

/* Information element */
typedef struct _Q2931_IE {
    Q2931_IE_TYPE   IEType;
    ULONG           IELength;
    UCHAR           IE[1];
} Q2931_IE;
typedef Q2931_IE    *PQ2931_IE;

/* AAL1 parameters */
typedef struct _AAL1_PARAMETERS {
    UCHAR   Subtype;
    UCHAR   CBRRate;
    USHORT  Multiplier;
    UCHAR   SourceClockRecoveryMethod;
    UCHAR   ErrorCorrectionMethod;
    USHORT  StructuredDataTransferBlockSize;
    UCHAR   PartiallyFilledCellsMethod;
} AAL1_PARAMETERS;
typedef AAL1_PARAMETERS *PAAL1_PARAMETERS;

/* AAL34 parameters */
typedef struct _AAL34_PARAMETERS {
    USHORT  ForwardMaxCPCSSDUSize;
    USHORT  BackwardMaxCPCSSDUSize;
    USHORT  LowestMID;
    USHORT  HighestMID;
    UCHAR   SSCSType;
} AAL34_PARAMETERS;
typedef AAL34_PARAMETERS    *PAAL34_PARAMETERS;

/* AAL5 parameters */
typedef struct _AAL5_PARAMETERS {
    ULONG   ForwardMaxCPCSSDUSize;
    ULONG   BackwardMaxCPCSSDUSize;
    UCHAR   Mode;
    UCHAR   SSCSType;
} AAL5_PARAMETERS;
typedef AAL5_PARAMETERS *PAAL5_PARAMETERS;

/* AAL user parameters */
typedef struct _AALUSER_PARAMETERS {
    ULONG   UserDefined;
} AALUSER_PARAMETERS;
typedef AALUSER_PARAMETERS  *PAALUSER_PARAMETERS;

/* AAL parameters information element */
typedef struct _AAL_PARAMETERS_IE {
    ATM_AAL_TYPE    AALType;
    union {
        AAL1_PARAMETERS     AAL1Parameters;
        AAL34_PARAMETERS    AAL34Parameters;
        AAL5_PARAMETERS     AAL5Parameters;
        AALUSER_PARAMETERS  AALUserParameters;
    } AALSpecificParameters;
} AAL_PARAMETERS_IE;
typedef AAL_PARAMETERS_IE   *PAAL_PARAMETERS_IE;

/* ATM traffic descriptor */
typedef struct _ATM_TRAFFIC_DESCRIPTOR {
    ULONG   PeakCellRateCLP0;
    ULONG   PeakCellRateCLP01;
    ULONG   SustainableCellRateCLP0;
    ULONG   SustainableCellRateCLP01;
    ULONG   MaximumBurstSizeCLP0;
    ULONG   MaximumBurstSizeCLP01;
    BOOLEAN Tagging;
} ATM_TRAFFIC_DESCRIPTOR;
typedef ATM_TRAFFIC_DESCRIPTOR  *PATM_TRAFFIC_DESCRIPTOR;

/* ATM traffic descriptor information element */
typedef struct _ATM_TRAFFIC_DESCRIPTOR_IE {
    ATM_TRAFFIC_DESCRIPTOR  ForwardTD;
    ATM_TRAFFIC_DESCRIPTOR  BackwardTD;
    BOOLEAN                 BestEffort;
} ATM_TRAFFIC_DESCRIPTOR_IE;
typedef ATM_TRAFFIC_DESCRIPTOR_IE   *PATM_TRAFFIC_DESCRIPTOR_IE;

/* ATM broadband bearer capability information element */
typedef struct _ATM_BROADCAST_BEARER_CAPABILITY_IE {
    UCHAR   BearerClass;
    UCHAR   TrafficType;
    UCHAR   TimingRequirements;
    UCHAR   ClippingSusceptability;
    UCHAR   UserPlaneConnectionConfig;
} ATM_BROADCAST_BEARER_CAPABILITY_IE;
typedef ATM_BROADCAST_BEARER_CAPABILITY_IE  *PATM_BROADCAST_BEARER_CAPABILITY_IE;

/* ATM broadband high layer information information element */
typedef struct _ATM_BHLI_IE {
    ULONG   HighLayerInfoType;
    ULONG   HighLayerInfoLength;
    UCHAR   HighLayerInfo[8];
} ATM_BHLI_IE;
typedef ATM_BHLI_IE *PATM_BHLI_IE;

/* ATM broadband lower layer information information element */
typedef struct _ATM_BLLI_IE {
    ULONG   Layer2Protocol;
    UCHAR   Layer2Mode;
    UCHAR   Layer2WindowSize;
    ULONG   Layer2UserSpecifiedProtocol;
    ULONG   Layer3Protocol;
    UCHAR   Layer3Mode;
    UCHAR   Layer3DefaultPacketSize;
    UCHAR   Layer3PacketWindowSize;
    ULONG   Layer3UserSpecifiedProtocol;
    ULONG   Layer3IPI;
    UCHAR   SnapId[5];
} ATM_BLLI_IE;
typedef ATM_BLLI_IE *PATM_BLLI_IE;

/* ATM calling party number information element */
typedef struct _ATM_CALLING_PARTY_NUMBER_IE {
    ATM_ADDRESS Number;
    UCHAR       PresentationIndication;
    UCHAR       ScreeningIndicator;
} ATM_CALLING_PARTY_NUMBER_IE;
typedef ATM_CALLING_PARTY_NUMBER_IE *PATM_CALLING_PARTY_NUMBER_IE;

/* ATM quality of service class information element */
typedef struct _ATM_QOS_CLASS_IE {
    UCHAR   QOSClassForward;
    UCHAR   QOSClassBackward;
} ATM_QOS_CLASS_IE;
typedef ATM_QOS_CLASS_IE    *PATM_QOS_CLASS_IE;

/* ATM broadband sending complete information element */
typedef struct _ATM_BROADBAND_SENDING_COMPLETE_IE {
    UCHAR   SendingComplete;
} ATM_BROADBAND_SENDING_COMPLETE_IE;
typedef ATM_BROADBAND_SENDING_COMPLETE_IE   *PATM_BROADBAND_SENDING_COMPLETE_IE;

/* ATM transit network selection information element */
typedef struct _ATM_TRANSIT_NETWORK_SELECTION_IE {
    UCHAR   TypeOfNetworkId;
    UCHAR   NetworkIdPlan;
    UCHAR   NetworkIdLength;
    UCHAR   NetworkId[1];
} ATM_TRANSIT_NETWORK_SELECTION_IE;
typedef ATM_TRANSIT_NETWORK_SELECTION_IE    *PATM_TRANSIT_NETWORK_SELECTION_IE;

/* ATM cause information element */
typedef struct _ATM_CAUSE_IE {
    UCHAR   Location;
    UCHAR   Cause;
    UCHAR   DiagnosticsLength;
    UCHAR   Diagnostics[4];
} ATM_CAUSE_IE;
typedef ATM_CAUSE_IE    *PATM_CAUSE_IE;

/* ATM leaf initiated join call identifier information element */
typedef struct _ATM_LIJ_CALLID_IE {
    ULONG   Identifier;
} ATM_LIJ_CALLID_IE;
typedef ATM_LIJ_CALLID_IE   *PATM_LIJ_CALLID_IE;

/* ATM raw information element */
typedef struct _ATM_RAW_IE {
    ULONG   RawIELength;
    ULONG   RawIEType;
    UCHAR   RawIEValue[1];
} ATM_RAW_IE;
typedef ATM_RAW_IE  *PATM_RAW_IE;

/* Call manager parameters */
typedef struct _Q2931_CALLMGR_PARAMETERS {
    ATM_ADDRESS CalledParty;
    ATM_ADDRESS CallingParty;
    ULONG       InfoElementCount;
    UCHAR       InfoElements[1];
} Q2931_CALLMGR_PARAMETERS;
typedef Q2931_CALLMGR_PARAMETERS    *PQ2931_CALLMGR_PARAMETERS;

/* ATM VPIVCI */
typedef struct _ATM_VPIVCI {
    ULONG   Vpi;
    ULONG   Vci;
} ATM_VPIVCI;
typedef ATM_VPIVCI  *PATM_VPIVCI;

/* ATM flow parameters */
typedef struct _ATM_FLOW_PARAMETERS {
    ATM_SERVICE_CATEGORY    ServiceCategory;
    ULONG                   AverageCellRate;
    ULONG                   PeakCellRate;
    ULONG                   MinimumCellRate;
    ULONG                   InitialCellRate;
    ULONG                   BurstLengthCells;
    ULONG                   MaxSduSize;
    ULONG                   TransientBufferExposure;
    ULONG                   CumulativeRMFixedRTT;
    UCHAR                   RateIncreaseFactor;
    UCHAR                   RateDecreaseFactor;
    USHORT                  ACRDecreaseTimeFactor;
    UCHAR                   MaximumCellsPerForwardRMCell;
    UCHAR                   MaximumForwardRMCellInterval;
    UCHAR                   CutoffDecreaseFactor;
    UCHAR                   Reserved1;
    ULONG                   MissingRMCellCount;
    ULONG                   Reserved2;
    ULONG                   Reserved3;
} ATM_FLOW_PARAMETERS;
typedef ATM_FLOW_PARAMETERS *PATM_FLOW_PARAMETERS;

/* ATM media parameters */
typedef struct _ATM_MEDIA_PARAMETERS {
    ATM_VPIVCI          ConnectionId;
    ATM_AAL_TYPE        AALType;
    ULONG               CellDelayVariationCLP0;
    ULONG               CellDelayVariationCLP1;
    ULONG               CellLossRatioCLP0;
    ULONG               CellLossRatioCLP1;
    ULONG               CellTransferDelayCLP0;
    ULONG               CellTransferDelayCLP1;
    ULONG               DefaultCLP;
    ATM_FLOW_PARAMETERS Transmit;
    ATM_FLOW_PARAMETERS Receive;
} ATM_MEDIA_PARAMETERS;
typedef ATM_MEDIA_PARAMETERS    *PATM_MEDIA_PARAMETERS;

/* ATM SAP */
typedef struct _ATM_SAP {
    ATM_BLLI_IE Blli;
    ATM_BHLI_IE Bhli;
    ULONG       NumberOfAddresses;
    UCHAR       Addresses[1];
} ATM_SAP;
typedef ATM_SAP *PATM_SAP;

/* ATM PVC SAP */
typedef struct _ATM_PVC_SAP {
    ATM_BLLI_IE Blli;
    ATM_BHLI_IE Bhli;
} ATM_PVC_SAP;
typedef ATM_PVC_SAP *PATM_PVC_SAP;

/* Add PVC */
typedef struct _Q2931_ADD_PVC {
    ATM_ADDRESS         CalledParty;
    ATM_ADDRESS         CallingParty;
    ATM_VPIVCI          ConnectionId;
    ATM_AAL_TYPE        AALType;
    ATM_FLOW_PARAMETERS ForwardFP;
    ATM_FLOW_PARAMETERS BackwardFP;
    ULONG               Flags;
    ATM_PVC_SAP         LocalSap;
    ATM_PVC_SAP         DestinationSap;
    BOOLEAN             LIJIdPresent;
    ATM_LIJ_CALLID_IE   LIJId;
} Q2931_ADD_PVC;
typedef Q2931_ADD_PVC   *PQ2931_ADD_PVC;

/* Delete PVC */
typedef struct _Q2931_DELETE_PVC {
    ATM_VPIVCI  ConnectionId;
} Q2931_DELETE_PVC;
typedef Q2931_DELETE_PVC    *PQ2931_DELETE_PVC;

/* Get call information */
typedef struct _CO_GET_CALL_INFORMATION {
    ULONG   CallInfoType;
    ULONG   CallInfoLength;
    PVOID   CallInfoBuffer;
} CO_GET_CALL_INFORMATION;
typedef CO_GET_CALL_INFORMATION *PCO_GET_CALL_INFORMATION;

/* ATM VC rates supported */
typedef struct ATM_VC_RATES_SUPPORTED {
    ULONG   MinCellRate;
    ULONG   MaxCellRate;
} ATM_VC_RATES_SUPPORTED;
typedef ATM_VC_RATES_SUPPORTED  *PATM_VC_RATES_SUPPORTED;

/* ATM AAL OOB information */
typedef struct _ATM_AAL_OOB_INFO {
    ATM_AAL_TYPE    AalType;
    union {
        struct _ATM_AAL5_INFO {
            BOOLEAN CellLossPriority;
            UCHAR   UserToUserIndication;
            UCHAR   CommonPartIndicator;
        } ATM_AAL5_INFO;
        struct _ATM_AAL0_INFO {
            BOOLEAN CellLossPriority;
            UCHAR   PayLoadTypeIdentifier;
        } ATM_AAL0_INFO;
    };
} ATM_AAL_OOB_INFO;
typedef ATM_AAL_OOB_INFO    *PATM_AAL_OOB_INFO;

/* ATM service address list */
typedef struct _ATM_SERVICE_ADDRESS_LIST {
    ATM_SERVICE_REGISTRY_TYPE   ServiceRegistryType;
    ULONG                       NumberOfAddressesAvailable;
    ULONG                       NumberOfAddressesReturned;
    ATM_ADDRESS                 Address[1];
} ATM_SERVICE_ADDRESS_LIST;
typedef ATM_SERVICE_ADDRESS_LIST    *PATM_SERVICE_ADDRESS_LIST;

#ifdef __cplusplus
} /* extern "C" */
#endif

#endif /* _ATM_H_ */
