1*7836SJohn.Forte@Sun.COM /* 2*7836SJohn.Forte@Sun.COM * CDDL HEADER START 3*7836SJohn.Forte@Sun.COM * 4*7836SJohn.Forte@Sun.COM * The contents of this file are subject to the terms of the 5*7836SJohn.Forte@Sun.COM * Common Development and Distribution License (the "License"). 6*7836SJohn.Forte@Sun.COM * You may not use this file except in compliance with the License. 7*7836SJohn.Forte@Sun.COM * 8*7836SJohn.Forte@Sun.COM * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*7836SJohn.Forte@Sun.COM * or http://www.opensolaris.org/os/licensing. 10*7836SJohn.Forte@Sun.COM * See the License for the specific language governing permissions 11*7836SJohn.Forte@Sun.COM * and limitations under the License. 12*7836SJohn.Forte@Sun.COM * 13*7836SJohn.Forte@Sun.COM * When distributing Covered Code, include this CDDL HEADER in each 14*7836SJohn.Forte@Sun.COM * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*7836SJohn.Forte@Sun.COM * If applicable, add the following below this CDDL HEADER, with the 16*7836SJohn.Forte@Sun.COM * fields enclosed by brackets "[]" replaced with your own identifying 17*7836SJohn.Forte@Sun.COM * information: Portions Copyright [yyyy] [name of copyright owner] 18*7836SJohn.Forte@Sun.COM * 19*7836SJohn.Forte@Sun.COM * CDDL HEADER END 20*7836SJohn.Forte@Sun.COM */ 21*7836SJohn.Forte@Sun.COM 22*7836SJohn.Forte@Sun.COM /* 23*7836SJohn.Forte@Sun.COM * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 24*7836SJohn.Forte@Sun.COM * Use is subject to license terms. 25*7836SJohn.Forte@Sun.COM */ 26*7836SJohn.Forte@Sun.COM 27*7836SJohn.Forte@Sun.COM #ifndef _ISNS_QRY_H 28*7836SJohn.Forte@Sun.COM #define _ISNS_QRY_H 29*7836SJohn.Forte@Sun.COM 30*7836SJohn.Forte@Sun.COM #ifdef __cplusplus 31*7836SJohn.Forte@Sun.COM extern "C" { 32*7836SJohn.Forte@Sun.COM #endif 33*7836SJohn.Forte@Sun.COM 34*7836SJohn.Forte@Sun.COM #define TLV2TYPE(TLV) \ 35*7836SJohn.Forte@Sun.COM (TLV)->attr_id >= FIRST_TAG_DD ? OBJ_DD : \ 36*7836SJohn.Forte@Sun.COM (TLV)->attr_id >= FIRST_TAG_DDS ? OBJ_DDS : \ 37*7836SJohn.Forte@Sun.COM (TLV)->attr_id >= FIRST_TAG_PG ? OBJ_PG : \ 38*7836SJohn.Forte@Sun.COM (TLV)->attr_id >= FIRST_TAG_ISCSI ? OBJ_ISCSI : \ 39*7836SJohn.Forte@Sun.COM (TLV)->attr_id >= FIRST_TAG_PORTAL ? OBJ_PORTAL : \ 40*7836SJohn.Forte@Sun.COM (TLV)->attr_id >= FIRST_TAG_ENTITY ? OBJ_ENTITY : 0; 41*7836SJohn.Forte@Sun.COM 42*7836SJohn.Forte@Sun.COM #define FOR_EACH_OBJS(IDS, NUM, UID, STMT) \ 43*7836SJohn.Forte@Sun.COM {\ 44*7836SJohn.Forte@Sun.COM uint32_t i1609 = 0;\ 45*7836SJohn.Forte@Sun.COM while (i1609 < (NUM)) {\ 46*7836SJohn.Forte@Sun.COM UID = (IDS)[i1609];\ 47*7836SJohn.Forte@Sun.COM STMT\ 48*7836SJohn.Forte@Sun.COM i1609 ++;\ 49*7836SJohn.Forte@Sun.COM }\ 50*7836SJohn.Forte@Sun.COM } 51*7836SJohn.Forte@Sun.COM 52*7836SJohn.Forte@Sun.COM #define NEXT_OP(OP, OP_LEN, OP_TYPE) \ 53*7836SJohn.Forte@Sun.COM do {\ 54*7836SJohn.Forte@Sun.COM NEXT_TLV((OP), (OP_LEN));\ 55*7836SJohn.Forte@Sun.COM } while ((OP_LEN) >= 8 &&\ 56*7836SJohn.Forte@Sun.COM (OP)->attr_id >= TAG_RANGE[OP_TYPE][0] &&\ 57*7836SJohn.Forte@Sun.COM (OP)->attr_id <= TAG_RANGE[OP_TYPE][2]); 58*7836SJohn.Forte@Sun.COM 59*7836SJohn.Forte@Sun.COM #define FOR_EACH_OP(OP, OP_LEN, OP_TYPE, STMT) \ 60*7836SJohn.Forte@Sun.COM {\ 61*7836SJohn.Forte@Sun.COM while ((OP_LEN) >= 8) {\ 62*7836SJohn.Forte@Sun.COM OP_TYPE = TLV2TYPE(OP);\ 63*7836SJohn.Forte@Sun.COM STMT\ 64*7836SJohn.Forte@Sun.COM NEXT_OP((OP), (OP_LEN), (OP_TYPE));\ 65*7836SJohn.Forte@Sun.COM }\ 66*7836SJohn.Forte@Sun.COM } 67*7836SJohn.Forte@Sun.COM 68*7836SJohn.Forte@Sun.COM int validate_qry_key(isns_type_t, isns_tlv_t *, uint16_t, 69*7836SJohn.Forte@Sun.COM isns_attr_t *); 70*7836SJohn.Forte@Sun.COM int get_qry_keys(bmp_t *, uint32_t, isns_type_t *, 71*7836SJohn.Forte@Sun.COM isns_tlv_t *, uint16_t, uint32_t **, uint32_t *); 72*7836SJohn.Forte@Sun.COM int get_qry_ops(uint32_t, isns_type_t, 73*7836SJohn.Forte@Sun.COM isns_type_t, uint32_t **, uint32_t *, uint32_t *); 74*7836SJohn.Forte@Sun.COM int get_qry_ops2(uint32_t *, uint32_t, isns_type_t, 75*7836SJohn.Forte@Sun.COM uint32_t **, uint32_t *, uint32_t *); 76*7836SJohn.Forte@Sun.COM int get_qry_attrs(uint32_t, isns_type_t, isns_tlv_t *, 77*7836SJohn.Forte@Sun.COM uint16_t, conn_arg_t *); 78*7836SJohn.Forte@Sun.COM int get_qry_attrs1(uint32_t, isns_type_t, isns_tlv_t *, 79*7836SJohn.Forte@Sun.COM uint16_t, conn_arg_t *); 80*7836SJohn.Forte@Sun.COM uint32_t get_next_obj(isns_tlv_t *, uint32_t, isns_type_t, 81*7836SJohn.Forte@Sun.COM uint32_t *, uint32_t); 82*7836SJohn.Forte@Sun.COM 83*7836SJohn.Forte@Sun.COM #ifdef __cplusplus 84*7836SJohn.Forte@Sun.COM } 85*7836SJohn.Forte@Sun.COM #endif 86*7836SJohn.Forte@Sun.COM 87*7836SJohn.Forte@Sun.COM #endif /* _ISNS_QRY_H */ 88