Home | History | Annotate | Download | only in include
      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
     75