Signed-off-by: Hal Rosenstock <[email protected]>

---
Changes from v2:
In trap 256, use snprintf to preclude buffer overflow
Also added new line at end

Changes from v1:
In trap 144, display local changes as %u rather than %d
In trap 256, don't use additional buffer and eliminate buffer copying

diff --git a/opensm/opensm/osm_helper.c b/opensm/opensm/osm_helper.c
index 3fa4ed7..b0faf26 100644
--- a/opensm/opensm/osm_helper.c
+++ b/opensm/opensm/osm_helper.c
@@ -2,6 +2,7 @@
  * Copyright (c) 2004-2008 Voltaire, Inc. All rights reserved.
  * Copyright (c) 2002-2005 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
@@ -1687,6 +1688,7 @@ void osm_dump_notice(IN osm_log_t * p_log,
 {
        if (osm_log_is_active(p_log, log_level)) {
                if (ib_notice_is_generic(p_ntci)) {
+                       int i, n;
                        char buff[1024];
                        buff[0] = '\0';
 
@@ -1725,11 +1727,16 @@ void osm_dump_notice(IN osm_log_t * p_log,
                        case 144:
                                sprintf(buff,
                                        "\t\t\t\tlid......................%u\n"
-                                       
"\t\t\t\tnew_cap_mask.............0x%08x\n",
+                                       "\t\t\t\tlocal_changes............%u\n"
+                                       
"\t\t\t\tnew_cap_mask.............0x%08x\n"
+                                       
"\t\t\t\tchange_flags.............0x%x\n",
                                        cl_ntoh16(p_ntci->data_details.ntc_144.
                                                  lid),
+                                       
p_ntci->data_details.ntc_144.local_changes,
                                        cl_ntoh32(p_ntci->data_details.ntc_144.
-                                                 new_cap_mask));
+                                                 new_cap_mask),
+                                       cl_ntoh16(p_ntci->data_details.ntc_144.
+                                                 change_flgs));
                                break;
                        case 145:
                                sprintf(buff,
@@ -1741,6 +1748,95 @@ void osm_dump_notice(IN osm_log_t * p_log,
                                        cl_ntoh64(p_ntci->data_details.ntc_145.
                                                  new_sys_guid));
                                break;
+                       case 256:
+                               n = sprintf(buff,
+                                       "\t\t\t\tlid......................%u\n"
+                                       "\t\t\t\tdrslid...................%u\n"
+                                       
"\t\t\t\tmethod...................0x%x\n"
+                                       
"\t\t\t\tattr_id..................0x%x\n"
+                                       
"\t\t\t\tattr_mod.................0x%x\n"
+                                       
"\t\t\t\tm_key....................0x%016" PRIx64 "\n"
+                                       "\t\t\t\tdr_notice................%d\n"
+                                       "\t\t\t\tdr_path_truncated........%d\n"
+                                       "\t\t\t\tdr_hop_count.............%u\n",
+                                       
cl_ntoh16(p_ntci->data_details.ntc_256.lid),
+                                       
cl_ntoh16(p_ntci->data_details.ntc_256.dr_slid),
+                                       p_ntci->data_details.ntc_256.method,
+                                       
cl_ntoh16(p_ntci->data_details.ntc_256.attr_id),
+                                       
cl_ntoh32(p_ntci->data_details.ntc_256.attr_mod),
+                                       
cl_ntoh64(p_ntci->data_details.ntc_256.mkey),
+                                       
p_ntci->data_details.ntc_256.dr_trunc_hop >> 7,
+                                       
p_ntci->data_details.ntc_256.dr_trunc_hop >> 6,
+                                       
p_ntci->data_details.ntc_256.dr_trunc_hop & 0x3f);
+                               n += snprintf(buff + n, sizeof(buff) - n,
+                                       "Directed Path Dump of %u hop path:"
+                                       "\n\t\t\t\tPath = ",
+                                       
p_ntci->data_details.ntc_256.dr_trunc_hop & 0x3f);
+                               for (i = 0;
+                                    i <= 
(p_ntci->data_details.ntc_256.dr_trunc_hop & 0x3f);
+                                    i++) {
+                                       if (i == 0)
+                                               n += snprintf(buff + n, 
sizeof(buff) - n, "%d",
+                                                       
p_ntci->data_details.ntc_256.dr_rtn_path[i]);
+                                       else
+                                               n += snprintf(buff + n, 
sizeof(buff) - n, ",%d",
+                                                       
p_ntci->data_details.ntc_256.dr_rtn_path[i]);
+                               }
+                               snprintf(buff + n, sizeof(buff) - n, "\n");
+                               break;
+                       case 257:
+                       case 258:
+                               sprintf(buff,
+                                       "\t\t\t\tlid1.....................%u\n"
+                                       "\t\t\t\tlid2.....................%u\n"
+                                       
"\t\t\t\tkey......................0x%x\n"
+                                       "\t\t\t\tsl.......................%d\n"
+                                       
"\t\t\t\tqp1......................0x%x\n"
+                                       
"\t\t\t\tqp2......................0x%x\n"
+                                       
"\t\t\t\tgid1.....................0x%016" PRIx64 " : "
+                                       "0x%016" PRIx64 "\n"
+                                       
"\t\t\t\tgid2.....................0x%016" PRIx64 " : "
+                                       "0x%016" PRIx64 "\n",
+                                       
cl_ntoh16(p_ntci->data_details.ntc_257_258.lid1),
+                                       
cl_ntoh16(p_ntci->data_details.ntc_257_258.lid2),
+                                       
cl_ntoh32(p_ntci->data_details.ntc_257_258.key),
+                                       
cl_ntoh32(p_ntci->data_details.ntc_257_258.qp1) >> 24,
+                                       
cl_ntoh32(p_ntci->data_details.ntc_257_258.qp1) & 0xffffff,
+                                       
cl_ntoh32(p_ntci->data_details.ntc_257_258.qp2),
+                                       
cl_ntoh64(p_ntci->data_details.ntc_257_258.gid1.unicast.prefix),
+                                       
cl_ntoh64(p_ntci->data_details.ntc_257_258.gid1.unicast.interface_id),
+                                       
cl_ntoh64(p_ntci->data_details.ntc_257_258.gid2.unicast.prefix),
+                                       
cl_ntoh64(p_ntci->data_details.ntc_257_258.gid2.unicast.interface_id));
+                               break;
+                       case 259:
+                               sprintf(buff,
+                                       
"\t\t\t\tdata_valid...............0x%x\n"
+                                       "\t\t\t\tlid1.....................%u\n"
+                                       "\t\t\t\tlid2.....................%u\n"
+                                       
"\t\t\t\tpkey.....................0x%x\n"
+                                       "\t\t\t\tsl.......................%d\n"
+                                       
"\t\t\t\tqp1......................0x%x\n"
+                                       
"\t\t\t\tqp2......................0x%x\n"
+                                       
"\t\t\t\tgid1.....................0x%016" PRIx64 " : "
+                                       "0x%016" PRIx64 "\n"
+                                       
"\t\t\t\tgid2.....................0x%016" PRIx64 " : "
+                                       "0x%016" PRIx64 "\n"
+                                       "\t\t\t\tsw_lid...................%u\n"
+                                       "\t\t\t\tport_no..................%u\n",
+                                       
cl_ntoh16(p_ntci->data_details.ntc_259.data_valid),
+                                       
cl_ntoh16(p_ntci->data_details.ntc_259.lid1),
+                                       
cl_ntoh16(p_ntci->data_details.ntc_259.lid2),
+                                       
cl_ntoh16(p_ntci->data_details.ntc_259.pkey),
+                                       
cl_ntoh32(p_ntci->data_details.ntc_259.sl_qp1) >> 24,
+                                       
cl_ntoh32(p_ntci->data_details.ntc_259.sl_qp1) & 0xffffff,
+                                       
cl_ntoh32(p_ntci->data_details.ntc_259.qp2),
+                                       
cl_ntoh64(p_ntci->data_details.ntc_259.gid1.unicast.prefix),
+                                       
cl_ntoh64(p_ntci->data_details.ntc_259.gid1.unicast.interface_id),
+                                       
cl_ntoh64(p_ntci->data_details.ntc_259.gid2.unicast.prefix),
+                                       
cl_ntoh64(p_ntci->data_details.ntc_259.gid2.unicast.interface_id),
+                                       
cl_ntoh16(p_ntci->data_details.ntc_259.sw_lid),
+                                       p_ntci->data_details.ntc_259.port_no);
+                               break;
                        }
 
                        osm_log(p_log, log_level,
_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to