home *** CD-ROM | disk | FTP | other *** search
/ PC Format (South-Africa) 2001 June / PCFJune.iso / Xenon / C++ / FreeCommandLineTools.exe / Include / qossp.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-31  |  27.2 KB  |  667 lines

  1. /*++
  2.  
  3. Copyright (c) 1998  Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     qos.h - QoS definitions for NDIS components.
  8.  
  9. Abstract:
  10.  
  11.     This module defines the type of objects that can go into the 
  12.     ProviderSpecific buffer in the QOS structure.
  13.  
  14. Revision History:
  15.  
  16. --*/
  17.  
  18. #ifndef __QOSSP_H_
  19. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  20. #define __QOSSP_H_
  21.  
  22. /*
  23.  * Definition of object Types
  24.  *
  25.  *
  26.  * define the values for ObjectType above - RSVP Objects ids start at an 
  27.  * offset from zero to allow for ATM objects that might be defined in the 
  28.  * lower number range.
  29.  */
  30. #define   RSVP_OBJECT_ID_BASE         1000
  31. #define   RSVP_OBJECT_STATUS_INFO     (0x00000000 + RSVP_OBJECT_ID_BASE)
  32.           /* RSVP_STATUS_INFO structure passed */
  33. #define   RSVP_OBJECT_RESERVE_INFO    (0x00000001 + RSVP_OBJECT_ID_BASE)
  34.           /* RSVP_RESERVE_INFO structure passed */
  35. #define   RSVP_OBJECT_ADSPEC          (0x00000002 + RSVP_OBJECT_ID_BASE)
  36.           /* RSVP_ADSPEC structure passed */
  37. #define   RSVP_OBJECT_POLICY_INFO    (0x00000003 + RSVP_OBJECT_ID_BASE)
  38.           /* RSVP POLICY ELEMENT(S) retrieved */
  39.  
  40.  
  41. /* 
  42.  * IPV4 addressing for RSVP FILTERSPECS
  43.  */
  44. typedef union _IN_ADDR_IPV4 {
  45.  
  46.     ULONG  Addr;
  47.     UCHAR  AddrBytes[4];
  48.  
  49. } IN_ADDR_IPV4, *LPIN_ADDR_IPV4;
  50.  
  51. /*
  52.  * IPV6 addressing for RSVP FILTERSPECS
  53.  */
  54. typedef struct _IN_ADDR_IPV6 {
  55.  
  56.     UCHAR  Addr[16];               //IPV6 address
  57.  
  58. } IN_ADDR_IPV6, *LPIN_ADDR_IPV6;
  59.  
  60. typedef const IN_ADDR_IPV6  *LPCIN_ADDR_IPV6;
  61.  
  62. /*
  63.  * IPV4 addressing for RSVP FILTERSPECS
  64.  */
  65. typedef struct _RSVP_FILTERSPEC_V4 {
  66.  
  67.     IN_ADDR_IPV4    Address;
  68.     USHORT          Unused;
  69.     USHORT          Port;
  70.  
  71. } RSVP_FILTERSPEC_V4, *LPRSVP_FILTERSPEC_V4;
  72.  
  73. typedef struct _RSVP_FILTERSPEC_V6 {
  74.  
  75.     IN_ADDR_IPV6    Address;
  76.     USHORT          UnUsed;
  77.     USHORT          Port;
  78.  
  79. } RSVP_FILTERSPEC_V6, *LPRSVP_FILTERSPEC_V6;
  80.  
  81.  
  82. typedef struct _RSVP_FILTERSPEC_V6_FLOW {
  83.  
  84.     IN_ADDR_IPV6    Address;
  85.     UCHAR           UnUsed;
  86.     UCHAR           FlowLabel[3];
  87.  
  88. } RSVP_FILTERSPEC_V6_FLOW, *LPRSVP_FILTERSPEC_V6_FLOW;
  89.  
  90. typedef struct _RSVP_FILTERSPEC_V4_GPI {
  91.  
  92.     IN_ADDR_IPV4    Address;
  93.     ULONG           GeneralPortId;
  94.  
  95. } RSVP_FILTERSPEC_V4_GPI, *LPRSVP_FILTERSPEC_V4_GPI;
  96.  
  97. typedef struct _RSVP_FILTERSPEC_V6_GPI {
  98.  
  99.     IN_ADDR_IPV6    Address;
  100.     ULONG           GeneralPortId;
  101.  
  102. } RSVP_FILTERSPEC_V6_GPI, *LPRSVP_FILTERSPEC_V6_GPI;
  103.  
  104.  
  105. /*
  106.  * FILTERSPEC TYPES used in making reservations.
  107.  */
  108. typedef enum {
  109.  
  110.         FILTERSPECV4 = 1,
  111.         FILTERSPECV6,
  112.         FILTERSPECV6_FLOW,
  113.         FILTERSPECV4_GPI,
  114.         FILTERSPECV6_GPI,
  115.         FILTERSPEC_END
  116.  
  117. } FilterType;
  118.  
  119. typedef struct _RSVP_FILTERSPEC {
  120.  
  121.     FilterType   Type;
  122.  
  123.     union {
  124.         RSVP_FILTERSPEC_V4      FilterSpecV4;
  125.         RSVP_FILTERSPEC_V6      FilterSpecV6;
  126.         RSVP_FILTERSPEC_V6_FLOW FilterSpecV6Flow;
  127.         RSVP_FILTERSPEC_V4_GPI  FilterSpecV4Gpi;
  128.         RSVP_FILTERSPEC_V6_GPI  FilterSpecV6Gpi;
  129.     };
  130.  
  131. } RSVP_FILTERSPEC, *LPRSVP_FILTERSPEC;
  132.  
  133. /*
  134.  * FLOWDESCRIPTOR Structure used for specifying one or more
  135.  * Filters per Flowspec.
  136.  */
  137. typedef struct _FLOWDESCRIPTOR {
  138.  
  139.     FLOWSPEC            FlowSpec;
  140.     ULONG               NumFilters;
  141.     LPRSVP_FILTERSPEC   FilterList;
  142.  
  143. } FLOWDESCRIPTOR, *LPFLOWDESCRIPTOR;
  144.  
  145. /*
  146.  * RSVP_POLICY contains undefined policy data.  RSVP transports this
  147.  * data on behalf of the Policy Control component.
  148.  */
  149. typedef struct _RSVP_POLICY {
  150.     USHORT  Len;         /* total length of this element object */
  151.     USHORT  Type;
  152.     UCHAR   Info[4];
  153. } RSVP_POLICY, *LPRSVP_POLICY;
  154.  
  155. typedef const RSVP_POLICY *LPCRSVP_POLICY;
  156. #define RSVP_POLICY_HDR_LEN    ( sizeof(USHORT) + sizeof(USHORT) )
  157.  
  158. /*
  159.  * RSVP_POLICY_INFO contains undefined policy element(s) retrieved from RSVP.  
  160.  */
  161. typedef struct _RSVP_POLICY_INFO  {
  162.  
  163.     QOS_OBJECT_HDR     ObjectHdr;
  164.     ULONG              NumPolicyElement;         /* count of the 
  165.                                                   * number of policy elements */
  166.     RSVP_POLICY        PolicyElement[1];         /* a list of the policy 
  167.                                                   * elements retrieved */
  168.  
  169. } RSVP_POLICY_INFO, *LPRSVP_POLICY_INFO;
  170.  
  171. /*
  172.  * RSVP_RESERVE_INFO Structure used for storing RSVP specific
  173.  * information for fine tuning interaction via the Winsock2
  174.  * Generic QoS API via the provider specific buffer. This structure
  175.  * includes the QOS_OBJECT_HDR structure directly
  176.  */
  177.  
  178. typedef struct _RSVP_RESERVE_INFO {
  179.  
  180.     QOS_OBJECT_HDR      ObjectHdr;            /* type and length of this object */
  181.     ULONG               Style;                /* RSVP Style (FF,WF,SE) */
  182.     ULONG               ConfirmRequest;       /* Non Zero for Confirm Request (receive only) */
  183.     LPRSVP_POLICY_INFO  PolicyElementList;    /* Points to the set of policy elements */
  184.     ULONG               NumFlowDesc;          /* Number of FlowDesc */
  185.     LPFLOWDESCRIPTOR    FlowDescList;         /* Points to the FlowDesc list */
  186.  
  187. } RSVP_RESERVE_INFO, *LPRSVP_RESERVE_INFO;
  188.  
  189. typedef const RSVP_RESERVE_INFO *LPCRSVP_RESERVE_INFO;
  190.  
  191. /*
  192.  * definitions for the ulStyle in the previous structure
  193.  */
  194. #define RSVP_DEFAULT_STYLE            0x00000000
  195. #define RSVP_WILDCARD_STYLE           0x00000001
  196. #define RSVP_FIXED_FILTER_STYLE       0x00000002
  197. #define RSVP_SHARED_EXPLICIT_STYLE    0x00000003
  198.  
  199. /*
  200.  * RSVP_STATUS_INFO Structure used for storing RSVP specific
  201.  * error of status indications.  This also serves as a header
  202.  * for additional objects in the provider specific buffer when
  203.  * interacting via Winsock2 Generic QoS API. This structure includes
  204.  * the QOS_OBJECT_COUNT and QOS_OBJECT_HDR structures directly It is
  205.  * expected to be the first structure in the provider specific structure
  206.  * since it includes the QOS_OBJECT_COUNT
  207.  */
  208.  
  209. typedef struct _RSVP_STATUS_INFO {
  210.  
  211.     QOS_OBJECT_HDR      ObjectHdr;      /* Object Hdr */
  212.     ULONG               StatusCode;     /* Error or Status Information see 
  213.                                          * Winsock2.h */
  214.     ULONG               ExtendedStatus1;/* Provider specific status extension */
  215.     ULONG               ExtendedStatus2;/* Provider specific status extension */
  216.  
  217. } RSVP_STATUS_INFO, *LPRSVP_STATUS_INFO;
  218.  
  219. typedef const RSVP_STATUS_INFO *LPCRSVP_STATUS_INFO;
  220.  
  221.  
  222. /*
  223.  * QOS_DestAddr structure -- used for WSAIoctl(SIO_SET_QOS) when we
  224.  * do not want to issue a connect for a sending socket.  The destination
  225.  * address is required so we can generate the session information for
  226.  * RSVP signalling.
  227. */
  228.  
  229. typedef struct _QOS_DESTADDR {
  230.     QOS_OBJECT_HDR ObjectHdr;                     /* Object header */
  231.     const struct sockaddr *  SocketAddress;       /* Destination socket address */
  232.     ULONG                    SocketAddressLength; /* Length of the address structure */
  233. } QOS_DESTADDR, *LPQOS_DESTADDR;
  234.  
  235. typedef const QOS_DESTADDR * LPCQOS_DESTADDR;
  236.  
  237.  
  238.  
  239. /*
  240.  * this structure defines the "General Characterization Parameters" contained in
  241.  * the RSVP Adspec object
  242.  */
  243. typedef struct _AD_GENERAL_PARAMS{
  244.  
  245.     ULONG       IntServAwareHopCount;   /* number of hops that conform to
  246.                                          * Integrated Services requirements */
  247.     ULONG       PathBandwidthEstimate;  /* minimum bandwidth available from 
  248.                                          * sender to receiver */
  249.     ULONG       MinimumLatency;         /* sum of minimum latency of the packet
  250.                                          * forwarding process in routers 
  251.                                          * (in usec)*/
  252.     ULONG       PathMTU;                /* max transmission unit end to end that
  253.                                          * will not incur fragmentation */
  254.     ULONG       Flags;                  /* used to hold break bits.*/
  255.  
  256. } AD_GENERAL_PARAMS, *LPAD_GENERAL_PARAMS;
  257.  
  258. /*
  259.  * Minimum Latency may be set to this "undefined" value
  260.  */
  261. #define INDETERMINATE_LATENCY   0xFFFFFFFF;
  262.  
  263. /*
  264.  * This Flag is used to indicate the existence of a network element not 
  265.  * supporting  QoS control services somewhere in the data path. If this bit 
  266.  * is set in the specific service override then it indicates that that
  267.  * service was not supported at at least one hop.
  268.  */
  269. #define AD_FLAG_BREAK_BIT    0x00000001
  270.  
  271. /*
  272.  * this structure describes the Guaranteed service parameters
  273.  */
  274. typedef struct _AD_GUARANTEED {
  275.  
  276.     ULONG       CTotal;
  277.     ULONG       DTotal;
  278.     ULONG       CSum;
  279.     ULONG       DSum;
  280.  
  281. } AD_GUARANTEED, *LPAD_GUARANTEED;
  282.  
  283. /*
  284.  * this structure describes the format of the parameter buffer that can be
  285.  * included in the Service_Type structure below.  This structure allows an
  286.  * application to include any valid Int Serv service parameter in the Buffer 
  287.  * value, after providing the Int Serv parameter id in the ParameterId field.
  288.  */
  289. typedef struct _PARAM_BUFFER {
  290.  
  291.     ULONG   ParameterId;    /* Int Server parameter ID */
  292.     ULONG   Length;         /* total length of this structure 
  293.                              * ( 8 bytes + length of Buffer ) */
  294.     UCHAR   Buffer[1];      /* Paramter itself */
  295.  
  296. } PARAM_BUFFER, *LPPARAM_BUFFER;
  297.  
  298. /*
  299.  * this structure contains the service types supported
  300.  */
  301. typedef struct _CONTROL_SERVICE {
  302.  
  303.     /*
  304.      * the length of this entire structure including the following buffer.  
  305.      * This length value can be added to the ptr to the structure to get the ptr
  306.      * to the next SERVICE_TYPE structure in the list, until the
  307.      * NumberOfServices count has been exhausted.
  308.      */
  309.     ULONG               Length;
  310.  
  311.     SERVICETYPE         Service;
  312.     AD_GENERAL_PARAMS   Overrides;
  313.  
  314.     /*
  315.      * service specific information ( controlled load has no service specific 
  316.      * info here )
  317.      */
  318.     union {
  319.         AD_GUARANTEED   Guaranteed;
  320.         PARAM_BUFFER    ParamBuffer[1];     /* allows for other services down 
  321.                                              * the road */
  322.     };
  323.  
  324. } CONTROL_SERVICE, *LPCONTROL_SERVICE;
  325.  
  326. /*
  327.  * This structure defines the information which is carried in the Rsvp 
  328.  * Adspec.  This Rsvp object typically indicates which service types are 
  329.  * available ( Controlled Load and/or Guaranteed Service ), if a non-Rsvp
  330.  * hop has been encountered by the Path message, and the minumum MTU along 
  331.  * the path. The services array indicates which services are supported
  332.  */
  333. typedef struct _RSVP_ADSPEC  {
  334.  
  335.     QOS_OBJECT_HDR     ObjectHdr;
  336.     AD_GENERAL_PARAMS  GeneralParams;      /* contains the general 
  337.                                             * characterization paramters */
  338.     ULONG              NumberOfServices;   /* count of the number of services */
  339.     CONTROL_SERVICE    Services[1];        /* a list of the services 
  340.                                             * supported/requested */
  341.  
  342. } RSVP_ADSPEC, *LPRSVP_ADSPEC;
  343.  
  344.  
  345. //
  346. // Opcode for the SIO_CHK_QOS ioctl
  347. // (specific for the Microsoft QOS Service Provider
  348. //
  349. // Bascially:
  350. //
  351. // SIO_CHK_QOS = _WSAIORW(IOC_VENDOR,1)
  352. //             = mIOC_IN | mIOC_OUT | mIOC_VENDOR | mCOMPANY | ioctl_code
  353. //    where
  354. //         mIOC_IN     = 0x80000000
  355. //         mIOC_OUT    = 0x40000000
  356. //         mIOC_VENDOR = 0x04000000
  357. //         mCOMPANY    = 0x18000000
  358. //         ioctl_code  = 0x00000001
  359. //         
  360. // See WSAIoctl man page for details.
  361. //
  362.  
  363. #define    mIOC_IN       0x80000000
  364. #define    mIOC_OUT      0x40000000
  365. #define    mIOC_VENDOR   0x04000000
  366. #define    mCOMPANY      0x18000000
  367. #define    ioctl_code    0x00000001
  368.  
  369. #define SIO_CHK_QOS   mIOC_IN | mIOC_OUT | mIOC_VENDOR | mCOMPANY | ioctl_code
  370.  
  371. //
  372. // The following may be specified in the input buffer 
  373. // of the SIO_CHK_IOCTL ioctl call 
  374. //
  375.  
  376. #define QOSSPBASE           50000
  377.  
  378. #define ALLOWED_TO_SEND_DATA  (QOSSPBASE+1)     // query the SBM/BEST_EFFORT limit 
  379.                                                 //   -- result is based on a comparison between
  380.                                                 //      the user-specified token rate and the
  381.                                                 //      SBM/BEST_EFFORT bandwidth parameters in
  382.                                                 //      the system
  383.                                                 //   -- result is a YES(1) or NO(0) answer
  384.                                                 //      in the output buffer 
  385.  
  386. #define ABLE_TO_RECV_RSVP     (QOSSPBASE+2)     // query the SBM/BEST_EFFORT limit 
  387.                                                 //   -- result is based on a comparison between
  388.                                                 //      the user-specified token rate and the
  389.                                                 //      SBM/BEST_EFFORT bandwidth parameters in
  390.                                                 //      the system
  391.                                                 //   -- result is a YES(1) or NO(0) answer
  392.                                                 //      in the output buffer 
  393.  
  394. #define LINE_RATE             (QOSSPBASE+3)     // query the interface capacity 
  395.                                                 //   -- result returned in the output buffer
  396.                                                 //      in kilo-bits per second
  397.  
  398. #define LOCAL_TRAFFIC_CONTROL (QOSSPBASE+4)     // check if Kernel Traffic Control is available or not
  399.                                                 //   -- 0 if not available
  400.                                                 //   -- 1 if avaiable
  401.                                                 //   -- INFO_NOT_AVAILABLE if there is no way to check
  402.  
  403. #define LOCAL_QOSABILITY      (QOSSPBASE+5)     // The followings are for 
  404.                                                 // the Discovery of Local QOSability
  405.                                                 //   -- 0 if no local QOS support
  406.                                                 //   -- 1 if local QOS support available
  407.                                                 //   -- INFO_NOT_AVAILABLE if there is no way to check
  408.  
  409. #define END_TO_END_QOSABILITY (QOSSPBASE+6)     // The followings are for 
  410.                                                 // the Discovery of End-to-End QOSability
  411.                                                 //   -- 0 if no end-to-end QOS support
  412.                                                 //   -- 1 if end-to-end QOS support available
  413.                                                 //   -- INFO_NOT_AVAILABLE if there is no way to check
  414.  
  415. #define INFO_NOT_AVAILABLE  0xFFFFFFFF          // used when LINE_RATE is not known
  416.  
  417.  
  418. #define QUERY_PS_SIZE       0xFFFFFFFF          // used in SIO_GET_QOS to query the
  419.                                                 // required buffer size
  420.  
  421. #define ANY_DEST_ADDR       0xFFFFFFFF          // for QOS_OBJECT_DEST_ADDR
  422.  
  423.  
  424. // The followings are for Guaranteed_Service+Latency -> ISSLOW_Traffic_Class Mapping
  425.  
  426. #define MODERATELY_DELAY_SENSITIVE   0xFFFFFFFD  
  427.  
  428. #define HIGHLY_DELAY_SENSITIVE       0xFFFFFFFE
  429.  
  430. //
  431. // QOSSP Error Code/Value
  432. //
  433.  
  434. #define QOSSP_ERR_BASE                                 (QOSSPBASE+6000)
  435.  
  436. // No error
  437. #define GQOS_NO_ERRORCODE                              (0)
  438.  
  439. #define GQOS_NO_ERRORVALUE                             (0)
  440.  
  441. // Unknown error
  442. #define GQOS_ERRORCODE_UNKNOWN                         (0xFFFFFFFF)
  443.  
  444. #define GQOS_ERRORVALUE_UNKNOWN                        (0xFFFFFFFF)
  445.  
  446. // Admission (Resource) Error
  447. #define GQOS_NET_ADMISSION                             (QOSSP_ERR_BASE+100)
  448.  
  449. #define GQOS_OTHER                                     (QOSSP_ERR_BASE+100+1)
  450. #define GQOS_DELAYBND                                  (QOSSP_ERR_BASE+100+2)
  451. #define GQOS_BANDWIDTH                                 (QOSSP_ERR_BASE+100+3)
  452. #define GQOS_MTU                                       (QOSSP_ERR_BASE+100+4)
  453. #define GQOS_FLOW_RATE                                 (QOSSP_ERR_BASE+100+5)
  454. #define GQOS_PEAK_RATE                                 (QOSSP_ERR_BASE+100+6)
  455.  
  456. // Policy Error
  457. #define GQOS_NET_POLICY                                (QOSSP_ERR_BASE+200)
  458.  
  459. #define GQOS_POLICY_ERROR_UNKNOWN                      (QOSSP_ERR_BASE+200+0)
  460.  
  461. #define GQOS_POLICY_GLOBAL_DEF_FLOW_COUNT              (QOSSP_ERR_BASE+200+1)
  462. #define GQOS_POLICY_GLOBAL_GRP_FLOW_COUNT              (QOSSP_ERR_BASE+200+2)
  463. #define GQOS_POLICY_GLOBAL_USER_FLOW_COUNT             (QOSSP_ERR_BASE+200+3)
  464. #define GQOS_POLICY_GLOBAL_UNK_USER_FLOW_COUNT         (QOSSP_ERR_BASE+200+4)
  465. #define GQOS_POLICY_SUBNET_DEF_FLOW_COUNT              (QOSSP_ERR_BASE+200+5)
  466. #define GQOS_POLICY_SUBNET_GRP_FLOW_COUNT              (QOSSP_ERR_BASE+200+6)
  467. #define GQOS_POLICY_SUBNET_USER_FLOW_COUNT             (QOSSP_ERR_BASE+200+7)
  468. #define GQOS_POLICY_SUBNET_UNK_USER_FLOW_COUNT         (QOSSP_ERR_BASE+200+8)
  469.  
  470. #define GQOS_POLICY_GLOBAL_DEF_FLOW_DURATION           (QOSSP_ERR_BASE+200+9)
  471. #define GQOS_POLICY_GLOBAL_GRP_FLOW_DURATION           (QOSSP_ERR_BASE+200+10)
  472. #define GQOS_POLICY_GLOBAL_USER_FLOW_DURATION          (QOSSP_ERR_BASE+200+11)
  473. #define GQOS_POLICY_GLOBAL_UNK_USER_FLOW_DURATION      (QOSSP_ERR_BASE+200+12)
  474. #define GQOS_POLICY_SUBNET_DEF_FLOW_DURATION           (QOSSP_ERR_BASE+200+13)
  475. #define GQOS_POLICY_SUBNET_GRP_FLOW_DURATION           (QOSSP_ERR_BASE+200+14) 
  476. #define GQOS_POLICY_SUBNET_USER_FLOW_DURATION          (QOSSP_ERR_BASE+200+15)
  477. #define GQOS_POLICY_SUBNET_UNK_USER_FLOW_DURATION      (QOSSP_ERR_BASE+200+16)
  478.  
  479. #define GQOS_POLICY_GLOBAL_DEF_FLOW_RATE               (QOSSP_ERR_BASE+200+17)
  480. #define GQOS_POLICY_GLOBAL_GRP_FLOW_RATE               (QOSSP_ERR_BASE+200+18)
  481. #define GQOS_POLICY_GLOBAL_USER_FLOW_RATE              (QOSSP_ERR_BASE+200+19)
  482. #define GQOS_POLICY_GLOBAL_UNK_USER_FLOW_RATE          (QOSSP_ERR_BASE+200+20)
  483. #define GQOS_POLICY_SUBNET_DEF_FLOW_RATE               (QOSSP_ERR_BASE+200+21)
  484. #define GQOS_POLICY_SUBNET_GRP_FLOW_RATE               (QOSSP_ERR_BASE+200+22)
  485. #define GQOS_POLICY_SUBNET_USER_FLOW_RATE              (QOSSP_ERR_BASE+200+23)
  486. #define GQOS_POLICY_SUBNET_UNK_USER_FLOW_RATE          (QOSSP_ERR_BASE+200+24)
  487.  
  488. #define GQOS_POLICY_GLOBAL_DEF_PEAK_RATE               (QOSSP_ERR_BASE+200+25)
  489. #define GQOS_POLICY_GLOBAL_GRP_PEAK_RATE               (QOSSP_ERR_BASE+200+26)
  490. #define GQOS_POLICY_GLOBAL_USER_PEAK_RATE              (QOSSP_ERR_BASE+200+27)
  491. #define GQOS_POLICY_GLOBAL_UNK_USER_PEAK_RATE          (QOSSP_ERR_BASE+200+28)
  492. #define GQOS_POLICY_SUBNET_DEF_PEAK_RATE               (QOSSP_ERR_BASE+200+29)
  493. #define GQOS_POLICY_SUBNET_GRP_PEAK_RATE               (QOSSP_ERR_BASE+200+30)
  494. #define GQOS_POLICY_SUBNET_USER_PEAK_RATE              (QOSSP_ERR_BASE+200+31)
  495. #define GQOS_POLICY_SUBNET_UNK_USER_PEAK_RATE          (QOSSP_ERR_BASE+200+32)
  496.  
  497. #define GQOS_POLICY_GLOBAL_DEF_SUM_FLOW_RATE           (QOSSP_ERR_BASE+200+33)
  498. #define GQOS_POLICY_GLOBAL_GRP_SUM_FLOW_RATE           (QOSSP_ERR_BASE+200+34)
  499. #define GQOS_POLICY_GLOBAL_USER_SUM_FLOW_RATE          (QOSSP_ERR_BASE+200+35)
  500. #define GQOS_POLICY_GLOBAL_UNK_USER_SUM_FLOW_RATE      (QOSSP_ERR_BASE+200+36)
  501. #define GQOS_POLICY_SUBNET_DEF_SUM_FLOW_RATE           (QOSSP_ERR_BASE+200+37)
  502. #define GQOS_POLICY_SUBNET_GRP_SUM_FLOW_RATE           (QOSSP_ERR_BASE+200+38)
  503. #define GQOS_POLICY_SUBNET_USER_SUM_FLOW_RATE          (QOSSP_ERR_BASE+200+39)
  504. #define GQOS_POLICY_SUBNET_UNK_USER_SUM_FLOW_RATE      (QOSSP_ERR_BASE+200+40)
  505.  
  506. #define GQOS_POLICY_GLOBAL_DEF_SUM_PEAK_RATE           (QOSSP_ERR_BASE+200+41)
  507. #define GQOS_POLICY_GLOBAL_GRP_SUM_PEAK_RATE           (QOSSP_ERR_BASE+200+42)
  508. #define GQOS_POLICY_GLOBAL_USER_SUM_PEAK_RATE          (QOSSP_ERR_BASE+200+43)
  509. #define GQOS_POLICY_GLOBAL_UNK_USER_SUM_PEAK_RATE      (QOSSP_ERR_BASE+200+44)
  510. #define GQOS_POLICY_SUBNET_DEF_SUM_PEAK_RATE           (QOSSP_ERR_BASE+200+45)
  511. #define GQOS_POLICY_SUBNET_GRP_SUM_PEAK_RATE           (QOSSP_ERR_BASE+200+46)
  512. #define GQOS_POLICY_SUBNET_USER_SUM_PEAK_RATE          (QOSSP_ERR_BASE+200+47)
  513. #define GQOS_POLICY_SUBNET_UNK_USER_SUM_PEAK_RATE      (QOSSP_ERR_BASE+200+48)
  514.  
  515. #define GQOS_POLICY_UNKNOWN_USER                       (QOSSP_ERR_BASE+200+49)
  516. #define GQOS_POLICY_NO_PRIVILEGES                      (QOSSP_ERR_BASE+200+50)
  517. #define GQOS_POLICY_EXPIRED_USER_TOKEN                 (QOSSP_ERR_BASE+200+51)
  518. #define GQOS_POLICY_NO_RESOURCES                       (QOSSP_ERR_BASE+200+52)
  519. #define GQOS_POLICY_PRE_EMPTED                         (QOSSP_ERR_BASE+200+53)
  520. #define GQOS_POLICY_USER_CHANGED                       (QOSSP_ERR_BASE+200+54)
  521. #define GQOS_POLICY_NO_ACCEPTS                         (QOSSP_ERR_BASE+200+55)
  522. #define GQOS_POLICY_NO_MEMORY                          (QOSSP_ERR_BASE+200+56)
  523. #define GQOS_POLICY_CRAZY_FLOWSPEC                     (QOSSP_ERR_BASE+200+57)
  524.  
  525. #define GQOS_POLICY_ERROR_USERID                       (QOSSP_ERR_BASE+200+99)
  526.  
  527. // RSVP Error
  528. #define GQOS_RSVP                                      (QOSSP_ERR_BASE+300)
  529.  
  530. #define GQOS_NO_PATH                                   (QOSSP_ERR_BASE+300+1)
  531. #define GQOS_NO_SENDER                                 (QOSSP_ERR_BASE+300+2)
  532. #define GQOS_BAD_STYLE                                 (QOSSP_ERR_BASE+300+3)
  533. #define GQOS_UNKNOWN_STYLE                             (QOSSP_ERR_BASE+300+4)
  534. #define GQOS_BAD_DSTPORT                               (QOSSP_ERR_BASE+300+5) 
  535. #define GQOS_BAD_SNDPORT                               (QOSSP_ERR_BASE+300+6)
  536. #define GQOS_AMBIG_FILTER                              (QOSSP_ERR_BASE+300+7)
  537. #define GQOS_PREEMPTED                                 (QOSSP_ERR_BASE+300+8)
  538. #define GQOS_UNKN_OBJ_CLASS                            (QOSSP_ERR_BASE+300+9)
  539. #define GQOS_UNKNOWN_CTYPE                             (QOSSP_ERR_BASE+300+10)
  540. #define GQOS_INVALID                                   (QOSSP_ERR_BASE+300+11)
  541.  
  542. // API Error
  543. #define GQOS_API                                       (QOSSP_ERR_BASE+400)
  544.  
  545. #define GQOS_API_BADSEND                               (QOSSP_ERR_BASE+400+1) /* Sender addr not my interface */
  546. #define GQOS_API_BADRECV                               (QOSSP_ERR_BASE+400+2) /* Recv addr not my interface */
  547. #define GQOS_API_BADSPORT                              (QOSSP_ERR_BASE+400+3) /* Sport !=0 but Dport == 0 */
  548.  
  549. // TC System Error
  550. #define GQOS_KERNEL_TC_SYS                             (QOSSP_ERR_BASE+500)
  551.  
  552. #define GQOS_TC_GENERIC                                (QOSSP_ERR_BASE+500+1)
  553. #define GQOS_TC_INVALID                                (QOSSP_ERR_BASE+500+2)
  554. #define GQOS_NO_MEMORY                                 (QOSSP_ERR_BASE+500+3)
  555. #define GQOS_BAD_ADDRESSTYPE                           (QOSSP_ERR_BASE+500+4) 
  556. #define GQOS_BAD_DUPLICATE                             (QOSSP_ERR_BASE+500+5)
  557. #define GQOS_CONFLICT                                  (QOSSP_ERR_BASE+500+6)
  558. #define GQOS_NOTREADY                                  (QOSSP_ERR_BASE+500+7)
  559. #define GQOS_WOULDBLOCK                                (QOSSP_ERR_BASE+500+8)
  560. #define GQOS_INCOMPATIBLE                              (QOSSP_ERR_BASE+500+9)
  561. #define GQOS_BAD_SDMODE                                (QOSSP_ERR_BASE+500+10)
  562. #define GQOS_BAD_QOSPRIORITY                           (QOSSP_ERR_BASE+500+11)
  563. #define GQOS_BAD_TRAFFICCLASS                          (QOSSP_ERR_BASE+500+12)
  564. #define GQOS_NO_SYS_RESOURCES                          (QOSSP_ERR_BASE+500+13)
  565.  
  566. // RSVP System Error
  567. #define GQOS_RSVP_SYS                                  (QOSSP_ERR_BASE+600)
  568.  
  569. #define GQOS_OTHER_SYS                                 (QOSSP_ERR_BASE+600+1)
  570. #define GQOS_MEMORY_SYS                                (QOSSP_ERR_BASE+600+2)
  571. #define GQOS_API_SYS                                   (QOSSP_ERR_BASE+600+3)
  572. #define GQOS_SETQOS_NO_LOCAL_APPS                      (QOSSP_ERR_BASE+600+4)
  573.  
  574. // TC Error
  575. #define GQOS_KERNEL_TC                                 (QOSSP_ERR_BASE+700)
  576.  
  577. #define GQOS_CONFLICT_SERV                             (QOSSP_ERR_BASE+700+1)
  578. #define GQOS_NO_SERV                                   (QOSSP_ERR_BASE+700+2)
  579. #define GQOS_BAD_FLOWSPEC                              (QOSSP_ERR_BASE+700+3)
  580. #define GQOS_BAD_TSPEC                                 (QOSSP_ERR_BASE+700+4)
  581. #define GQOS_BAD_ADSPEC                                (QOSSP_ERR_BASE+700+5)
  582.  
  583. // GQOS API ERRORS
  584.  
  585. // WSAIoctl Error
  586.  
  587. #define GQOS_IOCTL_SYSTEMFAILURE                       (QOSSP_ERR_BASE+800+1)
  588. #define GQOS_IOCTL_NOBYTESRETURNED                     (QOSSP_ERR_BASE+800+2)
  589. #define GQOS_IOCTL_INVALIDSOCKET                       (QOSSP_ERR_BASE+800+3)
  590.  
  591. // SIO_SET_QOS error
  592.  
  593. #define GQOS_SETQOS_BADINBUFFER                        (QOSSP_ERR_BASE+810+1)
  594. #define GQOS_SETQOS_BADFLOWSPEC                        (QOSSP_ERR_BASE+810+2)
  595. #define GQOS_SETQOS_COLLISION                          (QOSSP_ERR_BASE+810+3)
  596. #define GQOS_SETQOS_BADPROVSPECBUF                     (QOSSP_ERR_BASE+810+4)
  597. #define GQOS_SETQOS_ILLEGALOP                          (QOSSP_ERR_BASE+810+5)
  598. #define GQOS_SETQOS_INVALIDADDRESS                     (QOSSP_ERR_BASE+810+6)
  599. #define GQOS_SETQOS_OUTOFMEMORY                        (QOSSP_ERR_BASE+810+7)
  600. #define GQOS_SETQOS_EXCEPTION                          (QOSSP_ERR_BASE+810+8)
  601. #define GQOS_SETQOS_BADADDRLEN                         (QOSSP_ERR_BASE+810+9)
  602. #define GQOS_SETQOS_NOSOCKNAME                         (QOSSP_ERR_BASE+810+10)
  603. #define GQOS_SETQOS_IPTOSFAIL                          (QOSSP_ERR_BASE+810+11)
  604. #define GQOS_SETQOS_OPENSESSIONFAIL                    (QOSSP_ERR_BASE+810+12)
  605. #define GQOS_SETQOS_SENDFAIL                           (QOSSP_ERR_BASE+810+13)
  606. #define GQOS_SETQOS_RECVFAIL                           (QOSSP_ERR_BASE+810+14)
  607. #define GQOS_SETQOS_BADPOLICYOBJECT                    (QOSSP_ERR_BASE+810+15)
  608. #define GQOS_SETQOS_UNKNOWNFILTEROBJ                   (QOSSP_ERR_BASE+810+16)
  609. #define GQOS_SETQOS_BADFILTERTYPE                      (QOSSP_ERR_BASE+810+17)
  610. #define GQOS_SETQOS_BADFILTERCOUNT                     (QOSSP_ERR_BASE+810+18)
  611. #define GQOS_SETQOS_BADOBJLENGTH                       (QOSSP_ERR_BASE+810+19)
  612. #define GQOS_SETQOS_BADFLOWCOUNT                       (QOSSP_ERR_BASE+810+20)
  613. #define GQOS_SETQOS_UNKNOWNPSOBJ                       (QOSSP_ERR_BASE+810+21)
  614. #define GQOS_SETQOS_BADPOLICYOBJ                       (QOSSP_ERR_BASE+810+22)
  615. #define GQOS_SETQOS_BADFLOWDESC                        (QOSSP_ERR_BASE+810+23)
  616. #define GQOS_SETQOS_BADPROVSPECOBJ                     (QOSSP_ERR_BASE+810+24)
  617. #define GQOS_SETQOS_NOLOOPBACK                         (QOSSP_ERR_BASE+810+25)
  618. #define GQOS_SETQOS_MODENOTSUPPORTED                   (QOSSP_ERR_BASE+810+26)
  619. #define GQOS_SETQOS_MISSINGFLOWDESC                    (QOSSP_ERR_BASE+810+27)
  620.  
  621. // SIO_GET_QOS error
  622.  
  623. #define GQOS_GETQOS_BADOUTBUFFER                       (QOSSP_ERR_BASE+840+1)
  624. #define GQOS_GETQOS_SYSTEMFAILURE                      (QOSSP_ERR_BASE+840+2)
  625. #define GQOS_GETQOS_EXCEPTION                          (QOSSP_ERR_BASE+840+3)
  626. #define GQOS_GETQOS_INTERNALFAILURE                    (QOSSP_ERR_BASE+840+4)
  627.  
  628. // SIO_CHK_QOS error
  629.  
  630. #define GQOS_CHKQOS_BADINBUFFER                        (QOSSP_ERR_BASE+850+1)
  631. #define GQOS_CHKQOS_BADOUTBUFFER                       (QOSSP_ERR_BASE+850+2)
  632. #define GQOS_CHKQOS_SYSTEMFAILURE                      (QOSSP_ERR_BASE+850+3)
  633. #define GQOS_CHKQOS_INTERNALFAILURE                    (QOSSP_ERR_BASE+850+4)
  634. #define GQOS_CHKQOS_BADPARAMETER                       (QOSSP_ERR_BASE+850+5)
  635. #define GQOS_CHKQOS_EXCEPTION                          (QOSSP_ERR_BASE+850+6)
  636.  
  637. #pragma option pop /*P_O_Pop*/
  638. #endif  /* __QOSSP_H_ */
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.