|
|
//=============================================================================
// Copyright (c) 1997 Microsoft Corporation
//
// File: work.h
//
// Abstract:
// Contains declarations and function prototypes related to work.c.
//
// Author: K.S.Lokesh (lokeshs@) 11-1-97
//
// Revision History:
//=============================================================================
#ifndef _WORK_H_
#define _WORK_H_
//
// WORK_CONTEXT
//
typedef struct _WORK_CONTEXT {
DWORD IfIndex; DWORD NHAddr; DWORD Group; DWORD Source; //v3
// MSG_GEN_QUERY, MSG_GROUP_QUERY_V2(_V3), DELETE_MEMBERSHIP, DELETE_SOURCE
// PROXY_PRUNE, PROXY_JOIN
DWORD WorkType;
} WORK_CONTEXT, *PWORK_CONTEXT;
#define CREATE_WORK_CONTEXT(ptr, Error) {\
ptr = IGMP_ALLOC(sizeof(WORK_CONTEXT), 0x800100,0xaaaa);\ if (ptr==NULL) { \ Error = ERROR_NOT_ENOUGH_MEMORY; \ Trace2(ANY, "Error %d allocating %d bytes for Work context", \ Error, sizeof(WORK_CONTEXT)); \ } \ }
//
// Used by work item to change the querier state
//
typedef struct _QUERIER_CONTEXT {
DWORD IfIndex; DWORD QuerierIpAddr; DWORD NewRobustnessVariable; DWORD NewGenQueryInterval; } QUERIER_CONTEXT, *PQUERIER_CONTEXT;
VOID DeleteRasClient ( PRAS_TABLE_ENTRY prte );
VOID WF_CompleteIfDeletion ( PIF_TABLE_ENTRY pite );
VOID WT_ProcessInputEvent( PVOID pContext, //NULL
BOOLEAN NotUsed );
DWORD ActivateInterface ( PIF_TABLE_ENTRY pite );
DWORD T_LastMemQueryTimer ( PVOID pvContext );
DWORD T_MembershipTimer ( PVOID pvContext );
DWORD T_LastVer1ReportTimer ( PVOID pvContext ); DWORD T_RouterV1Timer ( PVOID pvContext ); //
// LOCAL PROTOTYPES
//
VOID WF_ProcessInputEvent ( PVOID pContext ); VOID ProcessInputOnInterface( PIF_TABLE_ENTRY pite ); DWORD ProcessAddInterface( IN DWORD IfIndex, IN NET_INTERFACE_TYPE dwIfType, IN PVOID pvConfig );
VOID WF_TimerProcessing ( PVOID pvContext ); VOID CompleteIfDeactivateDelete ( PIF_TABLE_ENTRY pite );
VOID DeActivateInterfaceComplete ( PIF_TABLE_ENTRY pite );
DWORD T_QueryTimer ( PVOID pvContext );
DWORD T_NonQueryTimer ( PVOID pvContext );
VOID WF_ProcessPacket ( PVOID pvContext );
VOID ProcessPacket ( PIF_TABLE_ENTRY pite, DWORD InputSrcAddr, DWORD DstnMcastAddr, DWORD NumBytes, PBYTE pPacketData, // igmp packet hdr. data following it ignored
BOOL bRtrAlertSet );
VOID WF_BecomeQuerier( PVOID pvIfIndex );
VOID WF_BecomeNonQuerier( PVOID pvIfIndex );
DWORD WF_FinishStopProtocol( PVOID pContext ); VOID ChangeQuerierState( DWORD IfIndex, DWORD Flag, DWORD QuerierIpAddr, DWORD NewRobustnessVariable, //only for v3:querier->non-querier
DWORD NewGenQueryInterval //only for v3:querier->non-querier
);
#endif //_WORK_H_
|