8322 nl: misleading-indentation
[unleashed/tickless.git] / usr / src / lib / libbc / inc / include / nettli / tcp_tlivar.h
blob456cf9cdac101b40b34719a131f36b5cc7889cef
1 /*
2 * CDDL HEADER START
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
7 * with the License.
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
20 * CDDL HEADER END
24 * Copyright 1988 Sun Microsystems, Inc. All rights reserved.
25 * Use is subject to license terms.
28 #ifndef _TCP_TLIVAR_
29 #define _TCP_TLIVAR_
31 #pragma ident "%Z%%M% %I% %E% SMI"
34 * Data structure definitions for the streams interface
35 * to the socket-based TCP implementation.
39 * Socket Information block contains the special socket wakeup
40 * hooks. When a block of tt_sockinfo is allocated, the wupalt.wup_arg
41 * points to the beginning of tt_sockinfo.
44 struct tt_sockinfo {
45 struct wupalt ts_sowakeup; /* special sock wakeup hook */
46 u_long ts_seqnum; /* connection sequence number */
47 long ts_flags; /* see below */
48 struct tt_softc *ts_ttp; /* back ptr to dev-instance handle */
51 * No connection assoicated with this socket
53 #define TT_TS_NOTUSED 0x00
55 * This socket is connected or pending connection
57 #define TT_TS_INUSE 0x01
60 * Per-device instance state information.
62 * To aid in handling resource starvation situations, we pre-allocate two
63 * messages for reporting errors. Tt_merror is used as a last resort, when
64 * attempts to allocate a normal error reply fail. It's allocated in the
65 * open routine and freed in the close routine. The routines that produce
66 * response messages try to keep tt_errack pre-allocated, but don't insist
67 * that it always be valid. This strategy attempts to minimize the
68 * probability of having to fall back on the drastic measure of using the
69 * M_ERROR message.
71 struct tt_softc {
72 /* The tt_unit & tt_unitnext fields aren't yet used. */
73 struct tt_softc *tt_next; /* link to next device instance */
74 u_short tt_unit; /* instance number */
75 u_short tt_unitnext; /* next unit # to be used on open */
77 queue_t *tt_rq; /* cross-link to read queue */
78 struct socket *tt_so; /* socket for this device instance */
79 mblk_t *tt_merror; /* pre-allocated M_ERROR message */
80 mblk_t *tt_errack; /* pre-allocated T_error_ack message */
81 u_int tt_state; /* current state of the tli automaton */
82 long tt_seqnext; /* next sequence number to assign */
83 u_long tt_flags; /* see below */
84 u_long tt_event; /* service event inidication */
85 struct proc *tt_auxprocp; /* Aux proc handle */
86 struct in_addr tt_laddr; /* saved local address */
87 u_short tt_lport; /* saved local port number */
91 * Flag (tt_flags) bits private to the driver.
93 #define TT_OPEN 0x01 /* device instance is currently open */
94 #define TT_ERROR 0x02 /* in error state -- unusable */
95 #define TT_CLOSE 0x04 /* this device instance is closed */
96 #define TT_TIMER 0x08 /* scheduled wakeup timer is already set */
98 * Event (tt_event) bits private to the driver.
100 #define TTE_EVENT 0x01 /* aux proc service wanted indication */
101 #define TTE_ONQUEUE 0x02 /* set if this ttp has wakeup-event pending */
104 * Internet style address for TLI
106 struct taddr_in {
107 short sin_family;
108 u_short sin_port;
109 struct in_addr sin_addr;
113 * For use with direct-read only
114 * when:
115 * - TI is in the correct state
116 * - there are data to be read
117 * - socket is in state to receive
118 * - socket buffer not locked (we are running this
119 * at interrupt level !)
120 * - the auxproc is not running
122 #define TT_DIRECT_READ(ttp, so) { \
123 extern int tcptli_auxproc_running; \
124 if (((ttp)->tt_state & TL_DATAXFER) && \
125 ((so)->so_rcv.sb_cc != 0) && \
126 (!((so)->so_state & SS_CANTRCVMORE)) && \
127 (!((so)->so_rcv.sb_flags & SB_LOCK)) && \
128 (!tcptli_auxproc_running)) \
129 if (tcptli_Ercv((ttp))) \
130 return; \
133 #ifdef TLIDEBUG
134 extern tcptli_debug;
135 #define TCPTLI_PRINTF if (tcptli_debug) printf
136 #else
137 #define TCPTLI_PRINTF
138 #endif /* TLIDEBUG */
140 #endif /* _TCP_TLIVAR_ */