|
|
//============================================================================
// Copyright (c) 1995, Microsoft Corporation
//
// File: scope.h
//
// History:
// V Raman June-25-1997 Created.
//
// Prototypes for functions that implement the admin-scoped boundaries
//============================================================================
#ifndef _SCOPE_H_
#define _SCOPE_H_
DWORD APIENTRY MgmBlockGroups( IN DWORD dwFirstGroup, IN DWORD dwLastGroup, IN DWORD dwIfIndex, IN DWORD dwIfNextHopAddr );
DWORD APIENTRY MgmUnBlockGroups( IN DWORD dwFirstGroup, IN DWORD dwLastGroup, IN DWORD dwIfIndex, IN DWORD dwIfNextHopAddr );
//
// Routines that invoke the NEW and DELETE member callbacks for
// protocols as per the interop rules
//
VOID InvokePruneAlertCallbacks( PGROUP_ENTRY pge, PSOURCE_ENTRY pse, DWORD dwIfIndex, DWORD dwIfNextHopAddr, PPROTOCOL_ENTRY ppe );
VOID InvokeJoinAlertCallbacks( PGROUP_ENTRY pge, PSOURCE_ENTRY pse, POUT_IF_ENTRY poie, BOOL bIGMP, PPROTOCOL_ENTRY ppe );
//
// Node in the Outstanding Join List
//
typedef struct _JOIN_ENTRY { LIST_ENTRY leJoinList; DWORD dwSourceAddr;
DWORD dwSourceMask;
DWORD dwGroupAddr;
DWORD dwGroupMask;
DWORD dwIfIndex;
DWORD dwIfNextHopAddr;
BOOL bJoin; } JOIN_ENTRY, *PJOIN_ENTRY;
//
// Functions to manipulate the join list
//
DWORD AddToOutstandingJoinList( DWORD dwSourceAddr, DWORD dwSourceMask, DWORD dwGroupAddr, DWORD dwGroupMask, DWORD dwIfIndex, DWORD dwIfNextHopAddr, BOOL bJoin );
VOID InvokeOutstandingCallbacks( );
//
// Functions to manipulate the check for creation alert list
//
VOID AddToCheckForCreationAlertList( DWORD dwGroupAddr, DWORD dwGroupMask, DWORD dwSourceAddr, DWORD dwSourceMask, DWORD dwInIfIndex, DWORD dwInIfNextHopAddr, PLIST_ENTRY pleForwardList );
VOID FreeList( PLIST_ENTRY pleForwardList );
BOOL IsForwardingEnabled( DWORD dwGroupAddr, DWORD dwGroupMask, DWORD dwSourceAddr, DWORD dwSourceMask, PLIST_ENTRY pleSourceList );
DWORD InvokeCreationAlertForList( PLIST_ENTRY pleForwardList, DWORD dwProtocolId, DWORD dwComponentId, DWORD dwIfIndex, DWORD dwIfNextHopAddr );
//
// Context passed to worker function WorkerFunctionInvokeCreationAlert
//
typedef struct _CREATION_ALERT_CONTEXT {
//
// Source(s) for the group that was joined
//
DWORD dwSourceAddr;
DWORD dwSourceMask;
//
// Group(s) that were joined
//
DWORD dwGroupAddr;
DWORD dwGroupMask;
//
// Interface on which joined. This is the interface
// for which creation alerts have to issued
//
DWORD dwIfIndex;
DWORD dwIfNextHopAddr;
//
// Protocol that performed the join
//
DWORD dwProtocolId;
DWORD dwComponentId;
BOOL bIGMP;
//
// for (*, G) entries, list of MFE(s) for G to be
// updated
//
LIST_ENTRY leSourceList; } CREATION_ALERT_CONTEXT, *PCREATION_ALERT_CONTEXT;
//
// worker function required for invoking creation alert
// to protocols from a worker thread
//
VOID WorkerFunctionInvokeCreationAlert( PVOID pvContext );
#endif // _SCOPE_H_
|