home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / network / netlib_1 / !NetLib / netinet / h / tcp < prev    next >
Text File  |  1995-12-12  |  2KB  |  75 lines

  1. #ifndef __netinet_tcp_h
  2. #define __netinet_tcp_h
  3.  
  4. /* Freenet programmers interface - netinet/tcp.h - 23/5/95 */
  5.  
  6. /*
  7.  * Type of a TCP sequence number
  8.  */
  9. typedef u_long tcp_seq;
  10.  
  11. /*
  12.  * TCP header.
  13.  * Per RFC 793, September, 1981.
  14.  */
  15.  
  16. /*
  17.  * Structure of a TCP header
  18.  */
  19. struct tcphdr {
  20.   u_short th_sport;            /* Source port */
  21.   u_short th_dport;            /* Destination port */
  22.   tcp_seq th_seq;              /* Sequence number */
  23.   tcp_seq th_ack;              /* Acknowledgement number */
  24.   u_char  th_x2  : 4;          /* Unused */
  25.   u_char  th_off : 4;          /* Data offset */
  26.   u_char  th_flags;            /* Flags */
  27. #define TH_FIN  0x01
  28. #define TH_SYN  0x02
  29. #define TH_RST  0x04
  30. #define TH_PUSH 0x08
  31. #define TH_ACK  0x10
  32. #define TH_URG  0x20
  33.   u_short th_win;              /* Advertised window */
  34.   u_short th_sum;              /* Checksum */
  35.   u_short th_urp;              /* Urgent pointer */
  36. };
  37.  
  38.  
  39. #define    TCPOPT_EOL        0
  40. #define    TCPOPT_NOP        1
  41. #define    TCPOPT_MAXSEG        2
  42. #define TCPOLEN_MAXSEG        4
  43. #define TCPOPT_WINDOW        3
  44. #define TCPOLEN_WINDOW        3
  45. #define TCPOPT_SACK_PERMITTED    4        /* Experimental */
  46. #define TCPOLEN_SACK_PERMITTED    2
  47. #define TCPOPT_SACK        5        /* Experimental */
  48. #define TCPOPT_TIMESTAMP    8
  49. #define TCPOLEN_TIMESTAMP    10
  50. #define TCPOLEN_TSTAMP_APPA    (TCPOLEN_TIMESTAMP+2) /* appendix A */
  51.  
  52. #define TCPOPT_TSTAMP_HDR    \
  53.     (TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_TIMESTAMP<<8|TCPOLEN_TIMESTAMP)
  54.  
  55. /*
  56.  * Default maximum segment size for TCP.
  57.  * With an IP MSS of 576, this is 536,
  58.  * but 512 is probably more convenient.
  59.  * This should be defined as MIN(512, IP_MSS - sizeof (struct tcpiphdr)).
  60.  */
  61. #define    TCP_MSS    512
  62.  
  63. #define    TCP_MAXWIN    65535    /* largest value for (unscaled) window */
  64.  
  65. #define TCP_MAX_WINSHIFT    14    /* maximum window shift */
  66.  
  67. /*
  68.  * Options for use with [gs]etsockopt at the TCP level. First word of
  69.  * comment is data type; bool is stored in int.
  70.  */
  71. #define TCP_NODELAY 0x01       /* Don't delay send to coalesce packets */
  72. #define TCP_MAXSEG  0x02       /* Set the maximum segment size */
  73.  
  74. #endif
  75.