windows-nt/Source/XPSP1/NT/net/rras/ip/rtrmgr/proto.h
2020-09-26 16:20:57 +08:00

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