1 /* 2 * Copyright (c) 2004-2007 Voltaire, Inc. All rights reserved. 3 * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved. 4 * Copyright (c) 1996-2003 Intel Corporation. All rights reserved. 5 * 6 * This software is available to you under a choice of one of two 7 * licenses. You may choose to be licensed under the terms of the GNU 8 * General Public License (GPL) Version 2, available from the file 9 * COPYING in the main directory of this source tree, or the 10 * OpenIB.org BSD license below: 11 * 12 * Redistribution and use in source and binary forms, with or 13 * without modification, are permitted provided that the following 14 * conditions are met: 15 * 16 * - Redistributions of source code must retain the above 17 * copyright notice, this list of conditions and the following 18 * disclaimer. 19 * 20 * - Redistributions in binary form must reproduce the above 21 * copyright notice, this list of conditions and the following 22 * disclaimer in the documentation and/or other materials 23 * provided with the distribution. 24 * 25 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 26 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 27 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 28 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 29 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 30 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 31 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 32 * SOFTWARE. 33 * 34 */ 35 36 #ifndef _OSM_SVCR_H_ 37 #define _OSM_SVCR_H_ 38 39 /* 40 * Abstract: 41 * Declaration of osm_service_rec_t. 42 * This object represents an IBA Service Record. 43 * This object is part of the OpenSM family of objects. 44 */ 45 46 #include <iba/ib_types.h> 47 #include <complib/cl_qmap.h> 48 #include <complib/cl_spinlock.h> 49 #include <opensm/osm_subnet.h> 50 #include <opensm/osm_log.h> 51 52 #ifdef __cplusplus 53 # define BEGIN_C_DECLS extern "C" { 54 # define END_C_DECLS } 55 #else /* !__cplusplus */ 56 # define BEGIN_C_DECLS 57 # define END_C_DECLS 58 #endif /* __cplusplus */ 59 60 BEGIN_C_DECLS 61 /****h* OpenSM/Service Record 62 * NAME 63 * Service Record 64 * 65 * DESCRIPTION 66 * The service record encapsulates the information needed by the 67 * SA to manage service registrations. 68 * 69 * The service records is not thread safe, thus callers must provide 70 * serialization. 71 * 72 * This object should be treated as opaque and should be 73 * manipulated only through the provided functions. 74 * 75 * AUTHOR 76 * Anil S Keshavamurthy, Intel 77 * 78 *********/ 79 /****s* OpenSM: Service Record/osm_svcr_t 80 * NAME 81 * osm_svcr_t 82 * 83 * DESCRIPTION 84 * Service Record structure. 85 * 86 * The osm_svcr_t object should be treated as opaque and should 87 * be manipulated only through the provided functions. 88 * 89 * SYNOPSIS 90 */ 91 typedef struct osm_svcr { 92 cl_list_item_t list_item; 93 ib_service_record_t service_record; 94 uint32_t modified_time; 95 uint32_t lease_period; 96 } osm_svcr_t; 97 /* 98 * FIELDS 99 * map_item 100 * Map Item for qmap linkage. Must be first element!! 101 * 102 * svc_rec 103 * IB Service record structure 104 * 105 * modified_time 106 * Last modified time of this record in milliseconds 107 * 108 * lease_period 109 * Remaining lease period for this record 110 * 111 * 112 * SEE ALSO 113 *********/ 114 115 /****f* OpenSM: Service Record/osm_svcr_new 116 * NAME 117 * osm_svcr_new 118 * 119 * DESCRIPTION 120 * Allocates and initializes a Service Record for use. 121 * 122 * SYNOPSIS 123 */ 124 osm_svcr_t *osm_svcr_new(IN const ib_service_record_t * p_svc_rec); 125 /* 126 * PARAMETERS 127 * p_svc_rec 128 * [in] Pointer to IB Service Record 129 * 130 * RETURN VALUES 131 * pointer to osm_svcr_t structure. 132 * 133 * NOTES 134 * Allows calling other service record methods. 135 * 136 * SEE ALSO 137 * Service Record, osm_svcr_delete 138 *********/ 139 140 /****f* OpenSM: Service Record/osm_svcr_init 141 * NAME 142 * osm_svcr_init 143 * 144 * DESCRIPTION 145 * Initializes the osm_svcr_t structure. 146 * 147 * SYNOPSIS 148 */ 149 void 150 osm_svcr_init(IN osm_svcr_t * const p_svcr, 151 IN const ib_service_record_t * p_svc_rec); 152 /* 153 * PARAMETERS 154 * p_svc_rec 155 * [in] Pointer to osm_svcr_t structure 156 * p_svc_rec 157 * [in] Pointer to the ib_service_record_t 158 * 159 * SEE ALSO 160 * Service Record 161 *********/ 162 163 /****f* OpenSM: Service Record/osm_svcr_delete 164 * NAME 165 * osm_svcr_delete 166 * 167 * DESCRIPTION 168 * Deallocates the osm_svcr_t structure. 169 * 170 * SYNOPSIS 171 */ 172 void osm_svcr_delete(IN osm_svcr_t * const p_svcr); 173 /* 174 * PARAMETERS 175 * p_svc_rec 176 * [in] Pointer to osm_svcr_t structure 177 * 178 * SEE ALSO 179 * Service Record, osm_svcr_new 180 *********/ 181 182 osm_svcr_t *osm_svcr_get_by_rid(IN osm_subn_t const *p_subn, 183 IN osm_log_t * p_log, 184 IN ib_service_record_t * const p_svc_rec); 185 186 void 187 osm_svcr_insert_to_db(IN osm_subn_t * p_subn, 188 IN osm_log_t * p_log, IN osm_svcr_t * p_svcr); 189 void 190 osm_svcr_remove_from_db(IN osm_subn_t * p_subn, 191 IN osm_log_t * p_log, IN osm_svcr_t * p_svcr); 192 193 END_C_DECLS 194 #endif /* _OSM_SVCR_H_ */ 195