Lines Matching +full:differ +full:-
2 * Copyright (c) 2004-2009 Voltaire, Inc. All rights reserved.
3 * Copyright (c) 2002-2015 Mellanox Technologies LTD. All rights reserved.
4 * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
18 * - Redistributions of source code must retain the above
22 * - Redistributions in binary form must reproduce the above
91 p_list_item = cl_qlist_head(&p_subn->sa_infr_list); in dump_all_informs()
92 while (p_list_item != cl_qlist_end(&p_subn->sa_infr_list)) { in dump_all_informs()
94 &((osm_infr_t *) p_list_item)-> in dump_all_informs()
108 ib_inform_info_t *p_ii_rec = &p_infr_rec->inform_record.inform_info; in match_inf_rec()
109 ib_inform_info_t *p_ii = &p_infr->inform_record.inform_info; in match_inf_rec()
110 osm_log_t *p_log = p_infr_rec->sa->p_log; in match_inf_rec()
115 if (memcmp(&p_infr->report_addr, &p_infr_rec->report_addr, in match_inf_rec()
116 sizeof(p_infr_rec->report_addr))) { in match_inf_rec()
117 OSM_LOG(p_log, OSM_LOG_DEBUG, "Differ by Address\n"); in match_inf_rec()
122 if (ib_gid_is_notzero(&p_ii_rec->gid)) { in match_inf_rec()
123 if (memcmp(&p_ii->gid, &p_ii_rec->gid, sizeof(p_ii->gid))) { in match_inf_rec()
125 "Differ by InformInfo.gid\n"); in match_inf_rec()
129 if ((p_ii->lid_range_begin != p_ii_rec->lid_range_begin) || in match_inf_rec()
130 (p_ii->lid_range_end != p_ii_rec->lid_range_end)) { in match_inf_rec()
132 "Differ by InformInfo.LIDRange\n"); in match_inf_rec()
137 if (p_ii->trap_type != p_ii_rec->trap_type) { in match_inf_rec()
139 "Differ by InformInfo.TrapType\n"); in match_inf_rec()
143 if (p_ii->is_generic != p_ii_rec->is_generic) { in match_inf_rec()
145 "Differ by InformInfo.IsGeneric\n"); in match_inf_rec()
149 if (p_ii->is_generic) { in match_inf_rec()
150 if (p_ii->g_or_v.generic.trap_num != in match_inf_rec()
151 p_ii_rec->g_or_v.generic.trap_num) in match_inf_rec()
153 "Differ by InformInfo.Generic.TrapNumber\n"); in match_inf_rec()
154 else if (p_ii->g_or_v.generic.qpn_resp_time_val != in match_inf_rec()
155 p_ii_rec->g_or_v.generic.qpn_resp_time_val) in match_inf_rec()
157 "Differ by InformInfo.Generic.QPNRespTimeVal\n"); in match_inf_rec()
158 else if (p_ii->g_or_v.generic.node_type_msb != in match_inf_rec()
159 p_ii_rec->g_or_v.generic.node_type_msb) in match_inf_rec()
161 "Differ by InformInfo.Generic.NodeTypeMSB\n"); in match_inf_rec()
162 else if (p_ii->g_or_v.generic.node_type_lsb != in match_inf_rec()
163 p_ii_rec->g_or_v.generic.node_type_lsb) in match_inf_rec()
165 "Differ by InformInfo.Generic.NodeTypeLSB\n"); in match_inf_rec()
169 if (p_ii->g_or_v.vend.dev_id != p_ii_rec->g_or_v.vend.dev_id) in match_inf_rec()
171 "Differ by InformInfo.Vendor.DeviceID\n"); in match_inf_rec()
172 else if (p_ii->g_or_v.vend.qpn_resp_time_val != in match_inf_rec()
173 p_ii_rec->g_or_v.vend.qpn_resp_time_val) in match_inf_rec()
175 "Differ by InformInfo.Vendor.QPNRespTimeVal\n"); in match_inf_rec()
176 else if (p_ii->g_or_v.vend.vendor_id_msb != in match_inf_rec()
177 p_ii_rec->g_or_v.vend.vendor_id_msb) in match_inf_rec()
179 "Differ by InformInfo.Vendor.VendorIdMSB\n"); in match_inf_rec()
180 else if (p_ii->g_or_v.vend.vendor_id_lsb != in match_inf_rec()
181 p_ii_rec->g_or_v.vend.vendor_id_lsb) in match_inf_rec()
183 "Differ by InformInfo.Vendor.VendorIdLSB\n"); in match_inf_rec()
204 osm_dump_inform_info_v2(p_log, &(p_infr_rec->inform_record.inform_info), in osm_infr_get_by_rec()
207 cl_qlist_count(&p_subn->sa_infr_list)); in osm_infr_get_by_rec()
209 p_list_item = cl_qlist_find_from_head(&p_subn->sa_infr_list, in osm_infr_get_by_rec()
212 if (p_list_item == cl_qlist_end(&p_subn->sa_infr_list)) in osm_infr_get_by_rec()
227 cl_qlist_count(&p_subn->sa_infr_list)); in osm_infr_insert_to_db()
232 &(p_infr->inform_record.inform_info), in osm_infr_insert_to_db()
236 cl_qlist_insert_head(&p_subn->sa_infr_list, &p_infr->list_item); in osm_infr_insert_to_db()
237 p_subn->p_osm->sa.dirty = TRUE; in osm_infr_insert_to_db()
240 cl_qlist_count(&p_subn->sa_infr_list)); in osm_infr_insert_to_db()
253 inet_ntop(AF_INET6, p_infr->inform_record.subscriber_gid.raw, in osm_infr_remove_from_db()
255 p_infr->inform_record.subscriber_enum); in osm_infr_remove_from_db()
257 osm_dump_inform_info_v2(p_log, &(p_infr->inform_record.inform_info), in osm_infr_remove_from_db()
260 cl_qlist_remove_item(&p_subn->sa_infr_list, &p_infr->list_item); in osm_infr_remove_from_db()
261 p_subn->p_osm->sa.dirty = TRUE; in osm_infr_remove_from_db()
280 p_list_item = cl_qlist_head(&p_subn->sa_infr_list); in osm_infr_remove_subscriptions()
281 while (p_list_item != cl_qlist_end(&p_subn->sa_infr_list)) { in osm_infr_remove_subscriptions()
286 if (port_guid != p_infr->inform_record.subscriber_gid.unicast.interface_id) in osm_infr_remove_subscriptions()
314 osm_log_t *p_log = p_infr_rec->sa->p_log; in send_report()
324 cl_ntoh16(p_ntc->issuer_lid), in send_report()
325 cl_ntoh16(p_infr_rec->report_addr.dest_lid), in send_report()
326 cl_ntoh64(p_infr_rec->inform_record.subscriber_gid.unicast.interface_id), in send_report()
330 p_report_madw = osm_mad_pool_get(p_infr_rec->sa->p_mad_pool, in send_report()
331 p_infr_rec->h_bind, MAD_BLOCK_SIZE, in send_report()
332 &(p_infr_rec->report_addr)); in send_report()
337 cl_ntoh16(p_infr_rec->report_addr.dest_lid)); in send_report()
342 p_report_madw->resp_expected = TRUE; in send_report()
356 p_report_ntc = (ib_mad_notice_attr_t *) & (p_sa_mad->data); in send_report()
362 osm_sa_send(p_infr_rec->sa, p_report_madw, TRUE); in send_report()
372 cl_list_t *p_infr_to_remove_list = p_infr_match->p_remove_infr_list; in is_access_permitted()
373 ib_inform_info_t *p_ii = &(p_infr_rec->inform_record.inform_info); in is_access_permitted()
374 ib_mad_notice_attr_t *p_ntc = p_infr_match->p_ntc; in is_access_permitted()
375 uint16_t trap_num = cl_ntoh16(p_ntc->g_or_v.generic.trap_num); in is_access_permitted()
376 osm_subn_t *p_subn = p_infr_rec->sa->p_subn; in is_access_permitted()
377 osm_log_t *p_log = p_infr_rec->sa->p_log; in is_access_permitted()
396 source_gid = p_ntc->data_details.ntc_64_67.gid; in is_access_permitted()
398 source_gid = p_ntc->issuer_gid; in is_access_permitted()
401 p_infr_rec->report_addr.dest_lid); in is_access_permitted()
405 cl_ntoh16(p_infr_rec->report_addr.dest_lid)); in is_access_permitted()
409 /* Check if there is a pkey match. o13-17.1.1 */ in is_access_permitted()
423 p_mgrp->mcmember_rec.pkey, in is_access_permitted()
424 p_dest_port->p_physp)) { in is_access_permitted()
429 cl_ntoh64(p_dest_port->guid)); in is_access_permitted()
446 p_subn->opt.allow_both_pkeys) == FALSE) { in is_access_permitted()
448 /* According to o13-17.1.2 - If this informInfo in is_access_permitted()
452 if (p_ii->lid_range_begin != 0xFFFF) { in is_access_permitted()
473 * The Notice.GID should be pre-filled with the trap generator GID
479 ib_mad_notice_attr_t *p_ntc = p_infr_match->p_ntc; in match_notice_to_inf_rec()
481 ib_inform_info_t *p_ii = &(p_infr_rec->inform_record.inform_info); in match_notice_to_inf_rec()
482 osm_log_t *p_log = p_infr_rec->sa->p_log; in match_notice_to_inf_rec()
500 if (p_ii->gid.unicast.prefix != 0 in match_notice_to_inf_rec()
501 || p_ii->gid.unicast.interface_id != 0) { in match_notice_to_inf_rec()
503 if (memcmp(&(p_ii->gid), &(p_ntc->issuer_gid), in match_notice_to_inf_rec()
510 /* If lid_range_begin of the informInfo is 0xFFFF - then it should be ignored. */ in match_notice_to_inf_rec()
511 if (p_ii->lid_range_begin != 0xFFFF) { in match_notice_to_inf_rec()
512 /* a real lid range is given - check it */ in match_notice_to_inf_rec()
513 if ((cl_hton16(p_ii->lid_range_begin) > in match_notice_to_inf_rec()
514 cl_hton16(p_ntc->issuer_lid)) in match_notice_to_inf_rec()
515 || (cl_hton16(p_ntc->issuer_lid) > in match_notice_to_inf_rec()
516 cl_hton16(p_ii->lid_range_end))) { in match_notice_to_inf_rec()
519 cl_hton16(p_ii->lid_range_begin), in match_notice_to_inf_rec()
520 cl_hton16(p_ntc->issuer_lid), in match_notice_to_inf_rec()
521 cl_hton16(p_ii->lid_range_end)); in match_notice_to_inf_rec()
528 if ((p_ii->is_generic && !ib_notice_is_generic(p_ntc)) || in match_notice_to_inf_rec()
529 (!p_ii->is_generic && ib_notice_is_generic(p_ntc))) { in match_notice_to_inf_rec()
535 if ((p_ii->trap_type != 0xFFFF) && in match_notice_to_inf_rec()
536 (cl_ntoh16(p_ii->trap_type) != ib_notice_get_type(p_ntc))) { in match_notice_to_inf_rec()
542 if (p_ii->is_generic) { in match_notice_to_inf_rec()
544 if ((p_ii->g_or_v.generic.trap_num != 0xFFFF) && in match_notice_to_inf_rec()
545 (p_ii->g_or_v.generic.trap_num != in match_notice_to_inf_rec()
546 p_ntc->g_or_v.generic.trap_num)) { in match_notice_to_inf_rec()
567 if ((p_ii->g_or_v.vend.dev_id != 0xFFFF) && in match_notice_to_inf_rec()
568 (p_ii->g_or_v.vend.dev_id != p_ntc->g_or_v.vend.dev_id)) { in match_notice_to_inf_rec()
596 * the SM was sent (Traps 64-67), this routine is called with a copy of
598 * Given a notice attribute - compare and see if it matches the InformInfo
599 * element and if it does - call the Report(Notice) for the
611 if ((ntc->g_or_v.generic.trap_num == CL_HTON16(SM_GID_IN_SERVICE_TRAP)) || in log_notice()
612 (ntc->g_or_v.generic.trap_num == CL_HTON16(SM_GID_OUT_OF_SERVICE_TRAP)) || in log_notice()
613 (ntc->g_or_v.generic.trap_num == CL_HTON16(SM_MGID_CREATED_TRAP)) || in log_notice()
614 (ntc->g_or_v.generic.trap_num == CL_HTON16(SM_MGID_DESTROYED_TRAP))) in log_notice()
615 gid = &ntc->data_details.ntc_64_67.gid; in log_notice()
617 gid = &ntc->issuer_gid; in log_notice()
619 switch (cl_ntoh16(ntc->g_or_v.generic.trap_num)) { in log_notice()
624 ib_get_trap_str(ntc->g_or_v.generic.trap_num), in log_notice()
625 inet_ntop(AF_INET6, gid->raw, gid_str, sizeof gid_str)); in log_notice()
631 ib_get_trap_str(ntc->g_or_v.generic.trap_num), in log_notice()
632 inet_ntop(AF_INET6, gid->raw, gid_str, sizeof gid_str)); in log_notice()
639 ib_get_trap_str(ntc->g_or_v.generic.trap_num)); in log_notice()
645 ib_get_trap_str(ntc->g_or_v.generic.trap_num), in log_notice()
646 cl_ntoh16(ntc->issuer_lid), in log_notice()
647 cl_ntoh64(gid->unicast.interface_id)); in log_notice()
655 ib_get_trap_str(ntc->g_or_v.generic.trap_num), in log_notice()
656 cl_ntoh16(ntc->issuer_lid), in log_notice()
657 cl_ntoh64(gid->unicast.interface_id), in log_notice()
658 ntc->data_details.ntc_129_131.port_num); in log_notice()
661 if (ntc->data_details.ntc_144.local_changes == 1) in log_notice()
666 ib_get_trap_str(ntc->g_or_v.generic.trap_num), in log_notice()
667 cl_ntoh16(ntc->issuer_lid), in log_notice()
668 cl_ntoh64(gid->unicast.interface_id), in log_notice()
669 cl_ntoh16(ntc->data_details.ntc_144.change_flgs), in log_notice()
670 cl_ntoh16(ntc->data_details.ntc_144.cap_mask2)); in log_notice()
675 ib_get_trap_str(ntc->g_or_v.generic.trap_num), in log_notice()
676 cl_ntoh16(ntc->issuer_lid), in log_notice()
677 cl_ntoh64(gid->unicast.interface_id), in log_notice()
678 cl_ntoh32(ntc->data_details.ntc_144.new_cap_mask)); in log_notice()
684 ib_get_trap_str(ntc->g_or_v.generic.trap_num), in log_notice()
685 cl_ntoh16(ntc->issuer_lid), in log_notice()
686 cl_ntoh64(gid->unicast.interface_id), in log_notice()
687 cl_ntoh64(ntc->data_details.ntc_145.new_sys_guid)); in log_notice()
694 ib_get_trap_str(ntc->g_or_v.generic.trap_num), in log_notice()
695 cl_ntoh16(ntc->issuer_lid), in log_notice()
696 cl_ntoh64(gid->unicast.interface_id), in log_notice()
697 ntc->data_details.ntc_256.method, in log_notice()
698 cl_ntoh16(ntc->data_details.ntc_256.attr_id), in log_notice()
699 cl_ntoh32(ntc->data_details.ntc_256.attr_mod), in log_notice()
700 cl_ntoh64(ntc->data_details.ntc_256.mkey)); in log_notice()
704 gid1 = &ntc->data_details.ntc_257_258.gid1; in log_notice()
705 gid2 = &ntc->data_details.ntc_257_258.gid2; in log_notice()
710 ib_get_trap_str(ntc->g_or_v.generic.trap_num), in log_notice()
711 cl_ntoh16(ntc->issuer_lid), in log_notice()
712 cl_ntoh64(gid->unicast.interface_id), in log_notice()
713 cl_ntoh16(ntc->data_details.ntc_257_258.lid1), in log_notice()
714 cl_ntoh16(ntc->data_details.ntc_257_258.lid2), in log_notice()
715 cl_ntoh16(ntc->g_or_v.generic.trap_num) == SM_BAD_QKEY_TRAP ? in log_notice()
717 cl_ntoh32(ntc->data_details.ntc_257_258.key), in log_notice()
718 cl_ntoh32(ntc->data_details.ntc_257_258.qp1) >> 28, in log_notice()
719 cl_ntoh32(ntc->data_details.ntc_257_258.qp1) & 0xffffff, in log_notice()
720 cl_ntoh32(ntc->data_details.ntc_257_258.qp2) & 0xffffff, in log_notice()
721 inet_ntop(AF_INET6, gid1->raw, gid_str, sizeof gid_str), in log_notice()
722 inet_ntop(AF_INET6, gid2->raw, gid_str2, sizeof gid_str2)); in log_notice()
725 gid1 = &ntc->data_details.ntc_259.gid1; in log_notice()
726 gid2 = &ntc->data_details.ntc_259.gid2; in log_notice()
732 ib_get_trap_str(ntc->g_or_v.generic.trap_num), in log_notice()
733 cl_ntoh16(ntc->issuer_lid), in log_notice()
734 cl_ntoh64(gid->unicast.interface_id), in log_notice()
735 ntc->data_details.ntc_259.port_no, in log_notice()
736 cl_ntoh16(ntc->data_details.ntc_259.data_valid), in log_notice()
737 cl_ntoh16(ntc->data_details.ntc_259.lid1), in log_notice()
738 cl_ntoh16(ntc->data_details.ntc_259.lid2), in log_notice()
739 cl_ntoh16(ntc->data_details.ntc_257_258.key), in log_notice()
740 cl_ntoh32(ntc->data_details.ntc_259.sl_qp1) >> 28, in log_notice()
741 cl_ntoh32(ntc->data_details.ntc_259.sl_qp1) & 0xffffff, in log_notice()
742 cl_ntoh32(ntc->data_details.ntc_259.qp2), in log_notice()
743 inet_ntop(AF_INET6, gid1->raw, gid_str, sizeof gid_str), in log_notice()
744 inet_ntop(AF_INET6, gid2->raw, gid_str2, sizeof gid_str2)); in log_notice()
751 cl_ntoh16(ntc->g_or_v.generic.trap_num), in log_notice()
752 ib_get_trap_str(ntc->g_or_v.generic.trap_num), in log_notice()
753 cl_ntoh16(ntc->issuer_lid), in log_notice()
754 inet_ntop(AF_INET6, gid->raw, gid_str, sizeof gid_str)); in log_notice()
763 cl_ntoh16(ntc->g_or_v.vend.dev_id), in log_notice()
764 cl_ntoh16(ntc->issuer_lid), in log_notice()
765 inet_ntop(AF_INET6, ntc->issuer_gid.raw, gid_str, in log_notice()
784 if (p_subn->sa_infr_list.state != CL_INITIALIZED) { in osm_report_notice()
794 be removed due to violation. o13-17.1.2 */ in osm_report_notice()
802 cl_qlist_apply_func(&p_subn->sa_infr_list, match_notice_to_inf_rec, in osm_report_notice()
805 /* If we inserted items into the infr_to_remove_list - we need to in osm_report_notice()
817 osm_opensm_report_event(p_subn->p_osm, OSM_EVENT_ID_TRAP, p_ntc); in osm_report_notice()