wsrm.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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. #define IPPROTO_RM 113
  9. #define MAX_MCAST_TTL 255
  10. #define RM_OPTIONSBASE 1000
  11. #define RM_RATE_WINDOW_SIZE (RM_OPTIONSBASE + 1)
  12. #define RM_SET_MESSAGE_BOUNDARY (RM_OPTIONSBASE + 2)
  13. #define RM_FLUSHCACHE (RM_OPTIONSBASE + 3)
  14. #define RM_SENDER_WINDOW_ADVANCE_METHOD (RM_OPTIONSBASE + 4)
  15. #define RM_SENDER_STATISTICS (RM_OPTIONSBASE + 5)
  16. #define RM_LATEJOIN (RM_OPTIONSBASE + 6)
  17. #define RM_SET_SEND_IF (RM_OPTIONSBASE + 7)
  18. #define RM_ADD_RECEIVE_IF (RM_OPTIONSBASE + 8)
  19. #define RM_DEL_RECEIVE_IF (RM_OPTIONSBASE + 9)
  20. #define RM_SEND_WINDOW_ADV_RATE (RM_OPTIONSBASE + 10)
  21. #define RM_USE_FEC (RM_OPTIONSBASE + 11)
  22. #define RM_SET_MCAST_TTL (RM_OPTIONSBASE + 12)
  23. #define RM_RECEIVER_STATISTICS (RM_OPTIONSBASE + 13)
  24. #define RM_HIGH_SPEED_INTRANET_OPT (RM_OPTIONSBASE + 14)
  25. #define SENDER_DEFAULT_RATE_KBITS_PER_SEC 56
  26. #define SENDER_DEFAULT_WINDOW_SIZE_BYTES 10 *1000*1000
  27. #define SENDER_DEFAULT_WINDOW_ADV_PERCENTAGE 15
  28. #define MAX_WINDOW_INCREMENT_PERCENTAGE 25
  29. #define SENDER_DEFAULT_LATE_JOINER_PERCENTAGE 0
  30. #define SENDER_MAX_LATE_JOINER_PERCENTAGE 75
  31. #define BITS_PER_BYTE 8
  32. #define LOG2_BITS_PER_BYTE 3
  33. enum eWINDOW_ADVANCE_METHOD {
  34. E_WINDOW_ADVANCE_BY_TIME = 1,E_WINDOW_USE_AS_DATA_CACHE
  35. };
  36. typedef struct _RM_SEND_WINDOW {
  37. ULONG RateKbitsPerSec;
  38. ULONG WindowSizeInMSecs;
  39. ULONG WindowSizeInBytes;
  40. } RM_SEND_WINDOW;
  41. typedef struct _RM_SENDER_STATS {
  42. ULONGLONG DataBytesSent;
  43. ULONGLONG TotalBytesSent;
  44. ULONGLONG NaksReceived;
  45. ULONGLONG NaksReceivedTooLate;
  46. ULONGLONG NumOutstandingNaks;
  47. ULONGLONG NumNaksAfterRData;
  48. ULONGLONG RepairPacketsSent;
  49. ULONGLONG BufferSpaceAvailable;
  50. ULONGLONG TrailingEdgeSeqId;
  51. ULONGLONG LeadingEdgeSeqId;
  52. ULONGLONG RateKBitsPerSecOverall;
  53. ULONGLONG RateKBitsPerSecLast;
  54. ULONGLONG TotalODataPacketsSent;
  55. } RM_SENDER_STATS;
  56. typedef struct _RM_RECEIVER_STATS {
  57. ULONGLONG NumODataPacketsReceived;
  58. ULONGLONG NumRDataPacketsReceived;
  59. ULONGLONG NumDuplicateDataPackets;
  60. ULONGLONG DataBytesReceived;
  61. ULONGLONG TotalBytesReceived;
  62. ULONGLONG RateKBitsPerSecOverall;
  63. ULONGLONG RateKBitsPerSecLast;
  64. ULONGLONG TrailingEdgeSeqId;
  65. ULONGLONG LeadingEdgeSeqId;
  66. ULONGLONG AverageSequencesInWindow;
  67. ULONGLONG MinSequencesInWindow;
  68. ULONGLONG MaxSequencesInWindow;
  69. ULONGLONG FirstNakSequenceNumber;
  70. ULONGLONG NumPendingNaks;
  71. ULONGLONG NumOutstandingNaks;
  72. ULONGLONG NumDataPacketsBuffered;
  73. ULONGLONG TotalSelectiveNaksSent;
  74. ULONGLONG TotalParityNaksSent;
  75. } RM_RECEIVER_STATS;
  76. typedef struct _RM_FEC_INFO {
  77. USHORT FECBlockSize;
  78. USHORT FECProActivePackets;
  79. UCHAR FECGroupSize;
  80. BOOLEAN fFECOnDemandParityEnabled;
  81. } RM_FEC_INFO;
  82. #endif