tcp.h 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. /* @(#) $Header: /home/pdw/vcvs/repos/iftop/tcp.h,v 1.2 2003/06/06 22:42:35 pdw Exp $ (LBL) */
  2. /*
  3. * Copyright (c) 1982, 1986, 1993
  4. * The Regents of the University of California. All rights reserved.
  5. *
  6. * Redistribution and use in source and binary forms, with or without
  7. * modification, are permitted provided that the following conditions
  8. * are met:
  9. * 1. Redistributions of source code must retain the above copyright
  10. * notice, this list of conditions and the following disclaimer.
  11. * 2. Redistributions in binary form must reproduce the above copyright
  12. * notice, this list of conditions and the following disclaimer in the
  13. * documentation and/or other materials provided with the distribution.
  14. * 3. All advertising materials mentioning features or use of this software
  15. * must display the following acknowledgement:
  16. * This product includes software developed by the University of
  17. * California, Berkeley and its contributors.
  18. * 4. Neither the name of the University nor the names of its contributors
  19. * may be used to endorse or promote products derived from this software
  20. * without specific prior written permission.
  21. *
  22. * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  23. * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  24. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  25. * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  26. * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  27. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  28. * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  29. * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  30. * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  31. * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  32. * SUCH DAMAGE.
  33. *
  34. * @(#)tcp.h 8.1 (Berkeley) 6/10/93
  35. */
  36. typedef u_int32_t tcp_seq;
  37. /*
  38. * TCP header.
  39. * Per RFC 793, September, 1981.
  40. */
  41. struct tcphdr {
  42. u_int16_t th_sport; /* source port */
  43. u_int16_t th_dport; /* destination port */
  44. tcp_seq th_seq; /* sequence number */
  45. tcp_seq th_ack; /* acknowledgement number */
  46. u_int8_t th_offx2; /* data offset, rsvd */
  47. #define TH_OFF(th) (((th)->th_offx2 & 0xf0) >> 4)
  48. u_int8_t 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. #define TH_ECNECHO 0x40 /* ECN Echo */
  56. #define TH_CWR 0x80 /* ECN Cwnd Reduced */
  57. u_int16_t th_win; /* window */
  58. u_int16_t th_sum; /* checksum */
  59. u_int16_t th_urp; /* urgent pointer */
  60. };
  61. #define TCPOPT_EOL 0
  62. #define TCPOPT_NOP 1
  63. #define TCPOPT_MAXSEG 2
  64. #define TCPOLEN_MAXSEG 4
  65. #define TCPOPT_WSCALE 3 /* window scale factor (rfc1323) */
  66. #define TCPOPT_SACKOK 4 /* selective ack ok (rfc2018) */
  67. #define TCPOPT_SACK 5 /* selective ack (rfc2018) */
  68. #define TCPOPT_ECHO 6 /* echo (rfc1072) */
  69. #define TCPOPT_ECHOREPLY 7 /* echo (rfc1072) */
  70. #define TCPOPT_TIMESTAMP 8 /* timestamp (rfc1323) */
  71. #define TCPOLEN_TIMESTAMP 10
  72. #define TCPOLEN_TSTAMP_APPA (TCPOLEN_TIMESTAMP+2) /* appendix A */
  73. #define TCPOPT_CC 11 /* T/TCP CC options (rfc1644) */
  74. #define TCPOPT_CCNEW 12 /* T/TCP CC options (rfc1644) */
  75. #define TCPOPT_CCECHO 13 /* T/TCP CC options (rfc1644) */
  76. #define TCPOPT_TSTAMP_HDR \
  77. (TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_TIMESTAMP<<8|TCPOLEN_TIMESTAMP)