summaryrefslogtreecommitdiffstats
path: root/private/ntos/tdi/tcpip/ip/iproute.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--private/ntos/tdi/tcpip/ip/iproute.h107
1 files changed, 107 insertions, 0 deletions
diff --git a/private/ntos/tdi/tcpip/ip/iproute.h b/private/ntos/tdi/tcpip/ip/iproute.h
new file mode 100644
index 000000000..e06af7100
--- /dev/null
+++ b/private/ntos/tdi/tcpip/ip/iproute.h
@@ -0,0 +1,107 @@
+/********************************************************************/
+/** 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.
+