| 1 | 
 #ifndef _MGM_H | 
 
 
 
 
 
 | 2 | 
 #define _MGM_H | 
 
 
 
 
 
 | 3 | 
 #if __GNUC__ >= 3 | 
 
 
 
 
 
 | 4 | 
 #pragma GCC system_header | 
 
 
 
 
 
 | 5 | 
 #endif | 
 
 
 
 
 
 | 6 | 
  | 
 
 
 
 
 
 | 7 | 
 #ifdef __cplusplus | 
 
 
 
 
 
 | 8 | 
 extern "C" { | 
 
 
 
 
 
 | 9 | 
 #endif | 
 
 
 
 
 
 | 10 | 
  | 
 
 
 
 
 
 | 11 | 
 #if (_WIN32_WINNT >= 0x0500) | 
 
 
 
 
 
 | 12 | 
 #define MGM_JOIN_STATE_FLAG 0x00000001 | 
 
 
 
 
 
 | 13 | 
 #define MGM_FORWARD_STATE_FLAG 0x00000002 | 
 
 
 
 
 
 | 14 | 
 #define MGM_MFE_STATS_0 0x00000001 | 
 
 
 
 
 
 | 15 | 
 #define MGM_MFE_STATS_1 0x00000002 | 
 
 
 
 
 
 | 16 | 
 typedef enum _MGM_ENUM_TYPES { | 
 
 
 
 
 
 | 17 | 
         ANY_SOURCE=0, | 
 
 
 
 
 
 | 18 | 
         ALL_SOURCES | 
 
 
 
 
 
 | 19 | 
 } MGM_ENUM_TYPES; | 
 
 
 
 
 
 | 20 | 
 typedef struct _MGM_IF_ENTRY { | 
 
 
 
 
 
 | 21 | 
         DWORD dwIfIndex; | 
 
 
 
 
 
 | 22 | 
         DWORD dwIfNextHopAddr; | 
 
 
 
 
 
 | 23 | 
         BOOL bIGMP; | 
 
 
 
 
 
 | 24 | 
         BOOL bIsEnabled; | 
 
 
 
 
 
 | 25 | 
 } MGM_IF_ENTRY,*PMGM_IF_ENTRY; | 
 
 
 
 
 
 | 26 | 
 typedef DWORD(CALLBACK *PMGM_RPF_CALLBACK)(DWORD,DWORD,DWORD,DWORD,PDWORD,PDWORD,PDWORD,DWORD,PBYTE,PBYTE); | 
 
 
 
 
 
 | 27 | 
 typedef DWORD(CALLBACK *PMGM_CREATION_ALERT_CALLBACK)(DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PMGM_IF_ENTRY); | 
 
 
 
 
 
 | 28 | 
 typedef DWORD(CALLBACK *PMGM_PRUNE_ALERT_CALLBACK)(DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,BOOL,PDWORD); | 
 
 
 
 
 
 | 29 | 
 typedef DWORD(CALLBACK *PMGM_JOIN_ALERT_CALLBACK)(DWORD,DWORD,DWORD,DWORD,BOOL); | 
 
 
 
 
 
 | 30 | 
 typedef DWORD(CALLBACK *PMGM_WRONG_IF_CALLBACK)(DWORD,DWORD,DWORD,DWORD,DWORD,PBYTE); | 
 
 
 
 
 
 | 31 | 
 typedef DWORD(CALLBACK *PMGM_LOCAL_JOIN_CALLBACK)(DWORD,DWORD,DWORD,DWORD,DWORD,DWORD); | 
 
 
 
 
 
 | 32 | 
 typedef DWORD(CALLBACK *PMGM_LOCAL_LEAVE_CALLBACK)(DWORD,DWORD,DWORD,DWORD,DWORD,DWORD); | 
 
 
 
 
 
 | 33 | 
 typedef DWORD(CALLBACK *PMGM_DISABLE_IGMP_CALLBACK)(DWORD,DWORD); | 
 
 
 
 
 
 | 34 | 
 typedef DWORD(CALLBACK *PMGM_ENABLE_IGMP_CALLBACK)(DWORD,DWORD); | 
 
 
 
 
 
 | 35 | 
 typedef struct _ROUTING_PROTOCOL_CONFIG { | 
 
 
 
 
 
 | 36 | 
         DWORD dwCallbackFlags; | 
 
 
 
 
 
 | 37 | 
         PMGM_RPF_CALLBACK pfnRpfCallback; | 
 
 
 
 
 
 | 38 | 
         PMGM_CREATION_ALERT_CALLBACK pfnCreationAlertCallback; | 
 
 
 
 
 
 | 39 | 
         PMGM_PRUNE_ALERT_CALLBACK pfnPruneAlertCallback; | 
 
 
 
 
 
 | 40 | 
         PMGM_JOIN_ALERT_CALLBACK pfnJoinAlertCallback; | 
 
 
 
 
 
 | 41 | 
         PMGM_WRONG_IF_CALLBACK pfnWrongIfCallback; | 
 
 
 
 
 
 | 42 | 
         PMGM_LOCAL_JOIN_CALLBACK pfnLocalJoinCallback; | 
 
 
 
 
 
 | 43 | 
         PMGM_LOCAL_LEAVE_CALLBACK pfnLocalLeaveCallback; | 
 
 
 
 
 
 | 44 | 
         PMGM_DISABLE_IGMP_CALLBACK pfnDisableIgmpCallback; | 
 
 
 
 
 
 | 45 | 
         PMGM_ENABLE_IGMP_CALLBACK pfnEnableIgmpCallback; | 
 
 
 
 
 
 | 46 | 
 } ROUTING_PROTOCOL_CONFIG,*PROUTING_PROTOCOL_CONFIG; | 
 
 
 
 
 
 | 47 | 
 typedef struct _SOURCE_GROUP_ENTRY { | 
 
 
 
 
 
 | 48 | 
         DWORD dwSourceAddr; | 
 
 
 
 
 
 | 49 | 
         DWORD dwSourceMask; | 
 
 
 
 
 
 | 50 | 
         DWORD dwGroupAddr; | 
 
 
 
 
 
 | 51 | 
         DWORD dwGroupMask; | 
 
 
 
 
 
 | 52 | 
 } SOURCE_GROUP_ENTRY,*PSOURCE_GROUP_ENTRY; | 
 
 
 
 
 
 | 53 | 
 DWORD WINAPI MgmAddGroupMembershipEntry(HANDLE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD); | 
 
 
 
 
 
 | 54 | 
 DWORD WINAPI MgmDeleteGroupMembershipEntry(HANDLE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD); | 
 
 
 
 
 
 | 55 | 
 DWORD WINAPI MgmDeRegisterMProtocol(HANDLE); | 
 
 
 
 
 
 | 56 | 
 DWORD WINAPI MgmGetFirstMfe(PDWORD,PBYTE,PDWORD); | 
 
 
 
 
 
 | 57 | 
 DWORD WINAPI MgmGetFirstMfeStats(PDWORD,PBYTE,PDWORD,DWORD); | 
 
 
 
 
 
 | 58 | 
 DWORD WINAPI MgmGetMfe(PMIB_IPMCAST_MFE,PDWORD,PBYTE); | 
 
 
 
 
 
 | 59 | 
 DWORD WINAPI MgmGetMfeStats(PMIB_IPMCAST_MFE,PDWORD,PBYTE,DWORD); | 
 
 
 
 
 
 | 60 | 
 DWORD WINAPI MgmGetNextMfe(PMIB_IPMCAST_MFE,PDWORD,PBYTE,PDWORD); | 
 
 
 
 
 
 | 61 | 
 DWORD WINAPI MgmGetNextMfeStats(PMIB_IPMCAST_MFE,PDWORD,PBYTE,PDWORD,DWORD); | 
 
 
 
 
 
 | 62 | 
 DWORD WINAPI MgmGetProtocolOnInterface(DWORD,DWORD,PDWORD,PDWORD); | 
 
 
 
 
 
 | 63 | 
 DWORD WINAPI MgmGroupEnumerationEnd(HANDLE); | 
 
 
 
 
 
 | 64 | 
 DWORD WINAPI MgmGroupEnumerationGetNext(HANDLE,PDWORD,PBYTE,PDWORD); | 
 
 
 
 
 
 | 65 | 
 DWORD WINAPI MgmGroupEnumerationStart(HANDLE,MGM_ENUM_TYPES,HANDLE*); | 
 
 
 
 
 
 | 66 | 
 DWORD WINAPI MgmRegisterMProtocol(PROUTING_PROTOCOL_CONFIG,DWORD,DWORD,HANDLE*); | 
 
 
 
 
 
 | 67 | 
 DWORD WINAPI MgmReleaseInterfaceOwnership(HANDLE,DWORD,DWORD); | 
 
 
 
 
 
 | 68 | 
 DWORD WINAPI MgmSetMfe(HANDLE,PMIB_IPMCAST_MFE); | 
 
 
 
 
 
 | 69 | 
 DWORD WINAPI MgmTakeInterfaceOwnership(HANDLE,DWORD,DWORD); | 
 
 
 
 
 
 | 70 | 
 #endif | 
 
 
 
 
 
 | 71 | 
  | 
 
 
 
 
 
 | 72 | 
 #ifdef __cplusplus | 
 
 
 
 
 
 | 73 | 
 } | 
 
 
 
 
 
 | 74 | 
 #endif | 
 
 
 
 
 
 | 75 | 
 #endif |