[PSDK]
[reactos.git] / include / psdk / qos.h
index 34d4832..4959362 100644 (file)
@@ -1,26 +1,4 @@
-/*
- * qos.h
- *
- * Structures and definitions for QoS data types.
- *
- * This file is part of the w32api package.
- *
- * Contributors:
- *   Created by Alex Ionescu <alex@relsoft.net>
- *
- * THIS SOFTWARE IS NOT COPYRIGHTED
- *
- * This source code is offered for use in the public domain. You may
- * use, modify or distribute it freely.
- *
- * This code is distributed in the hope that it will be useful but
- * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
- * DISCLAIMED. This includes but is not limited to warranties of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
- */
-#ifndef __QOS_H
-#define __QOS_H
+#pragma once
 
 #ifdef __cplusplus
 extern "C" {
@@ -28,20 +6,68 @@ extern "C" {
 
 typedef ULONG SERVICETYPE;
 
-typedef struct _flowspec
-{
-    ULONG TokenRate;
-    ULONG TokenBucketSize;
-    ULONG PeakBandwidth;
-    ULONG Latency;
-    ULONG DelayVariation;
-    SERVICETYPE        ServiceType;
-    ULONG MaxSduSize;
-    ULONG MinimumPolicedSize;
+#define SERVICETYPE_NOTRAFFIC               0x00000000
+#define SERVICETYPE_BESTEFFORT              0x00000001
+#define SERVICETYPE_CONTROLLEDLOAD          0x00000002
+#define SERVICETYPE_GUARANTEED              0x00000003
+#define SERVICETYPE_NETWORK_UNAVAILABLE     0x00000004
+#define SERVICETYPE_GENERAL_INFORMATION     0x00000005
+#define SERVICETYPE_NOCHANGE                0x00000006
+#define SERVICETYPE_NONCONFORMING           0x00000009
+#define SERVICETYPE_NETWORK_CONTROL         0x0000000A
+#define SERVICETYPE_QUALITATIVE             0x0000000D
+
+#define SERVICE_BESTEFFORT                  0x80010000
+#define SERVICE_CONTROLLEDLOAD              0x80020000
+#define SERVICE_GUARANTEED                  0x80040000
+#define SERVICE_QUALITATIVE                 0x80200000
+
+#define SERVICE_NO_TRAFFIC_CONTROL          0x81000000
+
+#define SERVICE_NO_QOS_SIGNALING            0x40000000
+
+#define QOS_NOT_SPECIFIED                   0xFFFFFFFF
+
+#define POSITIVE_INFINITY_RATE              0xFFFFFFFE
+
+#define QOS_GENERAL_ID_BASE                 2000
+
+#define QOS_OBJECT_END_OF_LIST              (0x00000001 + QOS_GENERAL_ID_BASE) 
+#define   QOS_OBJECT_SD_MODE                (0x00000002 + QOS_GENERAL_ID_BASE) 
+#define   QOS_OBJECT_SHAPING_RATE           (0x00000003 + QOS_GENERAL_ID_BASE)
+#define   QOS_OBJECT_DESTADDR               (0x00000004 + QOS_GENERAL_ID_BASE)
+
+#define TC_NONCONF_BORROW                   0
+#define TC_NONCONF_SHAPE                    1
+#define TC_NONCONF_DISCARD                  2
+#define TC_NONCONF_BORROW_PLUS              3
+
+typedef struct _flowspec {
+  ULONG TokenRate;
+  ULONG TokenBucketSize;
+  ULONG PeakBandwidth;
+  ULONG Latency;
+  ULONG DelayVariation;
+  SERVICETYPE ServiceType;
+  ULONG MaxSduSize;
+  ULONG MinimumPolicedSize;
 } FLOWSPEC, *PFLOWSPEC, *LPFLOWSPEC;
 
+typedef struct _QOS_OBJECT_HDR {
+  ULONG ObjectType;
+  ULONG ObjectLength;
+} QOS_OBJECT_HDR, *LPQOS_OBJECT_HDR;
+
+typedef struct _QOS_SD_MODE {
+  QOS_OBJECT_HDR ObjectHdr;
+  ULONG ShapeDiscardMode;
+} QOS_SD_MODE, *LPQOS_SD_MODE;
+
+typedef struct _QOS_SHAPING_RATE {
+  QOS_OBJECT_HDR ObjectHdr;
+  ULONG ShapingRate;
+} QOS_SHAPING_RATE, *LPQOS_SHAPING_RATE;
+
 #ifdef __cplusplus
 }
 #endif
-
-#endif