248 lines
6.6 KiB
C
248 lines
6.6 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1995 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
routing\ip\rtrmgr\proto.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
IP Router Manager code prototypes
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
Gurdeep Singh Pall 6/8/95 Created
|
||
|
|
||
|
--*/
|
||
|
|
||
|
|
||
|
#ifndef __PROTO_H__
|
||
|
#define __PROTO_H__
|
||
|
|
||
|
//* INIT.C
|
||
|
//
|
||
|
DWORD InitRouter(PRTR_INFO_BLOCK_HEADER pGlobalHdr);
|
||
|
DWORD LoadRoutingProtocols (PRTR_INFO_BLOCK_HEADER pGlobalHdr);
|
||
|
DWORD InitializeMibHandler();
|
||
|
DWORD OpenIPDriver();
|
||
|
DWORD StartDriverAndOpenHandle(PCHAR pszName, PWCHAR pwszDriverName, PHANDLE phDevice);
|
||
|
DWORD OpenFilterDriver();
|
||
|
DWORD OpenMulticastDriver(VOID);
|
||
|
DWORD EnableNetbtBcastForwarding( DWORD dwEnable );
|
||
|
DWORD RestoreNetbtBcastForwardingMode();
|
||
|
DWORD ForceNetbtRegistryRead();
|
||
|
|
||
|
//
|
||
|
// CLOSE.C
|
||
|
//
|
||
|
|
||
|
VOID RouterManagerCleanup();
|
||
|
VOID UnloadRoutingProtocols() ;
|
||
|
VOID CloseIPDriver();
|
||
|
DWORD
|
||
|
StopDriverAndCloseHandle(
|
||
|
PCHAR pszServiceName,
|
||
|
HANDLE hDevice
|
||
|
);
|
||
|
VOID CloseMcastDriver();
|
||
|
DWORD CloseFilterDriver();
|
||
|
VOID MIBCleanup();
|
||
|
|
||
|
|
||
|
//* WORKER.C
|
||
|
//
|
||
|
DWORD WorkerThread (LPVOID pGlobalInfo) ;
|
||
|
DWORD ProcessSaveGlobalConfigInfo() ;
|
||
|
DWORD ProcessSaveInterfaceConfigInfo() ;
|
||
|
DWORD ProcessUpdateComplete (PPROTO_CB proutprot, UPDATE_COMPLETE_MESSAGE *updateresult) ;
|
||
|
DWORD ProcessRouterStopped() ;
|
||
|
VOID WaitForAPIsToExitBeforeStopping() ;
|
||
|
DWORD QueueUpdateEvent (DWORD interfaceindex, DWORD result) ;
|
||
|
|
||
|
|
||
|
// PROTODLL.C
|
||
|
//
|
||
|
DWORD HandleRoutingProtocolNotification () ;
|
||
|
VOID NotifyRoutingProtocolsToStop() ;
|
||
|
BOOL AllRoutingProtocolsStopped() ;
|
||
|
|
||
|
DWORD
|
||
|
LoadProtocol(
|
||
|
IN MPR_PROTOCOL_0 *pmpProtocolInfo,
|
||
|
IN PPROTO_CB pProtocolCb,
|
||
|
IN PVOID pvInfo,
|
||
|
IN ULONG ulGlobalInfoVersion,
|
||
|
IN ULONG ulGlobalInfoSize,
|
||
|
IN ULONG ulGlobalInfoCount
|
||
|
);
|
||
|
|
||
|
VOID RemoveProtocolFromAllInterfaces(PPROTO_CB pProtocolCB);
|
||
|
DWORD StopRoutingProtocol(PPROTO_CB pProtocolCB);
|
||
|
|
||
|
//* RTMOPS.C
|
||
|
//
|
||
|
|
||
|
DWORD
|
||
|
RtmEventCallback (
|
||
|
IN RTM_ENTITY_HANDLE hRtmHandle,
|
||
|
IN RTM_EVENT_TYPE retEvent,
|
||
|
IN PVOID pContext1,
|
||
|
IN PVOID pContext2
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
WINAPI
|
||
|
ProcessDefaultRouteChanges(
|
||
|
IN HANDLE hNotifyHandle
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
WINAPI
|
||
|
AddNetmgmtDefaultRoutesToForwarder(
|
||
|
PRTM_DEST_INFO pDestInfo
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
WINAPI
|
||
|
ProcessChanges (
|
||
|
IN HANDLE hNotifyHandle
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
AddRtmRoute (
|
||
|
IN HANDLE hRtmHandle,
|
||
|
IN PINTERFACE_ROUTE_INFO pIpForw,
|
||
|
IN DWORD dwFlags,
|
||
|
IN DWORD dwNextHopMask,
|
||
|
IN DWORD dwTimeToLive,
|
||
|
OUT HANDLE *phRtmRoute
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
DeleteRtmRoute (
|
||
|
IN HANDLE hRtmHandle,
|
||
|
IN PINTERFACE_ROUTE_INFO pIpForw
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
ConvertRouteInfoToRtm (
|
||
|
IN HANDLE hRtmHandle,
|
||
|
IN PINTERFACE_ROUTE_INFO pIpForw,
|
||
|
IN HANDLE hNextHopHandle,
|
||
|
IN DWORD dwRouteFlags,
|
||
|
OUT PRTM_NET_ADDRESS pDestAddr,
|
||
|
OUT PRTM_ROUTE_INFO pRouteInfo
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
ConvertRtmToRouteInfo (
|
||
|
IN DWORD ownerProtocol,
|
||
|
IN PRTM_NET_ADDRESS pDestAddr,
|
||
|
IN PRTM_ROUTE_INFO pRoute,
|
||
|
IN PRTM_NEXTHOP_INFO pNextHop,
|
||
|
OUT PINTERFACE_ROUTE_INFO pIpForw
|
||
|
);
|
||
|
|
||
|
PINTERFACE_ROUTE_INFO
|
||
|
ConvertMibRouteToRouteInfo(
|
||
|
IN PMIB_IPFORWARDROW pMibRow
|
||
|
);
|
||
|
|
||
|
//#define ConvertRouteInfoToMibRoute(x) ((PMIB_IPFORWARDROW)(x))
|
||
|
PMIB_IPFORWARDROW
|
||
|
ConvertRouteInfoToMibRoute(
|
||
|
IN PINTERFACE_ROUTE_INFO pRouteInfo
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
ConvertRouteNotifyOutputToRouteInfo(
|
||
|
IN PIPRouteNotifyOutput pirno,
|
||
|
OUT PINTERFACE_ROUTE_INFO pRtInfo
|
||
|
);
|
||
|
|
||
|
|
||
|
DWORD
|
||
|
BlockConvertRoutesToStatic (
|
||
|
IN HANDLE hRtmHandle,
|
||
|
IN DWORD dwIfIndex,
|
||
|
IN DWORD dwProtocolId
|
||
|
);
|
||
|
|
||
|
|
||
|
DWORD
|
||
|
DeleteRtmRoutes (
|
||
|
IN HANDLE ClientHandle,
|
||
|
IN DWORD dwIfIndex,
|
||
|
IN BOOL fDeleteAll
|
||
|
);
|
||
|
|
||
|
#define DeleteRtmRoutesOnInterface(h, i) DeleteRtmRoutes(h, i, FALSE)
|
||
|
|
||
|
|
||
|
DWORD
|
||
|
DeleteRtmNexthops (
|
||
|
IN HANDLE hRtmHandle,
|
||
|
IN DWORD dwIfIndex,
|
||
|
IN BOOL fDeleteAll
|
||
|
);
|
||
|
|
||
|
#define DeleteRtmNexthopsOnInterface(h, i) DeleteRtmNexthops(h, i, FALSE)
|
||
|
|
||
|
//* RTMIF.C
|
||
|
//
|
||
|
VOID IPRouteChange (DWORD Flags, PVOID CurBestRoute, PVOID PrevBestRoute) ;
|
||
|
INT IPHash (PVOID Net) ;
|
||
|
BOOL IPCompareFamilySpecificData (PVOID Route1, PVOID Route2) ;
|
||
|
INT IPCompareNextHopAddress (PVOID Route1, PVOID Route2) ;
|
||
|
INT IPCompareNetworks (PVOID Net1, PVOID Net2) ;
|
||
|
INT IPCompareMetrics(PVOID Route1, PVOID Route2);
|
||
|
DWORD IPValidateRoute(PVOID Route);
|
||
|
|
||
|
DWORD
|
||
|
ChangeRouteWithForwarder(
|
||
|
IN PRTM_NET_ADDRESS pDestAddr,
|
||
|
IN PRTM_ROUTE_INFO pRoute,
|
||
|
IN BOOL bAddRoute,
|
||
|
IN BOOL bDelOld
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
WINAPI
|
||
|
ValidateRouteForProtocol(
|
||
|
IN DWORD dwProtoId,
|
||
|
IN PVOID pRouteInfo,
|
||
|
IN PVOID pDestAddr OPTIONAL
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
WINAPI
|
||
|
ValidateRouteForProtocolEx(
|
||
|
IN DWORD dwProtoId,
|
||
|
IN PVOID pRouteInfo,
|
||
|
IN PVOID pDestAddr OPTIONAL
|
||
|
);
|
||
|
|
||
|
// Load.c Functions that load the caches from the stack or elsewhere
|
||
|
|
||
|
DWORD LoadIpAddrTable(VOID);
|
||
|
DWORD LoadIpForwardTable(VOID);
|
||
|
DWORD LoadIpNetTable(VOID);
|
||
|
DWORD LoadTcpTable(VOID);
|
||
|
DWORD LoadUdpTable(VOID);
|
||
|
DWORD LoadArpEntTable(VOID);
|
||
|
|
||
|
|
||
|
LONG UdpCmp(DWORD dwAddr1, DWORD dwPort1, DWORD dwAddr2, DWORD dwPort2);
|
||
|
LONG TcpCmp(DWORD dwLocalAddr1, DWORD dwLocalPort1, DWORD dwRemAddr1, DWORD dwRemPort1,
|
||
|
DWORD dwLocalAddr2, DWORD dwLocalPort2, DWORD dwRemAddr2, DWORD dwRemPort2);
|
||
|
LONG IpForwardCmp(DWORD dwIpDest1, DWORD dwProto1, DWORD dwPolicy1,
|
||
|
DWORD dwIpNextHop1, DWORD dwIpDest2, DWORD dwProto2,
|
||
|
DWORD dwPolicy2, DWORD dwIpNextHop2);
|
||
|
LONG IpNetCmp(DWORD dwIfIndex1, DWORD dwAddr1, DWORD dwIfIndex2, DWORD dwAddr2);
|
||
|
|
||
|
PSZ CacheToA(DWORD dwCache);
|
||
|
DWORD UpdateCache(DWORD dwCache,BOOL *fUpdate);
|
||
|
|
||
|
#endif
|