windows-nt/Source/XPSP1/NT/net/rras/ip/igmp/mgmigmp.h
2020-09-26 16:20:57 +08:00

162 lines
4 KiB
C

//=============================================================================
// Copyright (c) 1997 Microsoft Corporation
// File Name: mgmigmp.h
//
// Abstract:
// This file contains prototypes for functions implemented in mgmigmp.h
//
// Author: K.S.Lokesh (lokeshs@) 11-1-97
//=============================================================================
#ifndef _MGMIGMP_H_
#define _MGMIGMP_H_
#define MGM_ADD_GROUP_MEMBERSHIP_ENTRY(pite,NHAddr, Src,Mask1,Group,Mask2,Flag) {\
DWORD RetVal;\
if (CAN_ADD_GROUPS_TO_MGM(pite)) {\
RetVal = MgmAddGroupMembershipEntry(g_MgmIgmprtrHandle,\
Src, Mask1, Group, Mask2, (pite)->IfIndex, NHAddr, Flag);\
Trace5(MGM, "Add <%d.%d.%d.%d: %d.%d.%d.%d> If:%0x to MGM Mode:%d [%d]",\
PRINT_IPADDR(Group), PRINT_IPADDR(Src), pite->IfIndex, Flag, RetVal);\
}\
}
#define MGM_DELETE_GROUP_MEMBERSHIP_ENTRY(pite,NHAddr, Src,Mask1,Group,Mask2,Flag){\
DWORD RetVal;\
if (CAN_ADD_GROUPS_TO_MGM(pite)){\
RetVal = MgmDeleteGroupMembershipEntry(g_MgmIgmprtrHandle,\
Src, Mask1, Group, Mask2, (pite)->IfIndex, NHAddr, Flag);\
Trace5(MGM, "Delete <%d.%d.%d.%d: %d.%d.%d.%d> If:%0x from MGM Mode:%d [%d]",\
PRINT_IPADDR(Group), PRINT_IPADDR(Src), pite->IfIndex,Flag,RetVal);\
}\
}
typedef struct _PROXY_ALERT_ENTRY {
LIST_ENTRY Link;
DWORD Group;
DWORD Source;
DWORD bPrune;
} PROXY_ALERT_ENTRY, *PPROXY_ALERT_ENTRY;
VOID
WF_ProcessProxyAlert (
PVOID pContext
);
DWORD
RegisterProtocolWithMgm(
DWORD ProxyOrRouter
);
DWORD
IgmpRpfCallback (
DWORD dwSourceAddr,
DWORD dwSourceMask,
DWORD dwGroupAddr,
DWORD dwGroupMask,
PDWORD dwInIfIndex,
PDWORD dwInIfNextHopAddr,
PDWORD dwUpstreamNeighbor,
DWORD dwHdrSize,
PBYTE pbPacketHdr,
PBYTE pbBuffer
);
DWORD
ProxyRpfCallback (
DWORD dwSourceAddr,
DWORD dwSourceMask,
DWORD dwGroupAddr,
DWORD dwGroupMask,
DWORD *dwInIfIndex,
DWORD *dwInIfNextHopAddr,
DWORD *dwUpstreamNeighbor,
DWORD dwHdrSize,
PBYTE pbPacketHdr,
PBYTE pbBuffer
);
DWORD
IgmpRtrCreationAlertCallback (
DWORD Source,
DWORD dwSourceMask,
DWORD Group,
DWORD dwGroupMask,
DWORD dwInIfIndex,
DWORD dwInIfNextHopAddr,
DWORD dwIfCount,
PMGM_IF_ENTRY Oif
);
DWORD
ProxyCreationAlertCallback (
DWORD dwSourceAddr,
DWORD dwSourceMask,
DWORD dwGroupAddr,
DWORD dwGroupMask,
DWORD dwInIfIndex,
DWORD dwInIfNextHopAddr,
DWORD dwIfCount,
PMGM_IF_ENTRY pmieOutIfList
);
DWORD
ProxyPruneAlertCallback (
DWORD dwSourceAddr,
DWORD dwSourceMask,
DWORD dwGroupAddr,
DWORD dwGroupMask,
DWORD dwIfIndex,
DWORD dwIfNextHopAddr,
BOOL bMemberDelete,
PDWORD pdwTimeout
);
DWORD
ProxyJoinAlertCallback (
DWORD dwSourceAddr,
DWORD dwSourceMask,
DWORD dwGroupAddr,
DWORD dwGroupMask,
BOOL bMemberUpdate
);
DWORD
ProcessProxyGroupChange (
DWORD dwSourceAddr,
DWORD dwGroup,
BOOL bAddFlag,
BOOL bStaticGroup
);
DWORD
RefreshAllMembersCallback (
DWORD IfIndex
);
DWORD
IgmpRefreshJoinsCallback (
DWORD dwIfIndex,
DWORD dwNHAddr
);
DWORD
MgmChangeIgmprtrStatus (
DWORD IfIndex,
BOOL Flag
);
DWORD
RefreshMgmIgmprtrGroups (
PIF_TABLE_ENTRY pite,
BOOL Flag
);
#endif //_MGMIGMP_H_