OSDN Git Service

Modify "@copy 2012" to read "Copyright 2012, 2013".
[mingw/mingw-org-wsl.git] / include / mgm.h
1 /**
2  * @file mgm.h
3  * Copyright 2012, 2013 MinGW.org project
4  *
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:
11  * 
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
14  * Software.
15  * 
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.
23  */
24 #ifndef _MGM_H
25 #define _MGM_H
26 #pragma GCC system_header
27 #include <_mingw.h>
28
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32
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 {
39         ANY_SOURCE=0,
40         ALL_SOURCES
41 } MGM_ENUM_TYPES;
42 typedef struct _MGM_IF_ENTRY {
43         DWORD dwIfIndex;
44         DWORD dwIfNextHopAddr;
45         BOOL bIGMP;
46         BOOL bIsEnabled;
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 {
70         DWORD dwSourceAddr;
71         DWORD dwSourceMask;
72         DWORD dwGroupAddr;
73         DWORD dwGroupMask;
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 */
93
94 #ifdef __cplusplus
95 }
96 #endif
97
98 #endif