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