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