📄 qos.h
字号:
FLOWSPEC FlowSpec;
ULONG NumFilters;
LPRSVP_FILTERSPEC FilterList;
} FLOWDESCRIPTOR, *LPFLOWDESCRIPTOR;
/*
* RSVP_POLICY contains undefined policy data. RSVP transports this
* data on behalf of the Policy Control component.
*/
typedef struct _RSVP_POLICY {
HANDLE Type; /* Pointer to structure: TBD */
} RSVP_POLICY, *LPRSVP_POLICY;
typedef const RSVP_POLICY *LPCRSVP_POLICY;
/*
* RSVP_RESERVE_INFO Structure used for storing RSVP specific
* information for fine tuning interaction via the Winsock2
* Generic QoS API via the provider specific buffer. This structure
* includes the QOS_OBJECT_HDR structure directly
*/
typedef struct _RSVP_RESERVE_INFO {
QOS_OBJECT_HDR ObjectHdr; /* type and length of this object */
ULONG Style; /* RSVP Style (FF,WF,SE) */
ULONG ConfirmRequest; /* Non Zero for Confirm Request */
LPRSVP_POLICY Policy; /* Optional policy data */
ULONG NumFlowDesc; /* Number of FlowDesc */
LPFLOWDESCRIPTOR FlowDescList; /* FlowDesc list */
} RSVP_RESERVE_INFO, *LPRSVP_RESERVE_INFO;
typedef const RSVP_RESERVE_INFO *LPCRSVP_RESERVE_INFO;
/*
* definitions for the ulStyle in the previous structure
*/
#define RSVP_WILDCARD_STYLE 0x00000001
#define RSVP_FIXED_FILTER_STYLE 0x00000002
#define RSVP_SHARED_EXPLICIT_STYLE 0x00000003
/*
* RSVP_STATUS_INFO Structure used for storing RSVP specific
* error of status indications. This also serves as a header
* for additional objects in the provider specific buffer when
* interacting via Winsock2 Generic QoS API. This structure includes
* the QOS_OBJECT_COUNT and QOS_OBJECT_HDR structures directly It is
* expected to be the first structure in the provider specific structure
* since it includes the QOS_OBJECT_COUNT
*/
typedef struct _RSVP_STATUS_INFO {
QOS_OBJECT_HDR ObjectHdr; /* Object Hdr */
ULONG StatusCode; /* Error or Status Information see
* Winsock2.h */
ULONG ExtendedStatus1;/* Provider specific status extension */
ULONG ExtendedStatus2;/* Provider specific status extension */
} RSVP_STATUS_INFO, *LPRSVP_STATUS_INFO;
typedef const RSVP_STATUS_INFO *LPCRSVP_STATUS_INFO;
/*
* This structure defines the absolute priorty of the flow. Priorities in the
* range of 0-7 are currently defined. Receive Priority is not currently used,
* but may at some point in the future.
*/
typedef struct _QOS_PRIORITY {
QOS_OBJECT_HDR ObjectHdr;
UCHAR SendPriority; /* this gets mapped to layer 2 priority.*/
UCHAR SendFlags; /* there are none currently defined.*/
UCHAR ReceivePriority; /* this could be used to decide who
* gets forwarded up the stack first
* - not used now */
UCHAR Unused;
} QOS_PRIORITY, *LPQOS_PRIORITY;
/*
* This structure is used to define the behaviour that the traffic
* control packet shaper will apply to the flow.
*
* PS_NONCONF_BORROW - the flow will receive resources remaining
* after all higher priority flows have been serviced. If a
* TokenRate is specified, packets may be non-conforming and
* will be demoted to less than best-effort priority.
*
* PS_NONCONF_SHAPE - TokenRate must be specified. Non-conforming
* packets will be retianed in the packet shaper until they become
* conforming.
*
* PS_NONCONF_DISCARD - TokenRate must be specified. Non-conforming
* packets will be discarded.
*
*/
typedef struct _QOS_SD_MODE {
QOS_OBJECT_HDR ObjectHdr;
ULONG ShapeDiscardMode;
} QOS_SD_MODE, *LPQOS_SD_MODE;
#define TC_NONCONF_BORROW 0
#define TC_NONCONF_SHAPE 1
#define TC_NONCONF_DISCARD 2
/*
* This structure may carry an 802.1 TrafficClass parameter which
* has been provided to the host by a layer 2 network, for example,
* in an 802.1 extended RSVP RESV message. If this object is obtained
* from the network, hosts will stamp the MAC headers of corresponding
* transmitted packets, with the value in the object. Otherwise, hosts
* may select a value based on the standard Intserv mapping of
* ServiceType to 802.1 TrafficClass.
*
*/
typedef struct _QOS_TRAFFIC_CLASS {
QOS_OBJECT_HDR ObjectHdr;
ULONG TrafficClass;
} QOS_TRAFFIC_CLASS, *LPQOS_TRAFFIC_CLASS;
/*
* this structure defines the "General Characterization Parameters" contained in
* the RSVP Adspec object
*/
typedef struct _AD_GENERAL_PARAMS{
ULONG IntServAwareHopCount; /* number of hops that conform to
* Integrated Services requirements */
ULONG PathBandwidthEstimate; /* minimum bandwidth available from
* sender to receiver */
ULONG MinimumLatency; /* sum of minimum latency of the packet
* forwarding process in routers
* (in usec)*/
ULONG PathMTU; /* max transmission unit end to end that
* will not incur fragmentation */
ULONG Flags; /* used to hold break bits.*/
} AD_GENERAL_PARAMS, *LPAD_GENERAL_PARAMS;
/*
* Minimum Latency may be set to this "undefined" value
*/
#define INDETERMINATE_LATENCY 0xFFFFFFFF;
/*
* This Flag is used to indicate the existence of a network element not
* supporting QoS control services somewhere in the data path. If this bit
* is set in the specific service override then it indicates that that
* service was not supported at at least one hop.
*/
#define AD_FLAG_BREAK_BIT 0x00000001
/*
* this structure describes the Guaranteed service parameters
*/
typedef struct _AD_GUARANTEED {
ULONG CTotal;
ULONG DTotal;
ULONG CSum;
ULONG DSum;
} AD_GUARANTEED, *LPAD_GUARANTEED;
/*
* this structure describes the format of the parameter buffer that can be
* included in the Service_Type structure below. This structure allows an
* application to include any valid Int Serv service parameter in the Buffer
* value, after providing the Int Serv parameter id in the ParameterId field.
*/
typedef struct _PARAM_BUFFER {
ULONG ParameterId; /* Int Server parameter ID */
ULONG Length; /* total length of this structure
* ( 8 bytes + length of Buffer ) */
UCHAR Buffer[1]; /* Paramter itself */
} PARAM_BUFFER, *LPPARAM_BUFFER;
/*
* this structure contains the service types supported
*/
typedef struct _CONTROL_SERVICE {
/*
* the length of this entire structure including the following buffer.
* This length value can be added to the ptr to the structure to get the ptr
* to the next SERVICE_TYPE structure in the list, until the
* NumberOfServices count has been exhausted.
*/
ULONG Length;
SERVICETYPE Service;
AD_GENERAL_PARAMS Overrides;
/*
* service specific information ( controlled load has no service specific
* info here )
*/
union {
AD_GUARANTEED Guaranteed;
PARAM_BUFFER ParamBuffer[1]; /* allows for other services down
* the road */
};
} CONTROL_SERVICE, *LPCONTROL_SERVICE;
/*
* This structure defines the information which is carried in the Rsvp
* Adspec. This Rsvp object typically indicates which service types are
* available ( Controlled Load and/or Guaranteed Service ), if a non-Rsvp
* hop has been encountered by the Path message, and the minumum MTU along
* the path. The services array indicates which services are supported
*/
typedef struct _RSVP_ADSPEC {
QOS_OBJECT_HDR ObjectHdr;
AD_GENERAL_PARAMS GeneralParams; /* contains the general
* characterization paramters */
ULONG NumberOfServices; /* count of the number of services */
CONTROL_SERVICE Services[1]; /* a list of the services
* supported/requested */
} RSVP_ADSPEC, *LPRSVP_ADSPEC;
#endif /* __QOS_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -