"Fossies" - the Fresh Open Source Software Archive 
Member "tcpflow-1.6.1/src/wifipcap/tcp.h" (19 Feb 2021, 4985 Bytes) of package /linux/misc/tcpflow-1.6.1.tar.gz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
For more information about "tcp.h" see the
Fossies "Dox" file reference documentation.
1 /* @(#) $Header: /home/cvs/wifitools/wifipcap/tcp.h,v 1.1.1.1 2006/12/14 01:22:11 jpang 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
37 #ifndef TCP_H
38 #define TCP_H
39
40 typedef u_int32_t tcp_seq;
41 /*
42 * TCP header.
43 * Per RFC 793, September, 1981.
44 */
45 struct tcphdr {
46 u_int16_t th_sport; /* source port */
47 u_int16_t th_dport; /* destination port */
48 tcp_seq th_seq; /* sequence number */
49 tcp_seq th_ack; /* acknowledgement number */
50 u_int8_t th_offx2; /* data offset, rsvd */
51 #define TH_OFF(th) (((th)->th_offx2 & 0xf0) >> 4)
52 u_int8_t th_flags;
53 #define TH_FIN 0x01
54 #define TH_SYN 0x02
55 #define TH_RST 0x04
56 #define TH_PUSH 0x08
57 #define TH_ACK 0x10
58 #define TH_URG 0x20
59 #define TH_ECNECHO 0x40 /* ECN Echo */
60 #define TH_CWR 0x80 /* ECN Cwnd Reduced */
61 u_int16_t th_win; /* window */
62 u_int16_t th_sum; /* checksum */
63 u_int16_t th_urp; /* urgent pointer */
64 };
65
66 #define TCPOPT_EOL 0
67 #define TCPOPT_NOP 1
68 #define TCPOPT_MAXSEG 2
69 #define TCPOLEN_MAXSEG 4
70 #define TCPOPT_WSCALE 3 /* window scale factor (rfc1323) */
71 #define TCPOPT_SACKOK 4 /* selective ack ok (rfc2018) */
72 #define TCPOPT_SACK 5 /* selective ack (rfc2018) */
73 #define TCPOPT_ECHO 6 /* echo (rfc1072) */
74 #define TCPOPT_ECHOREPLY 7 /* echo (rfc1072) */
75 #define TCPOPT_TIMESTAMP 8 /* timestamp (rfc1323) */
76 #define TCPOLEN_TIMESTAMP 10
77 #define TCPOLEN_TSTAMP_APPA (TCPOLEN_TIMESTAMP+2) /* appendix A */
78 #define TCPOPT_CC 11 /* T/TCP CC options (rfc1644) */
79 #define TCPOPT_CCNEW 12 /* T/TCP CC options (rfc1644) */
80 #define TCPOPT_CCECHO 13 /* T/TCP CC options (rfc1644) */
81 #define TCPOPT_SIGNATURE 19 /* Keyed MD5 (rfc2385) */
82 #define TCPOLEN_SIGNATURE 18
83 #define TCP_SIGLEN 16 /* length of an option 19 digest */
84 #define TCPOPT_AUTH 20 /* Enhanced AUTH option */
85
86 #define TCPOPT_TSTAMP_HDR \
87 (TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_TIMESTAMP<<8|TCPOLEN_TIMESTAMP)
88
89 #include <map>
90 #include <list>
91
92 class tcp_opt_t {
93 tcp_opt_t &operator=(const tcp_opt_t &); // not implemented
94 public:
95 tcp_opt_t(const tcp_opt_t &t):type(t.type),len(t.len),data_raw(t.data_raw),data(t.data),data_sack(t.data_sack){};
96 tcp_opt_t():type(),len(),data_raw(),data(),data_sack(){};
97 u_int type;
98 u_int len;
99 const u_char *data_raw;
100
101 union {
102 u_int16_t mss;
103 u_int8_t wscale;
104 u_int32_t echo;
105 u_int32_t echoreply;
106 u_int32_t cc;
107 u_int32_t ccnew;
108 u_int32_t ccecho;
109 struct {
110 u_int32_t tsval;
111 u_int32_t tsecr;
112 } timestamp;
113 u_int8_t signature[TCP_SIGLEN];
114 } data;
115
116 std::list< std::pair<u_int32_t,u_int32_t> > data_sack;
117 };
118
119 /* Jeff: endian-fixed, fully decoded tcp header */
120 struct tcp_hdr_t {
121 u_int16_t sport; /* source port */
122 u_int16_t dport; /* destination port */
123 tcp_seq seq; /* sequence number */
124 tcp_seq ack; /* acknowledgement number */
125 u_int8_t dataoff; /* data offset */
126 u_int8_t flags; /* flags (see #defines under tcphdr::th_flags above) */
127 u_int16_t win; /* window */
128 u_int16_t cksum; /* checksum */
129 u_int16_t urgptr; /* urgent pointer */
130
131 //std::list<tcp_opt_t> opts;
132 };
133 #endif