diff --git a/ipmitool/lib/ipmi_sol.c b/ipmitool/lib/ipmi_sol.c index cccef78..47288d8 100644 --- a/ipmitool/lib/ipmi_sol.c +++ b/ipmitool/lib/ipmi_sol.c @@ -208,7 +208,6 @@ ipmi_get_sol_info( req.msg.data_len = 4; req.msg.data = data; - /* * set in progress */ @@ -219,70 +218,70 @@ ipmi_get_sol_info( data[3] = 0x00; /* block selector */ rsp = intf->sendrecv(intf, &req); - - if (NULL != rsp) { - switch (rsp->ccode) { - case 0x00: - if (rsp->data_len == 2) { - params->set_in_progress = rsp->data[1]; - } else { - lprintf(LOG_ERR, "Error: Unexpected data length (%d) received " - "for SOL parameter '%s'", - rsp->data_len, - val2str(data[1], sol_parameter_vals)); - } - break; - case 0x80: - lprintf(LOG_ERR, "Info: SOL parameter '%s' not supported", - val2str(data[1], sol_parameter_vals)); - break; - default: - lprintf(LOG_ERR, "Error requesting SOL parameter '%s': %s", - val2str(data[1], sol_parameter_vals), - val2str(rsp->ccode, completion_code_vals)); - return -1; - } - } else { + if (rsp == NULL) { lprintf(LOG_ERR, "Error: No response requesting SOL parameter '%s'", - val2str(data[1], sol_parameter_vals)); + val2str(data[1], sol_parameter_vals)); + return (-1); + } + + switch (rsp->ccode) { + case 0x00: + if (rsp->data_len == 2) { + params->set_in_progress = rsp->data[1]; + } else { + lprintf(LOG_ERR, "Error: Unexpected data length (%d) received " + "for SOL parameter '%s'", + rsp->data_len, + val2str(data[1], sol_parameter_vals)); + } + break; + case 0x80: + lprintf(LOG_ERR, "Info: SOL parameter '%s' not supported", + val2str(data[1], sol_parameter_vals)); + break; + default: + lprintf(LOG_ERR, "Error requesting SOL parameter '%s': %s", + val2str(data[1], sol_parameter_vals), + val2str(rsp->ccode, completion_code_vals)); + return (-1); } /* * SOL enable */ - memset(data, 0, sizeof(data)); + memset(data, 0, sizeof(data)); data[0] = channel; /* channel number */ data[1] = SOL_PARAMETER_SOL_ENABLE; /* parameter selector */ data[2] = 0x00; /* set selector */ data[3] = 0x00; /* block selector */ rsp = intf->sendrecv(intf, &req); - - if (NULL != rsp) { - switch (rsp->ccode) { - case 0x00: - if (rsp->data_len == 2) { - params->enabled = rsp->data[1]; - } else { - lprintf(LOG_ERR, "Error: Unexpected data length (%d) received " - "for SOL parameter '%s'", - rsp->data_len, - val2str(data[1], sol_parameter_vals)); - } - break; - case 0x80: - lprintf(LOG_ERR, "Info: SOL parameter '%s' not supported", - val2str(data[1], sol_parameter_vals)); - break; - default: - lprintf(LOG_ERR, "Error requesting SOL parameter '%s': %s", - val2str(data[1], sol_parameter_vals), - val2str(rsp->ccode, completion_code_vals)); - return -1; - } - } else { + if (rsp == NULL) { lprintf(LOG_ERR, "Error: No response requesting SOL parameter '%s'", - val2str(data[1], sol_parameter_vals)); + val2str(data[1], sol_parameter_vals)); + return (-1); + } + + switch (rsp->ccode) { + case 0x00: + if (rsp->data_len == 2) { + params->enabled = rsp->data[1]; + } else { + lprintf(LOG_ERR, "Error: Unexpected data length (%d) received " + "for SOL parameter '%s'", + rsp->data_len, + val2str(data[1], sol_parameter_vals)); + } + break; + case 0x80: + lprintf(LOG_ERR, "Info: SOL parameter '%s' not supported", + val2str(data[1], sol_parameter_vals)); + break; + default: + lprintf(LOG_ERR, "Error requesting SOL parameter '%s': %s", + val2str(data[1], sol_parameter_vals), + val2str(rsp->ccode, completion_code_vals)); + return (-1); } /* @@ -295,33 +294,34 @@ ipmi_get_sol_info( data[3] = 0x00; /* block selector */ rsp = intf->sendrecv(intf, &req); - if (NULL != rsp) { - switch (rsp->ccode) { - case 0x00: - if (rsp->data_len == 2) { - params->force_encryption = ((rsp->data[1] & 0x80)? 1 : 0); - params->force_authentication = ((rsp->data[1] & 0x40)? 1 : 0); - params->privilege_level = rsp->data[1] & 0x0F; - } else { - lprintf(LOG_ERR, "Error: Unexpected data length (%d) received " - "for SOL parameter '%s'", - rsp->data_len, - val2str(data[1], sol_parameter_vals)); - } - break; - case 0x80: - lprintf(LOG_ERR, "Info: SOL parameter '%s' not supported", - val2str(data[1], sol_parameter_vals)); - break; - default: - lprintf(LOG_ERR, "Error requesting SOL parameter '%s': %s", - val2str(data[1], sol_parameter_vals), - val2str(rsp->ccode, completion_code_vals)); - return -1; - } - } else { + if (rsp == NULL) { lprintf(LOG_ERR, "Error: No response requesting SOL parameter '%s'", - val2str(data[1], sol_parameter_vals)); + val2str(data[1], sol_parameter_vals)); + return (-1); + } + + switch (rsp->ccode) { + case 0x00: + if (rsp->data_len == 2) { + params->force_encryption = ((rsp->data[1] & 0x80)? 1 : 0); + params->force_authentication = ((rsp->data[1] & 0x40)? 1 : 0); + params->privilege_level = rsp->data[1] & 0x0F; + } else { + lprintf(LOG_ERR, "Error: Unexpected data length (%d) received " + "for SOL parameter '%s'", + rsp->data_len, + val2str(data[1], sol_parameter_vals)); + } + break; + case 0x80: + lprintf(LOG_ERR, "Info: SOL parameter '%s' not supported", + val2str(data[1], sol_parameter_vals)); + break; + default: + lprintf(LOG_ERR, "Error requesting SOL parameter '%s': %s", + val2str(data[1], sol_parameter_vals), + val2str(rsp->ccode, completion_code_vals)); + return (-1); } /* @@ -334,32 +334,33 @@ ipmi_get_sol_info( data[3] = 0x00; /* block selector */ rsp = intf->sendrecv(intf, &req); - if (NULL != rsp) { - switch (rsp->ccode) { - case 0x00: - if (rsp->data_len == 3) { - params->character_accumulate_level = rsp->data[1]; - params->character_send_threshold = rsp->data[2]; - } else { - lprintf(LOG_ERR, "Error: Unexpected data length (%d) received " - "for SOL parameter '%s'", - rsp->data_len, - val2str(data[1], sol_parameter_vals)); - } - break; - case 0x80: - lprintf(LOG_ERR, "Info: SOL parameter '%s' not supported", - val2str(data[1], sol_parameter_vals)); - break; - default: - lprintf(LOG_ERR, "Error requesting SOL parameter '%s': %s", - val2str(data[1], sol_parameter_vals), - val2str(rsp->ccode, completion_code_vals)); - return -1; - } - } else { + if (rsp == NULL) { lprintf(LOG_ERR, "Error: No response requesting SOL parameter '%s'", - val2str(data[1], sol_parameter_vals)); + val2str(data[1], sol_parameter_vals)); + return (-1); + } + + switch (rsp->ccode) { + case 0x00: + if (rsp->data_len == 3) { + params->character_accumulate_level = rsp->data[1]; + params->character_send_threshold = rsp->data[2]; + } else { + lprintf(LOG_ERR, "Error: Unexpected data length (%d) received " + "for SOL parameter '%s'", + rsp->data_len, + val2str(data[1], sol_parameter_vals)); + } + break; + case 0x80: + lprintf(LOG_ERR, "Info: SOL parameter '%s' not supported", + val2str(data[1], sol_parameter_vals)); + break; + default: + lprintf(LOG_ERR, "Error requesting SOL parameter '%s': %s", + val2str(data[1], sol_parameter_vals), + val2str(rsp->ccode, completion_code_vals)); + return (-1); } /* @@ -372,32 +373,33 @@ ipmi_get_sol_info( data[3] = 0x00; /* block selector */ rsp = intf->sendrecv(intf, &req); - if (NULL != rsp) { - switch (rsp->ccode) { - case 0x00: - if (rsp->data_len == 3) { - params->retry_count = rsp->data[1]; - params->retry_interval = rsp->data[2]; - } else { - lprintf(LOG_ERR, "Error: Unexpected data length (%d) received " - "for SOL parameter '%s'", - rsp->data_len, - val2str(data[1], sol_parameter_vals)); - } - break; - case 0x80: - lprintf(LOG_ERR, "Info: SOL parameter '%s' not supported", - val2str(data[1], sol_parameter_vals)); - break; - default: - lprintf(LOG_ERR, "Error requesting SOL parameter '%s': %s", - val2str(data[1], sol_parameter_vals), - val2str(rsp->ccode, completion_code_vals)); - return -1; - } - } else { + if (rsp == NULL) { lprintf(LOG_ERR, "Error: No response requesting SOL parameter '%s'", - val2str(data[1], sol_parameter_vals)); + val2str(data[1], sol_parameter_vals)); + return (-1); + } + + switch (rsp->ccode) { + case 0x00: + if (rsp->data_len == 3) { + params->retry_count = rsp->data[1]; + params->retry_interval = rsp->data[2]; + } else { + lprintf(LOG_ERR, "Error: Unexpected data length (%d) received " + "for SOL parameter '%s'", + rsp->data_len, + val2str(data[1], sol_parameter_vals)); + } + break; + case 0x80: + lprintf(LOG_ERR, "Info: SOL parameter '%s' not supported", + val2str(data[1], sol_parameter_vals)); + break; + default: + lprintf(LOG_ERR, "Error requesting SOL parameter '%s': %s", + val2str(data[1], sol_parameter_vals), + val2str(rsp->ccode, completion_code_vals)); + return (-1); } /* @@ -405,36 +407,37 @@ ipmi_get_sol_info( */ memset(data, 0, sizeof(data)); data[0] = channel; /* channel number */ - data[1] = SOL_PARAMETER_SOL_NON_VOLATILE_BIT_RATE; /* parameter selector */ - data[2] = 0x00; /* set selector */ + data[1] = SOL_PARAMETER_SOL_NON_VOLATILE_BIT_RATE; /* parameter selector */ + data[2] = 0x00; /* set selector */ data[3] = 0x00; /* block selector */ rsp = intf->sendrecv(intf, &req); - if (NULL != rsp) { - switch (rsp->ccode) { - case 0x00: - if (rsp->data_len == 2) { - params->non_volatile_bit_rate = rsp->data[1] & 0x0F; - } else { - lprintf(LOG_ERR, "Error: Unexpected data length (%d) received " - "for SOL parameter '%s'", - rsp->data_len, - val2str(data[1], sol_parameter_vals)); - } - break; - case 0x80: - lprintf(LOG_ERR, "Info: SOL parameter '%s' not supported", - val2str(data[1], sol_parameter_vals)); - break; - default: - lprintf(LOG_ERR, "Error requesting SOL parameter '%s': %s", - val2str(data[1], sol_parameter_vals), - val2str(rsp->ccode, completion_code_vals)); - return -1; - } - } else { + if (rsp == NULL) { lprintf(LOG_ERR, "Error: No response requesting SOL parameter '%s'", - val2str(data[1], sol_parameter_vals)); + val2str(data[1], sol_parameter_vals)); + return (-1); + } + + switch (rsp->ccode) { + case 0x00: + if (rsp->data_len == 2) { + params->non_volatile_bit_rate = rsp->data[1] & 0x0F; + } else { + lprintf(LOG_ERR, "Error: Unexpected data length (%d) received " + "for SOL parameter '%s'", + rsp->data_len, + val2str(data[1], sol_parameter_vals)); + } + break; + case 0x80: + lprintf(LOG_ERR, "Info: SOL parameter '%s' not supported", + val2str(data[1], sol_parameter_vals)); + break; + default: + lprintf(LOG_ERR, "Error requesting SOL parameter '%s': %s", + val2str(data[1], sol_parameter_vals), + val2str(rsp->ccode, completion_code_vals)); + return (-1); } /* @@ -447,31 +450,32 @@ ipmi_get_sol_info( data[3] = 0x00; /* block selector */ rsp = intf->sendrecv(intf, &req); - if (NULL != rsp) { - switch (rsp->ccode) { - case 0x00: - if (rsp->data_len == 2) { - params->volatile_bit_rate = rsp->data[1] & 0x0F; - } else { - lprintf(LOG_ERR, "Error: Unexpected data length (%d) received " - "for SOL parameter '%s'", - rsp->data_len, - val2str(data[1], sol_parameter_vals)); - } - break; - case 0x80: - lprintf(LOG_ERR, "Info: SOL parameter '%s' not supported", - val2str(data[1], sol_parameter_vals)); - break; - default: - lprintf(LOG_ERR, "Error requesting SOL parameter '%s': %s", - val2str(data[1], sol_parameter_vals), - val2str(rsp->ccode, completion_code_vals)); - return -1; - } - } else { + if (rsp == NULL) { lprintf(LOG_ERR, "Error: No response requesting SOL parameter '%s'", - val2str(data[1], sol_parameter_vals)); + val2str(data[1], sol_parameter_vals)); + return (-1); + } + + switch (rsp->ccode) { + case 0x00: + if (rsp->data_len == 2) { + params->volatile_bit_rate = rsp->data[1] & 0x0F; + } else { + lprintf(LOG_ERR, "Error: Unexpected data length (%d) received " + "for SOL parameter '%s'", + rsp->data_len, + val2str(data[1], sol_parameter_vals)); + } + break; + case 0x80: + lprintf(LOG_ERR, "Info: SOL parameter '%s' not supported", + val2str(data[1], sol_parameter_vals)); + break; + default: + lprintf(LOG_ERR, "Error requesting SOL parameter '%s': %s", + val2str(data[1], sol_parameter_vals), + val2str(rsp->ccode, completion_code_vals)); + return (-1); } /* @@ -484,32 +488,33 @@ ipmi_get_sol_info( data[3] = 0x00; /* block selector */ rsp = intf->sendrecv(intf, &req); - if (NULL != rsp) { - switch (rsp->ccode) { - case 0x00: - if (rsp->data_len == 2) { - params->payload_channel = rsp->data[1]; - } else { - lprintf(LOG_ERR, "Error: Unexpected data length (%d) received " - "for SOL parameter '%s'", - rsp->data_len, - val2str(data[1], sol_parameter_vals)); - } - break; - case 0x80: - lprintf(LOG_ERR, "Info: SOL parameter '%s' not supported - defaulting to 0x%02x", - val2str(data[1], sol_parameter_vals), channel); - params->payload_channel = channel; - break; - default: - lprintf(LOG_ERR, "Error requesting SOL parameter '%s': %s", + if (rsp == NULL) { + lprintf(LOG_ERR, "Error: No response requesting SOL parameter '%s'", + val2str(data[1], sol_parameter_vals)); + return (-1); + } + + switch (rsp->ccode) { + case 0x00: + if (rsp->data_len == 2) { + params->payload_channel = rsp->data[1]; + } else { + lprintf(LOG_ERR, "Error: Unexpected data length (%d) received " + "for SOL parameter '%s'", + rsp->data_len, + val2str(data[1], sol_parameter_vals)); + } + break; + case 0x80: + lprintf(LOG_ERR, "Info: SOL parameter '%s' not supported - defaulting to 0x%02x", + val2str(data[1], sol_parameter_vals), channel); + params->payload_channel = channel; + break; + default: + lprintf(LOG_ERR, "Error requesting SOL parameter '%s': %s", val2str(data[1], sol_parameter_vals), val2str(rsp->ccode, completion_code_vals)); - return -1; - } - } else { - lprintf(LOG_ERR, "Error: No response requesting SOL parameter '%s'", - val2str(data[1], sol_parameter_vals)); + return (-1); } /* @@ -522,36 +527,41 @@ ipmi_get_sol_info( data[3] = 0x00; /* block selector */ rsp = intf->sendrecv(intf, &req); - if (NULL != rsp) { - switch (rsp->ccode) { - case 0x00: - if (rsp->data_len == 3) { - params->payload_port = (rsp->data[1]) | (rsp->data[2] << 8); - } else { - lprintf(LOG_ERR, "Error: Unexpected data length (%d) received " - "for SOL parameter '%s'", - rsp->data_len, - val2str(data[1], sol_parameter_vals)); - } - break; - case 0x80: - if( intf->session != NULL ){ - lprintf(LOG_ERR, "Info: SOL parameter '%s' not supported - defaulting to %d", val2str(data[1], sol_parameter_vals), intf->session->port); - params->payload_port = intf->session->port; - } else { - lprintf(LOG_ERR, "Info: SOL parameter '%s' not supported - can't determine which payload port to use on NULL session" ); - return -1; - } - break; - default: - lprintf(LOG_ERR, "Error requesting SOL parameter '%s': %s", - val2str(data[1], sol_parameter_vals), - val2str(rsp->ccode, completion_code_vals)); - return -1; - } - } else { + if (rsp == NULL) { lprintf(LOG_ERR, "Error: No response requesting SOL parameter '%s'", - val2str(data[1], sol_parameter_vals)); + val2str(data[1], sol_parameter_vals)); + return (-1); + } + + switch (rsp->ccode) { + case 0x00: + if (rsp->data_len == 3) { + params->payload_port = (rsp->data[1]) | (rsp->data[2] << 8); + } else { + lprintf(LOG_ERR, "Error: Unexpected data length (%d) received " + "for SOL parameter '%s'", + rsp->data_len, + val2str(data[1], sol_parameter_vals)); + } + break; + case 0x80: + if( intf->session != NULL ) { + lprintf(LOG_ERR, "Info: SOL parameter '%s' not supported - defaulting to %d", + val2str(data[1], sol_parameter_vals), intf->session->port); + params->payload_port = intf->session->port; + } else { + lprintf(LOG_ERR, + "Info: SOL parameter '%s' not supported - can't determine which " + "payload port to use on NULL session", + val2str(data[1], sol_parameter_vals)); + return (-1); + } + break; + default: + lprintf(LOG_ERR, "Error requesting SOL parameter '%s': %s", + val2str(data[1], sol_parameter_vals), + val2str(rsp->ccode, completion_code_vals)); + return (-1); } return 0;