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