mgm.h 4.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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 _MGM_H_
  7. #define _MGM_H_
  8. typedef struct _MGM_IF_ENTRY {
  9. DWORD dwIfIndex;
  10. DWORD dwIfNextHopAddr;
  11. WINBOOL bIGMP;
  12. WINBOOL bIsEnabled;
  13. } MGM_IF_ENTRY,*PMGM_IF_ENTRY;
  14. typedef DWORD (*PMGM_RPF_CALLBACK)(DWORD dwSourceAddr,DWORD dwSourceMask,DWORD dwGroupAddr,DWORD dwGroupMask,PDWORD pdwInIfIndex,PDWORD pdwInIfNextHopAddr,PDWORD pdwUpStreamNbr,DWORD dwHdrSize,PBYTE pbPacketHdr,PBYTE pbRoute);
  15. typedef DWORD (*PMGM_CREATION_ALERT_CALLBACK)(DWORD dwSourceAddr,DWORD dwSourceMask,DWORD dwGroupAddr,DWORD dwGroupMask,DWORD dwInIfIndex,DWORD dwInIfNextHopAddr,DWORD dwIfCount,PMGM_IF_ENTRY pmieOutIfList);
  16. typedef DWORD (*PMGM_PRUNE_ALERT_CALLBACK)(DWORD dwSourceAddr,DWORD dwSourceMask,DWORD dwGroupAddr,DWORD dwGroupMask,DWORD dwIfIndex,DWORD dwIfNextHopAddr,WINBOOL bMemberDelete,PDWORD pdwTimeout);
  17. typedef DWORD (*PMGM_JOIN_ALERT_CALLBACK)(DWORD dwSourceAddr,DWORD dwSourceMask,DWORD dwGroupAddr,DWORD dwGroupMask,WINBOOL bMemberUpdate);
  18. typedef DWORD (*PMGM_WRONG_IF_CALLBACK)(DWORD dwSourceAddr,DWORD dwGroupAddr,DWORD dwIfIndex,DWORD dwIfNextHopAddr,DWORD dwHdrSize,PBYTE pbPacketHdr);
  19. typedef DWORD (*PMGM_LOCAL_JOIN_CALLBACK) (DWORD dwSourceAddr,DWORD dwSourceMask,DWORD dwGroupAddr,DWORD dwGroupMask,DWORD dwIfIndex,DWORD dwIfNextHopAddr);
  20. typedef DWORD (*PMGM_LOCAL_LEAVE_CALLBACK) (DWORD dwSourceAddr,DWORD dwSourceMask,DWORD dwGroupAddr,DWORD dwGroupMask,DWORD dwIfIndex,DWORD dwIfNextHopAddr);
  21. typedef DWORD (*PMGM_DISABLE_IGMP_CALLBACK) (DWORD dwIfIndex,DWORD dwIfNextHopAddr);
  22. typedef DWORD (*PMGM_ENABLE_IGMP_CALLBACK) (DWORD dwIfIndex,DWORD dwIfNextHopAddr);
  23. typedef struct _ROUTING_PROTOCOL_CONFIG {
  24. DWORD dwCallbackFlags;
  25. PMGM_RPF_CALLBACK pfnRpfCallback;
  26. PMGM_CREATION_ALERT_CALLBACK pfnCreationAlertCallback;
  27. PMGM_PRUNE_ALERT_CALLBACK pfnPruneAlertCallback;
  28. PMGM_JOIN_ALERT_CALLBACK pfnJoinAlertCallback;
  29. PMGM_WRONG_IF_CALLBACK pfnWrongIfCallback;
  30. PMGM_LOCAL_JOIN_CALLBACK pfnLocalJoinCallback;
  31. PMGM_LOCAL_LEAVE_CALLBACK pfnLocalLeaveCallback;
  32. PMGM_DISABLE_IGMP_CALLBACK pfnDisableIgmpCallback;
  33. PMGM_ENABLE_IGMP_CALLBACK pfnEnableIgmpCallback;
  34. } ROUTING_PROTOCOL_CONFIG,*PROUTING_PROTOCOL_CONFIG;
  35. typedef enum _MGM_ENUM_TYPES {
  36. ANY_SOURCE = 0,ALL_SOURCES
  37. } MGM_ENUM_TYPES;
  38. typedef struct _SOURCE_GROUP_ENTRY {
  39. DWORD dwSourceAddr;
  40. DWORD dwSourceMask;
  41. DWORD dwGroupAddr;
  42. DWORD dwGroupMask;
  43. } SOURCE_GROUP_ENTRY,*PSOURCE_GROUP_ENTRY;
  44. #define MGM_JOIN_STATE_FLAG 0x00000001
  45. #define MGM_FORWARD_STATE_FLAG 0x00000002
  46. #define MGM_MFE_STATS_0 0x00000001
  47. #define MGM_MFE_STATS_1 0x00000002
  48. DWORD MgmRegisterMProtocol(PROUTING_PROTOCOL_CONFIG prpiInfo,DWORD dwProtocolId,DWORD dwComponentId,HANDLE *phProtocol);
  49. DWORD MgmDeRegisterMProtocol(HANDLE hProtocol);
  50. DWORD MgmTakeInterfaceOwnership(HANDLE hProtocol,DWORD dwIfIndex,DWORD dwIfNextHopAddr);
  51. DWORD MgmReleaseInterfaceOwnership(HANDLE hProtocol,DWORD dwIfIndex,DWORD dwIfNextHopAddr);
  52. DWORD MgmGetProtocolOnInterface(DWORD dwIfIndex,DWORD dwIfNextHopAddr,PDWORD pdwIfProtocolId,PDWORD pdwIfComponentId);
  53. DWORD MgmAddGroupMembershipEntry(HANDLE hProtocol,DWORD dwSourceAddr,DWORD dwSourceMask,DWORD dwGroupAddr,DWORD dwGroupMask,DWORD dwIfIndex,DWORD dwIfNextHopIPAddr,DWORD dwFlags);
  54. DWORD MgmDeleteGroupMembershipEntry(HANDLE hProtocol,DWORD dwSourceAddr,DWORD dwSourceMask,DWORD dwGroupAddr,DWORD dwGroupMask,DWORD dwIfIndex,DWORD dwIfNextHopIPAddr,DWORD dwFlags);
  55. DWORD MgmGetMfe(PMIB_IPMCAST_MFE pimm,PDWORD pdwBufferSize,PBYTE pbBuffer);
  56. DWORD MgmGetFirstMfe(PDWORD pdwBufferSize,PBYTE pbBuffer,PDWORD pdwNumEntries);
  57. DWORD MgmGetNextMfe(PMIB_IPMCAST_MFE pimmStart,PDWORD pdwBufferSize,PBYTE pbBuffer,PDWORD pdwNumEntries);
  58. DWORD MgmGetMfeStats(PMIB_IPMCAST_MFE pimm,PDWORD pdwBufferSize,PBYTE pbBuffer,DWORD dwFlags);
  59. DWORD MgmGetFirstMfeStats(PDWORD pdwBufferSize,PBYTE pbBuffer,PDWORD pdwNumEntries,DWORD dwFlags);
  60. DWORD MgmGetNextMfeStats(PMIB_IPMCAST_MFE pimmStart,PDWORD pdwBufferSize,PBYTE pbBuffer,PDWORD pdwNumEntries,DWORD dwFlags);
  61. DWORD MgmGroupEnumerationStart(HANDLE hProtocol,MGM_ENUM_TYPES metEnumType,HANDLE *phEnumHandle);
  62. DWORD MgmGroupEnumerationGetNext(HANDLE hEnum,PDWORD pdwBufferSize,PBYTE pbBuffer,PDWORD pdwNumEntries);
  63. DWORD MgmGroupEnumerationEnd(HANDLE hEnum);
  64. DWORD MgmSetMfe(HANDLE hProtocol,PMIB_IPMCAST_MFE pmimm);
  65. #endif