int ipmicmd_mc_send(ipmi_mc_t *mc, uchar netfn, uchar cmd, uchar lun, uchar *pdata, uchar sdata, ipmi_mc_response_handler_t handler, void *handler_data) { struct ipmi_msg msg; msg.netfn = netfn; msg.cmd = cmd; msg.data = pdata; msg.data_len = sdata; return ipmi_mc_send_command(mc, lun, &msg, handler, handler_data); }
static void start_config_fetch_cb(ipmi_mc_t *mc, void *cb_data) { solparm_fetch_handler_t *elem = cb_data; ipmi_solparm_t *solparm = elem->solparm; unsigned char data[4]; ipmi_msg_t msg; int rv; solparm_lock(solparm); if (solparm->destroyed) { ipmi_log(IPMI_LOG_ERR_INFO, "%ssolparm.c(start_config_fetch_cb): " "SOLPARM was destroyed while an operation was in progress", MC_NAME(mc)); fetch_complete(solparm, ECANCELED, elem); goto out; } msg.data = data; msg.netfn = IPMI_TRANSPORT_NETFN; msg.cmd = IPMI_GET_SOL_CONFIGURATION_PARAMETERS; data[0] = solparm->channel; data[1] = elem->parm; data[2] = elem->set; data[3] = elem->block; msg.data_len = 4; rv = ipmi_mc_send_command(mc, 0, &msg, solparm_config_fetched, elem); if (rv) { ipmi_log(IPMI_LOG_ERR_INFO, "%ssolparm.c(start_config_fetch_cb): " "SOLPARM start_config_fetch: could not send cmd: %x", MC_NAME(mc), rv); fetch_complete(solparm, ECANCELED, elem); goto out; } solparm_unlock(solparm); out: return; }
static void start_config_set_cb(ipmi_mc_t *mc, void *cb_data) { solparm_set_handler_t *elem = cb_data; ipmi_solparm_t *solparm = elem->solparm; ipmi_msg_t msg; int rv; solparm_lock(solparm); if (solparm->destroyed) { ipmi_log(IPMI_LOG_ERR_INFO, "%ssolparm.c(start_config_set_cb): " "SOLPARM was destroyed while an operation was in progress", MC_NAME(mc)); set_complete(solparm, ECANCELED, elem); goto out; } msg.netfn = IPMI_TRANSPORT_NETFN; msg.cmd = IPMI_SET_SOL_CONFIGURATION_PARAMETERS; msg.data = elem->data; msg.data_len = elem->data_len; rv = ipmi_mc_send_command(mc, 0, &msg, solparm_config_set, elem); if (rv) { ipmi_log(IPMI_LOG_ERR_INFO, "%ssolparm.c(start_config_set_cb): " "SOLPARM start_config_set: could not send cmd: %x", MC_NAME(mc), rv); set_complete(solparm, ECANCELED, elem); goto out; } solparm_unlock(solparm); out: return; }