xref: /onnv-gate/usr/src/uts/common/sys/idm/idm_text.h (revision 8872:16322ca7ce0d)
17978SPeter.Dunlap@Sun.COM /*
27978SPeter.Dunlap@Sun.COM  * CDDL HEADER START
37978SPeter.Dunlap@Sun.COM  *
47978SPeter.Dunlap@Sun.COM  * The contents of this file are subject to the terms of the
57978SPeter.Dunlap@Sun.COM  * Common Development and Distribution License (the "License").
67978SPeter.Dunlap@Sun.COM  * You may not use this file except in compliance with the License.
77978SPeter.Dunlap@Sun.COM  *
87978SPeter.Dunlap@Sun.COM  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97978SPeter.Dunlap@Sun.COM  * or http://www.opensolaris.org/os/licensing.
107978SPeter.Dunlap@Sun.COM  * See the License for the specific language governing permissions
117978SPeter.Dunlap@Sun.COM  * and limitations under the License.
127978SPeter.Dunlap@Sun.COM  *
137978SPeter.Dunlap@Sun.COM  * When distributing Covered Code, include this CDDL HEADER in each
147978SPeter.Dunlap@Sun.COM  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157978SPeter.Dunlap@Sun.COM  * If applicable, add the following below this CDDL HEADER, with the
167978SPeter.Dunlap@Sun.COM  * fields enclosed by brackets "[]" replaced with your own identifying
177978SPeter.Dunlap@Sun.COM  * information: Portions Copyright [yyyy] [name of copyright owner]
187978SPeter.Dunlap@Sun.COM  *
197978SPeter.Dunlap@Sun.COM  * CDDL HEADER END
207978SPeter.Dunlap@Sun.COM  */
217978SPeter.Dunlap@Sun.COM /*
22*8872SJordan.Vaughan@Sun.com  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
237978SPeter.Dunlap@Sun.COM  * Use is subject to license terms.
247978SPeter.Dunlap@Sun.COM  */
257978SPeter.Dunlap@Sun.COM #ifndef _IDM_TEXT_H_
267978SPeter.Dunlap@Sun.COM #define	_IDM_TEXT_H_
277978SPeter.Dunlap@Sun.COM 
287978SPeter.Dunlap@Sun.COM #ifdef	__cplusplus
297978SPeter.Dunlap@Sun.COM extern "C" {
307978SPeter.Dunlap@Sun.COM #endif
317978SPeter.Dunlap@Sun.COM 
327978SPeter.Dunlap@Sun.COM #include <sys/idm/idm_impl.h>
337978SPeter.Dunlap@Sun.COM 
347978SPeter.Dunlap@Sun.COM /*
357978SPeter.Dunlap@Sun.COM  * Numerical identifiers for iSCSI name-value pair keys (just so that
367978SPeter.Dunlap@Sun.COM  * we can use case statements to handle a particular key-value pair
377978SPeter.Dunlap@Sun.COM  * after we find it in idm_kvpair_xlate).
387978SPeter.Dunlap@Sun.COM  *
397978SPeter.Dunlap@Sun.COM  * We want to use a bitmask to keep track of negotiated key-value pairs
407978SPeter.Dunlap@Sun.COM  * so keep this enum under 64 values -- or spend some time reworking the
417978SPeter.Dunlap@Sun.COM  * login code.
427978SPeter.Dunlap@Sun.COM  */
437978SPeter.Dunlap@Sun.COM typedef enum {
447978SPeter.Dunlap@Sun.COM 	KI_AUTH_METHOD = 1,
457978SPeter.Dunlap@Sun.COM 	KI_KRB_AP_REQ,
467978SPeter.Dunlap@Sun.COM 	KI_KRB_AP_REP,
477978SPeter.Dunlap@Sun.COM 
487978SPeter.Dunlap@Sun.COM 	/* SPKM */
497978SPeter.Dunlap@Sun.COM 	KI_SPKM_REQ,
507978SPeter.Dunlap@Sun.COM 	KI_SPKM_ERROR,
517978SPeter.Dunlap@Sun.COM 	KI_SPKM_REP_TI,
527978SPeter.Dunlap@Sun.COM 	KI_SPKM_REP_IT,
537978SPeter.Dunlap@Sun.COM 
547978SPeter.Dunlap@Sun.COM 	/*
557978SPeter.Dunlap@Sun.COM 	 * SRP
567978SPeter.Dunlap@Sun.COM 	 */
577978SPeter.Dunlap@Sun.COM 	KI_SRP_U,
587978SPeter.Dunlap@Sun.COM 	KI_TARGET_AUTH,
597978SPeter.Dunlap@Sun.COM 	KI_SRP_GROUP,
607978SPeter.Dunlap@Sun.COM 	KI_SRP_A,
617978SPeter.Dunlap@Sun.COM 	KI_SRP_B,
627978SPeter.Dunlap@Sun.COM 	KI_SRP_M,
637978SPeter.Dunlap@Sun.COM 	KI_SRM_HM,
647978SPeter.Dunlap@Sun.COM 
657978SPeter.Dunlap@Sun.COM 	/*
667978SPeter.Dunlap@Sun.COM 	 * CHAP
677978SPeter.Dunlap@Sun.COM 	 */
687978SPeter.Dunlap@Sun.COM 	KI_CHAP_A,
697978SPeter.Dunlap@Sun.COM 	KI_CHAP_I,
707978SPeter.Dunlap@Sun.COM 	KI_CHAP_C,
717978SPeter.Dunlap@Sun.COM 	KI_CHAP_N,
727978SPeter.Dunlap@Sun.COM 	KI_CHAP_R,
737978SPeter.Dunlap@Sun.COM 
747978SPeter.Dunlap@Sun.COM 
757978SPeter.Dunlap@Sun.COM 	/*
767978SPeter.Dunlap@Sun.COM 	 * ISCSI Operational Parameter Keys
777978SPeter.Dunlap@Sun.COM 	 */
787978SPeter.Dunlap@Sun.COM 	KI_HEADER_DIGEST,
797978SPeter.Dunlap@Sun.COM 	KI_DATA_DIGEST,
807978SPeter.Dunlap@Sun.COM 	KI_MAX_CONNECTIONS,
817978SPeter.Dunlap@Sun.COM 	KI_SEND_TARGETS,
827978SPeter.Dunlap@Sun.COM 	KI_TARGET_NAME,
837978SPeter.Dunlap@Sun.COM 	KI_INITIATOR_NAME,
847978SPeter.Dunlap@Sun.COM 	KI_TARGET_ALIAS,
857978SPeter.Dunlap@Sun.COM 	KI_INITIATOR_ALIAS,
867978SPeter.Dunlap@Sun.COM 	KI_TARGET_ADDRESS,
877978SPeter.Dunlap@Sun.COM 	KI_TARGET_PORTAL_GROUP_TAG,
887978SPeter.Dunlap@Sun.COM 	KI_INITIAL_R2T,
897978SPeter.Dunlap@Sun.COM 	KI_IMMEDIATE_DATA,
907978SPeter.Dunlap@Sun.COM 	KI_MAX_RECV_DATA_SEGMENT_LENGTH,
917978SPeter.Dunlap@Sun.COM 	KI_MAX_BURST_LENGTH,
927978SPeter.Dunlap@Sun.COM 	KI_FIRST_BURST_LENGTH,
937978SPeter.Dunlap@Sun.COM 	KI_DEFAULT_TIME_2_WAIT,
947978SPeter.Dunlap@Sun.COM 	KI_DEFAULT_TIME_2_RETAIN,
957978SPeter.Dunlap@Sun.COM 	KI_MAX_OUTSTANDING_R2T,
967978SPeter.Dunlap@Sun.COM 	KI_DATA_PDU_IN_ORDER,
977978SPeter.Dunlap@Sun.COM 	KI_DATA_SEQUENCE_IN_ORDER,
987978SPeter.Dunlap@Sun.COM 	KI_ERROR_RECOVERY_LEVEL,
997978SPeter.Dunlap@Sun.COM 	KI_SESSION_TYPE,
1007978SPeter.Dunlap@Sun.COM 	KI_OFMARKER,
1017978SPeter.Dunlap@Sun.COM 	KI_OFMARKERINT,
1027978SPeter.Dunlap@Sun.COM 	KI_IFMARKER,
1037978SPeter.Dunlap@Sun.COM 	KI_IFMARKERINT,
1047978SPeter.Dunlap@Sun.COM 
1057978SPeter.Dunlap@Sun.COM 	/*
1067978SPeter.Dunlap@Sun.COM 	 * iSER-specific keys
1077978SPeter.Dunlap@Sun.COM 	 */
1087978SPeter.Dunlap@Sun.COM 	KI_RDMA_EXTENSIONS,
1097978SPeter.Dunlap@Sun.COM 	KI_TARGET_RECV_DATA_SEGMENT_LENGTH,
1107978SPeter.Dunlap@Sun.COM 	KI_INITIATOR_RECV_DATA_SEGMENT_LENGTH,
1117978SPeter.Dunlap@Sun.COM 	KI_MAX_OUTSTANDING_UNEXPECTED_PDUS,
1127978SPeter.Dunlap@Sun.COM 
1137978SPeter.Dunlap@Sun.COM 	/*
1147978SPeter.Dunlap@Sun.COM 	 * End of list marker, no keys below here.
1157978SPeter.Dunlap@Sun.COM 	 */
1167978SPeter.Dunlap@Sun.COM 	KI_MAX_KEY
1177978SPeter.Dunlap@Sun.COM } iscsikey_id_t;
1187978SPeter.Dunlap@Sun.COM 
1197978SPeter.Dunlap@Sun.COM /* Numerical types for iSCSI name-value pair values */
1207978SPeter.Dunlap@Sun.COM typedef enum {
1217978SPeter.Dunlap@Sun.COM 	KT_TEXT,
1227978SPeter.Dunlap@Sun.COM 	KT_ISCSI_NAME,
1237978SPeter.Dunlap@Sun.COM 	KT_ISCSI_LOCAL_NAME,
1247978SPeter.Dunlap@Sun.COM 	KT_BOOLEAN,
1257978SPeter.Dunlap@Sun.COM 	KT_NUMERICAL, /* Hex or decimal constant */
1267978SPeter.Dunlap@Sun.COM 	KT_LARGE_NUMERICAL, /* Hex, decimal or Base64 constant */
1277978SPeter.Dunlap@Sun.COM 	KT_NUMERIC_RANGE,
1287978SPeter.Dunlap@Sun.COM 	KT_REGULAR_BINARY, /* Hex, decimal, base64 not longer than 64 bits */
1297978SPeter.Dunlap@Sun.COM 	KT_LARGE_BINARY, /* Hex, decimal, base64 longer than 64 bites */
1307978SPeter.Dunlap@Sun.COM 	KT_BINARY,	/* Regular binary or large binary */
1317978SPeter.Dunlap@Sun.COM 	KT_SIMPLE,
1327978SPeter.Dunlap@Sun.COM 	KT_LIST_OF_VALUES
1337978SPeter.Dunlap@Sun.COM } idmkey_type_t;
1347978SPeter.Dunlap@Sun.COM 
1357978SPeter.Dunlap@Sun.COM typedef struct {
1367978SPeter.Dunlap@Sun.COM 	iscsikey_id_t		ik_key_id;
1377978SPeter.Dunlap@Sun.COM 	char			*ik_key_name;
1387978SPeter.Dunlap@Sun.COM 	idmkey_type_t		ik_idm_type; /* RFC type */
1397978SPeter.Dunlap@Sun.COM 	boolean_t		ik_declarative;
1407978SPeter.Dunlap@Sun.COM } idm_kv_xlate_t;
1417978SPeter.Dunlap@Sun.COM 
1427978SPeter.Dunlap@Sun.COM const idm_kv_xlate_t *
1437978SPeter.Dunlap@Sun.COM idm_lookup_kv_xlate(const char *key, int keylen);
1447978SPeter.Dunlap@Sun.COM 
1457978SPeter.Dunlap@Sun.COM int
1467978SPeter.Dunlap@Sun.COM idm_nvlist_add_keyvalue(nvlist_t *nvl, char *key, int keylen, char *value);
1477978SPeter.Dunlap@Sun.COM 
1487978SPeter.Dunlap@Sun.COM int
1497978SPeter.Dunlap@Sun.COM idm_textbuf_to_nvlist(nvlist_t *nvl, char **textbuf, int *textbuflen);
1507978SPeter.Dunlap@Sun.COM 
1517978SPeter.Dunlap@Sun.COM int
1527978SPeter.Dunlap@Sun.COM idm_textbuf_to_firstfraglen(void *textbuf, int textbuflen);
1537978SPeter.Dunlap@Sun.COM 
1547978SPeter.Dunlap@Sun.COM int
1557978SPeter.Dunlap@Sun.COM idm_nvlist_to_textbuf(nvlist_t *nvl, char **textbuf, int *textbuflen,
1567978SPeter.Dunlap@Sun.COM     int *tblen_required);
1577978SPeter.Dunlap@Sun.COM 
1587978SPeter.Dunlap@Sun.COM kv_status_t
1597978SPeter.Dunlap@Sun.COM idm_nvstat_to_kvstat(int nvrc);
1607978SPeter.Dunlap@Sun.COM 
1617978SPeter.Dunlap@Sun.COM void
1627978SPeter.Dunlap@Sun.COM idm_kvstat_to_error(kv_status_t kvrc, uint8_t *class, uint8_t *detail);
1637978SPeter.Dunlap@Sun.COM 
1647978SPeter.Dunlap@Sun.COM int
1657978SPeter.Dunlap@Sun.COM idm_nvlist_add_id(nvlist_t *nvl, iscsikey_id_t kv_id, char *value);
1667978SPeter.Dunlap@Sun.COM 
1677978SPeter.Dunlap@Sun.COM nvpair_t *
1687978SPeter.Dunlap@Sun.COM idm_get_next_listvalue(nvpair_t *value_list, nvpair_t *curr_nvp);
1697978SPeter.Dunlap@Sun.COM 
1707978SPeter.Dunlap@Sun.COM char *
1717978SPeter.Dunlap@Sun.COM idm_id_to_name(iscsikey_id_t kv_id);
1727978SPeter.Dunlap@Sun.COM 
1737978SPeter.Dunlap@Sun.COM char *
1747978SPeter.Dunlap@Sun.COM idm_nvpair_value_to_textbuf(nvpair_t *nvp);
1757978SPeter.Dunlap@Sun.COM 
1767978SPeter.Dunlap@Sun.COM idm_status_t
1777978SPeter.Dunlap@Sun.COM idm_pdu_list_to_nvlist(list_t *pdu_list, nvlist_t **nvlist,
1787978SPeter.Dunlap@Sun.COM     uint8_t *error_detail);
1797978SPeter.Dunlap@Sun.COM 
1807978SPeter.Dunlap@Sun.COM void *
1817978SPeter.Dunlap@Sun.COM idm_nvlist_to_itextbuf(nvlist_t *nvl);
1827978SPeter.Dunlap@Sun.COM 
1837978SPeter.Dunlap@Sun.COM char *
1847978SPeter.Dunlap@Sun.COM idm_pdu_init_text_data(idm_pdu_t *pdu, void *arg,
1857978SPeter.Dunlap@Sun.COM     int max_xfer_len, char *bufptr, int *transit);
1867978SPeter.Dunlap@Sun.COM 
1877978SPeter.Dunlap@Sun.COM void
1887978SPeter.Dunlap@Sun.COM idm_itextbuf_free(void *arg);
1897978SPeter.Dunlap@Sun.COM 
1907978SPeter.Dunlap@Sun.COM #ifdef	__cplusplus
1917978SPeter.Dunlap@Sun.COM }
1927978SPeter.Dunlap@Sun.COM #endif
1937978SPeter.Dunlap@Sun.COM 
1947978SPeter.Dunlap@Sun.COM #endif /* _IDM_TEXT_H_ */
195