diff options
author | stevel@tonic-gate <none@none> | 2005-06-14 00:00:00 -0700 |
---|---|---|
committer | stevel@tonic-gate <none@none> | 2005-06-14 00:00:00 -0700 |
commit | 7c478bd95313f5f23a4c958a745db2134aa03244 (patch) | |
tree | c871e58545497667cbb4b0a4f2daf204743e1fe7 /usr/src/uts/common/sys/tpicommon.h | |
download | illumos-joyent-7c478bd95313f5f23a4c958a745db2134aa03244.tar.gz |
OpenSolaris Launch
Diffstat (limited to 'usr/src/uts/common/sys/tpicommon.h')
-rw-r--r-- | usr/src/uts/common/sys/tpicommon.h | 199 |
1 files changed, 199 insertions, 0 deletions
diff --git a/usr/src/uts/common/sys/tpicommon.h b/usr/src/uts/common/sys/tpicommon.h new file mode 100644 index 0000000000..c0eede6865 --- /dev/null +++ b/usr/src/uts/common/sys/tpicommon.h @@ -0,0 +1,199 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License, Version 1.0 only + * (the "License"). You may not use this file except in compliance + * with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2003 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _SYS_TPICOMMON_H +#define _SYS_TPICOMMON_H + +#pragma ident "%Z%%M% %I% %E% SMI" + +#include <sys/feature_tests.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * WARNING: This header should not ever be included directly by application + * programs. It exists so that common definitions can be included by other + * system header files which define a documented interface. The interfaces + * that share and expose the definitions in this file are: + * + * (1) TLI interface <tiuser.h> (which includes <sys/tiuser.h> which + * includes this file) + * (2) XTI interface <xti.h> + * (3) Kernel Streams TPI message based inteface <sys/tihdr.h> + */ + + +/* + * The following are "t_errno" error codes needed by both the kernel + * level transport providers and the user level interfaces. + */ + +#define TBADADDR 1 /* Incorrect address format */ +#define TBADOPT 2 /* Incorrect options format */ +#define TACCES 3 /* Illegal permissions */ +#define TBADF 4 /* Illegal file descriptor */ +#define TNOADDR 5 /* Couldn't allocate address */ +#define TOUTSTATE 6 /* Routine will place interface out of state */ +#define TBADSEQ 7 /* Illegal called/calling sequence number */ +#define TSYSERR 8 /* System error */ +#define TLOOK 9 /* An event requires attention */ +#define TBADDATA 10 /* Illegal amount of data */ +#define TBUFOVFLW 11 /* Buffer not large enough */ +#define TFLOW 12 /* Can't send message - (blocked) */ +#define TNODATA 13 /* No message currently available */ +#define TNODIS 14 /* Disconnect message not found */ +#define TNOUDERR 15 /* Unitdata error message not found */ +#define TBADFLAG 16 /* Incorrect flags specified */ +#define TNOREL 17 /* Orderly release message not found */ +#define TNOTSUPPORT 18 /* Primitive not supported by provider */ +#define TSTATECHNG 19 /* State is in process of changing */ +/* + * Following new error codes added to namespace with introduction of XTI + */ +#define TNOSTRUCTYPE 20 /* Unsupported structure type requested */ +#define TBADNAME 21 /* Invalid transport provider name */ +#define TBADQLEN 22 /* Listener queue length limit is zero */ +#define TADDRBUSY 23 /* Transport address is in use */ +#define TINDOUT 24 /* Outstanding connection indications */ +#define TPROVMISMATCH 25 + /* Listener-acceptor transport provider mismatch */ + +#define TRESQLEN 26 +/* Connection acceptor has listen queue length limit greater than zero */ + +#define TRESADDR 27 +/* Connection acceptor-listener addresses not same but required by transport */ + +#define TQFULL 28 /* Incoming connection queue is full */ +#define TPROTO 29 /* Protocol error on transport primitive */ + +/* + * Service type defines - used with T_info_ack + */ +#define T_COTS 1 /* connection oriented transport service */ +#define T_COTS_ORD 2 /* connection oriented w/ orderly release */ +#define T_CLTS 3 /* connectionless transport service */ +/* + * NOT FOR PUBLIC USE, Solaris internal only. + * This value of nc_semantics is strictly for use of Remote Direct + * Memory Access provider interfaces in Solaris only and not for + * general use. Do not use this value for general purpose user or + * kernel programming. If used the behavior is undefined. + * This is a PRIVATE interface to be used by Solaris kRPC only. + */ +#define T_RDMA 4 /* rdma transport service */ + + +/* + * The following are the flag definitions needed by the + * user level library routines. + */ + +/* + * flags for option management request primitives + * Note: + * - This namespace is distinct from the namespace for data + * primitives. + * - Flags T_NEGOTIATE, T_CHECK, T_DEFAULT, T_CURRENT + * are associated with an option request + * - Flags T_SUCCESS, T_FAILURE, T_PARTSUCCESS, T_READONLY, + * T_NOTSUPPORT are associated with results of option request. + */ +#define T_NEGOTIATE 0x004 /* set opts request */ +#define T_CHECK 0x008 /* check opts request */ +#define T_DEFAULT 0x010 /* get default opts request */ +#define T_SUCCESS 0x020 /* successful result */ +#define T_FAILURE 0x040 /* failure result */ +#define T_CURRENT 0x080 /* get current options request */ +#define T_PARTSUCCESS 0x100 /* partial success result */ +#define T_READONLY 0x200 /* read-only result */ +#define T_NOTSUPPORT 0x400 /* not supported result */ + + +/* + * General purpose defines - used in multiple options context. + * They (T_YES and T_NO) need to be bitwise distinct from T_GARBAGE + * used with TCP level options by XTI for historical XTI specification + * reasons. + * (T_GARBAGE declared in <sys/xti_inet.h> included by <xti.h>). + */ +#define T_YES 1 +#define T_NO 0 + +/* + * Values used with struct T_info_ack fields + */ +#define T_INFINITE -1 +#define T_INVALID -2 + +/* + * Constants used with option management "name" or "value" fields. + */ + +/* + * XTI defined value reserved for stating 'unspecified' value used + * in some option namespaces. + */ +#define T_UNSPEC (~0-2) /* applicable to ulong_t, long, char */ + +/* + * XTI inspired option management defined an option name T_ALLOPT + * to imply all options of a certain level. + * No option name (for any level) should be defined with constant value of + * T_ALLOPT (0). + */ +#define T_ALLOPT 0 /* all options at any level */ + +/* + * An option specification consists of an opthdr, followed by the value of + * the option. An options buffer contains one or more options. The len + * field of opthdr specifies the length of the option value in bytes. This + * length must be a multiple of sizeof (t_scalar_t) (use OPTLEN macro). + * This is an antique definition which is used (unofficially) by TLI but + * superceded in XTI. + */ +/* + * The opthdr types are now t_uscalar_t - inspired by XTI + */ +#if !defined(_XPG4_2) || defined(__EXTENSIONS__) +struct opthdr { + t_uscalar_t level; /* protocol level affected */ + t_uscalar_t name; /* option to modify */ + t_uscalar_t len; /* length of option value */ +}; + +#define OPTLEN(x) ((((x) + sizeof (t_uscalar_t) - 1) / \ + sizeof (t_uscalar_t)) * sizeof (t_uscalar_t)) +#define OPTVAL(opt) ((char *)(opt + 1)) +#endif /* !defined(_XPG4_2) || defined(__EXTENSIONS__) */ + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_TPICOMMON_H */ |