/*++ 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