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