273 lines
3.9 KiB
C
273 lines
3.9 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1995 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
prot.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
RIP component prototypes
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Stefan Solomon 06/22/1995
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#ifndef _PROT_
|
||
|
#define _PROT_
|
||
|
|
||
|
VOID
|
||
|
InitIfDbase(VOID);
|
||
|
|
||
|
PICB
|
||
|
GetInterfaceByIndex(ULONG InterfaceIndex);
|
||
|
|
||
|
PICB
|
||
|
GetInterfaceByAdapterIndex(ULONG AdapterIndex);
|
||
|
|
||
|
VOID
|
||
|
AddIfToDb(PICB icbp);
|
||
|
|
||
|
VOID
|
||
|
RemoveIfFromDb(PICB icbp);
|
||
|
|
||
|
VOID
|
||
|
BindIf(PICB icbp,
|
||
|
PIPX_ADAPTER_BINDING_INFO BindingInfop);
|
||
|
|
||
|
VOID
|
||
|
UnbindIf(PICB icbp);
|
||
|
|
||
|
VOID
|
||
|
ProcessReceivedPacket(PWORK_ITEM wip);
|
||
|
|
||
|
VOID
|
||
|
PostEventMessage(ROUTING_PROTOCOL_EVENTS Event,
|
||
|
PMESSAGE Result);
|
||
|
|
||
|
BOOL
|
||
|
DeleteRipInterface(PICB icbp);
|
||
|
|
||
|
DWORD
|
||
|
SetRipInterface(ULONG InterfaceIndex,
|
||
|
PRIP_IF_INFO RipIfInfop,
|
||
|
PRIP_IF_FILTERS_I RipIfFiltersIp,
|
||
|
ULONG IpxIfAdminState);
|
||
|
|
||
|
DWORD
|
||
|
InitTimer(VOID);
|
||
|
|
||
|
VOID
|
||
|
StartWiTimer(PWORK_ITEM wip,
|
||
|
ULONG timeout);
|
||
|
|
||
|
ULONG
|
||
|
ProcessTimerQueue(VOID);
|
||
|
|
||
|
VOID
|
||
|
FlushTimerQueue(VOID);
|
||
|
|
||
|
|
||
|
DWORD
|
||
|
OpenRipSocket(VOID);
|
||
|
|
||
|
DWORD
|
||
|
CloseRipSocket(VOID);
|
||
|
|
||
|
VOID
|
||
|
StartReceiver(VOID);
|
||
|
|
||
|
VOID
|
||
|
RepostRcvPackets(VOID);
|
||
|
|
||
|
VOID
|
||
|
EnqueueRcvPacketToRepostQueue(PWORK_ITEM wip);
|
||
|
|
||
|
PWORK_ITEM
|
||
|
DequeueRcvPacketFromRepostQueue(PWORK_ITEM wip);
|
||
|
|
||
|
DWORD
|
||
|
ReceiveSubmit(PWORK_ITEM wip);
|
||
|
|
||
|
DWORD
|
||
|
SendSubmit(PWORK_ITEM wip);
|
||
|
|
||
|
VOID
|
||
|
CreateStartChangesBcastWi(VOID);
|
||
|
|
||
|
VOID
|
||
|
ProcessRTMChanges(VOID);
|
||
|
|
||
|
VOID
|
||
|
StartChangesBcast(PWORK_ITEM wip);
|
||
|
|
||
|
VOID
|
||
|
ChangeBcast(PWORK_ITEM wip);
|
||
|
|
||
|
VOID
|
||
|
ShutdownInterfaces(PWORK_ITEM wip);
|
||
|
|
||
|
VOID
|
||
|
CheckUpdateStatus(PWORK_ITEM wip);
|
||
|
|
||
|
DWORD
|
||
|
OpenRTM(VOID);
|
||
|
|
||
|
VOID
|
||
|
CloseRTM(VOID);
|
||
|
|
||
|
VOID
|
||
|
DeleteAllRipRoutes(ULONG InterfaceIndex);
|
||
|
|
||
|
VOID
|
||
|
SendGeneralRequest(PWORK_ITEM wip);
|
||
|
|
||
|
DWORD
|
||
|
ValidStateAndIfIndex(ULONG InterfaceIndex,
|
||
|
PICB *icbpp);
|
||
|
|
||
|
DWORD
|
||
|
CreateWorkItemsManager(VOID);
|
||
|
|
||
|
PWORK_ITEM
|
||
|
AllocateWorkItem(ULONG Type);
|
||
|
|
||
|
VOID
|
||
|
FreeWorkItem(PWORK_ITEM wip);
|
||
|
|
||
|
//VOID
|
||
|
//EnqueueWorkItemToWorker(PWORK_ITEM wip);
|
||
|
// Queue the work item for processing by the
|
||
|
// worker threads
|
||
|
VOID
|
||
|
ProcessWorkItem(PWORK_ITEM wip);
|
||
|
|
||
|
VOID
|
||
|
DestroyWorkItemsManager(VOID);
|
||
|
|
||
|
PWORK_ITEM
|
||
|
DequeueWorkItemForWorker(VOID);
|
||
|
|
||
|
ULONG
|
||
|
GetRipRoutesCount(ULONG InterfaceIndex);
|
||
|
|
||
|
VOID
|
||
|
IfPeriodicBcast(PWORK_ITEM wip);
|
||
|
|
||
|
VOID
|
||
|
IfCompleteGenResponse(PWORK_ITEM wip);
|
||
|
|
||
|
VOID
|
||
|
IfChangeBcast(PWORK_ITEM wip);
|
||
|
|
||
|
VOID
|
||
|
IfCheckUpdateStatus(PWORK_ITEM wip);
|
||
|
|
||
|
USHORT
|
||
|
MakeRipGenResponsePacket(PWORK_ITEM wip,
|
||
|
PUCHAR dstnodep,
|
||
|
PUCHAR dstsocket);
|
||
|
|
||
|
HANDLE
|
||
|
CreateBestRoutesEnumHandle(VOID);
|
||
|
|
||
|
DWORD
|
||
|
EnumGetNextRoute(HANDLE EnumHandle,
|
||
|
PIPX_ROUTE IpxRoutep);
|
||
|
|
||
|
VOID
|
||
|
CloseEnumHandle(HANDLE EnumHandle);
|
||
|
|
||
|
HANDLE
|
||
|
CreateRipRoutesEnumHandle(ULONG InterfaceIndex);
|
||
|
|
||
|
DWORD
|
||
|
DequeueRouteChangeFromRtm(PIPX_ROUTE IpxRoutep,
|
||
|
PBOOL skipitp,
|
||
|
PBOOL lastmessagep);
|
||
|
|
||
|
DWORD
|
||
|
DequeueRouteChangeFromRip(PIPX_ROUTE IpxRoutep);
|
||
|
|
||
|
|
||
|
VOID
|
||
|
SetRipIpxHeader(PUCHAR hdrp, // pointer to the packet header
|
||
|
PICB icbp,
|
||
|
PUCHAR dstnode,
|
||
|
PUCHAR dstsocket,
|
||
|
USHORT RipOpcode);
|
||
|
|
||
|
VOID
|
||
|
SetNetworkEntry(PUCHAR pktp, // ptr where to set the net entry
|
||
|
PIPX_ROUTE IpxRoutep,
|
||
|
USHORT LinkTickCount);
|
||
|
|
||
|
DWORD
|
||
|
SendRipGenRequest(PICB icbp);
|
||
|
|
||
|
DWORD
|
||
|
AddRipRoute(PIPX_ROUTE IpxRoutep,
|
||
|
ULONG TimeToLive);
|
||
|
|
||
|
DWORD
|
||
|
DeleteRipRoute(PIPX_ROUTE IpxRoutep);
|
||
|
|
||
|
BOOL
|
||
|
IsRoute(PUCHAR Network,
|
||
|
PIPX_ROUTE IpxRoutep);
|
||
|
|
||
|
DWORD
|
||
|
IfRefSendSubmit(PWORK_ITEM wip);
|
||
|
|
||
|
VOID
|
||
|
ReceiveComplete(PWORK_ITEM wip);
|
||
|
|
||
|
VOID
|
||
|
SendComplete(PWORK_ITEM wip);
|
||
|
|
||
|
VOID
|
||
|
ProcessRIPChanges(VOID);
|
||
|
|
||
|
BOOL
|
||
|
PassFilter(PICB icbp,
|
||
|
PUCHAR Network);
|
||
|
|
||
|
VOID
|
||
|
CreateFiltersDatabase(VOID);
|
||
|
|
||
|
VOID
|
||
|
DestroyFiltersDatabase(VOID);
|
||
|
|
||
|
BOOL
|
||
|
IsRouteAdvertisable(PICB icbp,
|
||
|
PIPX_ROUTE IpxRoutep);
|
||
|
|
||
|
VOID
|
||
|
IfPeriodicGenRequest(PWORK_ITEM wip);
|
||
|
|
||
|
VOID
|
||
|
GetIpxRipRegistryParameters(VOID);
|
||
|
|
||
|
BOOL
|
||
|
IsDuplicateBestRoute(PICB icbp,
|
||
|
PIPX_ROUTE IpxRoutep);
|
||
|
|
||
|
BOOL
|
||
|
PassRipSupplyFilter(PICB icbp,
|
||
|
PUCHAR Network);
|
||
|
|
||
|
BOOL
|
||
|
PassRipListenFilter(PICB icbp,
|
||
|
PUCHAR Network);
|
||
|
|
||
|
VOID
|
||
|
DestroyInterfaceCB(PICB icbp);
|
||
|
|
||
|
#endif
|