Esempio n. 1
0
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);
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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;
}