/*++ Copyright (c) 1995 Microsoft Corporation Module Name: rtrprot.h Abstract: This module contains the internal prototypes Author: Stefan Solomon 03/03/1995 Revision History: --*/ #ifndef _RTRPROT_ #define _RTRPROT_ // // *** Internal Prototypes *** // DWORD GetIpxRouterParameters(VOID); VOID InitIfDB(VOID); VOID InitAdptDB(VOID); DWORD FwInitialize(VOID); DWORD StartAdapterManager(VOID); VOID StopAdapterManager(VOID); DWORD SetGlobalInfo(LPVOID); DWORD AddInterface( IN LPWSTR InterfaceNamep, IN LPVOID InterfaceInfop, IN INTERFACE_TYPE InterfaceType, IN HANDLE hDDMInterface, IN OUT HANDLE *phInterface); DWORD DeleteInterface(HANDLE InterfaceIndex); DWORD GetInterfaceInfo( IN HANDLE InterfaceIndex, OUT LPVOID InterfaceInfo, IN OUT DWORD *InterfaceInfoSize); DWORD SetInterfaceInfo( IN HANDLE InterfaceIndex, IN LPVOID InterfaceInfop); DWORD APIENTRY InterfaceConnected ( IN HANDLE hInterface, IN PVOID pFilter, IN PVOID pPppProjectionResult ); VOID InterfaceDisconnected( IN HANDLE Interface); DWORD InterfaceNotReachable( IN HANDLE Interface, IN UNREACHABILITY_REASON Reason); DWORD InterfaceReachable( IN HANDLE Interface); VOID UpdateCompleted(PUPDATE_COMPLETE_MESSAGE ucmsgp); DWORD SetGlobalInfo( IN LPVOID pGlobalInfo ); VOID AdapterNotification(VOID); VOID ForwarderNotification(VOID); LPVOID GetInfoEntry(PIPX_INFO_BLOCK_HEADER InterfaceInfop, ULONG InfoEntryType); DWORD CreateStaticRoute(PICB icbp, PIPX_STATIC_ROUTE_INFO StaticRouteInfop); DWORD DeleteStaticRoute(ULONG IfIndex, PIPX_STATIC_ROUTE_INFO StaticRouteInfop); PICB GetInterfaceByName(LPWSTR InterfaceNamep); PICB GetInterfaceByIndex(ULONG InterfaceIndex); PIPX_TOC_ENTRY GetTocEntry(PIPX_INFO_BLOCK_HEADER HeaderInfop, ULONG InfoType); VOID AddIfToDB(PICB icbp); VOID RemoveIfFromDB(PICB icbp); PACB GetAdapterByNameAndPktType (LPWSTR AdapterName, ULONG PacketType); VOID BindInterfaceToAdapter(PICB icbp, PACB acbp); VOID UnbindInterfaceFromAdapter(PICB icbp); VOID DeleteAllStaticRoutes(ULONG InterfaceIndex); DWORD UpdateStaticIfEntries( PICB icbp, HANDLE EnumHandle, // handle for the get next enumeration ULONG StaticEntrySize, ULONG NewStaticEntriesCount, // number of new static entries LPVOID NewStaticEntry, // start of the new entries array ULONG (*GetNextStaticEntry)(HANDLE EnumHandle, LPVOID entry), ULONG (*DeleteStaticEntry)(ULONG IfIndex, LPVOID entry), ULONG (*CreateStaticEntry)(PICB icbp, LPVOID entry)); HANDLE CreateStaticRoutesEnumHandle(ULONG InterfaceIndex); DWORD GetNextStaticRoute(HANDLE EnumHandle, PIPX_STATIC_ROUTE_INFO StaticRtInfop); VOID CloseStaticRoutesEnumHandle(HANDLE EnumHandle); HANDLE CreateStaticServicesEnumHandle(ULONG InterfaceIndex); DWORD GetNextStaticService(HANDLE EnumHandle, PIPX_STATIC_SERVICE_INFO StaticSvInfop); DWORD CloseStaticServicesEnumHandle(HANDLE EnumHandle); DWORD DeleteAllStaticServices(ULONG InterfaceIndex); PACB GetAdapterByIndex(ULONG AdapterIndex); PICB GetInterfaceByAdapterName(LPWSTR AdapterName); DWORD CreateLocalRoute(PICB icbp); DWORD DeleteLocalRoute(PICB icbp); VOID GetInterfaceAnsiName(PUCHAR AnsiInterfaceNameBuffer, PWSTR UnicodeInterfaceNameBuffer); VOID InitIfDB(VOID); VOID AddToAdapterHt(PACB acbp); VOID RemoveFromAdapterHt(PACB acbp); BOOL RtCreateTimer(IN PHANDLE TimerHandlep); BOOL RtDestroyTimer(IN HANDLE TimerHandle); BOOL RtSetTimer( IN HANDLE TimerHandle, IN ULONG MillisecondsToExpire, IN PTIMER_APC_ROUTINE TimerRoutine, IN PVOID Context ); BOOL RtCancelTimer( IN HANDLE TimerHandle ); DWORD StartRoutingProtocols(HANDLE RoutesUpdateEvent, HANDLE ServicesUpdateEvent); VOID StopRoutingProtocols(VOID); DWORD CreateRoutingProtocolsInterfaces(PIPX_INFO_BLOCK_HEADER InterfaceInfop, PICB icbp); DWORD DeleteRoutingProtocolsInterfaces(ULONG InterfaceIndex); ULONG SizeOfRoutingProtocolsIfsInfo(ULONG InterfaceIndex); ULONG RoutingProtocolsTocCount(VOID); DWORD CreateRoutingProtocolsTocAndInfoEntries(PIPX_INFO_BLOCK_HEADER ibhp, ULONG InterfaceIndex, PIPX_TOC_ENTRY *current_tocepp, PULONG current_NextInfoOffsetp); DWORD SetRoutingProtocolsInterfaces(PIPX_INFO_BLOCK_HEADER InterfaceInfop, ULONG InterfaceIndex); DWORD BindRoutingProtocolsIfsToAdapter(ULONG InterfaceIndex, PIPX_ADAPTER_BINDING_INFO abip); DWORD UnbindRoutingProtocolsIfsFromAdapter(ULONG InterfaceIndex); DWORD CreateStaticService(PICB icbp, PIPX_STATIC_SERVICE_INFO ServiceEntry); DWORD DeleteStaticService(ULONG InterfaceIndex, PIPX_STATIC_SERVICE_INFO ServiceEntry); DWORD GetFirstService(IN DWORD OrderingMethod, IN DWORD ExclusionFlags, IN OUT PIPX_SERVICE Service); DWORD GetNextService(IN DWORD OrderingMethod, IN DWORD ExclusionFlags, IN OUT PIPX_SERVICE Service); BOOL IsService(USHORT Type, PUCHAR Name, PIPX_SERVICE Service); DWORD GetRoute(ULONG RoutingTable, PIPX_ROUTE IpxRoutep); DWORD GetFirstRoute(ULONG RoutingTable, PIPX_ROUTE IpxRoutep); DWORD GetNextRoute(ULONG RoutingTable, PIPX_ROUTE IpxRoutep); BOOL IsRoute(PUCHAR Network); DWORD InitWanNetConfigDbase(VOID); ULONG GetNextInterfaceIndex(VOID); DWORD CreateGlobalRoute(PUCHAR Network); DWORD DeleteGlobalRoute(PUCHAR Network); DWORD RtProtRequestRoutesUpdate(ULONG InterfaceIndex); DWORD RtProtRequestServicesUpdate(ULONG InterfaceIndex); DWORD RtProtSendRoutesUpdate(ULONG InterfaceIndex); DWORD RtProtSendServicesUpdate(ULONG InterfaceIndex); VOID RtProtCancelRoutesUpdate(ULONG InterfaceIndex); VOID RtProtCancelServicesUpdate(ULONG InterfaceIndex); VOID CancelUpdateRequest(HANDLE hInterface); DWORD GetDIMUpdateResult(HANDLE InterfaceIndex, LPDWORD UpdateResultp); VOID InitUpdateCbs(PICB icbp); VOID AdminEnable(PICB icbp); VOID AdminDisable(PICB icbp); VOID DestroyAllAdapters(VOID); VOID DestroyAllInterfaces(VOID); DWORD GetServiceCount(VOID); DWORD MibCreate(ULONG ProtocolId, ULONG InputDataSize, PVOID InputData); DWORD MibDelete(ULONG ProtocolId, ULONG InputDataSize, PVOID InputData); DWORD MibSet(ULONG ProtocolId, ULONG InputDataSize, PVOID InputData); DWORD MibGet(ULONG ProtocolId, ULONG InputDataSize, PVOID InputData, PULONG OutputDataSize, PVOID OutputData); DWORD MibGetFirst(ULONG ProtocolId, ULONG InputDataSize, PVOID InputData, PULONG OutputDataSize, PVOID OutputData); DWORD MibGetNext(ULONG ProtocolId, ULONG InputDataSize, PVOID InputData, PULONG OutputDataSize, PVOID OutputData); DWORD RequestUpdate(IN HANDLE InterfaceIndex, IN HANDLE hEvent); DWORD GetStaticServicesCount(ULONG InterfaceIndex); DWORD GetStaticRoutesCount(ULONG InterfaceIndex); VOID DestroyRoutingProtocolCB(PRPCB rpcbp); PRPCB GetRoutingProtocolCB(DWORD ProtocolId); VOID ConvertAllProtocolRoutesToStatic(ULONG InterfaceIndex, ULONG RoutingProtocolId); VOID ConvertAllServicesToStatic(ULONG InterfaceIndex); DWORD SetRoutingProtocolsGlobalInfo(PIPX_INFO_BLOCK_HEADER GlobalInfop); DWORD CreateRouteTable(VOID); DWORD EnumerateFirstInterfaceIndex(PULONG InterfaceIndexp); DWORD EnumerateNextInterfaceIndex(PULONG InterfaceIndexp); DWORD RoutingProtocolsEnableIpxInterface(ULONG InterfaceIndex); DWORD RoutingProtocolsDisableIpxInterface(ULONG InterfaceIndex); DWORD FwEnableIpxInterface(ULONG InterfaceIndex); DWORD FwDisableIpxInterface(ULONG InterfaceIndex); DWORD RoutingProtocolConnectionRequest(ULONG ProtocolId, ULONG InterfaceIndex); VOID DisableStaticRoutes(ULONG InterfaceIndex); VOID DisableStaticRoute(ULONG InterfaceIndex, PUCHAR Network); VOID EnableStaticRoutes(ULONG InterfaceIndex); VOID ExternalEnableInterface(ULONG InterfaceIndex); VOID ExternalDisableInterface(ULONG InterfaceIndex); NET_INTERFACE_TYPE MapIpxToNetInterfaceType(PICB icbp); VOID StartTracing(VOID); VOID Trace(ULONG ComponentID, char *Format, ...); VOID StopTracing(VOID); DWORD RmCreateGlobalRoute(PUCHAR Network); DWORD RmAddLocalWkstaDialoutInterface( IN LPWSTR InterfaceNamep, IN LPVOID InterfaceInfop, IN OUT PULONG InterfaceIndexp); DWORD RmDeleteLocalWkstaDialoutInterface(ULONG InterfaceIndex); DWORD RmGetIpxwanInterfaceConfig(ULONG InterfaceIndex, PULONG IpxwanConfigRequired); BOOL RmIsRoute(PUCHAR Network); DWORD RmGetInternalNetNumber(PUCHAR Network); DWORD RmUpdateIpxcpConfig (PIPXCP_ROUTER_CONFIG_PARAMS pParams); DWORD I_SetFilters(ULONG InterfaceIndex, ULONG FilterMode, // inbound or outbound LPVOID FilterInfop); DWORD I_GetFilters(ULONG InterfaceIndex, ULONG FilterMode, LPVOID FilterInfop, PULONG FilterInfoSize); DWORD DeleteRouteTable(VOID); #endif