williamr@2: /* TCP.H williamr@2: * williamr@2: * Portions copyright (c) 1997-1999 Symbian Ltd. All rights reserved. williamr@2: */ williamr@2: williamr@2: /** @file williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: williamr@2: /* williamr@2: * Copyright (c) 1982, 1986 Regents of the University of California. williamr@2: * All rights reserved. The Berkeley software License Agreement williamr@2: * specifies the terms and conditions for redistribution. williamr@2: */ williamr@2: williamr@2: #ifndef _NETINET_TCP_H williamr@2: #define _NETINET_TCP_H williamr@2: williamr@2: #ifdef __cplusplus williamr@2: extern "C" { williamr@2: #endif williamr@2: williamr@2: typedef u_long tcp_seq; williamr@2: /** williamr@2: TCP header. williamr@2: Per RFC 793, September, 1981. williamr@2: @internalComponent williamr@2: */ williamr@2: struct tcphdr { williamr@2: u_short th_sport; /* source port */ williamr@2: u_short th_dport; /* destination port */ williamr@2: tcp_seq th_seq; /* sequence number */ williamr@2: tcp_seq th_ack; /* acknowledgement number */ williamr@2: #ifdef _BIT_FIELDS_LTOH williamr@2: u_int th_x2:4, /* (unused) */ williamr@2: th_off:4; /* data offset */ williamr@2: #else williamr@2: u_int th_off:4, /* data offset */ williamr@2: th_x2:4; /* (unused) */ williamr@2: #endif williamr@2: u_char th_flags; williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: #define TH_FIN 0x01 williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: #define TH_SYN 0x02 williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: #define TH_RST 0x04 williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: #define TH_PUSH 0x08 williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: #define TH_ACK 0x10 williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: #define TH_URG 0x20 williamr@2: u_short th_win; /* window */ williamr@2: u_short th_sum; /* checksum */ williamr@2: u_short th_urp; /* urgent pointer */ williamr@2: }; williamr@2: williamr@2: #define TCPOPT_EOL 0 williamr@2: #define TCPOPT_NOP 1 williamr@2: #define TCPOPT_MAXSEG 2 williamr@2: williamr@2: /** williamr@2: Default maximum segment size for TCP. williamr@2: With an IP MSS of 576, this is 536, williamr@2: but 512 is probably more convenient. williamr@2: */ williamr@2: #ifdef lint williamr@2: #define TCP_MSS 536 williamr@2: #else williamr@2: #define TCP_MSS MIN(512, IP_MSS - sizeof (struct tcpiphdr)) williamr@2: #endif williamr@2: williamr@2: /** williamr@2: User-settable options (used with setsockopt). williamr@2: */ williamr@2: #define TCP_NODELAY 0x01 /* don't delay send to coalesce packets */ williamr@2: #define TCP_MAXSEG 0x02 /* set maximum segment size */ williamr@2: williamr@2: #define TCP_NOTIFY_THRESHOLD 0x10 williamr@2: #define TCP_ABORT_THRESHOLD 0x11 williamr@2: #define TCP_CONN_NOTIFY_THRESHOLD 0x12 williamr@2: #define TCP_CONN_ABORT_THRESHOLD 0x13 williamr@2: williamr@2: williamr@2: #ifdef __cplusplus williamr@2: } williamr@2: #endif williamr@2: williamr@2: #endif /* _NETINET_TCP_H */