diff options
author | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
---|---|---|
committer | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
commit | e611b132f9b8abe35b362e5870b74bce94a1e58e (patch) | |
tree | a5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/ntos/inc/atm.h | |
download | NT4.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.h | 581 |
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_ + |