1a6d42e7dSPeter Dunlap /* 2a6d42e7dSPeter Dunlap * CDDL HEADER START 3a6d42e7dSPeter Dunlap * 4a6d42e7dSPeter Dunlap * The contents of this file are subject to the terms of the 5a6d42e7dSPeter Dunlap * Common Development and Distribution License (the "License"). 6a6d42e7dSPeter Dunlap * You may not use this file except in compliance with the License. 7a6d42e7dSPeter Dunlap * 8a6d42e7dSPeter Dunlap * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9a6d42e7dSPeter Dunlap * or http://www.opensolaris.org/os/licensing. 10a6d42e7dSPeter Dunlap * See the License for the specific language governing permissions 11a6d42e7dSPeter Dunlap * and limitations under the License. 12a6d42e7dSPeter Dunlap * 13a6d42e7dSPeter Dunlap * When distributing Covered Code, include this CDDL HEADER in each 14a6d42e7dSPeter Dunlap * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15a6d42e7dSPeter Dunlap * If applicable, add the following below this CDDL HEADER, with the 16a6d42e7dSPeter Dunlap * fields enclosed by brackets "[]" replaced with your own identifying 17a6d42e7dSPeter Dunlap * information: Portions Copyright [yyyy] [name of copyright owner] 18a6d42e7dSPeter Dunlap * 19a6d42e7dSPeter Dunlap * CDDL HEADER END 20a6d42e7dSPeter Dunlap */ 21a6d42e7dSPeter Dunlap /* 22*4558d122SViswanathan Kannappan * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. 23a6d42e7dSPeter Dunlap */ 24a6d42e7dSPeter Dunlap #ifndef _ISNS_CLIENT_H_ 25a6d42e7dSPeter Dunlap #define _ISNS_CLIENT_H_ 26a6d42e7dSPeter Dunlap 27*4558d122SViswanathan Kannappan #include "iscsit.h" 28a6d42e7dSPeter Dunlap 29a6d42e7dSPeter Dunlap /* 30a6d42e7dSPeter Dunlap * List of iSNS servers with which we register. 31a6d42e7dSPeter Dunlap */ 32a6d42e7dSPeter Dunlap 33a6d42e7dSPeter Dunlap typedef struct { 34a6d42e7dSPeter Dunlap int svr_retry_count; 35a6d42e7dSPeter Dunlap struct sockaddr_storage svr_sa; 36a6d42e7dSPeter Dunlap clock_t svr_last_msg; 37a6d42e7dSPeter Dunlap list_node_t svr_ln; 38bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States uint32_t svr_registered:1, 39bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States svr_reset_needed:1, 40bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States svr_delete_needed:1, 41fada6495SPeter Cudhea - Sun Microsystems - Burlington, MA United States svr_targets_changed:1, 42fada6495SPeter Cudhea - Sun Microsystems - Burlington, MA United States svr_monitor_hold:1; 43bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States uint32_t svr_last_target_index; 44e42a0851Speter dunlap uint32_t svr_esi_interval; 45bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States avl_tree_t svr_target_list; 46a6d42e7dSPeter Dunlap } iscsit_isns_svr_t; 47a6d42e7dSPeter Dunlap 48a6d42e7dSPeter Dunlap /* 49a6d42e7dSPeter Dunlap * Type of registration to perform (deregister, register, update) 50a6d42e7dSPeter Dunlap */ 51a6d42e7dSPeter Dunlap typedef enum { 52a6d42e7dSPeter Dunlap ISNS_DEREGISTER_TARGET = 0, 53a6d42e7dSPeter Dunlap ISNS_DEREGISTER_ALL, 54a6d42e7dSPeter Dunlap ISNS_REGISTER_TARGET, 55a6d42e7dSPeter Dunlap ISNS_REGISTER_ALL, 56bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States ISNS_MODIFY_TARGET 57a6d42e7dSPeter Dunlap } isns_reg_type_t; 58a6d42e7dSPeter Dunlap 59a6d42e7dSPeter Dunlap /* 60a6d42e7dSPeter Dunlap * This structure is used to keep state with regard to the RX threads used 61bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States * for ESI. 62a6d42e7dSPeter Dunlap */ 63a6d42e7dSPeter Dunlap 64a6d42e7dSPeter Dunlap 65a6d42e7dSPeter Dunlap typedef struct { 66a6d42e7dSPeter Dunlap kthread_t *esi_thread; 67a6d42e7dSPeter Dunlap kt_did_t esi_thread_did; 680f1702c5SYu Xiangning ksocket_t esi_so; 69e42a0851Speter dunlap kmutex_t esi_mutex; 70e42a0851Speter dunlap kcondvar_t esi_cv; 71a6d42e7dSPeter Dunlap uint16_t esi_port; 72e42a0851Speter dunlap boolean_t esi_enabled; 73e42a0851Speter dunlap boolean_t esi_valid; 74a6d42e7dSPeter Dunlap boolean_t esi_thread_running; 75a6d42e7dSPeter Dunlap } isns_esi_tinfo_t; 76a6d42e7dSPeter Dunlap 77e42a0851Speter dunlap 78a6d42e7dSPeter Dunlap /* 79bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States * Portal list - both default portals from idm_get_ipaddr and portals 80bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States * defined in target port groups. 81a6d42e7dSPeter Dunlap */ 82a6d42e7dSPeter Dunlap 83bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States typedef struct isns_portal_s { 84a6d42e7dSPeter Dunlap struct sockaddr_storage portal_addr; 85bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States avl_node_t portal_node; 86e42a0851Speter dunlap timespec_t portal_esi_timestamp; 87bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States iscsit_portal_t *portal_iscsit; /* if in TPG */ 88bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States boolean_t portal_default; /* if in default */ 89bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States } isns_portal_t; 90a6d42e7dSPeter Dunlap 91bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States 92bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States typedef struct isns_tpgt_addr_s { 93bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States list_node_t portal_ln; 94bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States struct sockaddr_storage portal_addr; 95bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States } isns_tpgt_addr_t; 96bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States 97bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States typedef struct isns_tpgt_s { 98bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States list_node_t ti_tpgt_ln; 99bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States uint16_t ti_tpgt_tag; 100bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States list_t ti_portal_list; 101bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States } isns_tpgt_t; 102bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States 103bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States typedef struct isns_target_info_s { 104bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States idm_refcnt_t ti_refcnt; 105bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States char ti_tgt_name[MAX_ISCSI_NODENAMELEN]; 106bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States char ti_tgt_alias[MAX_ISCSI_NODENAMELEN]; 107bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States list_t ti_tpgt_list; 108bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States } isns_target_info_t; 109bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States 110bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States /* Contents of isns_target_list and svr->svr_target_list */ 111a6d42e7dSPeter Dunlap typedef struct isns_target_s { 112a6d42e7dSPeter Dunlap iscsit_tgt_t *target; 113a6d42e7dSPeter Dunlap avl_node_t target_node; 114a6d42e7dSPeter Dunlap boolean_t target_registered; 115bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States boolean_t target_update_needed; 116bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States boolean_t target_delete_needed; 117bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States isns_target_info_t *target_info; 118a6d42e7dSPeter Dunlap } isns_target_t; 119a6d42e7dSPeter Dunlap 120a6d42e7dSPeter Dunlap /* 121a6d42e7dSPeter Dunlap * If no ESI request is received within this number of intervals, we'll 122a6d42e7dSPeter Dunlap * try to re-register with the server. 123a6d42e7dSPeter Dunlap */ 124bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States #define MAX_ESI_INTERVALS 3 125bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States 126bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States /* 127bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States * Interval to ask the server to send us ESI probes, in seconds. 128bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States */ 129bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States #define ISNS_DEFAULT_ESI_INTERVAL 20 130bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States 131bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States /* 132bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States * Registration Period (when not using ESI), in seconds. (15 min) 133bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States */ 134bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States #define ISNS_DEFAULT_REGISTRATION_PERIOD 900 135bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States 136bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States /* 137bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States * Initial delay before sending first DevAttrReg message. 138bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States */ 139bdbe8dc6SPeter Cudhea - Sun Microsystems - Burlington, MA United States #define ISNS_INITIAL_DELAY 5 140a6d42e7dSPeter Dunlap 141a6d42e7dSPeter Dunlap it_cfg_status_t 142a6d42e7dSPeter Dunlap isnst_config_merge(it_config_t *cfg); 143a6d42e7dSPeter Dunlap 144a6d42e7dSPeter Dunlap int iscsit_isns_init(iscsit_hostinfo_t *hostinfo); 145a6d42e7dSPeter Dunlap void iscsit_isns_fini(); 146a6d42e7dSPeter Dunlap int iscsit_isns_register(iscsit_tgt_t *target); 147a6d42e7dSPeter Dunlap int iscsit_isns_deregister(iscsit_tgt_t *target); 148a6d42e7dSPeter Dunlap void iscsit_isns_target_update(iscsit_tgt_t *target); 149a6d42e7dSPeter Dunlap void iscsit_isns_portal_online(iscsit_portal_t *portal); 150a6d42e7dSPeter Dunlap void iscsit_isns_portal_offline(iscsit_portal_t *portal); 151a6d42e7dSPeter Dunlap 152a6d42e7dSPeter Dunlap #endif /* _ISNS_CLIENT_H_ */ 153