Fixed a bug where the carrier connectivity point to point descriptor was not being displayed properly when compiled on big endian machines.
Signed-off-by: Dan Gora <d...@adax.com> --- ipmitool/lib/ipmi_ekanalyzer.c | 39 ++++++++++++++++++++++++--------------- 1 files changed, 24 insertions(+), 15 deletions(-) diff --git a/ipmitool/lib/ipmi_ekanalyzer.c b/ipmitool/lib/ipmi_ekanalyzer.c index 448b308..fb4f66a 100644 --- a/ipmitool/lib/ipmi_ekanalyzer.c +++ b/ipmitool/lib/ipmi_ekanalyzer.c @@ -798,7 +798,7 @@ ipmi_ek_display_carrier_connectivity( struct ipmi_ek_multi_header * record ) { int return_value = ERROR_STATUS; struct fru_picmgext_carrier_p2p_record rsc_desc; - struct fru_picmgext_carrier_p2p_descriptor port_desc; + struct fru_picmgext_carrier_p2p_descriptor *port_desc; if ( record == NULL ){ lprintf(LOG_ERR, "P2P connectivity record is invalid\n"); @@ -843,20 +843,29 @@ ipmi_ek_display_carrier_connectivity( struct ipmi_ek_multi_header * record ) (rsc_desc.resource_id & 0x0f)); } while ( rsc_desc.p2p_count > 0 ){ - memcpy ( &port_desc, &record->data[offset], - sizeof ( struct fru_picmgext_carrier_p2p_descriptor ) ); - offset += sizeof ( struct fru_picmgext_carrier_p2p_descriptor ); - if ( (port_desc.remote_resource_id & AMC_MODULE) == AMC_MODULE ){ - printf("\tPort %d =====> %s, Port %d\n", port_desc.local_port, - val2str( (port_desc.remote_resource_id & 0x0f), - ipmi_ekanalyzer_module_type), port_desc.remote_port ); - } - else{ - printf("\tPort %d =====> On Carrier Device ID %d, Port %d\n", - port_desc.local_port,(port_desc.remote_resource_id & 0x0f), - port_desc.remote_port ); - } - rsc_desc.p2p_count--; + unsigned char data[3]; +#ifndef WORDS_BIGENDIAN + data[0] = record->data[offset+0]; + data[1] = record->data[offset+1]; + data[2] = record->data[offset+2]; +#else + data[0] = record->data[offset+2]; + data[1] = record->data[offset+1]; + data[2] = record->data[offset+0]; +#endif + port_desc = (struct fru_picmgext_carrier_p2p_descriptor*) data; + offset += sizeof ( struct fru_picmgext_carrier_p2p_descriptor ); + if ( (port_desc->remote_resource_id & AMC_MODULE) == AMC_MODULE ){ + printf("\tPort %d =====> %s, Port %d\n", port_desc->local_port, + val2str( (port_desc->remote_resource_id & 0x0f), + ipmi_ekanalyzer_module_type), port_desc->remote_port ); + } + else { + printf("\tPort %d =====> On Carrier Device ID %d, Port %d\n", + port_desc->local_port,(port_desc->remote_resource_id & 0x0f), + port_desc->remote_port ); + } + rsc_desc.p2p_count--; } } return_value = OK_STATUS; -- 1.7.7 ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_d2d_mar _______________________________________________ Ipmitool-devel mailing list Ipmitool-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ipmitool-devel