mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-10-31 12:11:34 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			294 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			294 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| {
 | |
|     $Id$
 | |
|     This file is part of the Free Pascal run time library.
 | |
|     This unit contains the declarations for the WinSock2
 | |
|     Socket Library for Netware and Win32
 | |
| 
 | |
|     Copyright (c) 1999-2002 by the Free Pascal development team
 | |
| 
 | |
|     See the file COPYING.FPC, included in this distribution,
 | |
|     for details about the copyright.
 | |
| 
 | |
|     This program is distributed in the hope that it will be useful,
 | |
|     but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | |
| 
 | |
|  **********************************************************************}
 | |
| 
 | |
|     { This module defines the Quality of Service structures and types used
 | |
|       by Winsock applications. }
 | |
| 
 | |
|   {
 | |
|       Definitions for valued-based Service Type for each direction of data flow.
 | |
|     }
 | |
| 
 | |
|   type
 | |
| 
 | |
|      SERVICETYPE = u_long;
 | |
|   { No data in this direction  }
 | |
| 
 | |
|   const
 | |
|      SERVICETYPE_NOTRAFFIC = $00000000;
 | |
|   { Best Effort  }
 | |
|      SERVICETYPE_BESTEFFORT = $00000001;
 | |
|   { Controlled Load  }
 | |
|      SERVICETYPE_CONTROLLEDLOAD = $00000002;
 | |
|   { Guaranteed  }
 | |
|      SERVICETYPE_GUARANTEED = $00000003;
 | |
|   { Used to notify
 | |
|                                                              change to user  }
 | |
|      SERVICETYPE_NETWORK_UNAVAILABLE = $00000004;
 | |
|   { corresponds to
 | |
|                                                              "General Parameters"
 | |
|                                                              defined by IntServ  }
 | |
|      SERVICETYPE_GENERAL_INFORMATION = $00000005;
 | |
|   { used to indicate
 | |
|                                                              that the flow spec
 | |
|                                                              contains no change
 | |
|                                                              from any previous
 | |
|                                                              one  }
 | |
|      SERVICETYPE_NOCHANGE = $00000006;
 | |
|   { Non-Conforming Traffic  }
 | |
|      SERVICETYPE_NONCONFORMING = $00000009;
 | |
|   { Custom ServiceType 1  }
 | |
|      SERVICETYPE_CUSTOM1 = $0000000A;
 | |
|   { Custom ServiceType 2  }
 | |
|      SERVICETYPE_CUSTOM2 = $0000000B;
 | |
|   { Custom ServiceType 3  }
 | |
|      SERVICETYPE_CUSTOM3 = $0000000C;
 | |
|   { Custom ServiceType 4  }
 | |
|      SERVICETYPE_CUSTOM4 = $0000000D;
 | |
|   {
 | |
|       Definitions for bitmap-based Service Type for each direction of data flow.
 | |
|     }
 | |
|      SERVICE_BESTEFFORT = $80020000;
 | |
|      SERVICE_CONTROLLEDLOAD = $80040000;
 | |
|      SERVICE_GUARANTEED = $80080000;
 | |
|      SERVICE_CUSTOM1 = $80100000;
 | |
|      SERVICE_CUSTOM2 = $80200000;
 | |
|      SERVICE_CUSTOM3 = $80400000;
 | |
|      SERVICE_CUSTOM4 = $80800000;
 | |
|   {
 | |
|       Number of available Service Types.
 | |
|     }
 | |
|      NUM_SERVICETYPES = 8;
 | |
|   {
 | |
|      to turn on immediate traffic control, OR ( | ) this flag with the
 | |
|      ServiceType field in the FLOWSPEC
 | |
|     }
 | |
|   { #define SERVICE_IMMEDIATE_TRAFFIC_CONTROL   0x80000000   // obsolete }
 | |
|      SERVICE_NO_TRAFFIC_CONTROL = $81000000;
 | |
|   {
 | |
|      this flag can be used with the immediate traffic control flag above to
 | |
|      prevent any rsvp signaling messages from being sent. Local traffic
 | |
|      control will be invoked, but no RSVP Path messages will be sent.This flag
 | |
|      can also be used in conjunction with a receiving flowspec to suppress
 | |
|      the automatic generation of a Reserve message.  The application would
 | |
|      receive notification that a Path  message had arrived and would then need
 | |
|      to alter the QOS by issuing WSAIoctl( SIO_SET_QOS ), to unset this flag
 | |
|      and thereby cause Reserve messages to go out.
 | |
|     }
 | |
|      SERVICE_NO_QOS_SIGNALING = $40000000;
 | |
|   { rsvp status code  }
 | |
|      STATUS_QOS_RELEASED = $10101010;
 | |
|   {
 | |
|       Flow Specifications for each direction of data flow.
 | |
|     }
 | |
|   { In Bytes/sec  }
 | |
|   { In Bytes  }
 | |
|   { In Bytes/sec  }
 | |
|   { In microseconds  }
 | |
|   { In microseconds  }
 | |
|   { In Bytes  }
 | |
|   { In Bytes  }
 | |
| 
 | |
|   type
 | |
| 
 | |
|      Tflowspec = record
 | |
|           TokenRate : u_long;
 | |
|           TokenBucketSize : u_long;
 | |
|           PeakBandwidth : u_long;
 | |
|           Latency : u_long;
 | |
|           DelayVariation : u_long;
 | |
|           ServiceType : SERVICETYPE;
 | |
|           MaxSduSize : u_long;
 | |
|           MinimumPolicedSize : u_long;
 | |
|        end;
 | |
|      PFLOWSPEC = ^Tflowspec;
 | |
|      LPFLOWSPEC = ^Tflowspec;
 | |
|   {
 | |
|      this value can be used in the FLOWSPEC structure to instruct the Rsvp Service
 | |
|      provider to derive the appropriate default value for the parameter.  Note
 | |
|      that not all values in the FLOWSPEC structure can be defaults. In the
 | |
|      ReceivingFlowspec, all parameters can be defaulted except the ServiceType.
 | |
|      In the SendingFlowspec, the MaxSduSize and MinimumPolicedSize can be
 | |
|      defaulted. Other defaults may be possible. Refer to the appropriate
 | |
|      documentation.
 | |
|     }
 | |
| 
 | |
|   const
 | |
|      QOS_NOT_SPECIFIED = $FFFFFFFF;
 | |
|      NULL_QOS_TYPE = $FFFFFFFD;
 | |
|   {
 | |
|      define a value that can be used for the PeakBandwidth, which will map into
 | |
|      positive infinity when the FLOWSPEC is converted into IntServ floating point
 | |
|      format.  We can't use (-1) because that value was previously defined to mean
 | |
|      "select the default".
 | |
|     }
 | |
|      POSITIVE_INFINITY_RATE = $FFFFFFFE;
 | |
|   {
 | |
|      the provider specific structure can have a number of objects in it.
 | |
|      Each next structure in the
 | |
|      ProviderSpecific will be the QOS_OBJECT_HDR struct that prefaces the actual
 | |
|      data with a type and length for that object.  This QOS_OBJECT struct can
 | |
|      repeat several times if there are several objects.  This list of objects
 | |
|      terminates either when the buffer length has been reached ( WSABUF ) or
 | |
|      an object of type QOS_END_OF_LIST is encountered.
 | |
|     }
 | |
|   { the length of object buffer INCLUDING
 | |
|                                 this header  }
 | |
| 
 | |
|   type
 | |
| 
 | |
|      TQOS_OBJECT_HDR = record
 | |
|           ObjectType : u_long;
 | |
|           ObjectLength : u_long;
 | |
|        end;
 | |
|      LPQOS_OBJECT_HDR = ^TQOS_OBJECT_HDR;
 | |
|      PQOS_OBJECT_HDR = ^TQOS_OBJECT_HDR;
 | |
|   {
 | |
|      general QOS objects start at this offset from the base and have a range
 | |
|      of 1000
 | |
|     }
 | |
| 
 | |
|   const
 | |
|      QOS_GENERAL_ID_BASE = 2000;
 | |
|      QOS_OBJECT_PRIORITY = $00000000 + QOS_GENERAL_ID_BASE;
 | |
|   { QOS_PRIORITY structure passed  }
 | |
|      QOS_OBJECT_END_OF_LIST = $00000001 + QOS_GENERAL_ID_BASE;
 | |
|   { QOS_End_of_list structure passed  }
 | |
|      QOS_OBJECT_SD_MODE = $00000002 + QOS_GENERAL_ID_BASE;
 | |
|   { QOS_ShapeDiscard structure passed  }
 | |
|      QOS_OBJECT_TRAFFIC_CLASS = $00000003 + QOS_GENERAL_ID_BASE;
 | |
|   { QOS_Traffic class structure passed  }
 | |
|      QOS_OBJECT_DESTADDR = $00000004 + QOS_GENERAL_ID_BASE;
 | |
|   { QOS_DestAddr structure  }
 | |
|      QOS_OBJECT_SHAPER_QUEUE_DROP_MODE = $00000005 + QOS_GENERAL_ID_BASE;
 | |
|   { QOS_ShaperQueueDropMode structure  }
 | |
|      QOS_OBJECT_SHAPER_QUEUE_LIMIT = $00000006 + QOS_GENERAL_ID_BASE;
 | |
|   { QOS_ShaperQueueLimit structure  }
 | |
|   {
 | |
|      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.
 | |
|     }
 | |
|   { this gets mapped to layer 2 priority. }
 | |
|   { there are none currently defined. }
 | |
|   { this could be used to decide who
 | |
|                                            gets forwarded up the stack first
 | |
|                                            - not used now  }
 | |
| 
 | |
|   type
 | |
| 
 | |
|      TQOS_PRIORITY = record
 | |
|           ObjectHdr : TQOS_OBJECT_HDR;
 | |
|           SendPriority : u_char;
 | |
|           SendFlags : u_char;
 | |
|           ReceivePriority : u_char;
 | |
|           Unused : u_char;
 | |
|        end;
 | |
|      LPQOS_PRIORITY = ^TQOS_PRIORITY;
 | |
|      PQOS_PRIORITY  = ^TQOS_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.
 | |
| 
 | |
|     }
 | |
| 
 | |
|      TQOS_SD_MODE = record
 | |
|           ObjectHdr        : TQOS_OBJECT_HDR;
 | |
|           ShapeDiscardMode : u_long;
 | |
|        end;
 | |
|      LPQOS_SD_MODE = ^TQOS_SD_MODE;
 | |
|      PQOS_SD_MODE  = ^TQOS_SD_MODE;
 | |
| 
 | |
|   const
 | |
|      TC_NONCONF_BORROW = 0;
 | |
|      TC_NONCONF_SHAPE = 1;
 | |
|      TC_NONCONF_DISCARD = 2;
 | |
|      TC_NONCONF_BORROW_PLUS = 3;
 | |
|   {
 | |
|      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.
 | |
| 
 | |
|     }
 | |
| 
 | |
|   type
 | |
| 
 | |
|      TQOS_TRAFFIC_CLASS = record
 | |
|           ObjectHdr    : TQOS_OBJECT_HDR;
 | |
|           TrafficClass : u_long;
 | |
|        end;
 | |
|      LPQOS_TRAFFIC_CLASS = ^TQOS_TRAFFIC_CLASS;
 | |
|      PQOS_TRAFFIC_CLASS  = ^TQOS_TRAFFIC_CLASS;
 | |
|   {
 | |
|      This structure allows overriding of the default schema used to drop
 | |
|      packets when a flow's shaper queue limit is reached.
 | |
| 
 | |
|      DropMethod -
 | |
|         QOS_SHAPER_DROP_FROM_HEAD - Drop packets from
 | |
|                 the head of the queue until the new packet can be
 | |
|                 accepted into the shaper under the current limit.  This
 | |
|                 behavior is the default.
 | |
|         QOS_SHAPER_DROP_INCOMING - Drop the incoming,
 | |
|                 limit-offending packet.
 | |
| 
 | |
|     }
 | |
| 
 | |
|      TQOS_SHAPER_QUEUE_LIMIT_DROP_MODE = record
 | |
|           ObjectHdr : TQOS_OBJECT_HDR;
 | |
|           DropMode  : u_long;
 | |
|        end;
 | |
|      LPQOS_SHAPER_QUEUE_LIMIT_DROP_MODE = ^TQOS_SHAPER_QUEUE_LIMIT_DROP_MODE;
 | |
|      PQOS_SHAPER_QUEUE_LIMIT_DROP_MODE  = ^TQOS_SHAPER_QUEUE_LIMIT_DROP_MODE;
 | |
| 
 | |
|   const
 | |
|      QOS_SHAPER_DROP_INCOMING = 0;
 | |
|      QOS_SHAPER_DROP_FROM_HEAD = 1;
 | |
| 
 | |
|   {  This structure allows the default per-flow limit on the shaper queue
 | |
|      size to be overridden.
 | |
| 
 | |
|      QueueSizeLimit - Limit, in bytes, of the size of the shaper queue }
 | |
| 
 | |
|   type
 | |
| 
 | |
|      TQOS_SHAPER_QUEUE_LIMIT = record
 | |
|           ObjectHdr      : TQOS_OBJECT_HDR;
 | |
|           QueueSizeLimit : u_long;
 | |
|        end;
 | |
|      LPQOS_SHAPER_QUEUE_LIMIT = ^TQOS_SHAPER_QUEUE_LIMIT;
 | |
|      PQOS_SHAPER_QUEUE_LIMIT  = ^TQOS_SHAPER_QUEUE_LIMIT;
 | |
| 
 | |
| {
 | |
|   $Log:
 | |
| 
 | |
| }
 | 
