1d6b92ffaSHans Petter Selasky /* 2d6b92ffaSHans Petter Selasky * Copyright (c) 2004-2009 Voltaire, Inc. All rights reserved. 3d6b92ffaSHans Petter Selasky * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved. 4d6b92ffaSHans Petter Selasky * Copyright (c) 1996-2003 Intel Corporation. All rights reserved. 5d6b92ffaSHans Petter Selasky * Copyright (c) 2013 Oracle and/or its affiliates. All rights reserved. 6d6b92ffaSHans Petter Selasky * 7d6b92ffaSHans Petter Selasky * This software is available to you under a choice of one of two 8d6b92ffaSHans Petter Selasky * licenses. You may choose to be licensed under the terms of the GNU 9d6b92ffaSHans Petter Selasky * General Public License (GPL) Version 2, available from the file 10d6b92ffaSHans Petter Selasky * COPYING in the main directory of this source tree, or the 11d6b92ffaSHans Petter Selasky * OpenIB.org BSD license below: 12d6b92ffaSHans Petter Selasky * 13d6b92ffaSHans Petter Selasky * Redistribution and use in source and binary forms, with or 14d6b92ffaSHans Petter Selasky * without modification, are permitted provided that the following 15d6b92ffaSHans Petter Selasky * conditions are met: 16d6b92ffaSHans Petter Selasky * 17d6b92ffaSHans Petter Selasky * - Redistributions of source code must retain the above 18d6b92ffaSHans Petter Selasky * copyright notice, this list of conditions and the following 19d6b92ffaSHans Petter Selasky * disclaimer. 20d6b92ffaSHans Petter Selasky * 21d6b92ffaSHans Petter Selasky * - Redistributions in binary form must reproduce the above 22d6b92ffaSHans Petter Selasky * copyright notice, this list of conditions and the following 23d6b92ffaSHans Petter Selasky * disclaimer in the documentation and/or other materials 24d6b92ffaSHans Petter Selasky * provided with the distribution. 25d6b92ffaSHans Petter Selasky * 26d6b92ffaSHans Petter Selasky * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 27d6b92ffaSHans Petter Selasky * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 28d6b92ffaSHans Petter Selasky * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 29d6b92ffaSHans Petter Selasky * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 30d6b92ffaSHans Petter Selasky * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 31d6b92ffaSHans Petter Selasky * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 32d6b92ffaSHans Petter Selasky * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 33d6b92ffaSHans Petter Selasky * SOFTWARE. 34d6b92ffaSHans Petter Selasky * 35d6b92ffaSHans Petter Selasky */ 36d6b92ffaSHans Petter Selasky 37d6b92ffaSHans Petter Selasky /* 38d6b92ffaSHans Petter Selasky * Abstract: 39d6b92ffaSHans Petter Selasky * Declaration of osm_inform_rec_t. 40d6b92ffaSHans Petter Selasky * This object represents an IBA Inform Record. 41d6b92ffaSHans Petter Selasky * This object is part of the OpenSM family of objects. 42d6b92ffaSHans Petter Selasky * 43d6b92ffaSHans Petter Selasky * Author: 44d6b92ffaSHans Petter Selasky * Eitan Zahavi, Mellanox 45d6b92ffaSHans Petter Selasky */ 46d6b92ffaSHans Petter Selasky 47d6b92ffaSHans Petter Selasky #ifndef _OSM_INFR_H_ 48d6b92ffaSHans Petter Selasky #define _OSM_INFR_H_ 49d6b92ffaSHans Petter Selasky 50d6b92ffaSHans Petter Selasky #include <iba/ib_types.h> 51d6b92ffaSHans Petter Selasky #include <complib/cl_qmap.h> 52d6b92ffaSHans Petter Selasky #include <complib/cl_spinlock.h> 53d6b92ffaSHans Petter Selasky #include <opensm/osm_subnet.h> 54d6b92ffaSHans Petter Selasky #include <opensm/osm_madw.h> 55d6b92ffaSHans Petter Selasky #include <opensm/osm_log.h> 56d6b92ffaSHans Petter Selasky #include <opensm/osm_sa.h> 57d6b92ffaSHans Petter Selasky 58d6b92ffaSHans Petter Selasky #ifdef __cplusplus 59d6b92ffaSHans Petter Selasky # define BEGIN_C_DECLS extern "C" { 60d6b92ffaSHans Petter Selasky # define END_C_DECLS } 61d6b92ffaSHans Petter Selasky #else /* !__cplusplus */ 62d6b92ffaSHans Petter Selasky # define BEGIN_C_DECLS 63d6b92ffaSHans Petter Selasky # define END_C_DECLS 64d6b92ffaSHans Petter Selasky #endif /* __cplusplus */ 65d6b92ffaSHans Petter Selasky 66d6b92ffaSHans Petter Selasky BEGIN_C_DECLS 67d6b92ffaSHans Petter Selasky /****h* OpenSM/Inform Record 68d6b92ffaSHans Petter Selasky * NAME 69d6b92ffaSHans Petter Selasky * Inform Record 70d6b92ffaSHans Petter Selasky * 71d6b92ffaSHans Petter Selasky * DESCRIPTION 72d6b92ffaSHans Petter Selasky * The Inform record encapsulates the information needed by the 73d6b92ffaSHans Petter Selasky * SA to manage InformInfo registrations and sending Reports(Notice) 74d6b92ffaSHans Petter Selasky * when SM receives Traps for registered LIDs. 75d6b92ffaSHans Petter Selasky * 76d6b92ffaSHans Petter Selasky * The inform records is not thread safe, thus callers must provide 77d6b92ffaSHans Petter Selasky * serialization. 78d6b92ffaSHans Petter Selasky * 79d6b92ffaSHans Petter Selasky * This object should be treated as opaque and should be 80d6b92ffaSHans Petter Selasky * manipulated only through the provided functions. 81d6b92ffaSHans Petter Selasky * 82d6b92ffaSHans Petter Selasky * AUTHOR 83d6b92ffaSHans Petter Selasky * Eitan Zahavi, Mellanox 84d6b92ffaSHans Petter Selasky * 85d6b92ffaSHans Petter Selasky *********/ 86d6b92ffaSHans Petter Selasky /****s* OpenSM: Inform Record/osm_infr_t 87d6b92ffaSHans Petter Selasky * NAME 88d6b92ffaSHans Petter Selasky * osm_infr_t 89d6b92ffaSHans Petter Selasky * 90d6b92ffaSHans Petter Selasky * DESCRIPTION 91d6b92ffaSHans Petter Selasky * Inform Record structure. 92d6b92ffaSHans Petter Selasky * 93d6b92ffaSHans Petter Selasky * The osm_infr_t object should be treated as opaque and should 94d6b92ffaSHans Petter Selasky * be manipulated only through the provided functions. 95d6b92ffaSHans Petter Selasky * 96d6b92ffaSHans Petter Selasky * SYNOPSIS 97d6b92ffaSHans Petter Selasky */ 98d6b92ffaSHans Petter Selasky typedef struct osm_infr { 99d6b92ffaSHans Petter Selasky cl_list_item_t list_item; 100d6b92ffaSHans Petter Selasky osm_bind_handle_t h_bind; 101d6b92ffaSHans Petter Selasky osm_sa_t *sa; 102d6b92ffaSHans Petter Selasky osm_mad_addr_t report_addr; 103d6b92ffaSHans Petter Selasky ib_inform_info_record_t inform_record; 104d6b92ffaSHans Petter Selasky } osm_infr_t; 105d6b92ffaSHans Petter Selasky /* 106d6b92ffaSHans Petter Selasky * FIELDS 107d6b92ffaSHans Petter Selasky * list_item 108d6b92ffaSHans Petter Selasky * List Item for qlist linkage. Must be first element!! 109d6b92ffaSHans Petter Selasky * 110d6b92ffaSHans Petter Selasky * h_bind 111d6b92ffaSHans Petter Selasky * A handle of lower level mad srvc 112d6b92ffaSHans Petter Selasky * 113d6b92ffaSHans Petter Selasky * sa 114d6b92ffaSHans Petter Selasky * A pointer to osm_sa object 115d6b92ffaSHans Petter Selasky * 116d6b92ffaSHans Petter Selasky * report_addr 117d6b92ffaSHans Petter Selasky * Report address 118d6b92ffaSHans Petter Selasky * 119d6b92ffaSHans Petter Selasky * inform_record 120d6b92ffaSHans Petter Selasky * The Inform Info Record 121d6b92ffaSHans Petter Selasky * 122d6b92ffaSHans Petter Selasky * SEE ALSO 123d6b92ffaSHans Petter Selasky *********/ 124d6b92ffaSHans Petter Selasky 125d6b92ffaSHans Petter Selasky /****f* OpenSM: Inform Record/osm_infr_new 126d6b92ffaSHans Petter Selasky * NAME 127d6b92ffaSHans Petter Selasky * osm_infr_new 128d6b92ffaSHans Petter Selasky * 129d6b92ffaSHans Petter Selasky * DESCRIPTION 130d6b92ffaSHans Petter Selasky * Allocates and initializes a Inform Record for use. 131d6b92ffaSHans Petter Selasky * 132d6b92ffaSHans Petter Selasky * SYNOPSIS 133d6b92ffaSHans Petter Selasky */ 134d6b92ffaSHans Petter Selasky osm_infr_t *osm_infr_new(IN const osm_infr_t * p_infr_rec); 135d6b92ffaSHans Petter Selasky /* 136d6b92ffaSHans Petter Selasky * PARAMETERS 137d6b92ffaSHans Petter Selasky * p_inf_rec 138d6b92ffaSHans Petter Selasky * [in] Pointer to IB Inform Record 139d6b92ffaSHans Petter Selasky * 140d6b92ffaSHans Petter Selasky * RETURN VALUES 141d6b92ffaSHans Petter Selasky * pointer to osm_infr_t structure. 142d6b92ffaSHans Petter Selasky * 143d6b92ffaSHans Petter Selasky * NOTES 144d6b92ffaSHans Petter Selasky * Allows calling other inform record methods. 145d6b92ffaSHans Petter Selasky * 146d6b92ffaSHans Petter Selasky * SEE ALSO 147d6b92ffaSHans Petter Selasky * Inform Record, osm_infr_delete 148d6b92ffaSHans Petter Selasky *********/ 149d6b92ffaSHans Petter Selasky 150d6b92ffaSHans Petter Selasky /****f* OpenSM: Inform Record/osm_infr_delete 151d6b92ffaSHans Petter Selasky * NAME 152d6b92ffaSHans Petter Selasky * osm_infr_delete 153d6b92ffaSHans Petter Selasky * 154d6b92ffaSHans Petter Selasky * DESCRIPTION 155d6b92ffaSHans Petter Selasky * Destroys and deallocates the osm_infr_t structure. 156d6b92ffaSHans Petter Selasky * 157d6b92ffaSHans Petter Selasky * SYNOPSIS 158d6b92ffaSHans Petter Selasky */ 159d6b92ffaSHans Petter Selasky void osm_infr_delete(IN osm_infr_t * p_infr); 160d6b92ffaSHans Petter Selasky /* 161d6b92ffaSHans Petter Selasky * PARAMETERS 162d6b92ffaSHans Petter Selasky * p_infr 163d6b92ffaSHans Petter Selasky * [in] Pointer to osm_infr_t structure 164d6b92ffaSHans Petter Selasky * 165d6b92ffaSHans Petter Selasky * SEE ALSO 166d6b92ffaSHans Petter Selasky * Inform Record, osm_infr_new 167d6b92ffaSHans Petter Selasky *********/ 168d6b92ffaSHans Petter Selasky 169d6b92ffaSHans Petter Selasky /****f* OpenSM: Inform Record/osm_infr_get_by_rec 170d6b92ffaSHans Petter Selasky * NAME 171d6b92ffaSHans Petter Selasky * osm_infr_get_by_rec 172d6b92ffaSHans Petter Selasky * 173d6b92ffaSHans Petter Selasky * DESCRIPTION 174d6b92ffaSHans Petter Selasky * Find a matching osm_infr_t in the subnet DB by inform_info_record 175d6b92ffaSHans Petter Selasky * 176d6b92ffaSHans Petter Selasky * SYNOPSIS 177d6b92ffaSHans Petter Selasky */ 178d6b92ffaSHans Petter Selasky osm_infr_t *osm_infr_get_by_rec(IN osm_subn_t const *p_subn, 179d6b92ffaSHans Petter Selasky IN osm_log_t * p_log, 180d6b92ffaSHans Petter Selasky IN osm_infr_t * p_infr_rec); 181d6b92ffaSHans Petter Selasky /* 182d6b92ffaSHans Petter Selasky * PARAMETERS 183d6b92ffaSHans Petter Selasky * p_subn 184d6b92ffaSHans Petter Selasky * [in] Pointer to the subnet object 185d6b92ffaSHans Petter Selasky * 186d6b92ffaSHans Petter Selasky * p_log 187d6b92ffaSHans Petter Selasky * [in] Pointer to the log object 188d6b92ffaSHans Petter Selasky * 189d6b92ffaSHans Petter Selasky * p_inf_rec 190d6b92ffaSHans Petter Selasky * [in] Pointer to an inform_info record 191d6b92ffaSHans Petter Selasky * 192d6b92ffaSHans Petter Selasky * RETURN 193d6b92ffaSHans Petter Selasky * The matching osm_infr_t 194d6b92ffaSHans Petter Selasky * SEE ALSO 195d6b92ffaSHans Petter Selasky * Inform Record, osm_infr_new, osm_infr_delete 196d6b92ffaSHans Petter Selasky *********/ 197d6b92ffaSHans Petter Selasky 198d6b92ffaSHans Petter Selasky void osm_infr_insert_to_db(IN osm_subn_t * p_subn, IN osm_log_t * p_log, 199d6b92ffaSHans Petter Selasky IN osm_infr_t * p_infr); 200d6b92ffaSHans Petter Selasky 201d6b92ffaSHans Petter Selasky void osm_infr_remove_from_db(IN osm_subn_t * p_subn, IN osm_log_t * p_log, 202d6b92ffaSHans Petter Selasky IN osm_infr_t * p_infr); 203d6b92ffaSHans Petter Selasky 204d6b92ffaSHans Petter Selasky /****f* OpenSM: Inform Record/osm_infr_remove_subscriptions 205d6b92ffaSHans Petter Selasky * NAME 206d6b92ffaSHans Petter Selasky * osm_infr_remove_subscriptions 207d6b92ffaSHans Petter Selasky * 208d6b92ffaSHans Petter Selasky * DESCRIPTION 209d6b92ffaSHans Petter Selasky * Remove all event subscriptions of a port 210d6b92ffaSHans Petter Selasky * 211d6b92ffaSHans Petter Selasky * SYNOPSIS 212d6b92ffaSHans Petter Selasky */ 213d6b92ffaSHans Petter Selasky ib_api_status_t 214d6b92ffaSHans Petter Selasky osm_infr_remove_subscriptions(IN osm_subn_t * p_subn, IN osm_log_t * p_log, 215d6b92ffaSHans Petter Selasky IN ib_net64_t port_guid); 216d6b92ffaSHans Petter Selasky /* 217d6b92ffaSHans Petter Selasky * PARAMETERS 218d6b92ffaSHans Petter Selasky * p_subn 219d6b92ffaSHans Petter Selasky * [in] Pointer to the subnet object 220d6b92ffaSHans Petter Selasky * 221d6b92ffaSHans Petter Selasky * p_log 222d6b92ffaSHans Petter Selasky * [in] Pointer to the log object 223d6b92ffaSHans Petter Selasky * 224d6b92ffaSHans Petter Selasky * port_guid 225d6b92ffaSHans Petter Selasky * [in] PortGUID of the subscriber that should be removed 226d6b92ffaSHans Petter Selasky * 227d6b92ffaSHans Petter Selasky * RETURN 228d6b92ffaSHans Petter Selasky * CL_SUCCESS if port_guid had any subscriptions being removed 229d6b92ffaSHans Petter Selasky * CL_NOT_FOUND if port_guid did not have any active subscriptions 230d6b92ffaSHans Petter Selasky * SEE ALSO 231d6b92ffaSHans Petter Selasky *********/ 232d6b92ffaSHans Petter Selasky 233d6b92ffaSHans Petter Selasky /****f* OpenSM: Inform Record/osm_report_notice 234d6b92ffaSHans Petter Selasky * NAME 235d6b92ffaSHans Petter Selasky * osm_report_notice 236d6b92ffaSHans Petter Selasky * 237d6b92ffaSHans Petter Selasky * DESCRIPTION 238d6b92ffaSHans Petter Selasky * Once a Trap was received by the osm_trap_rcv, or a Trap sourced in 239d6b92ffaSHans Petter Selasky * the SM was sent (Traps 64-67) this routine is called with a copy of 240d6b92ffaSHans Petter Selasky * the notice data. 241d6b92ffaSHans Petter Selasky * Given a notice attribute - compare and see if it matches the InformInfo 242d6b92ffaSHans Petter Selasky * Element and if it does - call the Report(Notice) for the 243d6b92ffaSHans Petter Selasky * target QP registered by the address stored in the InformInfo element 244d6b92ffaSHans Petter Selasky * 245d6b92ffaSHans Petter Selasky * SYNOPSIS 246d6b92ffaSHans Petter Selasky */ 247d6b92ffaSHans Petter Selasky ib_api_status_t osm_report_notice(IN osm_log_t * p_log, IN osm_subn_t * p_subn, 248d6b92ffaSHans Petter Selasky IN ib_mad_notice_attr_t * p_ntc); 249d6b92ffaSHans Petter Selasky /* 250d6b92ffaSHans Petter Selasky * PARAMETERS 251d6b92ffaSHans Petter Selasky * p_rcv 252d6b92ffaSHans Petter Selasky * [in] Pointer to the trap receiver 253d6b92ffaSHans Petter Selasky * 254d6b92ffaSHans Petter Selasky * p_ntc 255d6b92ffaSHans Petter Selasky * [in] Pointer to a copy of the incoming trap notice attribute. 256d6b92ffaSHans Petter Selasky * 257d6b92ffaSHans Petter Selasky * RETURN 258d6b92ffaSHans Petter Selasky * IB_SUCCESS on good completion 259d6b92ffaSHans Petter Selasky * 260d6b92ffaSHans Petter Selasky * SEE ALSO 261d6b92ffaSHans Petter Selasky * Inform Record, osm_trap_rcv 262d6b92ffaSHans Petter Selasky *********/ 263d6b92ffaSHans Petter Selasky 264d6b92ffaSHans Petter Selasky END_C_DECLS 265d6b92ffaSHans Petter Selasky #endif /* _OSM_INFR_H_ */ 266