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
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]
23 * Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T
29 * Copyright 2014 Garrett D'Amore <garrett@damore.org>
31 * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
32 * Use is subject to license terms.
33 * Copyright 2014 Gary Mills
39 #include <sys/types.h>
41 * The following include file has declarations needed by both the kernel
42 * level transport providers and the user level library.
44 #include <sys/tpicommon.h>
52 * The following are the events returned by t_look
54 #define T_LISTEN 0x0001 /* connection indication received */
55 #define T_CONNECT 0x0002 /* connect confirmation received */
56 #define T_DATA 0x0004 /* normal data received */
57 #define T_EXDATA 0x0008 /* expedited data received */
58 #define T_DISCONNECT 0x0010 /* disconnect received */
59 #define T_UDERR 0x0040 /* data gram error indication */
60 #define T_ORDREL 0x0080 /* orderly release indication */
61 #define T_EVENTS 0x00ff /* event mask */
64 * Flags for data primitives.
66 #define T_MORE 0x001 /* more data */
67 #define T_EXPEDITED 0x002 /* expedited data */
71 * protocol specific service limits
75 t_scalar_t addr
; /* size of protocol address */
76 t_scalar_t options
; /* size of protocol options */
77 t_scalar_t tsdu
; /* size of max transport service data unit */
78 t_scalar_t etsdu
; /* size of max expedited tsdu */
79 t_scalar_t connect
; /* max data for connection primitives */
80 t_scalar_t discon
; /* max data for disconnect primitives */
81 t_scalar_t servtype
; /* provider service type */
100 #endif /* _SYSCALL32 */
103 * t_bind - format of the address and options arguments of bind
120 * disconnect structure
123 struct netbuf udata
; /* user data */
124 int reason
; /* reason code */
125 int sequence
; /* sequence number */
132 struct netbuf addr
; /* address */
133 struct netbuf opt
; /* options */
134 struct netbuf udata
; /* user data */
135 int sequence
; /* sequence number */
139 * data gram structure
142 struct netbuf addr
; /* address */
143 struct netbuf opt
; /* options */
144 struct netbuf udata
; /* user data */
151 struct netbuf addr
; /* address */
152 struct netbuf opt
; /* options */
153 t_scalar_t error
; /* error code */
157 * The following are structure types used when dynamically
158 * allocating the above structures via t_structalloc().
160 #define T_BIND 1 /* struct t_bind */
161 #define T_OPTMGMT 2 /* struct t_optmgmt */
162 #define T_CALL 3 /* struct t_call */
163 #define T_DIS 4 /* struct t_discon */
164 #define T_UNITDATA 5 /* struct t_unitdata */
165 #define T_UDERROR 6 /* struct t_uderr */
166 #define T_INFO 7 /* struct t_info */
169 * The following bits specify which fields of the above
170 * structures should be allocated by t_structalloc().
172 #define T_ADDR 0x01 /* address */
173 #define T_OPT 0x02 /* options */
174 #define T_UDATA 0x04 /* user data */
175 #define T_ALL 0x07 /* all the above */
178 * the following are the states for the user
181 #define T_UNINIT 0 /* uninitialized */
182 #define T_UNBND 1 /* unbound */
183 #define T_IDLE 2 /* idle */
184 #define T_OUTCON 3 /* outgoing connection pending */
185 #define T_INCON 4 /* incoming connection pending */
186 #define T_DATAXFER 5 /* data transfer */
187 #define T_OUTREL 6 /* outgoing release pending */
188 #define T_INREL 7 /* incoming release pending */
189 #define T_BADSTATE 8 /* illegal state */
192 * Flags for t_getname.
197 extern int t_accept(int fildes
, int resfd
, struct t_call
*call
);
198 extern char *t_alloc(int fildes
, int struct_type
, int fields
);
199 extern int t_bind(int fildes
, struct t_bind
*req
, struct t_bind
*ret
);
200 extern int t_close(int fildes
);
201 extern int t_connect(int fildes
, struct t_call
*sndcall
,
202 struct t_call
*rcvcall
);
203 extern void t_error(const char *errmsg
);
204 extern int t_free(char *ptr
, int struct_type
);
205 extern int t_getinfo(int fildes
, struct t_info
*info
);
206 extern int t_getname(int fildes
, struct netbuf
*name
, int type
);
207 extern int t_getstate(int fildes
);
208 extern int t_listen(int fildes
, struct t_call
*call
);
209 extern int t_look(int fildes
);
210 extern int t_open(const char *path
, int oflag
, struct t_info
*info
);
211 extern int t_optmgmt(int fildes
, struct t_optmgmt
*req
,
212 struct t_optmgmt
*ret
);
213 extern int t_rcv(int fildes
, char *buf
, unsigned nbytes
, int *flags
);
214 extern int t_rcvconnect(int fildes
, struct t_call
*call
);
215 extern int t_rcvdis(int fildes
, struct t_discon
*discon
);
216 extern int t_rcvrel(int fildes
);
217 extern int t_rcvudata(int fildes
, struct t_unitdata
*unitdata
, int *flags
);
218 extern int t_rcvuderr(int fildes
, struct t_uderr
*uderr
);
219 extern int t_snd(int fildes
, char *buf
, unsigned nbytes
, int flags
);
220 extern int t_snddis(int fildes
, struct t_call
*call
);
221 extern int t_sndrel(int fildes
);
222 extern int t_sndudata(int fildes
, struct t_unitdata
*unitdata
);
223 extern char *t_strerror(int errnum
);
224 extern int t_sync(int fildes
);
225 extern int t_unbind(int fildes
);
228 * N.B.: this interface is deprecated. Use t_strerror() instead.
230 extern char *t_errlist
[];
237 #endif /* _SYS_TIUSER_H */