home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.0 / NeXTSTEP3.0.iso / NextDeveloper / Headers / bsd / netinet / tcp.h < prev    next >
Text File  |  1992-07-29  |  2KB  |  83 lines

  1. /*
  2.  * Copyright (c) 1982, 1986 Regents of the University of California.
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms are permitted
  6.  * provided that this notice is preserved and that due credit is given
  7.  * to the University of California at Berkeley. The name of the University
  8.  * may not be used to endorse or promote products derived from this
  9.  * software without specific prior written permission. This software
  10.  * is provided ``as is'' without express or implied warranty.
  11.  *
  12.  *    @(#)tcp.h    7.4.1.1 (Berkeley) 2/7/88
  13.  */
  14. #ifndef BYTE_ORDER
  15. /*
  16.  * Definitions for byte order,
  17.  * according to byte significance from low address to high.
  18.  */
  19. #define    LITTLE_ENDIAN    1234    /* least-significant byte first (vax) */
  20. #define    BIG_ENDIAN    4321    /* most-significant byte first (IBM, net) */
  21. #define    PDP_ENDIAN    3412    /* LSB first in word, MSW first in long (pdp) */
  22.  
  23. #ifdef vax
  24. #define    BYTE_ORDER    LITTLE_ENDIAN
  25. #else
  26. #define    BYTE_ORDER    BIG_ENDIAN    /* mc68000, tahoe, most others */
  27. #endif
  28. #endif BYTE_ORDER
  29.  
  30. typedef    u_long    tcp_seq;
  31. /*
  32.  * TCP header.
  33.  * Per RFC 793, September, 1981.
  34.  */
  35. struct tcphdr {
  36.     u_short    th_sport;        /* source port */
  37.     u_short    th_dport;        /* destination port */
  38.     tcp_seq    th_seq;            /* sequence number */
  39.     tcp_seq    th_ack;            /* acknowledgem@number */
  40. #if BYTE_ORDER == LITTLE_ENDIAN
  41.     u_char    th_x2:4,        /* (unused) */
  42.         th_off:4;        /* data offset */
  43. #endif
  44. #if BYTE_ORDER == BIG_ENDIAN
  45.     u_char    th_off:4,        /* data offset */
  46.         th_x2:4;        /* (unused) */
  47. #endif
  48.     u_char    th_flags;
  49. #define    TH_FIN    0x01
  50. #define    TH_SYN    0x02
  51. #define    TH_RST    0x04
  52. #define    TH_PUSH    0x08
  53. #define    TH_ACK    0x10
  54. #define    TH_URG    0x20
  55.     u_short    th_win;            /* window */
  56.     u_short    th_sum;            /* checksum */
  57.     u_short    th_urp;            /* urgent pointer */
  58. };
  59.  
  60. #define    TCPOPT_EOL    0
  61. #define    TCPOPT_NOP    1
  62. #define    TCPOPT_MAXSEG    2
  63.  
  64. /*
  65.  * Default maximum segment size for TCP.
  66.  * With an IP MSS of 576, this is 536,
  67.  * but 512 is probably more convenient.
  68.  */
  69. #ifdef    lint
  70. #define    TCP_MSS    536
  71. #else
  72. #ifndef IP_MSS
  73. #define    IP_MSS    576
  74. #endif
  75. #define    TCP_MSS    MIN(512, IP_MSS - sizeof (struct tcpiphdr))
  76. #endif
  77.  
  78. /*
  79.  * User-settable options (used with setsockopt).
  80.  */
  81. #define    TCP_NODELAY    0x01    /* don't delay send to coalesce packets */
  82. #define    TCP_MAXSEG    0x02    /* set maximum segment size */
  83.