| 1 |
/** |
| 2 |
* This file has no copyright assigned and is placed in the Public Domain. |
| 3 |
* This file is part of the mingw-w64 runtime package. |
| 4 |
* No warranty is given; refer to the file DISCLAIMER.PD within this package. |
| 5 |
*/ |
| 6 |
#ifndef _MGM_H_ |
| 7 |
#define _MGM_H_ |
| 8 |
|
| 9 |
typedef struct _MGM_IF_ENTRY { |
| 10 |
DWORD dwIfIndex; |
| 11 |
DWORD dwIfNextHopAddr; |
| 12 |
WINBOOL bIGMP; |
| 13 |
WINBOOL bIsEnabled; |
| 14 |
} MGM_IF_ENTRY,*PMGM_IF_ENTRY; |
| 15 |
|
| 16 |
typedef DWORD (*PMGM_RPF_CALLBACK)(DWORD dwSourceAddr,DWORD dwSourceMask,DWORD dwGroupAddr,DWORD dwGroupMask,PDWORD pdwInIfIndex,PDWORD pdwInIfNextHopAddr,PDWORD pdwUpStreamNbr,DWORD dwHdrSize,PBYTE pbPacketHdr,PBYTE pbRoute); |
| 17 |
typedef DWORD (*PMGM_CREATION_ALERT_CALLBACK)(DWORD dwSourceAddr,DWORD dwSourceMask,DWORD dwGroupAddr,DWORD dwGroupMask,DWORD dwInIfIndex,DWORD dwInIfNextHopAddr,DWORD dwIfCount,PMGM_IF_ENTRY pmieOutIfList); |
| 18 |
typedef DWORD (*PMGM_PRUNE_ALERT_CALLBACK)(DWORD dwSourceAddr,DWORD dwSourceMask,DWORD dwGroupAddr,DWORD dwGroupMask,DWORD dwIfIndex,DWORD dwIfNextHopAddr,WINBOOL bMemberDelete,PDWORD pdwTimeout); |
| 19 |
typedef DWORD (*PMGM_JOIN_ALERT_CALLBACK)(DWORD dwSourceAddr,DWORD dwSourceMask,DWORD dwGroupAddr,DWORD dwGroupMask,WINBOOL bMemberUpdate); |
| 20 |
typedef DWORD (*PMGM_WRONG_IF_CALLBACK)(DWORD dwSourceAddr,DWORD dwGroupAddr,DWORD dwIfIndex,DWORD dwIfNextHopAddr,DWORD dwHdrSize,PBYTE pbPacketHdr); |
| 21 |
typedef DWORD (*PMGM_LOCAL_JOIN_CALLBACK) (DWORD dwSourceAddr,DWORD dwSourceMask,DWORD dwGroupAddr,DWORD dwGroupMask,DWORD dwIfIndex,DWORD dwIfNextHopAddr); |
| 22 |
typedef DWORD (*PMGM_LOCAL_LEAVE_CALLBACK) (DWORD dwSourceAddr,DWORD dwSourceMask,DWORD dwGroupAddr,DWORD dwGroupMask,DWORD dwIfIndex,DWORD dwIfNextHopAddr); |
| 23 |
typedef DWORD (*PMGM_DISABLE_IGMP_CALLBACK) (DWORD dwIfIndex,DWORD dwIfNextHopAddr); |
| 24 |
typedef DWORD (*PMGM_ENABLE_IGMP_CALLBACK) (DWORD dwIfIndex,DWORD dwIfNextHopAddr); |
| 25 |
|
| 26 |
typedef struct _ROUTING_PROTOCOL_CONFIG { |
| 27 |
DWORD dwCallbackFlags; |
| 28 |
PMGM_RPF_CALLBACK pfnRpfCallback; |
| 29 |
PMGM_CREATION_ALERT_CALLBACK pfnCreationAlertCallback; |
| 30 |
PMGM_PRUNE_ALERT_CALLBACK pfnPruneAlertCallback; |
| 31 |
PMGM_JOIN_ALERT_CALLBACK pfnJoinAlertCallback; |
| 32 |
PMGM_WRONG_IF_CALLBACK pfnWrongIfCallback; |
| 33 |
PMGM_LOCAL_JOIN_CALLBACK pfnLocalJoinCallback; |
| 34 |
PMGM_LOCAL_LEAVE_CALLBACK pfnLocalLeaveCallback; |
| 35 |
PMGM_DISABLE_IGMP_CALLBACK pfnDisableIgmpCallback; |
| 36 |
PMGM_ENABLE_IGMP_CALLBACK pfnEnableIgmpCallback; |
| 37 |
} ROUTING_PROTOCOL_CONFIG,*PROUTING_PROTOCOL_CONFIG; |
| 38 |
|
| 39 |
typedef enum _MGM_ENUM_TYPES { |
| 40 |
ANY_SOURCE = 0,ALL_SOURCES |
| 41 |
} MGM_ENUM_TYPES; |
| 42 |
|
| 43 |
typedef struct _SOURCE_GROUP_ENTRY { |
| 44 |
DWORD dwSourceAddr; |
| 45 |
DWORD dwSourceMask; |
| 46 |
DWORD dwGroupAddr; |
| 47 |
DWORD dwGroupMask; |
| 48 |
} SOURCE_GROUP_ENTRY,*PSOURCE_GROUP_ENTRY; |
| 49 |
|
| 50 |
#define MGM_JOIN_STATE_FLAG 0x00000001 |
| 51 |
#define MGM_FORWARD_STATE_FLAG 0x00000002 |
| 52 |
|
| 53 |
#define MGM_MFE_STATS_0 0x00000001 |
| 54 |
#define MGM_MFE_STATS_1 0x00000002 |
| 55 |
|
| 56 |
DWORD MgmRegisterMProtocol(PROUTING_PROTOCOL_CONFIG prpiInfo,DWORD dwProtocolId,DWORD dwComponentId,HANDLE *phProtocol); |
| 57 |
DWORD MgmDeRegisterMProtocol(HANDLE hProtocol); |
| 58 |
DWORD MgmTakeInterfaceOwnership(HANDLE hProtocol,DWORD dwIfIndex,DWORD dwIfNextHopAddr); |
| 59 |
DWORD MgmReleaseInterfaceOwnership(HANDLE hProtocol,DWORD dwIfIndex,DWORD dwIfNextHopAddr); |
| 60 |
DWORD MgmGetProtocolOnInterface(DWORD dwIfIndex,DWORD dwIfNextHopAddr,PDWORD pdwIfProtocolId,PDWORD pdwIfComponentId); |
| 61 |
DWORD MgmAddGroupMembershipEntry(HANDLE hProtocol,DWORD dwSourceAddr,DWORD dwSourceMask,DWORD dwGroupAddr,DWORD dwGroupMask,DWORD dwIfIndex,DWORD dwIfNextHopIPAddr,DWORD dwFlags); |
| 62 |
DWORD MgmDeleteGroupMembershipEntry(HANDLE hProtocol,DWORD dwSourceAddr,DWORD dwSourceMask,DWORD dwGroupAddr,DWORD dwGroupMask,DWORD dwIfIndex,DWORD dwIfNextHopIPAddr,DWORD dwFlags); |
| 63 |
DWORD MgmGetMfe(PMIB_IPMCAST_MFE pimm,PDWORD pdwBufferSize,PBYTE pbBuffer); |
| 64 |
DWORD MgmGetFirstMfe(PDWORD pdwBufferSize,PBYTE pbBuffer,PDWORD pdwNumEntries); |
| 65 |
DWORD MgmGetNextMfe(PMIB_IPMCAST_MFE pimmStart,PDWORD pdwBufferSize,PBYTE pbBuffer,PDWORD pdwNumEntries); |
| 66 |
DWORD MgmGetMfeStats(PMIB_IPMCAST_MFE pimm,PDWORD pdwBufferSize,PBYTE pbBuffer,DWORD dwFlags); |
| 67 |
DWORD MgmGetFirstMfeStats(PDWORD pdwBufferSize,PBYTE pbBuffer,PDWORD pdwNumEntries,DWORD dwFlags); |
| 68 |
DWORD MgmGetNextMfeStats(PMIB_IPMCAST_MFE pimmStart,PDWORD pdwBufferSize,PBYTE pbBuffer,PDWORD pdwNumEntries,DWORD dwFlags); |
| 69 |
DWORD MgmGroupEnumerationStart(HANDLE hProtocol,MGM_ENUM_TYPES metEnumType,HANDLE *phEnumHandle); |
| 70 |
DWORD MgmGroupEnumerationGetNext(HANDLE hEnum,PDWORD pdwBufferSize,PBYTE pbBuffer,PDWORD pdwNumEntries); |
| 71 |
DWORD MgmGroupEnumerationEnd(HANDLE hEnum); |
| 72 |
DWORD MgmSetMfe(HANDLE hProtocol,PMIB_IPMCAST_MFE pmimm); |
| 73 |
|
| 74 |
#endif |