This section describes the protocol-specific QOS structure for ATM, which is contained in the ProviderSpecific.buf field of the QOS structure. Note that the use of this ATM-specific QOS structure is optional by Windows Sockets 2 clients, and the ATM service provider is required to map the generic FLOWSPEC structure to appropriate Q.2931 Information Elements. However, if both the generic FLOWSPEC structure and ATM-specific QOS structure are specified, the value specified in the ATM-specific QOS structure should take precedence should there be any conflicts. See Windows Sockets 2 API specification section 2.7 for more information about the QOS provisions and FLOWSPEC structure.
The protocol-specific QOS structure for ATM is a concatenation of Q.2931 Information Element (IE) structures, which are defined below. If an application omits an IE that UNI 3.x mandates, the service provider should insert a reasonable default value, taking the information in the FLOWSPEC structure into account if applicable.
The handling of repeated IEs is dependent on the IE itself. If an IE is repeated and it is one that is allowed to be repeated per ATM Forum UNI spec then the provider must handle it properly. In this case, order in the list determines preference order, with elements appearing earlier in the list being more preferred. If an IE is repeated and this is not allowed per ATM Forum UNI spec, the provider may either fail the request from the client (the preferred option) or use the last IE of that type found.
Each individual IE structure is formatted in the following fashion and identified by the IEType field:
typedef struct {
Q2931_IE_TYPE IEType;
ULONG IELength;
UCHAR IE[1];
} Q2931_IE;
Legal values for the IEType field are defined below:
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,
} Q2931_IE_TYPE;
The IE field is overlaid by a specific IE structure defined below, and the IELength field is the total length in bytes of the IE structure including the IEType and IELength fields. The semantics and legal values for each element of these IE structures are per ATM UNI 3.x specification. "SAP_FIELD_ABSENT" can be used for those elements which are optional for a given IE structure, per ATM UNI 3.x specification.