diff options
Diffstat (limited to '')
-rw-r--r-- | private/ntos/tdi/tcpip/ip/icmp.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/private/ntos/tdi/tcpip/ip/icmp.h b/private/ntos/tdi/tcpip/ip/icmp.h new file mode 100644 index 000000000..f45dac536 --- /dev/null +++ b/private/ntos/tdi/tcpip/ip/icmp.h @@ -0,0 +1,70 @@ +/********************************************************************/ +/** Microsoft LAN Manager **/ +/** Copyright(c) Microsoft Corp., 1990-1992 **/ +/********************************************************************/ +/* :ts=4 */ + +//*** icmp.h - IP ICMP header. +// +// This module contains private ICMP definitions. +// + +#define PROT_ICMP 1 + +#define ICMP_ECHO_RESP 0 +#define ICMP_ECHO 8 +#define ICMP_TIMESTAMP 13 +#define ICMP_TIMESTAMP_RESP 14 + +#define MIN_ERRDATA_LENGTH 8 // Minimum amount of data we need. + +// Structure of an ICMP header. + +struct ICMPHeader { + uchar ich_type; // Type of ICMP packet. + uchar ich_code; // Subcode of type. + ushort ich_xsum; // Checksum of packet. + ulong ich_param; // Type-specific parameter field. +}; /* ICMPHeader */ + +struct ICMPRouterAdHeader { + uchar irah_numaddrs; // Number of addresses + uchar irah_addrentrysize; // Address Entry Size + ushort irah_lifetime; // Lifetime +}; /* ICMPRouterAdHeader */ + +struct ICMPRouterAdAddrEntry { + IPAddr irae_addr; // Router Address + long irae_preference; // Preference Level +}; /* ICMPRouterAdAddrEntry */ + +/*NOINC*/ +typedef struct ICMPHeader ICMPHeader; +typedef struct ICMPRouterAdHeader ICMPRouterAdHeader; +typedef struct ICMPRouterAdAddrEntry ICMPRouterAdAddrEntry; + +typedef void (*EchoRtn)(void *, IP_STATUS, void *, uint, IPOptInfo *); +/*INC*/ + +struct EchoControl { + struct EchoControl *ec_next; // Next control structure in list. + ulong ec_to; // Timeout + void *ec_rtn; // Pointer to routine to call when completing request. + ushort ec_seq; // Seq. # of this ping request. + uchar ec_active; // Set when packet has been sent + uchar ec_pad; // Pad. + ulong ec_starttime; // time request was issued + void *ec_replybuf; // buffer to store replies + ulong ec_replybuflen; // size of reply buffer +}; /* EchoControl */ + +/*NOINC*/ +typedef struct EchoControl EchoControl; +/*INC*/ + +extern ICMPHeader *GetICMPBuffer(uint Size, PNDIS_BUFFER *Buffer); +extern void FreeICMPBuffer(PNDIS_BUFFER Buffer); +extern void ICMPSendComplete(void *DataPtr, PNDIS_BUFFER BufferChain); + + + |