summaryrefslogtreecommitdiffstats
path: root/private/ntos/inc/atm.h
diff options
context:
space:
mode:
authorAdam <you@example.com>2020-05-17 05:51:50 +0200
committerAdam <you@example.com>2020-05-17 05:51:50 +0200
commite611b132f9b8abe35b362e5870b74bce94a1e58e (patch)
treea5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/ntos/inc/atm.h
downloadNT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip
Diffstat (limited to 'private/ntos/inc/atm.h')
-rw-r--r--private/ntos/inc/atm.h581
1 files changed, 581 insertions, 0 deletions
diff --git a/private/ntos/inc/atm.h b/private/ntos/inc/atm.h
new file mode 100644
index 000000000..54a81e0f9
--- /dev/null
+++ b/private/ntos/inc/atm.h
@@ -0,0 +1,581 @@
+/*++
+
+Copyright (c) 1990-1994 Microsoft Corporation
+
+Module Name:
+
+ atm.h
+
+Abstract:
+
+ This module defines the structures, macros, and manifests available
+ to ATM aware components.
+
+Author:
+
+ Jameel Hyder - jameelh@microsoft.com
+
+Revision History:
+
+ Initial Version - March 1996
+
+--*/
+
+#ifndef _ATM_H_
+#define _ATM_H_
+
+//
+// Address type
+//
+typedef ULONG ATM_ADDRESSTYPE;
+
+#define ATM_NSAP 0
+#define ATM_E164 1
+
+//
+// ATM Address
+//
+#define ATM_MAC_ADDRESS_LENGTH 6 // Same as 802.x
+#define ATM_ADDRESS_LENGTH 20
+
+//
+// Special characters in ATM address string used in textual representations
+//
+#define ATM_ADDR_BLANK_CHAR L' '
+#define ATM_ADDR_PUNCTUATION_CHAR L'.'
+#define ATM_ADDR_E164_START_CHAR L'+'
+
+typedef struct _ATM_ADDRESS
+{
+ ATM_ADDRESSTYPE AddressType;
+ ULONG NumberOfDigits;
+ UCHAR Address[ATM_ADDRESS_LENGTH];
+} ATM_ADDRESS, *PATM_ADDRESS;
+
+
+
+//
+// AAL types that the miniport supports
+//
+#define AAL_TYPE_AAL0 1
+#define AAL_TYPE_AAL1 2
+#define AAL_TYPE_AAL34 4
+#define AAL_TYPE_AAL5 8
+
+typedef ULONG ATM_AAL_TYPE, *PATM_AAL_TYPE;
+
+
+//
+// Types of Information Elements
+//
+typedef enum
+{
+ IE_AALParameters,
+ IE_TrafficDescriptor,
+ IE_BroadbandBearerCapability,
+ IE_BHLI,
+ IE_BLLI,
+ IE_CalledPartyNumber,
+ IE_CalledPartySubaddress,
+ IE_CallingPartyNumber,
+ IE_CallingPartySubaddress,
+ IE_Cause,
+ IE_QOSClass,
+ IE_TransitNetworkSelection,
+ IE_BroadbandSendingComplete,
+ IE_LIJCallId,
+ IE_Raw
+} Q2931_IE_TYPE;
+
+
+//
+// Common header for each Information Element
+//
+typedef struct _Q2931_IE
+{
+ Q2931_IE_TYPE IEType;
+ ULONG IELength; // Bytes, including IEType and IELength fields
+ UCHAR IE[1];
+} Q2931_IE, *PQ2931_IE;
+
+
+//
+// Sap definition
+//
+#define SAP_TYPE_NSAP 0x00000001
+#define SAP_TYPE_E164 0x00000002
+
+//
+// AAL Parameters
+//
+typedef struct _AAL1_PARAMETERS
+{
+ UCHAR Subtype;
+ UCHAR CBRRate;
+ USHORT Multiplier;
+ UCHAR SourceClockRecoveryMethod;
+ UCHAR ErrorCorrectionMethod;
+ USHORT StructuredDataTransferBlocksize;
+ UCHAR PartiallyFilledCellsMethod;
+} AAL1_PARAMETERS, *PAAL1_PARAMETERS;
+
+typedef struct _AAL34_PARAMETERS
+{
+ USHORT ForwardMaxCPCSSDUSize;
+ USHORT BackwardMaxCPCSSDUSize;
+ USHORT LowestMID;
+ USHORT HighestMID;
+ UCHAR SSCSType;
+} AAL34_PARAMETERS, *PAAL34_PARAMETERS;
+
+typedef struct _AAL5_PARAMETERS
+{
+ USHORT ForwardMaxCPCSSDUSize;
+ USHORT BackwardMaxCPCSSDUSize;
+ UCHAR Mode;
+ UCHAR SSCSType;
+} AAL5_PARAMETERS, *PAAL5_PARAMETERS;
+
+typedef struct _AALUSER_PARAMETERS
+{
+ ULONG UserDefined;
+} AALUSER_PARAMETERS, *PAALUSER_PARAMETERS;
+
+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, *PAAL_PARAMETERS_IE;
+
+//
+// ATM Traffic Descriptor
+//
+typedef struct _ATM_TRAFFIC_DESCRIPTOR // For one direction
+{
+ ULONG PeakCellRateCLP0;
+ ULONG PeakCellRateCLP01;
+ ULONG SustainableCellRateCLP0;
+ ULONG SustainableCellRateCLP01;
+ ULONG MaximumBurstSizeCLP0;
+ ULONG MaximumBurstSizeCLP01;
+ BOOLEAN BestEffort;
+ BOOLEAN Tagging;
+} ATM_TRAFFIC_DESCRIPTOR, *PATM_TRAFFIC_DESCRIPTOR;
+
+
+typedef struct _ATM_TRAFFIC_DESCRIPTOR_IE
+{
+ ATM_TRAFFIC_DESCRIPTOR ForwardTD;
+ ATM_TRAFFIC_DESCRIPTOR BackwardTD;
+} ATM_TRAFFIC_DESCRIPTOR_IE, *PATM_TRAFFIC_DESCRIPTOR_IE;
+
+
+//
+// values used for the BearerClass field in the Broadband Bearer Capability IE
+//
+
+
+#define BCOB_A 0x00 // Bearer class A
+#define BCOB_C 0x01 // Bearer class C
+#define BCOB_X 0x02 // Bearer class X
+
+//
+// values used for the TrafficType field in the Broadband Bearer Capability IE
+//
+#define TT_NOIND 0x00 // No indication of traffic type
+#define TT_CBR 0x04 // Constant bit rate
+#define TT_VBR 0x06 // Variable bit rate
+
+//
+// values used for the TimingRequirements field in the Broadband Bearer Capability IE
+//
+#define TR_NOIND 0x00 // No timing requirement indication
+#define TR_END_TO_END 0x01 // End-to-end timing required
+#define TR_NO_END_TO_END 0x02 // End-to-end timing not required
+
+//
+// values used for the ClippingSusceptability field in the Broadband Bearer Capability IE
+//
+#define CLIP_NOT 0x00 // Not susceptible to clipping
+#define CLIP_SUS 0x20 // Susceptible to clipping
+
+//
+// values used for the UserPlaneConnectionConfig field in
+// the Broadband Bearer Capability IE
+//
+#define UP_P2P 0x00 // Point-to-point connection
+#define UP_P2MP 0x01 // Point-to-multipoint connection
+
+//
+// Broadband Bearer Capability
+//
+typedef struct _ATM_BROADBAND_BEARER_CAPABILITY_IE
+{
+ UCHAR BearerClass;
+ UCHAR TrafficType;
+ UCHAR TimingRequirements;
+ UCHAR ClippingSusceptability;
+ UCHAR UserPlaneConnectionConfig;
+} ATM_BROADBAND_BEARER_CAPABILITY_IE, *PATM_BROADBAND_BEARER_CAPABILITY_IE;
+
+//
+// values used for the HighLayerInfoType field in ATM_BHLI
+//
+#define BHLI_ISO 0x00 // ISO
+#define BHLI_UserSpecific 0x01 // User Specific
+#define BHLI_HighLayerProfile 0x02 // High layer profile (only in UNI3.0)
+#define BHLI_VendorSpecificAppId 0x03 // Vendor-Specific Application ID
+
+//
+// Broadband High layer Information
+//
+typedef struct _ATM_BHLI_IE
+{
+ ULONG HighLayerInfoType; // High Layer Information Type
+ ULONG HighLayerInfoLength; // number of bytes in HighLayerInfo
+ UCHAR HighLayerInfo[8]; // The value dependent on the
+ // HighLayerInfoType field
+} ATM_BHLI_IE, *PATM_BHLI_IE;
+
+//
+// values used for Layer2Protocol in B-LLI
+//
+#define BLLI_L2_ISO_1745 0x01 // Basic mode ISO 1745
+#define BLLI_L2_Q921 0x02 // CCITT Rec. Q.921
+#define BLLI_L2_X25L 0x06 // CCITT Rec. X.25, link layer
+#define BLLI_L2_X25M 0x07 // CCITT Rec. X.25, multilink
+#define BLLI_L2_ELAPB 0x08 // Extended LAPB; for half duplex operation
+#define BLLI_L2_HDLC_NRM 0x09 // HDLC NRM (ISO 4335)
+#define BLLI_L2_HDLC_ABM 0x0A // HDLC ABM (ISO 4335)
+#define BLLI_L2_HDLC_ARM 0x0B // HDLC ARM (ISO 4335)
+#define BLLI_L2_LLC 0x0C // LAN logical link control (ISO 8802/2)
+#define BLLI_L2_X75 0x0D // CCITT Rec. X.75, single link procedure
+#define BLLI_L2_Q922 0x0E // CCITT Rec. Q.922
+#define BLLI_L2_USER_SPECIFIED 0x10 // User Specified
+#define BLLI_L2_ISO_7776 0x11 // ISO 7776 DTE-DTE operation
+
+//
+// values used for Layer3Protocol in B-LLI
+//
+#define BLLI_L3_X25 0x06 // CCITT Rec. X.25, packet layer
+#define BLLI_L3_ISO_8208 0x07 // ISO/IEC 8208 (X.25 packet layer for DTE
+#define BLLI_L3_X223 0x08 // X.223/ISO 8878
+#define BLLI_L3_SIO_8473 0x09 // ISO/IEC 8473 (OSI connectionless)
+#define BLLI_L3_T70 0x0A // CCITT Rec. T.70 min. network layer
+#define BLLI_L3_ISO_TR9577 0x0B // ISO/IEC TR 9577 Network Layer Protocol ID
+#define BLLI_L3_USER_SPECIFIED 0x10 // User Specified
+
+//
+// values used for Layer3IPI in struct B-LLI
+//
+#define BLLI_L3_IPI_SNAP 0x80 // IEEE 802.1 SNAP identifier
+#define BLLI_L3_IPI_IP 0xCC // Internet Protocol (IP) identifier
+
+//
+// Broadband Lower Layer Information
+//
+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, *PATM_BLLI_IE;
+
+
+//
+// Called Party Number
+//
+// If present, this IE overrides the Called Address specified in
+// the main parameter block.
+//
+typedef ATM_ADDRESS ATM_CALLED_PARTY_NUMBER_IE;
+
+
+//
+// Called Party Subaddress
+//
+typedef ATM_ADDRESS ATM_CALLED_PARTY_SUBADDRESS_IE;
+
+
+
+//
+// Calling Party Number
+//
+typedef struct _ATM_CALLING_PARTY_NUMBER_IE
+{
+ ATM_ADDRESS Number;
+ UCHAR PresentationIndication;
+ UCHAR ScreeningIndicator;
+} ATM_CALLING_PARTY_NUMBER_IE, *PATM_CALLING_PARTY_NUMBER_IE;
+
+
+//
+// Calling Party Subaddress
+//
+typedef ATM_ADDRESS ATM_CALLING_PARTY_SUBADDRESS_IE;
+
+
+//
+// QOS Class
+//
+typedef struct _ATM_QOS_CLASS_IE
+{
+ UCHAR QOSClassForward;
+ UCHAR QOSClassBackward;
+} ATM_QOS_CLASS_IE, *PATM_QOS_CLASS_IE;
+
+//
+// Broadband Sending Complete
+//
+typedef struct _ATM_BROADBAND_SENDING_COMPLETE_IE
+{
+ UCHAR SendingComplete;
+} ATM_BROADBAND_SENDING_COMPLETE_IE, *PATM_BROADBAND_SENDING_COMPLETE_IE;
+
+//
+// Transit Network Selection
+//
+typedef struct _ATM_TRANSIT_NETWORK_SELECTION_IE
+{
+ UCHAR TypeOfNetworkId;
+ UCHAR NetworkIdPlan;
+ UCHAR NetworkIdLength;
+ UCHAR NetworkId[1];
+} ATM_TRANSIT_NETWORK_SELECTION_IE, *PATM_TRANSIT_NETWORK_SELECTION_IE;
+
+//
+// Cause
+//
+typedef struct _ATM_CAUSE_IE
+{
+ UCHAR Location;
+ UCHAR Cause;
+ UCHAR DiagnosticsLength;
+ UCHAR Diagnostics[4];
+} ATM_CAUSE_IE, *PATM_CAUSE_IE;
+
+
+//
+// Leaf Initiated Join (LIJ) Identifier
+//
+typedef struct _ATM_LIJ_CALLID_IE
+{
+ ULONG Identifier;
+} ATM_LIJ_CALLID_IE, *PATM_LIJ_CALLID_IE;
+
+
+//
+// Raw Information Element - the user can fill in whatever he wants
+//
+typedef struct _ATM_RAW_IE
+{
+ ULONG RawIELength;
+ ULONG RawIEType;
+ UCHAR RawIEValue[1];
+} ATM_RAW_IE, *PATM_RAW_IE;
+
+
+//
+// This is the value of the ParamType field in the CO_SPECIFIC_PARAMETERS structure
+// when the Parameters[] field contains ATM media specific values in the structure
+// ATM_MEDIA_PARAMETERS.
+//
+#define ATM_MEDIA_SPECIFIC 0x00000001
+
+//
+// The Q2931 Call Manager Specific parameters that goes into the
+// CallMgrParameters->CallMgrSpecific.Parameters
+//
+typedef struct _Q2931_CALLMGR_PARAMETERS
+{
+ ATM_ADDRESS CalledParty;
+ ATM_ADDRESS CallingParty;
+ ULONG InfoElementCount;
+ UCHAR InfoElements[1]; // one or more info elements
+} Q2931_CALLMGR_PARAMETERS, *PQ2931_CALLMGR_PARAMETERS;
+
+
+//
+// This is the specific portion of either the Media parameters or the CallMgr
+// Parameters. The following two defines are used in the ParamType field
+// depending on the signaling type.
+//
+#define CALLMGR_SPECIFIC_Q2931 0x00000001
+
+typedef struct _ATM_VPIVCI
+{
+ ULONG Vpi;
+ ULONG Vci;
+} ATM_VPIVCI, *PATM_VPIVCI;
+
+//
+// ATM Service Category
+//
+#define ATM_SERVICE_CATEGORY_CBR 1 // Constant Bit Rate
+#define ATM_SERVICE_CATEGORY_VBR 2 // Variable Bit Rate
+#define ATM_SERVICE_CATEGORY_UBR 4 // Unspecified Bit Rate
+#define ATM_SERVICE_CATEGORY_ABR 8 // Available Bit Rate
+
+typedef ULONG ATM_SERVICE_CATEGORY, *PATM_SERVICE_CATEGORY;
+
+//
+// ATM flow parameters for use in specifying Media parameters
+//
+typedef struct _ATM_FLOW_PARAMETERS
+{
+ ULONG AverageCellRate; // units in cells/sec
+ ULONG PeakCellRate; // units in cells/sec
+ ULONG BurstLengthCells; // units in cells
+ ULONG MaxSduSize; // MTU in bytes
+ ATM_SERVICE_CATEGORY ServiceCategory;
+} ATM_FLOW_PARAMETERS, *PATM_FLOW_PARAMETERS;
+
+//
+// ATM Specific Media parameters - this is the Media specific structure for ATM
+// that goes into MediaParameters->MediaSpecific.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, *PATM_MEDIA_PARAMETERS;
+
+
+#ifndef SAP_FIELD_ABSENT
+#define SAP_FIELD_ABSENT ((ULONG)0xfffffffe)
+#endif
+
+#ifndef SAP_FIELD_ANY
+#define SAP_FIELD_ANY ((ULONG)0xffffffff)
+#endif
+
+#define SAP_FIELD_ANY_AESA_SEL ((ULONG)0xfffffffc) // SEL is wild-carded
+#define SAP_FIELD_ANY_AESA_REST ((ULONG)0xfffffffc) // All of the address
+ // except SEL, is wild-carded
+
+//
+// The ATM Specific SAP definition
+//
+typedef struct _ATM_SAP
+{
+ ATM_BLLI_IE Blli;
+ ATM_BHLI_IE Bhli;
+ ULONG NumberOfAddresses;
+ UCHAR Addresses[1]; // each of type ATM_ADDRESS
+} ATM_SAP, *PATM_SAP;
+
+//
+// The ATM Specific SAP definition when adding PVCs
+//
+typedef struct _ATM_PVC_SAP
+{
+ ATM_BLLI_IE Blli;
+ ATM_BHLI_IE Bhli;
+} ATM_PVC_SAP, *PATM_PVC_SAP;
+
+//
+// The structure passed in the Parameters field of the CO_SPECIFIC_PARAMETERS
+// structure passed in an ADD PVC request for Q.2931
+//
+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, *PQ2931_ADD_PVC;
+
+//
+// These flags are defined to be used with Q2931_ADD_PVC above
+//
+// this VC should be used by the CallMgr as the signaling VC now
+#define CO_FLAG_SIGNALING_VC 0x00000001
+
+//
+// use this flag when the VC cannot be used for a MakeCall - incoming call only
+// the call mgr can then be optimized not to search these PVCs during make call
+// processing.
+#define CO_FLAG_NO_DEST_SAP 0x00000002
+
+//
+// the structure passed in the Parameters field of the CO_SPECIFIC_PARAMETERS
+// structure passed in an NDIS_CO_PVC request for Q2931
+//
+typedef struct _Q2931_DELETE_PVC
+{
+ ATM_VPIVCI ConnectionId;
+} Q2931_DELETE_PVC, *PQ2931_DELETE_PVC;
+
+typedef struct _CO_GET_CALL_INFORMATION
+{
+ ULONG CallInfoType;
+ ULONG CallInfoLength;
+ PVOID CallInfoBuffer;
+} CO_GET_CALL_INFORMATION, *PCO_GET_CALL_INFORMATION;
+
+//
+// the structure for returning the supported VC rates from the miniport,
+// returned in response to OID_ATM_SUPPORTED_VC_RATES
+//
+typedef struct _ATM_VC_RATES_SUPPORTED
+{
+ ULONG MinCellRate;
+ ULONG MaxCellRate;
+} ATM_VC_RATES_SUPPORTED, *PATM_VC_RATES_SUPPORTED;
+
+//
+// NDIS_PACKET out of band information for ATM.
+//
+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, *PATM_AAL_OOB_INFO;
+
+#endif // _ATM_H_
+