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 |