Signed-off-by: Dan Gora <d...@adax.com> --- ipmitool/lib/ipmi_ekanalyzer.c | 167 ++++++++++++++++++++-------------------- 1 files changed, 84 insertions(+), 83 deletions(-)
diff --git a/ipmitool/lib/ipmi_ekanalyzer.c b/ipmitool/lib/ipmi_ekanalyzer.c index 34b6cb6..9fd4be1 100644 --- a/ipmitool/lib/ipmi_ekanalyzer.c +++ b/ipmitool/lib/ipmi_ekanalyzer.c @@ -2210,93 +2210,94 @@ static int ipmi_ek_create_amc_p2p_record( struct ipmi_ek_multi_header * record, struct ipmi_ek_amc_p2p_connectivity_record * amc_record ) { - int return_status = OK_STATUS; - int index_data = START_DATA_OFFSET; + int return_status = OK_STATUS; + int index_data = START_DATA_OFFSET; - amc_record->guid_count = record->data[index_data++]; - if ( amc_record->guid_count > 0){ - int index_oem = 0; - amc_record->oem_guid = malloc (amc_record->guid_count * \ - sizeof(struct fru_picmgext_guid) ); - for (index_oem = 0; index_oem < amc_record->guid_count; index_oem++){ - memcpy ( &amc_record->oem_guid[index_oem].guid, - &record->data[index_data], - SIZE_OF_GUID ); - index_data += (int)SIZE_OF_GUID; - } - amc_record->rsc_id = record->data[index_data++]; - amc_record->ch_count = record->data[index_data++]; - /*Calculate link descriptor count*/ - amc_record->link_desc_count = ( (record->header.len) - 8 - - (SIZE_OF_GUID*amc_record->guid_count) - - (FRU_PICMGEXT_AMC_CHANNEL_DESC_RECORD_SIZE * - amc_record->ch_count ) - )/5 ; - } - else{ - amc_record->rsc_id = record->data[index_data++]; - amc_record->ch_count = record->data[index_data++]; - /*Calculate link descriptor count see spec AMC.0 for detail*/ - amc_record->link_desc_count = ( (record->header.len) - 8 - - (FRU_PICMGEXT_AMC_CHANNEL_DESC_RECORD_SIZE * - amc_record->ch_count ) - ) / 5; - } + amc_record->guid_count = record->data[index_data++]; - if (amc_record->ch_count > 0){ - int ch_index = 0; - amc_record->ch_desc = malloc ( (amc_record->ch_count) * \ - sizeof(struct fru_picmgext_amc_channel_desc_record)); - for (ch_index = 0; ch_index < amc_record->ch_count; ch_index++){ - unsigned int data; - struct fru_picmgext_amc_channel_desc_record *src, *dst; - data = record->data[index_data] | - (record->data[index_data + 1] << 8) | - (record->data[index_data + 2] << 16); - - src = (struct fru_picmgext_amc_channel_desc_record *) &data; - dst = (struct fru_picmgext_amc_channel_desc_record *) - &amc_record->ch_desc[ch_index]; - dst->lane0port = src->lane0port; - dst->lane1port = src->lane1port; - dst->lane2port = src->lane2port; - dst->lane3port = src->lane3port; - index_data += FRU_PICMGEXT_AMC_CHANNEL_DESC_RECORD_SIZE; - } - } - if (amc_record->link_desc_count > 0){ - int i=0; - amc_record->link_desc = malloc ( amc_record->link_desc_count * - sizeof(struct fru_picmgext_amc_link_desc_record) ); - for (i = 0; i< amc_record->link_desc_count; i++ ){ - unsigned int data[2]; - struct fru_picmgext_amc_link_desc_record *src, *dst; - data[0] = record->data[index_data] | - (record->data[index_data + 1] << 8) | - (record->data[index_data + 2] << 16) | - (record->data[index_data + 3] << 24); - data[1] = record->data[index_data + 4]; - src = (struct fru_picmgext_amc_link_desc_record*) &data; - dst = (struct fru_picmgext_amc_link_desc_record*) - &amc_record->link_desc[i]; + if ( amc_record->guid_count > 0) { + int index_oem = 0; + amc_record->oem_guid = malloc (amc_record->guid_count * \ + sizeof(struct fru_picmgext_guid) ); + for (index_oem = 0; index_oem < amc_record->guid_count; + index_oem++) { + memcpy ( &amc_record->oem_guid[index_oem].guid, + &record->data[index_data], SIZE_OF_GUID ); + index_data += SIZE_OF_GUID; + } + amc_record->rsc_id = record->data[index_data++]; + amc_record->ch_count = record->data[index_data++]; + /*Calculate link descriptor count*/ + amc_record->link_desc_count = ((record->header.len) - 8 - + (SIZE_OF_GUID*amc_record->guid_count) - + (FRU_PICMGEXT_AMC_CHANNEL_DESC_RECORD_SIZE * + amc_record->ch_count)) / 5; + } else { + amc_record->rsc_id = record->data[index_data++]; + amc_record->ch_count = record->data[index_data++]; + /*Calculate link descriptor count see spec AMC.0 for detail*/ + amc_record->link_desc_count = ((record->header.len) - 8 - + (FRU_PICMGEXT_AMC_CHANNEL_DESC_RECORD_SIZE * + amc_record->ch_count)) / 5; + } - dst->channel_id = src->channel_id; - dst->port_flag_0 = src->port_flag_0; - dst->port_flag_1 = src->port_flag_1; - dst->port_flag_2 = src->port_flag_2; - dst->port_flag_3 = src->port_flag_3; - dst->type = src->type; - dst->type_ext = src->type_ext; - dst->group_id = src->group_id; - dst->asym_match = src->asym_match; - index_data += FRU_PICMGEXT_AMC_LINK_DESC_RECORD_SIZE; - } - } - else{ - return_status = ERROR_STATUS; - } + if (amc_record->ch_count > 0) { + int ch_index; + amc_record->ch_desc = malloc((amc_record->ch_count) * + sizeof(struct fru_picmgext_amc_channel_desc_record)); + for (ch_index = 0; ch_index < amc_record->ch_count; + ch_index++) { + unsigned int data; + struct fru_picmgext_amc_channel_desc_record *src, *dst; + data = record->data[index_data] | + (record->data[index_data + 1] << 8) | + (record->data[index_data + 2] << 16); - return return_status; + src = (struct fru_picmgext_amc_channel_desc_record *) + &data; + dst = (struct fru_picmgext_amc_channel_desc_record *) + &amc_record->ch_desc[ch_index]; + dst->lane0port = src->lane0port; + dst->lane1port = src->lane1port; + dst->lane2port = src->lane2port; + dst->lane3port = src->lane3port; + index_data += FRU_PICMGEXT_AMC_CHANNEL_DESC_RECORD_SIZE; + } + } + + if (amc_record->link_desc_count > 0) { + int i; + amc_record->link_desc = malloc(amc_record->link_desc_count * + sizeof(struct fru_picmgext_amc_link_desc_record)); + for (i = 0; i < amc_record->link_desc_count; i++) { + unsigned int data[2]; + struct fru_picmgext_amc_link_desc_record *src, *dst; + data[0] = record->data[index_data] | + (record->data[index_data + 1] << 8) | + (record->data[index_data + 2] << 16) | + (record->data[index_data + 3] << 24); + data[1] = record->data[index_data + 4]; + src = (struct fru_picmgext_amc_link_desc_record*) &data; + dst = (struct fru_picmgext_amc_link_desc_record*) + &amc_record->link_desc[i]; + + dst->channel_id = src->channel_id; + dst->port_flag_0 = src->port_flag_0; + dst->port_flag_1 = src->port_flag_1; + dst->port_flag_2 = src->port_flag_2; + dst->port_flag_3 = src->port_flag_3; + dst->type = src->type; + dst->type_ext = src->type_ext; + dst->group_id = src->group_id; + dst->asym_match = src->asym_match; + index_data += FRU_PICMGEXT_AMC_LINK_DESC_RECORD_SIZE; + } + } + else { + return_status = ERROR_STATUS; + } + + return return_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