[1166] | 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
|
---|