194 lines
3.2 KiB
C
194 lines
3.2 KiB
C
|
//=============================================================================
|
||
|
// 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_
|