]> The Tcpdump Group git mirrors - tcpdump/blobdiff - tcp.h
More UNALIGNED_MEM{CPY,CMP} on IP addresses.
[tcpdump] / tcp.h
diff --git a/tcp.h b/tcp.h
index 7b2b24e35eb75a261835ff625d31d3e8854d5679..fbd2f452dc0c53590fc6e995122c331c2e96c482 100644 (file)
--- a/tcp.h
+++ b/tcp.h
@@ -1,4 +1,3 @@
-/* @(#) $Header: /tcpdump/master/tcpdump/tcp.h,v 1.5 2000-10-03 02:55:02 itojun Exp $ (LBL) */
 /*
  * Copyright (c) 1982, 1986, 1993
  *     The Regents of the University of California.  All rights reserved.
  *     @(#)tcp.h       8.1 (Berkeley) 6/10/93
  */
 
-#ifndef BYTE_ORDER
-#define        LITTLE_ENDIAN   1234    /* least-significant byte first (vax, pc) */
-#define        BIG_ENDIAN      4321    /* most-significant byte first (IBM, net) */
-#define        PDP_ENDIAN      3412    /* LSB first in word, MSW first in long (pdp)*/
-
-#ifdef WORDS_BIGENDIAN
-#define BYTE_ORDER     BIG_ENDIAN
-#else
-#define BYTE_ORDER     LITTLE_ENDIAN
-#endif /* WORDS_BIGENDIAN */
-#endif /* BYTE_ORDER */
-
-#if !defined(BYTE_ORDER) || \
-    (BYTE_ORDER != BIG_ENDIAN && BYTE_ORDER != LITTLE_ENDIAN && \
-    BYTE_ORDER != PDP_ENDIAN)
-       /* you must determine what the correct bit order is for
-        * your compiler - the next line is an intentional error
-        * which will force your compiles to bomb until you fix
-        * the above macros.
-        */
-  #error "Undefined or invalid BYTE_ORDER";
-#endif
-
 typedef        u_int32_t       tcp_seq;
 /*
  * TCP header.
@@ -67,32 +43,73 @@ struct tcphdr {
        u_int16_t       th_dport;               /* destination port */
        tcp_seq         th_seq;                 /* sequence number */
        tcp_seq         th_ack;                 /* acknowledgement number */
-       u_int8_t        th_x2off;
-#define TH_OFF(th)     ((th)->th_x2off & 0x0f) /* data offset, th_off */
+       u_int8_t        th_offx2;               /* data offset, rsvd */
        u_int8_t        th_flags;
-#define        TH_FIN  0x01
-#define        TH_SYN  0x02
-#define        TH_RST  0x04
-#define        TH_PUSH 0x08
-#define        TH_ACK  0x10
-#define        TH_URG  0x20
        u_int16_t       th_win;                 /* window */
        u_int16_t       th_sum;                 /* checksum */
        u_int16_t       th_urp;                 /* urgent pointer */
-};
+} UNALIGNED;
+
+#define TH_OFF(th)     (((th)->th_offx2 & 0xf0) >> 4)
+
+/* TCP flags */
+#define        TH_FIN     0x01
+#define        TH_SYN     0x02
+#define        TH_RST     0x04
+#define        TH_PUSH    0x08
+#define        TH_ACK     0x10
+#define        TH_URG     0x20
+#define TH_ECNECHO 0x40        /* ECN Echo */
+#define TH_CWR    0x80 /* ECN Cwnd Reduced */
+
 
 #define        TCPOPT_EOL              0
 #define        TCPOPT_NOP              1
 #define        TCPOPT_MAXSEG           2
 #define    TCPOLEN_MAXSEG              4
-#define TCPOPT_WINDOW          3
-#define    TCPOLEN_WINDOW              3
-#define TCPOPT_SACK_PERMITTED  4               /* Experimental */
-#define    TCPOLEN_SACK_PERMITTED      2
-#define TCPOPT_SACK            5               /* Experimental */
-#define TCPOPT_TIMESTAMP       8
+#define        TCPOPT_WSCALE           3       /* window scale factor (rfc1323) */
+#define        TCPOPT_SACKOK           4       /* selective ack ok (rfc2018) */
+#define        TCPOPT_SACK             5       /* selective ack (rfc2018) */
+#define        TCPOPT_ECHO             6       /* echo (rfc1072) */
+#define        TCPOPT_ECHOREPLY        7       /* echo (rfc1072) */
+#define TCPOPT_TIMESTAMP       8       /* timestamp (rfc1323) */
 #define    TCPOLEN_TIMESTAMP           10
 #define    TCPOLEN_TSTAMP_APPA         (TCPOLEN_TIMESTAMP+2) /* appendix A */
+#define TCPOPT_CC              11      /* T/TCP CC options (rfc1644) */
+#define TCPOPT_CCNEW           12      /* T/TCP CC options (rfc1644) */
+#define TCPOPT_CCECHO          13      /* T/TCP CC options (rfc1644) */
+#define TCPOPT_SIGNATURE       19      /* Keyed MD5 (rfc2385) */
+#define    TCPOLEN_SIGNATURE           18
+#define TCP_SIGLEN 16                  /* length of an option 19 digest */
+#define TCPOPT_AUTH             20      /* Enhanced AUTH option */
+#define        TCPOPT_UTO              28      /* tcp user timeout (rfc5482) */
+#define           TCPOLEN_UTO                  4
+#define        TCPOPT_MPTCP            30      /* MPTCP options */
+#define TCPOPT_EXPERIMENT2     254     /* experimental headers (rfc4727) */
 
 #define TCPOPT_TSTAMP_HDR      \
     (TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_TIMESTAMP<<8|TCPOLEN_TIMESTAMP)
+
+#ifndef TELNET_PORT
+#define TELNET_PORT             23
+#endif
+#ifndef BGP_PORT
+#define BGP_PORT                179
+#endif
+#define NETBIOS_SSN_PORT        139
+#ifndef OPENFLOW_PORT
+#define OPENFLOW_PORT           6633
+#endif
+#ifndef PPTP_PORT
+#define PPTP_PORT              1723
+#endif
+#define BEEP_PORT               10288
+#ifndef NFS_PORT
+#define NFS_PORT               2049
+#endif
+#define MSDP_PORT              639
+#define RPKI_RTR_PORT          323
+#define LDP_PORT                646
+#ifndef SMB_PORT
+#define SMB_PORT                445
+#endif