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