From 39f94ef8f2a49709b2743a444acd36ea2d871fe3 Mon Sep 17 00:00:00 2001 From: "William A. Kennington III" Date: Mon, 19 Nov 2018 22:36:16 -0800 Subject: transporthandler: Use switch when applicable Tested: Build and run through unit tests. Change-Id: Id86f7f368f1c1e78b7f764d53231e8d0d51ad02f Signed-off-by: William A. Kennington III --- transporthandler.cpp | 167 +++++++++++++++++++++++++++------------------------ 1 file changed, 90 insertions(+), 77 deletions(-) (limited to 'transporthandler.cpp') diff --git a/transporthandler.cpp b/transporthandler.cpp index 39b1c9f..c6a4031 100644 --- a/transporthandler.cpp +++ b/transporthandler.cpp @@ -585,98 +585,111 @@ ipmi_ret_t ipmi_transport_get_lan(ipmi_netfn_t netfn, ipmi_cmd_t cmd, } auto channelConf = getChannelConfig(channel); - if (reqptr->parameter == LAN_PARM_INPROGRESS) - { - uint8_t buf[] = {current_revision, channelConf->lan_set_in_progress}; - *data_len = sizeof(buf); - std::memcpy(response, &buf, *data_len); - } - else if (reqptr->parameter == LAN_PARM_AUTHSUPPORT) - { - uint8_t buf[] = {current_revision, 0x04}; - *data_len = sizeof(buf); - std::memcpy(response, &buf, *data_len); - } - else if (reqptr->parameter == LAN_PARM_AUTHENABLES) - { - uint8_t buf[] = {current_revision, 0x04, 0x04, 0x04, 0x04, 0x04}; - *data_len = sizeof(buf); - std::memcpy(response, &buf, *data_len); - } - else if ((reqptr->parameter == LAN_PARM_IP) || - (reqptr->parameter == LAN_PARM_SUBNET) || - (reqptr->parameter == LAN_PARM_GATEWAY) || - (reqptr->parameter == LAN_PARM_MAC)) + switch (reqptr->parameter) { - uint8_t buf[ipmi::network::MAC_ADDRESS_SIZE_BYTE + 1] = {}; + case LAN_PARM_INPROGRESS: + { + uint8_t buf[] = {current_revision, + channelConf->lan_set_in_progress}; + *data_len = sizeof(buf); + std::memcpy(response, &buf, *data_len); + break; + } + case LAN_PARM_AUTHSUPPORT: + { + uint8_t buf[] = {current_revision, 0x04}; + *data_len = sizeof(buf); + std::memcpy(response, &buf, *data_len); + break; + } + case LAN_PARM_AUTHENABLES: + { + uint8_t buf[] = {current_revision, 0x04, 0x04, 0x04, 0x04, 0x04}; + *data_len = sizeof(buf); + std::memcpy(response, &buf, *data_len); + break; + } + case LAN_PARM_IP: + case LAN_PARM_SUBNET: + case LAN_PARM_GATEWAY: + case LAN_PARM_MAC: + { + uint8_t buf[ipmi::network::MAC_ADDRESS_SIZE_BYTE + 1] = {}; - *data_len = sizeof(current_revision); - std::memcpy(buf, ¤t_revision, *data_len); + *data_len = sizeof(current_revision); + std::memcpy(buf, ¤t_revision, *data_len); - if (getNetworkData(reqptr->parameter, &buf[1], channel) == IPMI_CC_OK) - { - if (reqptr->parameter == LAN_PARM_MAC) + if (getNetworkData(reqptr->parameter, &buf[1], channel) == + IPMI_CC_OK) { - *data_len = sizeof(buf); + if (reqptr->parameter == LAN_PARM_MAC) + { + *data_len = sizeof(buf); + } + else + { + *data_len = ipmi::network::IPV4_ADDRESS_SIZE_BYTE + 1; + } + std::memcpy(response, &buf, *data_len); } else { - *data_len = ipmi::network::IPV4_ADDRESS_SIZE_BYTE + 1; + rc = IPMI_CC_UNSPECIFIED_ERROR; } - std::memcpy(response, &buf, *data_len); + break; } - else + case LAN_PARM_VLAN: { - rc = IPMI_CC_UNSPECIFIED_ERROR; - } - } - else if (reqptr->parameter == LAN_PARM_VLAN) - { - uint8_t buf[ipmi::network::VLAN_SIZE_BYTE + 1] = {}; + uint8_t buf[ipmi::network::VLAN_SIZE_BYTE + 1] = {}; - *data_len = sizeof(current_revision); - std::memcpy(buf, ¤t_revision, *data_len); - if (getNetworkData(reqptr->parameter, &buf[1], channel) == IPMI_CC_OK) + *data_len = sizeof(current_revision); + std::memcpy(buf, ¤t_revision, *data_len); + if (getNetworkData(reqptr->parameter, &buf[1], channel) == + IPMI_CC_OK) + { + *data_len = sizeof(buf); + std::memcpy(response, &buf, *data_len); + } + break; + } + case LAN_PARM_IPSRC: { - *data_len = sizeof(buf); - std::memcpy(response, &buf, *data_len); + uint8_t buff[ipmi::network::IPSRC_SIZE_BYTE + 1] = {}; + *data_len = sizeof(current_revision); + std::memcpy(buff, ¤t_revision, *data_len); + if (getNetworkData(reqptr->parameter, &buff[1], channel) == + IPMI_CC_OK) + { + *data_len = sizeof(buff); + std::memcpy(response, &buff, *data_len); + } + break; } - } - else if (reqptr->parameter == LAN_PARM_IPSRC) - { - uint8_t buff[ipmi::network::IPSRC_SIZE_BYTE + 1] = {}; - *data_len = sizeof(current_revision); - std::memcpy(buff, ¤t_revision, *data_len); - if (getNetworkData(reqptr->parameter, &buff[1], channel) == IPMI_CC_OK) + case CIPHER_SUITE_COUNT: { - *data_len = sizeof(buff); - std::memcpy(response, &buff, *data_len); + *(static_cast(response)) = current_revision; + // Byte 1 is reserved byte and does not indicate a cipher suite ID, + // so no of cipher suite entry count is one less than the size of + // the vector + auto count = static_cast(cipherList.size() - 1); + *(static_cast(response) + 1) = count; + *data_len = sizeof(current_revision) + sizeof(count); + break; } - } - else if (reqptr->parameter == CIPHER_SUITE_COUNT) - { - *(static_cast(response)) = current_revision; - // Byte 1 is reserved byte and does not indicate a cipher suite ID, so - // no of cipher suite entry count is one less than the size of the - // vector - auto count = static_cast(cipherList.size() - 1); - *(static_cast(response) + 1) = count; - *data_len = sizeof(current_revision) + sizeof(count); - } - else if (reqptr->parameter == CIPHER_SUITE_ENTRIES) - { - *(static_cast(response)) = current_revision; - // Byte 1 is reserved - std::copy_n(cipherList.data(), cipherList.size(), - static_cast(response) + 1); - *data_len = - sizeof(current_revision) + static_cast(cipherList.size()); - } - else - { - log("Unsupported parameter", - entry("PARAMETER=0x%x", reqptr->parameter)); - rc = IPMI_CC_PARM_NOT_SUPPORTED; + case CIPHER_SUITE_ENTRIES: + { + *(static_cast(response)) = current_revision; + // Byte 1 is reserved + std::copy_n(cipherList.data(), cipherList.size(), + static_cast(response) + 1); + *data_len = sizeof(current_revision) + + static_cast(cipherList.size()); + break; + } + default: + log("Unsupported parameter", + entry("PARAMETER=0x%x", reqptr->parameter)); + rc = IPMI_CC_PARM_NOT_SUPPORTED; } return rc; -- cgit v1.2.1