mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
4.1 KiB
107 lines
4.1 KiB
/********************************************************************/
|
|
/** Microsoft LAN Manager **/
|
|
/** Copyright(c) Microsoft Corp., 1990-1992 **/
|
|
/********************************************************************/
|
|
/* :ts=4 */
|
|
|
|
//** IPROUTE.H - IP routing definitions.
|
|
//
|
|
// This file contains all of the definitions for routing code that are
|
|
// visible to modules outside iproute.c
|
|
|
|
|
|
extern struct Interface *LookupNextHop(IPAddr Dest, IPAddr Src,
|
|
IPAddr *FirstHop, uint *MTU);
|
|
extern struct Interface *LookupNextHopWithBuffer(IPAddr Dest, IPAddr Src,
|
|
IPAddr *FirstHop, uint *MTU, uchar Protocol,
|
|
uchar *Buffer, uint Length);
|
|
|
|
extern void FlushATCache(IPAddr Address);
|
|
extern uchar GetAddrType(IPAddr Address);
|
|
extern uint InvalidSourceAddress(IPAddr Address);
|
|
extern uchar GetLocalNTE(IPAddr Address, NetTableEntry **NTE);
|
|
extern uchar IsBCastOnNTE(IPAddr Address, NetTableEntry *NTE);
|
|
extern void SendFWPacket(PNDIS_PACKET Packet, NDIS_STATUS Status,
|
|
uint DataLength);
|
|
extern void IPForward(NetTableEntry *SrcNTE,
|
|
IPHeader UNALIGNED *Header, uint HeaderLength,
|
|
void *Data, uint BufferLength,
|
|
NDIS_HANDLE LContext1, uint LContext2,
|
|
uchar DestType);
|
|
|
|
extern uint AttachRCEToRTE(RouteCacheEntry *RCE, uchar Protocol,
|
|
uchar *Buffer, uint Length);
|
|
extern void Redirect(NetTableEntry *NTE, IPAddr RDSrc,
|
|
IPAddr Target, IPAddr Src, IPAddr FirstHop);
|
|
extern IP_STATUS AddRoute(IPAddr Destination, IPMask Mask,
|
|
IPAddr FirstHop, Interface *OutIF, uint MTU,
|
|
uint Metric, uint Proto, uint AType,
|
|
void *Context);
|
|
extern IP_STATUS DeleteRoute(IPAddr Destination, IPMask Mask,
|
|
IPAddr FirstHop, Interface *OutIF);
|
|
extern void *GetRouteContext(IPAddr Destination, IPAddr Source);
|
|
|
|
extern NetTableEntry *BestNTEForIF(IPAddr Dest, Interface *IF);
|
|
extern void RTWalk(uint (*CallFunc)(struct RouteTableEntry *,
|
|
void *, void *), void *Context, void *Context1);
|
|
|
|
extern uint DeleteRTEOnIF(struct RouteTableEntry *RTE,
|
|
void *Context, void *Context1);
|
|
extern uint InvalidateRCEOnIF(struct RouteTableEntry *RTE,
|
|
void *Context, void *Context1);
|
|
extern uint SetMTUOnIF(struct RouteTableEntry *RTE, void *Context,
|
|
void *Context1);
|
|
extern uint SetMTUToAddr(struct RouteTableEntry *RTE, void *Context,
|
|
void *Context1);
|
|
extern uint AddNTERoutes(struct NetTableEntry *NTE);
|
|
extern void IPCheckRoute(IPAddr Dest, IPAddr Src);
|
|
extern void RouteFragNeeded(IPHeader UNALIGNED *IPH, ushort NewMTU);
|
|
extern IP_STATUS IPGetPInfo(IPAddr Dest, IPAddr Src, uint *NewMTU,
|
|
uint *MaxPathSpeed);
|
|
extern int InitRouting(struct IPConfigInfo *ci);
|
|
extern uint InitNTERouting(NetTableEntry *NTE, uint NumGWs,
|
|
IPAddr *GW);
|
|
extern uint InitGateway(struct IPConfigInfo *ci);
|
|
extern IPAddr OpenRCE(IPAddr Address, IPAddr Src, RouteCacheEntry **RCE,
|
|
uchar *Type, ushort *MSS, IPOptInfo *OptInfo);
|
|
extern void CloseRCE(RouteCacheEntry *RCE);
|
|
extern uint IsRouteICMP(IPAddr Dest, IPMask Mask, IPAddr FirstHop,
|
|
Interface *OutIF);
|
|
|
|
EXTERNAL_LOCK(RouteTableLock)
|
|
|
|
extern uint DeadGWDetect;
|
|
extern uint PMTUDiscovery;
|
|
extern uchar ForwardPackets;
|
|
extern uchar RouterConfigured;
|
|
// Pointer to callout routine for dial on demand.
|
|
extern IPMapRouteToInterfacePtr DODCallout;
|
|
|
|
// Pointer to packet filter handler.
|
|
extern IPPacketFilterPtr ForwardFilterPtr;
|
|
|
|
#define IPADDR_LOCAL 0xffffffff // Indicates that IP address is
|
|
// directly connected.
|
|
|
|
#define IP_LOCAL_BCST 0xffffffff
|
|
#define IP_ZERO_BCST 0
|
|
|
|
#define HOST_MASK 0xffffffff
|
|
#define DEFAULT_MASK 0
|
|
|
|
|
|
#ifdef NT
|
|
#define LOOPBACK_MSS (1500 - sizeof(IPHeader))
|
|
#else // NT
|
|
#define LOOPBACK_MSS 256
|
|
#endif // NT
|
|
|
|
|
|
#define LOOPBACK_ADDR 0x0100007f
|
|
#define IP_LOOPBACK(x) (((x) & CLASSA_MASK) == 0x7f)
|
|
|
|
#define ATYPE_PERM 0 // A permanent route.
|
|
#define ATYPE_OVERRIDE 1 // Semi-permanent - can be
|
|
// overriden.
|
|
#define ATYPE_TEMP 2 // A temporary route.
|
|
|