%PDF- %PDF-
Direktori : /usr/include/infiniband/opensm/ |
Current File : //usr/include/infiniband/opensm/osm_helper.h |
/* * Copyright (c) 2004-2009 Voltaire, Inc. All rights reserved. * Copyright (c) 2002-2011 Mellanox Technologies LTD. All rights reserved. * Copyright (c) 1996-2003 Intel Corporation. All rights reserved. * Copyright (c) 2009 HNR Consulting. All rights reserved. * * This software is available to you under a choice of one of two * licenses. You may choose to be licensed under the terms of the GNU * General Public License (GPL) Version 2, available from the file * COPYING in the main directory of this source tree, or the * OpenIB.org BSD license below: * * Redistribution and use in source and binary forms, with or * without modification, are permitted provided that the following * conditions are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the following * disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * */ #ifndef _OSM_HELPER_H_ #define _OSM_HELPER_H_ #include <iba/ib_types.h> #include <complib/cl_dispatcher.h> #include <opensm/osm_base.h> #include <opensm/osm_log.h> #include <opensm/osm_msgdef.h> #include <opensm/osm_path.h> #ifdef __cplusplus # define BEGIN_C_DECLS extern "C" { # define END_C_DECLS } #else /* !__cplusplus */ # define BEGIN_C_DECLS # define END_C_DECLS #endif /* __cplusplus */ BEGIN_C_DECLS /* * Abstract: * Declaration of helpful functions. */ /****f* OpenSM: Helper/ib_get_sa_method_str * NAME * ib_get_sa_method_str * * DESCRIPTION * Returns a string for the specified SA Method value. * * SYNOPSIS */ const char *ib_get_sa_method_str(IN uint8_t method); /* * PARAMETERS * method * [in] Network order METHOD ID value. * * RETURN VALUES * Pointer to the method string. * * NOTES * * SEE ALSO *********/ /****f* OpenSM: Helper/ib_get_sm_method_str * NAME * ib_get_sm_method_str * * DESCRIPTION * Returns a string for the specified SM Method value. * * SYNOPSIS */ const char *ib_get_sm_method_str(IN uint8_t method); /* * PARAMETERS * method * [in] Network order METHOD ID value. * * RETURN VALUES * Pointer to the method string. * * NOTES * * SEE ALSO *********/ /****f* OpenSM: Helper/ib_get_sm_attr_str * NAME * ib_get_sm_attr_str * * DESCRIPTION * Returns a string for the specified SM attribute value. * * SYNOPSIS */ const char *ib_get_sm_attr_str(IN ib_net16_t attr); /* * PARAMETERS * attr * [in] Network order attribute ID value. * * RETURN VALUES * Pointer to the attribute string. * * NOTES * * SEE ALSO *********/ /****f* OpenSM: Helper/ib_get_sa_attr_str * NAME * ib_get_sa_attr_str * * DESCRIPTION * Returns a string for the specified SA attribute value. * * SYNOPSIS */ const char *ib_get_sa_attr_str(IN ib_net16_t attr); /* * PARAMETERS * attr * [in] Network order attribute ID value. * * RETURN VALUES * Pointer to the attribute string. * * NOTES * * SEE ALSO *********/ /****f* OpenSM: Helper/ib_get_trap_str * NAME * ib_get_trap_str * * DESCRIPTION * Returns a name for the specified trap. * * SYNOPSIS */ const char *ib_get_trap_str(uint16_t trap_num); /* * PARAMETERS * trap_num * [in] Network order trap number. * * RETURN VALUES * Name of the trap. * *********/ extern const ib_gid_t ib_zero_gid; /****f* IBA Base: Types/ib_gid_is_notzero * NAME * ib_gid_is_notzero * * DESCRIPTION * Returns a boolean indicating whether or not the GID is zero. * * SYNOPSIS */ static inline boolean_t ib_gid_is_notzero(IN const ib_gid_t * p_gid) { return memcmp(p_gid, &ib_zero_gid, sizeof(*p_gid)); } /* * PARAMETERS * p_gid * [in] Pointer to the GID object. * * RETURN VALUES * Returns TRUE if GID is not zero. * FALSE otherwise. * * NOTES * * SEE ALSO * ib_gid_t *********/ /****f* OpenSM: Helper/osm_dump_port_info * NAME * osm_dump_port_info * * DESCRIPTION * Dumps the PortInfo attribute to the log. * * SYNOPSIS */ void osm_dump_port_info(IN osm_log_t * p_log, IN ib_net64_t node_guid, IN ib_net64_t port_guid, IN uint8_t port_num, IN const ib_port_info_t * p_pi, IN osm_log_level_t log_level); void osm_dump_port_info_v2(IN osm_log_t * p_log, IN ib_net64_t node_guid, IN ib_net64_t port_guid, IN uint8_t port_num, IN const ib_port_info_t * p_pi, IN const int file_id, IN osm_log_level_t log_level); /* * PARAMETERS * p_log * [in] Pointer to the osm_log_t object * * node_guid * [in] Node GUID that owns this port. * * port_guid * [in] Port GUID for this port. * * port_num * [in] Port number for this port. * * p_pi * [in] Pointer to the PortInfo attribute * * log_level * [in] Log verbosity level with which to dump the data. * * RETURN VALUES * None. * * NOTES * * SEE ALSO *********/ /****f* OpenSM: Helper/osm_dump_guid_info * NAME * osm_dump_guid_info * * DESCRIPTION * Dumps the GUIDInfo attribute to the log. * * SYNOPSIS */ void osm_dump_guid_info(IN osm_log_t * p_log, IN ib_net64_t node_guid, IN ib_net64_t port_guid, IN uint8_t block_num, IN const ib_guid_info_t * p_gi, IN osm_log_level_t log_level); void osm_dump_guid_info_v2(IN osm_log_t * p_log, IN ib_net64_t node_guid, IN ib_net64_t port_guid, IN uint8_t block_num, IN const ib_guid_info_t * p_gi, IN const int file_id, IN osm_log_level_t log_level); /* * PARAMETERS * p_log * [in] Pointer to the osm_log_t object. * * node_guid * [in] Node GUID that owns this port. * * port_guid * [in] Port GUID for this port. * * block_num * [in] Block number. * * p_gi * [in] Pointer to the GUIDInfo attribute. * * log_level * [in] Log verbosity level with which to dump the data. * * RETURN VALUES * None. * * NOTES * * SEE ALSO *********/ void osm_dump_mlnx_ext_port_info(IN osm_log_t * p_log, IN ib_net64_t node_guid, IN ib_net64_t port_guid, IN uint8_t port_num, IN const ib_mlnx_ext_port_info_t * p_pi, IN osm_log_level_t log_level); void osm_dump_mlnx_ext_port_info_v2(IN osm_log_t * p_log, IN ib_net64_t node_guid, IN ib_net64_t port_guid, IN uint8_t port_num, IN const ib_mlnx_ext_port_info_t * p_pi, IN const int file_id, IN osm_log_level_t log_level); void osm_dump_path_record(IN osm_log_t * p_log, IN const ib_path_rec_t * p_pr, IN osm_log_level_t log_level); void osm_dump_path_record_v2(IN osm_log_t * p_log, IN const ib_path_rec_t * p_pr, IN const int file_id, IN osm_log_level_t log_level); void osm_dump_multipath_record(IN osm_log_t * p_log, IN const ib_multipath_rec_t * p_mpr, IN osm_log_level_t log_level); void osm_dump_multipath_record_v2(IN osm_log_t * p_log, IN const ib_multipath_rec_t * p_mpr, IN const int file_id, IN osm_log_level_t log_level); void osm_dump_node_record(IN osm_log_t * p_log, IN const ib_node_record_t * p_nr, IN osm_log_level_t log_level); void osm_dump_node_record_v2(IN osm_log_t * p_log, IN const ib_node_record_t * p_nr, IN const int file_id, IN osm_log_level_t log_level); void osm_dump_mc_record(IN osm_log_t * p_log, IN const ib_member_rec_t * p_mcmr, IN osm_log_level_t log_level); void osm_dump_mc_record_v2(IN osm_log_t * p_log, IN const ib_member_rec_t * p_mcmr, IN const int file_id, IN osm_log_level_t log_level); void osm_dump_link_record(IN osm_log_t * p_log, IN const ib_link_record_t * p_lr, IN osm_log_level_t log_level); void osm_dump_link_record_v2(IN osm_log_t * p_log, IN const ib_link_record_t * p_lr, IN const int file_id, IN osm_log_level_t log_level); void osm_dump_service_record(IN osm_log_t * p_log, IN const ib_service_record_t * p_sr, IN osm_log_level_t log_level); void osm_dump_service_record_v2(IN osm_log_t * p_log, IN const ib_service_record_t * p_sr, IN const int file_id, IN osm_log_level_t log_level); void osm_dump_portinfo_record(IN osm_log_t * p_log, IN const ib_portinfo_record_t * p_pir, IN osm_log_level_t log_level); void osm_dump_portinfo_record_v2(IN osm_log_t * p_log, IN const ib_portinfo_record_t * p_pir, IN const int file_id, IN osm_log_level_t log_level); void osm_dump_guidinfo_record(IN osm_log_t * p_log, IN const ib_guidinfo_record_t * p_gir, IN osm_log_level_t log_level); void osm_dump_guidinfo_record_v2(IN osm_log_t * p_log, IN const ib_guidinfo_record_t * p_gir, IN const int file_id, IN osm_log_level_t log_level); void osm_dump_inform_info(IN osm_log_t * p_log, IN const ib_inform_info_t * p_ii, IN osm_log_level_t log_level); void osm_dump_inform_info_v2(IN osm_log_t * p_log, IN const ib_inform_info_t * p_ii, IN const int file_id, IN osm_log_level_t log_level); void osm_dump_inform_info_record(IN osm_log_t * p_log, IN const ib_inform_info_record_t * p_iir, IN osm_log_level_t log_level); void osm_dump_inform_info_record_v2(IN osm_log_t * p_log, IN const ib_inform_info_record_t * p_iir, IN const int file_id, IN osm_log_level_t log_level); void osm_dump_switch_info_record(IN osm_log_t * p_log, IN const ib_switch_info_record_t * p_sir, IN osm_log_level_t log_level); void osm_dump_switch_info_record_v2(IN osm_log_t * p_log, IN const ib_switch_info_record_t * p_sir, IN const int file_id, IN osm_log_level_t log_level); void osm_dump_sm_info_record(IN osm_log_t * p_log, IN const ib_sminfo_record_t * p_smir, IN osm_log_level_t log_level); void osm_dump_sm_info_record_v2(IN osm_log_t * p_log, IN const ib_sminfo_record_t * p_smir, IN const int file_id, IN osm_log_level_t log_level); void osm_dump_pkey_block(IN osm_log_t * p_log, IN uint64_t port_guid, IN uint16_t block_num, IN uint8_t port_num, IN const ib_pkey_table_t * p_pkey_tbl, IN osm_log_level_t log_level); void osm_dump_pkey_block_v2(IN osm_log_t * p_log, IN uint64_t port_guid, IN uint16_t block_num, IN uint8_t port_num, IN const ib_pkey_table_t * p_pkey_tbl, IN const int file_id, IN osm_log_level_t log_level); void osm_dump_slvl_map_table(IN osm_log_t * p_log, IN uint64_t port_guid, IN uint8_t in_port_num, IN uint8_t out_port_num, IN const ib_slvl_table_t * p_slvl_tbl, IN osm_log_level_t log_level); void osm_dump_slvl_map_table_v2(IN osm_log_t * p_log, IN uint64_t port_guid, IN uint8_t in_port_num, IN uint8_t out_port_num, IN const ib_slvl_table_t * p_slvl_tbl, IN const int file_id, IN osm_log_level_t log_level); void osm_dump_vl_arb_table(IN osm_log_t * p_log, IN uint64_t port_guid, IN uint8_t block_num, IN uint8_t port_num, IN const ib_vl_arb_table_t * p_vla_tbl, IN osm_log_level_t log_level); void osm_dump_vl_arb_table_v2(IN osm_log_t * p_log, IN uint64_t port_guid, IN uint8_t block_num, IN uint8_t port_num, IN const ib_vl_arb_table_t * p_vla_tbl, IN const int file_id, IN osm_log_level_t log_level); /****f* OpenSM: Helper/osm_dump_port_info * NAME * osm_dump_port_info * * DESCRIPTION * Dumps the PortInfo attribute to the log. * * SYNOPSIS */ void osm_dump_node_info(IN osm_log_t * p_log, IN const ib_node_info_t * p_ni, IN osm_log_level_t log_level); void osm_dump_node_info_v2(IN osm_log_t * p_log, IN const ib_node_info_t * p_ni, IN const int file_id, IN osm_log_level_t log_level); /* * PARAMETERS * p_log * [in] Pointer to the osm_log_t object * * p_ni * [in] Pointer to the NodeInfo attribute * * log_level * [in] Log verbosity level with which to dump the data. * * RETURN VALUES * None. * * NOTES * * SEE ALSO *********/ /****f* OpenSM: Helper/osm_dump_sm_info * NAME * osm_dump_sm_info * * DESCRIPTION * Dumps the SMInfo attribute to the log. * * SYNOPSIS */ void osm_dump_sm_info(IN osm_log_t * p_log, IN const ib_sm_info_t * p_smi, IN osm_log_level_t log_level); void osm_dump_sm_info_v2(IN osm_log_t * p_log, IN const ib_sm_info_t * p_smi, IN const int file_id, IN osm_log_level_t log_level); /* * PARAMETERS * p_log * [in] Pointer to the osm_log_t object * * p_smi * [in] Pointer to the SMInfo attribute * * log_level * [in] Log verbosity level with which to dump the data. * * RETURN VALUES * None. * * NOTES * * SEE ALSO *********/ /****f* OpenSM: Helper/osm_dump_switch_info * NAME * osm_dump_switch_info * * DESCRIPTION * Dumps the SwitchInfo attribute to the log. * * SYNOPSIS */ void osm_dump_switch_info(IN osm_log_t * p_log, IN const ib_switch_info_t * p_si, IN osm_log_level_t log_level); void osm_dump_switch_info_v2(IN osm_log_t * p_log, IN const ib_switch_info_t * p_si, IN const int file_id, IN osm_log_level_t log_level); /* * PARAMETERS * p_log * [in] Pointer to the osm_log_t object * * p_si * [in] Pointer to the SwitchInfo attribute * * log_level * [in] Log verbosity level with which to dump the data. * * RETURN VALUES * None. * * NOTES * * SEE ALSO *********/ /****f* OpenSM: Helper/osm_dump_notice * NAME * osm_dump_notice * * DESCRIPTION * Dumps the Notice attribute to the log. * * SYNOPSIS */ void osm_dump_notice(IN osm_log_t * p_log, IN const ib_mad_notice_attr_t * p_ntci, IN osm_log_level_t log_level); void osm_dump_notice_v2(IN osm_log_t * p_log, IN const ib_mad_notice_attr_t * p_ntci, IN const int file_id, IN osm_log_level_t log_level); /* * PARAMETERS * p_log * [in] Pointer to the osm_log_t object * * p_ntci * [in] Pointer to the Notice attribute * * log_level * [in] Log verbosity level with which to dump the data. * * RETURN VALUES * None. * * NOTES * * SEE ALSO *********/ /****f* IBA Base: Types/osm_get_disp_msg_str * NAME * osm_get_disp_msg_str * * DESCRIPTION * Returns a string for the specified Dispatcher message. * * SYNOPSIS */ const char *osm_get_disp_msg_str(IN cl_disp_msgid_t msg); /* * PARAMETERS * msg * [in] Dispatcher message ID value. * * RETURN VALUES * Pointer to the message description string. * * NOTES * * SEE ALSO *********/ void osm_dump_dr_path(IN osm_log_t * p_log, IN const osm_dr_path_t * p_path, IN osm_log_level_t level); void osm_dump_dr_path_v2(IN osm_log_t * p_log, IN const osm_dr_path_t * p_path, IN const int file_id, IN osm_log_level_t level); void osm_dump_smp_dr_path(IN osm_log_t * p_log, IN const ib_smp_t * p_smp, IN osm_log_level_t level); void osm_dump_smp_dr_path_v2(IN osm_log_t * p_log, IN const ib_smp_t * p_smp, IN const int file_id, IN osm_log_level_t level); void osm_dump_dr_smp(IN osm_log_t * p_log, IN const ib_smp_t * p_smp, IN osm_log_level_t level); void osm_dump_dr_smp_v2(IN osm_log_t * p_log, IN const ib_smp_t * p_smp, IN const int file_id, IN osm_log_level_t level); void osm_dump_sa_mad(IN osm_log_t * p_log, IN const ib_sa_mad_t * p_smp, IN osm_log_level_t level); void osm_dump_sa_mad_v2(IN osm_log_t * p_log, IN const ib_sa_mad_t * p_smp, IN const int file_id, IN osm_log_level_t level); void osm_dump_dr_path_as_buf(IN size_t max_len, IN const osm_dr_path_t * p_path, OUT char* buf); /****f* IBA Base: Types/osm_get_sm_signal_str * NAME * osm_get_sm_signal_str * * DESCRIPTION * Returns a string for the specified SM state. * * SYNOPSIS */ const char *osm_get_sm_signal_str(IN osm_signal_t signal); /* * PARAMETERS * state * [in] Signal value * * RETURN VALUES * Pointer to the signal description string. * * NOTES * * SEE ALSO *********/ const char *osm_get_port_state_str_fixed_width(IN uint8_t port_state); const char *osm_get_node_type_str_fixed_width(IN uint8_t node_type); const char *osm_get_manufacturer_str(IN uint64_t guid_ho); const char *osm_get_mtu_str(IN uint8_t mtu); const char *osm_get_lwa_str(IN uint8_t lwa); const char *osm_get_lsa_str(IN uint8_t lsa, IN uint8_t lsea, IN uint8_t state, IN uint8_t fdr10); /****f* IBA Base: Types/osm_get_sm_mgr_signal_str * NAME * osm_get_sm_mgr_signal_str * * DESCRIPTION * Returns a string for the specified SM manager signal. * * SYNOPSIS */ const char *osm_get_sm_mgr_signal_str(IN osm_sm_signal_t signal); /* * PARAMETERS * signal * [in] SM manager signal * * RETURN VALUES * Pointer to the signal description string. * * NOTES * * SEE ALSO *********/ /****f* IBA Base: Types/osm_get_sm_mgr_state_str * NAME * osm_get_sm_mgr_state_str * * DESCRIPTION * Returns a string for the specified SM manager state. * * SYNOPSIS */ const char *osm_get_sm_mgr_state_str(IN uint16_t state); /* * PARAMETERS * state * [in] SM manager state * * RETURN VALUES * Pointer to the state description string. * * NOTES * * SEE ALSO *********/ /****f* IBA Base: Types/ib_mtu_is_valid * NAME * ib_mtu_is_valid * * DESCRIPTION * Validates encoded MTU * * SYNOPSIS */ int ib_mtu_is_valid(IN const int mtu); /* * PARAMETERS * mtu * [in] Encoded path mtu. * * RETURN VALUES * Returns an int indicating mtu is valid (1) * or invalid (0). * * NOTES * * SEE ALSO *********/ /****f* IBA Base: Types/ib_rate_is_valid * NAME * ib_rate_is_valid * * DESCRIPTION * Validates encoded rate * * SYNOPSIS */ int ib_rate_is_valid(IN const int rate); /* * PARAMETERS * rate * [in] Encoded path rate. * * RETURN VALUES * Returns an int indicating rate is valid (1) * or invalid (0). * * NOTES * * SEE ALSO *********/ /****f* IBA Base: Types/ib_path_compare_rates * NAME * ib_path_compare_rates * * DESCRIPTION * Compares the encoded values for two path rates and * return value is based on the ordered comparison of * the path rates (or path rate equivalents). * * SYNOPSIS */ int ib_path_compare_rates(IN const int rate1, IN const int rate2); /* * PARAMETERS * rate1 * [in] Encoded path rate 1. * * rate2 * [in] Encoded path rate 2. * * RETURN VALUES * Returns an int indicating less than (-1), equal to (0), or * greater than (1) rate1 as compared with rate2. * * NOTES * * SEE ALSO *********/ /****f* IBA Base: Types/ib_path_rate_get_prev * NAME * ib_path_rate_get_prev * * DESCRIPTION * Obtains encoded rate for the rate previous to the one requested. * * SYNOPSIS */ int ib_path_rate_get_prev(IN const int rate); /* * PARAMETERS * rate * [in] Encoded path rate. * * RETURN VALUES * Returns an int indicating encoded rate or * 0 if none can be found. * * NOTES * * SEE ALSO *********/ /****f* IBA Base: Types/ib_path_rate_get_next * NAME * ib_path_rate_get_next * * DESCRIPTION * Obtains encoded rate for the rate subsequent to the one requested. * * SYNOPSIS */ int ib_path_rate_get_next(IN const int rate); /* * PARAMETERS * rate * [in] Encoded path rate. * * RETURN VALUES * Returns an int indicating encoded rate or * 0 if none can be found. * * NOTES * * SEE ALSO *********/ /****f* OpenSM: Helper/sprint_uint8_arr * NAME * sprint_uint8_arr * * DESCRIPTION * Create the comma-separated string of numbers * from input array of uint8 numbers * (e.g. "1,2,3,4") * * SYNOPSIS */ int sprint_uint8_arr(IN char *buf, IN size_t size, IN const uint8_t * arr, IN size_t len); /* * PARAMETERS * buf * [in] Pointer to the output buffer * * size * [in] Size of the output buffer * * arr * [in] Pointer to the input array of uint8 * * len * [in] Size of the input array * * RETURN VALUES * Return the number of characters printed to the buffer * * NOTES * * SEE ALSO *********/ END_C_DECLS #endif /* _OSM_HELPER_H_ */