6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21 /*
22 * Copyright (c) 1991, 2010, Oracle and/or its affiliates. All rights reserved.
23 * Copyright (c) 2011, Joyent, Inc. All rights reserved.
24 * Copyright (c) 2011 Nexenta Systems, Inc. All rights reserved.
25 * Copyright (c) 2014, 2017 by Delphix. All rights reserved.
26 */
27 /* Copyright (c) 1990 Mentat Inc. */
28
29 #ifndef _INET_TCP_H
30 #define _INET_TCP_H
31
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35
36 #include <sys/inttypes.h>
37 #include <netinet/ip6.h>
38 #include <netinet/tcp.h>
39 #include <sys/socket.h>
40 #include <sys/socket_proto.h>
41 #include <sys/md5.h>
42 #include <inet/common.h>
43 #include <inet/ip.h>
44 #include <inet/ip6.h>
45 #include <inet/mi.h>
359
360 /*
361 * The header template lives in conn_ht_iphc allocated by tcp_build_hdrs
362 * We maintain three pointers into conn_ht_iphc.
363 */
364 ipha_t *tcp_ipha; /* IPv4 header in conn_ht_iphc */
365 ip6_t *tcp_ip6h; /* IPv6 header in conn_ht_iphc */
366 tcpha_t *tcp_tcpha; /* TCP header in conn_ht_iphc */
367
368 uint16_t tcp_last_sent_len; /* Record length for nagle */
369 uint16_t tcp_last_recv_len; /* Used by DTrace */
370 uint16_t tcp_dupack_cnt; /* # of consequtive duplicate acks */
371
372 kmutex_t *tcp_acceptor_lockp; /* Ptr to tf_lock */
373
374 mblk_t *tcp_ordrel_mp; /* T_ordrel_ind mblk */
375 t_uscalar_t tcp_acceptor_id; /* ACCEPTOR_id */
376
377 int tcp_ipsec_overhead;
378
379 uint_t tcp_recvifindex; /* Last received IPV6_RCVPKTINFO */
380 uint_t tcp_recvhops; /* Last received IPV6_RECVHOPLIMIT */
381 uint_t tcp_recvtclass; /* Last received IPV6_RECVTCLASS */
382 ip6_hbh_t *tcp_hopopts; /* Last received IPV6_RECVHOPOPTS */
383 ip6_dest_t *tcp_dstopts; /* Last received IPV6_RECVDSTOPTS */
384 ip6_dest_t *tcp_rthdrdstopts; /* Last recv IPV6_RECVRTHDRDSTOPTS */
385 ip6_rthdr_t *tcp_rthdr; /* Last received IPV6_RECVRTHDR */
386 uint_t tcp_hopoptslen;
387 uint_t tcp_dstoptslen;
388 uint_t tcp_rthdrdstoptslen;
389 uint_t tcp_rthdrlen;
390
391 mblk_t *tcp_timercache;
392
393 kmutex_t tcp_closelock;
394 kcondvar_t tcp_closecv;
395 uint8_t tcp_closed;
396 uint8_t tcp_closeflags;
397 mblk_t tcp_closemp;
398 timeout_id_t tcp_linger_tid; /* Linger timer ID */
|
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21 /*
22 * Copyright (c) 1991, 2010, Oracle and/or its affiliates. All rights reserved.
23 * Copyright (c) 2011, Joyent, Inc. All rights reserved.
24 * Copyright (c) 2011 Nexenta Systems, Inc. All rights reserved.
25 * Copyright (c) 2014, 2017 by Delphix. All rights reserved.
26 * Copyright 2020 OmniOS Community Edition (OmniOSce) Association.
27 */
28 /* Copyright (c) 1990 Mentat Inc. */
29
30 #ifndef _INET_TCP_H
31 #define _INET_TCP_H
32
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36
37 #include <sys/inttypes.h>
38 #include <netinet/ip6.h>
39 #include <netinet/tcp.h>
40 #include <sys/socket.h>
41 #include <sys/socket_proto.h>
42 #include <sys/md5.h>
43 #include <inet/common.h>
44 #include <inet/ip.h>
45 #include <inet/ip6.h>
46 #include <inet/mi.h>
360
361 /*
362 * The header template lives in conn_ht_iphc allocated by tcp_build_hdrs
363 * We maintain three pointers into conn_ht_iphc.
364 */
365 ipha_t *tcp_ipha; /* IPv4 header in conn_ht_iphc */
366 ip6_t *tcp_ip6h; /* IPv6 header in conn_ht_iphc */
367 tcpha_t *tcp_tcpha; /* TCP header in conn_ht_iphc */
368
369 uint16_t tcp_last_sent_len; /* Record length for nagle */
370 uint16_t tcp_last_recv_len; /* Used by DTrace */
371 uint16_t tcp_dupack_cnt; /* # of consequtive duplicate acks */
372
373 kmutex_t *tcp_acceptor_lockp; /* Ptr to tf_lock */
374
375 mblk_t *tcp_ordrel_mp; /* T_ordrel_ind mblk */
376 t_uscalar_t tcp_acceptor_id; /* ACCEPTOR_id */
377
378 int tcp_ipsec_overhead;
379
380 uint_t tcp_recvtos; /* Last received IP_RECVTOS */
381 uint_t tcp_recvifindex; /* Last received IPV6_RCVPKTINFO */
382 uint_t tcp_recvhops; /* Last received IPV6_RECVHOPLIMIT */
383 uint_t tcp_recvtclass; /* Last received IPV6_RECVTCLASS */
384 ip6_hbh_t *tcp_hopopts; /* Last received IPV6_RECVHOPOPTS */
385 ip6_dest_t *tcp_dstopts; /* Last received IPV6_RECVDSTOPTS */
386 ip6_dest_t *tcp_rthdrdstopts; /* Last recv IPV6_RECVRTHDRDSTOPTS */
387 ip6_rthdr_t *tcp_rthdr; /* Last received IPV6_RECVRTHDR */
388 uint_t tcp_hopoptslen;
389 uint_t tcp_dstoptslen;
390 uint_t tcp_rthdrdstoptslen;
391 uint_t tcp_rthdrlen;
392
393 mblk_t *tcp_timercache;
394
395 kmutex_t tcp_closelock;
396 kcondvar_t tcp_closecv;
397 uint8_t tcp_closed;
398 uint8_t tcp_closeflags;
399 mblk_t tcp_closemp;
400 timeout_id_t tcp_linger_tid; /* Linger timer ID */
|