3 * Copyright 2012, 2013 MinGW.org project
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
12 * The above copyright notice and this permission notice (including the next
13 * paragraph) shall be included in all copies or substantial portions of the
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
26 #pragma GCC system_header
33 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN2K)
34 #define MGM_JOIN_STATE_FLAG 0x00000001
35 #define MGM_FORWARD_STATE_FLAG 0x00000002
36 #define MGM_MFE_STATS_0 0x00000001
37 #define MGM_MFE_STATS_1 0x00000002
38 typedef enum _MGM_ENUM_TYPES {
42 typedef struct _MGM_IF_ENTRY {
44 DWORD dwIfNextHopAddr;
47 } MGM_IF_ENTRY,*PMGM_IF_ENTRY;
48 typedef DWORD(CALLBACK *PMGM_RPF_CALLBACK)(DWORD,DWORD,DWORD,DWORD,PDWORD,PDWORD,PDWORD,DWORD,PBYTE,PBYTE);
49 typedef DWORD(CALLBACK *PMGM_CREATION_ALERT_CALLBACK)(DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PMGM_IF_ENTRY);
50 typedef DWORD(CALLBACK *PMGM_PRUNE_ALERT_CALLBACK)(DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,BOOL,PDWORD);
51 typedef DWORD(CALLBACK *PMGM_JOIN_ALERT_CALLBACK)(DWORD,DWORD,DWORD,DWORD,BOOL);
52 typedef DWORD(CALLBACK *PMGM_WRONG_IF_CALLBACK)(DWORD,DWORD,DWORD,DWORD,DWORD,PBYTE);
53 typedef DWORD(CALLBACK *PMGM_LOCAL_JOIN_CALLBACK)(DWORD,DWORD,DWORD,DWORD,DWORD,DWORD);
54 typedef DWORD(CALLBACK *PMGM_LOCAL_LEAVE_CALLBACK)(DWORD,DWORD,DWORD,DWORD,DWORD,DWORD);
55 typedef DWORD(CALLBACK *PMGM_DISABLE_IGMP_CALLBACK)(DWORD,DWORD);
56 typedef DWORD(CALLBACK *PMGM_ENABLE_IGMP_CALLBACK)(DWORD,DWORD);
57 typedef struct _ROUTING_PROTOCOL_CONFIG {
58 DWORD dwCallbackFlags;
59 PMGM_RPF_CALLBACK pfnRpfCallback;
60 PMGM_CREATION_ALERT_CALLBACK pfnCreationAlertCallback;
61 PMGM_PRUNE_ALERT_CALLBACK pfnPruneAlertCallback;
62 PMGM_JOIN_ALERT_CALLBACK pfnJoinAlertCallback;
63 PMGM_WRONG_IF_CALLBACK pfnWrongIfCallback;
64 PMGM_LOCAL_JOIN_CALLBACK pfnLocalJoinCallback;
65 PMGM_LOCAL_LEAVE_CALLBACK pfnLocalLeaveCallback;
66 PMGM_DISABLE_IGMP_CALLBACK pfnDisableIgmpCallback;
67 PMGM_ENABLE_IGMP_CALLBACK pfnEnableIgmpCallback;
68 } ROUTING_PROTOCOL_CONFIG,*PROUTING_PROTOCOL_CONFIG;
69 typedef struct _SOURCE_GROUP_ENTRY {
74 } SOURCE_GROUP_ENTRY,*PSOURCE_GROUP_ENTRY;
75 DWORD WINAPI MgmAddGroupMembershipEntry(HANDLE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD);
76 DWORD WINAPI MgmDeleteGroupMembershipEntry(HANDLE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD);
77 DWORD WINAPI MgmDeRegisterMProtocol(HANDLE);
78 DWORD WINAPI MgmGetFirstMfe(PDWORD,PBYTE,PDWORD);
79 DWORD WINAPI MgmGetFirstMfeStats(PDWORD,PBYTE,PDWORD,DWORD);
80 DWORD WINAPI MgmGetMfe(PMIB_IPMCAST_MFE,PDWORD,PBYTE);
81 DWORD WINAPI MgmGetMfeStats(PMIB_IPMCAST_MFE,PDWORD,PBYTE,DWORD);
82 DWORD WINAPI MgmGetNextMfe(PMIB_IPMCAST_MFE,PDWORD,PBYTE,PDWORD);
83 DWORD WINAPI MgmGetNextMfeStats(PMIB_IPMCAST_MFE,PDWORD,PBYTE,PDWORD,DWORD);
84 DWORD WINAPI MgmGetProtocolOnInterface(DWORD,DWORD,PDWORD,PDWORD);
85 DWORD WINAPI MgmGroupEnumerationEnd(HANDLE);
86 DWORD WINAPI MgmGroupEnumerationGetNext(HANDLE,PDWORD,PBYTE,PDWORD);
87 DWORD WINAPI MgmGroupEnumerationStart(HANDLE,MGM_ENUM_TYPES,HANDLE*);
88 DWORD WINAPI MgmRegisterMProtocol(PROUTING_PROTOCOL_CONFIG,DWORD,DWORD,HANDLE*);
89 DWORD WINAPI MgmReleaseInterfaceOwnership(HANDLE,DWORD,DWORD);
90 DWORD WINAPI MgmSetMfe(HANDLE,PMIB_IPMCAST_MFE);
91 DWORD WINAPI MgmTakeInterfaceOwnership(HANDLE,DWORD,DWORD);
92 #endif /* _WIN32_WINNT >= _WIN32_WINNT_WIN2K */