NT4/private/inc/tcpinfo.h
2020-09-30 17:12:29 +02:00

187 lines
6.0 KiB
C

/********************************************************************/
/** Microsoft LAN Manager **/
/** Copyright(c) Microsoft Corp., 1990-1993 **/
/********************************************************************/
/* :ts=4 */
//** TCPINFO.H - TDI Query/SetInfo and Action definitons.
//
// This file contains definitions for information returned from TCP/UDP.
//
#ifndef TCP_INFO_INCLUDED
#define TCP_INFO_INCLUDED
#ifndef CTE_TYPEDEFS_DEFINED
#define CTE_TYPEDEFS_DEFINED
typedef unsigned long ulong;
typedef unsigned short ushort;
typedef unsigned char uchar;
typedef unsigned int uint;
#endif // CTE_TYPEDEFS_DEFINED
typedef struct TCPStats {
ulong ts_rtoalgorithm;
ulong ts_rtomin;
ulong ts_rtomax;
ulong ts_maxconn;
ulong ts_activeopens;
ulong ts_passiveopens;
ulong ts_attemptfails;
ulong ts_estabresets;
ulong ts_currestab;
ulong ts_insegs;
ulong ts_outsegs;
ulong ts_retranssegs;
ulong ts_inerrs;
ulong ts_outrsts;
ulong ts_numconns;
} TCPStats;
#define TCP_RTO_OTHER 1
#define TCP_RTO_CONSTANT 2
#define TCP_RTO_RSRE 3
#define TCP_RTO_VANJ 4
#define TCP_MAXCONN_DYNAMIC -1
typedef struct UDPStats {
ulong us_indatagrams;
ulong us_noports;
ulong us_inerrors;
ulong us_outdatagrams;
ulong us_numaddrs;
} UDPStats;
typedef struct TCPConnTableEntry {
ulong tct_state;
ulong tct_localaddr;
ulong tct_localport;
ulong tct_remoteaddr;
ulong tct_remoteport;
} TCPConnTableEntry;
//* Definitions for the tct_state variable.
#define TCP_CONN_CLOSED 1 // Closed.
#define TCP_CONN_LISTEN 2 // Listening.
#define TCP_CONN_SYN_SENT 3 // SYN Sent.
#define TCP_CONN_SYN_RCVD 4 // SYN received.
#define TCP_CONN_ESTAB 5 // Established.
#define TCP_CONN_FIN_WAIT1 6 // FIN-WAIT-1
#define TCP_CONN_FIN_WAIT2 7 // FIN-WAIT-2
#define TCP_CONN_CLOSE_WAIT 8 // Close waiting.
#define TCP_CONN_CLOSING 9 // Closing state.
#define TCP_CONN_LAST_ACK 10 // Last ack state.
#define TCP_CONN_TIME_WAIT 11 // Time wait state.
#define TCP_DELETE_TCB 12 // Set to delete this TCB.
typedef struct UDPEntry {
ulong ue_localaddr;
ulong ue_localport;
} UDPEntry;
#define TCP_MIB_STAT_ID 1
#define UDP_MIB_STAT_ID 1
#define TCP_MIB_TABLE_ID 0x101
#define UDP_MIB_TABLE_ID 0x101
// Sockets based identifiers for connections.
typedef struct TCPSocketOption {
ulong tso_value;
} TCPSocketOption;
//* Structure passed in/returned from the SOCKET_ATMARK call. The tsa_offset
// field indicate how far back or forward in the data stream urgent data
// was or will be returned. A negative value means inline urgent data has
// already been given to the client, -tsa_offset bytes ago. A positive value
// means that inline urgent data is available tsa_offset bytes down the
// data stream. The tsa_size field is the size in bytes of the urgent data.
// This call when always return a 0 size and offset if the connection is not
// in the urgent inline mode.
typedef struct TCPSocketAMInfo {
ulong tsa_size; // Size of urgent data returned.
long tsa_offset; // Offset of urgent data returned.
} TCPSocketAMInfo;
#define TCP_SOCKET_NODELAY 1
#define TCP_SOCKET_KEEPALIVE 2
#define TCP_SOCKET_OOBINLINE 3
#define TCP_SOCKET_BSDURGENT 4
#define TCP_SOCKET_ATMARK 5
#define TCP_SOCKET_WINDOW 6
// Address object identifies. All but AO_OPTION_MCASTIF take single boolean
// character value. That one expects a pointer to an IP address.
#define AO_OPTION_TTL 1
#define AO_OPTION_MCASTTTL 2
#define AO_OPTION_MCASTIF 3
#define AO_OPTION_XSUM 4
#define AO_OPTION_IPOPTIONS 5
#define AO_OPTION_ADD_MCAST 6
#define AO_OPTION_DEL_MCAST 7
#define AO_OPTION_TOS 8
#define AO_OPTION_IP_DONTFRAGMENT 9
//* Information relating to setting/deleting IP multicast addresses.
typedef struct UDPMCastReq {
ulong umr_addr; // MCast address to add/delete.
ulong umr_if; // I/F on which to join.
} UDPMCastReq;
//* Structure defining what is passed in to AO_OPTION_MCASTIF request.
typedef struct UDPMCastIFReq {
IPAddr umi_addr;
} UDPMCastIFReq;
//
// Structures used in security filter enumeration.
//
// All values are in HOST byte order!!!
//
typedef struct TCPSecurityFilterEntry {
ulong tsf_address; // IP interface address
ulong tsf_protocol; // Transport protocol number
ulong tsf_value; // Transport filter value (e.g. TCP port)
} TCPSecurityFilterEntry;
typedef struct TCPSecurityFilterEnum {
ULONG tfe_entries_returned; // The number of TCPSecurityFilterEntry structs
// returned in the subsequent array.
ULONG tfe_entries_available; // The number of TCPSecurityFilterEntry structs
// currently available from the transport.
} TCPSecurityFilterEnum;
//
// Structures used in connection list enumeration.
//
// All values are in HOST byte order!!!
//
typedef struct TCPConnectionListEntry {
IPAddr tcf_address; // IP address
uint tcf_ticks; // Tick Count remaining
} TCPConnectionListEntry;
typedef struct TCPConnectionListEnum {
ULONG tce_entries_returned; // The number of TCPConnectionListEntry structs
// returned in the subsequent array.
ULONG tce_entries_available; // The number of TCPConnectionListEntry structs
// currently available from the transport.
} TCPConnectionListEnum;
#endif // TCP_INFO_INCLUDED