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