windows-nt/Source/XPSP1/NT/net/tcpip/driver/ipv4/ipinit.h
2020-09-26 16:20:57 +08:00

131 lines
5.6 KiB
C

/********************************************************************/
/** Microsoft LAN Manager **/
/** Copyright(c) Microsoft Corp., 1990-2000 **/
/********************************************************************/
/* :ts=4 */
//** IPINIT.H - IP initialization definitions.
//
// This file contains all of the definitions for IP that are
// init. time specific.
#ifndef _IPINIT_H_
#define _IPINIT_H_ 1
#define IP_INIT_FAILURE 0 // If we fail.
#define IP_INIT_SUCCESS 1
#define CFG_REQUIRED 1
#define CFG_OPTIONAL 0
#define NET_TYPE_LAN 0 // The local net interface is a LAN.
#define NET_TYPE_WAN 1 // Point to point or other non-LAN network.
#define DEFAULT_TTL 128
#define DEFAULT_TOS 0
#define MINIMUM_MAX_NORM_LOOKUP_MEM 100000 // Bytes => A small value
#define MINIMUM_MAX_FAST_LOOKUP_MEM 100000 // Bytes => A small value
// Small System [ 19 MB- Srv ]
#define DEFAULT_MAX_NORM_LOOKUP_MEM_SMALL 150000 // Bytes => ~1000 Routes
#define DEFAULT_MAX_FAST_LOOKUP_MEM_SMALL 0 // FTrie Disabled
#define DEFAULT_EXPN_LEVELS_SMALL 0 // FTrie Disabled
// Medium System [ 19 to 64 MB Srv ]
#define DEFAULT_MAX_NORM_LOOKUP_MEM_MEDIUM 1500000 // Bytes => ~10000 Routes
#define DEFAULT_MAX_FAST_LOOKUP_MEM_MEDIUM 2500000 // Bytes => A 2.5 MB limit
#define DEFAULT_EXPN_LEVELS_MEDIUM 0x80808080 // Levels =>{8, 16, 24, 32}
// Large System [ 64 MB+ Srv ]
#define DEFAULT_MAX_NORM_LOOKUP_MEM_LARGE 5000000 // Bytes => ~40000 Routes
#define DEFAULT_MAX_FAST_LOOKUP_MEM_LARGE 5000000 // Bytes => A 5.0 MB limit
#define DEFAULT_EXPN_LEVELS_LARGE 0x80808080 // Levels =>{8, 16, 24, 32}
#define MAX_DEFAULT_GWS 5 // Maximum number of default gateways per net.
#define MAX_NAME_SIZE 32 // Maximum length of an adapter name.
#define DEFAULT_FW_PACKETS 50 // Default number of packets for forwarding.
#define DEFAULT_FW_BUFSIZE 74240 // Enough for 50 1480-byte Ethernet packets,
// rounded up to a multiple of 256.
#define DEFAULT_MAX_FW_PACKETS 0xffffffff
//#define DEFAULT_MAX_FW_BUFSIZE 0xffffffff
#define DEFAULT_MAX_FW_BUFSIZE 2097152 // put the limit as 2 Mb
#define DEFAULT_MAX_PENDING 5000
#define TR_RII_ALL 0x80
#define TR_RII_SINGLE 0xC0
#define DEFAULT_ARP_CACHE_LIFE (2L*60L) // 2 minutes
#define DEFAULT_ARP_MIN_VALID_CACHE_LIFE (10L*60L) // 10 miniutes
#define DEFAULT_ARP_RETRY_COUNT 1
/*NOINC*/
// Per-net config structures
typedef struct IFGeneralConfig {
uint igc_zerobcast; // Type of broadcast to be used on this net.
uint igc_mtu; // Max MSS for this net.
uint igc_maxpending; // Max FW pending on this IF.
uint igc_numgws; // Number of default gateways for this
// interface.
IPAddr igc_gw[MAX_DEFAULT_GWS]; // Array of IPaddresses for gateways
uint igc_gwmetric[MAX_DEFAULT_GWS];
uint igc_metric; // metric for NTE routes
uint igc_rtrdiscovery; // Router discovery enabled
IPAddr igc_rtrdiscaddr; // Multicast or BCast?
uint igc_TcpWindowSize; //IF specific window size
uint igc_TcpInitialRTT; // initial rtt in msecs
uchar igc_TcpDelAckTicks; // delayed ack timer in ticks
uchar igc_TcpAckFrequency;// sends before an ack is sent
uchar igc_iftype; // type of interface: allow unicast/mcast/both
uchar igc_disablemediasense; // allow mediasense on interface?
} IFGeneralConfig;
typedef struct IFAddrList {
IPAddr ial_addr; // Address for this interface.
IPMask ial_mask; // Mask to go with this.
} IFAddrList;
/*INC*/
//* Structure of configuration information. A pointer to this information
// is returned from a system-specific config. information routine.
typedef struct IPConfigInfo {
uint ici_gateway; // 1 if we are a gateway, 0 otherwise
uint ici_fwbcast; // 1 if bcasts should be forwarded. Else 0.
uint ici_fwbufsize; // Total size of FW buf size.
uint ici_fwpackets; // Total number of FW packets to have.
uint ici_maxfwbufsize; // Maximum size of FW buffer.
uint ici_maxfwpackets; // Maximum number of FW packets.
uint ici_deadgwdetect; // True if we're doing dead GW detection.
uint ici_pmtudiscovery; // True if we're doing Path MTU discovery.
uint ici_igmplevel; // Level of IGMP we're doing.
uint ici_ttl; // Default TTL.
uint ici_tos; // Default TOS;
uint ici_addrmaskreply; // 0 by default
uint ici_fastroutelookup; // True if we have 'fast route lookup' enabled
uint ici_fastlookuplevels; // Bitmap of levels in the fast lookup scheme
uint ici_maxnormlookupmemory;// Max memory used for the norm lookup scheme
uint ici_maxfastlookupmemory;// Max memory used for the fast lookup scheme
uint ici_TrFunctionalMcst; //Defaults to true, RFC 1469
} IPConfigInfo;
extern uchar TrRii;
typedef struct SetAddrControl {
void *sac_rtn; // Pointer to routine to call when completing request.
void *interface;
ushort nte_context;
BOOLEAN bugcheck_on_duplicate;
BOOLEAN StaticAddr;
} SetAddrControl;
/*NOINC*/
typedef void (*SetAddrRtn)(void *, IP_STATUS);
/*INC*/
#endif // _IPINIT_H_