Home | History | Annotate | Download | only in include
      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifndef _WSRM_H_
      7 #define _WSRM_H_
      8 
      9 #define IPPROTO_RM 113
     10 #define MAX_MCAST_TTL 255
     11 
     12 #define RM_OPTIONSBASE 1000
     13 #define RM_RATE_WINDOW_SIZE (RM_OPTIONSBASE + 1)
     14 #define RM_SET_MESSAGE_BOUNDARY (RM_OPTIONSBASE + 2)
     15 #define RM_FLUSHCACHE (RM_OPTIONSBASE + 3)
     16 #define RM_SENDER_WINDOW_ADVANCE_METHOD (RM_OPTIONSBASE + 4)
     17 #define RM_SENDER_STATISTICS (RM_OPTIONSBASE + 5)
     18 #define RM_LATEJOIN (RM_OPTIONSBASE + 6)
     19 #define RM_SET_SEND_IF (RM_OPTIONSBASE + 7)
     20 #define RM_ADD_RECEIVE_IF (RM_OPTIONSBASE + 8)
     21 #define RM_DEL_RECEIVE_IF (RM_OPTIONSBASE + 9)
     22 #define RM_SEND_WINDOW_ADV_RATE (RM_OPTIONSBASE + 10)
     23 #define RM_USE_FEC (RM_OPTIONSBASE + 11)
     24 #define RM_SET_MCAST_TTL (RM_OPTIONSBASE + 12)
     25 #define RM_RECEIVER_STATISTICS (RM_OPTIONSBASE + 13)
     26 #define RM_HIGH_SPEED_INTRANET_OPT (RM_OPTIONSBASE + 14)
     27 
     28 #define SENDER_DEFAULT_RATE_KBITS_PER_SEC 56
     29 #define SENDER_DEFAULT_WINDOW_SIZE_BYTES 10 *1000*1000
     30 #define SENDER_DEFAULT_WINDOW_ADV_PERCENTAGE 15
     31 
     32 #define MAX_WINDOW_INCREMENT_PERCENTAGE 25
     33 #define SENDER_DEFAULT_LATE_JOINER_PERCENTAGE 0
     34 #define SENDER_MAX_LATE_JOINER_PERCENTAGE 75
     35 
     36 #define BITS_PER_BYTE 8
     37 #define LOG2_BITS_PER_BYTE 3
     38 
     39 enum eWINDOW_ADVANCE_METHOD {
     40   E_WINDOW_ADVANCE_BY_TIME = 1,E_WINDOW_USE_AS_DATA_CACHE
     41 };
     42 
     43 typedef struct _RM_SEND_WINDOW {
     44   ULONG RateKbitsPerSec;
     45   ULONG WindowSizeInMSecs;
     46   ULONG WindowSizeInBytes;
     47 } RM_SEND_WINDOW;
     48 
     49 typedef struct _RM_SENDER_STATS {
     50   ULONGLONG DataBytesSent;
     51   ULONGLONG TotalBytesSent;
     52   ULONGLONG NaksReceived;
     53   ULONGLONG NaksReceivedTooLate;
     54   ULONGLONG NumOutstandingNaks;
     55   ULONGLONG NumNaksAfterRData;
     56   ULONGLONG RepairPacketsSent;
     57   ULONGLONG BufferSpaceAvailable;
     58   ULONGLONG TrailingEdgeSeqId;
     59   ULONGLONG LeadingEdgeSeqId;
     60   ULONGLONG RateKBitsPerSecOverall;
     61   ULONGLONG RateKBitsPerSecLast;
     62   ULONGLONG TotalODataPacketsSent;
     63 } RM_SENDER_STATS;
     64 
     65 typedef struct _RM_RECEIVER_STATS {
     66   ULONGLONG NumODataPacketsReceived;
     67   ULONGLONG NumRDataPacketsReceived;
     68   ULONGLONG NumDuplicateDataPackets;
     69   ULONGLONG DataBytesReceived;
     70   ULONGLONG TotalBytesReceived;
     71   ULONGLONG RateKBitsPerSecOverall;
     72   ULONGLONG RateKBitsPerSecLast;
     73   ULONGLONG TrailingEdgeSeqId;
     74   ULONGLONG LeadingEdgeSeqId;
     75   ULONGLONG AverageSequencesInWindow;
     76   ULONGLONG MinSequencesInWindow;
     77   ULONGLONG MaxSequencesInWindow;
     78   ULONGLONG FirstNakSequenceNumber;
     79   ULONGLONG NumPendingNaks;
     80   ULONGLONG NumOutstandingNaks;
     81   ULONGLONG NumDataPacketsBuffered;
     82   ULONGLONG TotalSelectiveNaksSent;
     83   ULONGLONG TotalParityNaksSent;
     84 } RM_RECEIVER_STATS;
     85 
     86 typedef struct _RM_FEC_INFO {
     87   USHORT FECBlockSize;
     88   USHORT FECProActivePackets;
     89   UCHAR FECGroupSize;
     90   BOOLEAN fFECOnDemandParityEnabled;
     91 } RM_FEC_INFO;
     92 
     93 #endif
     94