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
|
---|