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