94 lines
2.8 KiB
C
94 lines
2.8 KiB
C
/**
|
|
* This file has no copyright assigned and is placed in the Public Domain.
|
|
* This file is part of the mingw-w64 runtime package.
|
|
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
|
|
*/
|
|
#ifndef _WSRM_H_
|
|
#define _WSRM_H_
|
|
|
|
#define IPPROTO_RM 113
|
|
#define MAX_MCAST_TTL 255
|
|
|
|
#define RM_OPTIONSBASE 1000
|
|
#define RM_RATE_WINDOW_SIZE (RM_OPTIONSBASE + 1)
|
|
#define RM_SET_MESSAGE_BOUNDARY (RM_OPTIONSBASE + 2)
|
|
#define RM_FLUSHCACHE (RM_OPTIONSBASE + 3)
|
|
#define RM_SENDER_WINDOW_ADVANCE_METHOD (RM_OPTIONSBASE + 4)
|
|
#define RM_SENDER_STATISTICS (RM_OPTIONSBASE + 5)
|
|
#define RM_LATEJOIN (RM_OPTIONSBASE + 6)
|
|
#define RM_SET_SEND_IF (RM_OPTIONSBASE + 7)
|
|
#define RM_ADD_RECEIVE_IF (RM_OPTIONSBASE + 8)
|
|
#define RM_DEL_RECEIVE_IF (RM_OPTIONSBASE + 9)
|
|
#define RM_SEND_WINDOW_ADV_RATE (RM_OPTIONSBASE + 10)
|
|
#define RM_USE_FEC (RM_OPTIONSBASE + 11)
|
|
#define RM_SET_MCAST_TTL (RM_OPTIONSBASE + 12)
|
|
#define RM_RECEIVER_STATISTICS (RM_OPTIONSBASE + 13)
|
|
#define RM_HIGH_SPEED_INTRANET_OPT (RM_OPTIONSBASE + 14)
|
|
|
|
#define SENDER_DEFAULT_RATE_KBITS_PER_SEC 56
|
|
#define SENDER_DEFAULT_WINDOW_SIZE_BYTES 10 *1000*1000
|
|
#define SENDER_DEFAULT_WINDOW_ADV_PERCENTAGE 15
|
|
|
|
#define MAX_WINDOW_INCREMENT_PERCENTAGE 25
|
|
#define SENDER_DEFAULT_LATE_JOINER_PERCENTAGE 0
|
|
#define SENDER_MAX_LATE_JOINER_PERCENTAGE 75
|
|
|
|
#define BITS_PER_BYTE 8
|
|
#define LOG2_BITS_PER_BYTE 3
|
|
|
|
enum eWINDOW_ADVANCE_METHOD {
|
|
E_WINDOW_ADVANCE_BY_TIME = 1,E_WINDOW_USE_AS_DATA_CACHE
|
|
};
|
|
|
|
typedef struct _RM_SEND_WINDOW {
|
|
ULONG RateKbitsPerSec;
|
|
ULONG WindowSizeInMSecs;
|
|
ULONG WindowSizeInBytes;
|
|
} RM_SEND_WINDOW;
|
|
|
|
typedef struct _RM_SENDER_STATS {
|
|
ULONGLONG DataBytesSent;
|
|
ULONGLONG TotalBytesSent;
|
|
ULONGLONG NaksReceived;
|
|
ULONGLONG NaksReceivedTooLate;
|
|
ULONGLONG NumOutstandingNaks;
|
|
ULONGLONG NumNaksAfterRData;
|
|
ULONGLONG RepairPacketsSent;
|
|
ULONGLONG BufferSpaceAvailable;
|
|
ULONGLONG TrailingEdgeSeqId;
|
|
ULONGLONG LeadingEdgeSeqId;
|
|
ULONGLONG RateKBitsPerSecOverall;
|
|
ULONGLONG RateKBitsPerSecLast;
|
|
ULONGLONG TotalODataPacketsSent;
|
|
} RM_SENDER_STATS;
|
|
|
|
typedef struct _RM_RECEIVER_STATS {
|
|
ULONGLONG NumODataPacketsReceived;
|
|
ULONGLONG NumRDataPacketsReceived;
|
|
ULONGLONG NumDuplicateDataPackets;
|
|
ULONGLONG DataBytesReceived;
|
|
ULONGLONG TotalBytesReceived;
|
|
ULONGLONG RateKBitsPerSecOverall;
|
|
ULONGLONG RateKBitsPerSecLast;
|
|
ULONGLONG TrailingEdgeSeqId;
|
|
ULONGLONG LeadingEdgeSeqId;
|
|
ULONGLONG AverageSequencesInWindow;
|
|
ULONGLONG MinSequencesInWindow;
|
|
ULONGLONG MaxSequencesInWindow;
|
|
ULONGLONG FirstNakSequenceNumber;
|
|
ULONGLONG NumPendingNaks;
|
|
ULONGLONG NumOutstandingNaks;
|
|
ULONGLONG NumDataPacketsBuffered;
|
|
ULONGLONG TotalSelectiveNaksSent;
|
|
ULONGLONG TotalParityNaksSent;
|
|
} RM_RECEIVER_STATS;
|
|
|
|
typedef struct _RM_FEC_INFO {
|
|
USHORT FECBlockSize;
|
|
USHORT FECProActivePackets;
|
|
UCHAR FECGroupSize;
|
|
BOOLEAN fFECOnDemandParityEnabled;
|
|
} RM_FEC_INFO;
|
|
|
|
#endif
|