mirror of
https://github.com/ipmitool/ipmitool.git
synced 2025-05-10 18:47:22 +00:00
- Fix non-working issue when trying to send a bridge message with Cipher 3
- Change bridge message handling to reuse command ipmi_lan_poll_recv
This commit is contained in:
parent
f8b3d70c13
commit
264b95cd21
@ -309,6 +309,7 @@ static struct ipmi_rq_entry *
|
|||||||
ipmi_req_lookup_entry(uint8_t seq, uint8_t cmd)
|
ipmi_req_lookup_entry(uint8_t seq, uint8_t cmd)
|
||||||
{
|
{
|
||||||
struct ipmi_rq_entry * e = ipmi_req_entries;
|
struct ipmi_rq_entry * e = ipmi_req_entries;
|
||||||
|
|
||||||
while (e && (e->rq_seq != seq || e->req.msg.cmd != cmd)) {
|
while (e && (e->rq_seq != seq || e->req.msg.cmd != cmd)) {
|
||||||
if (e == e->next)
|
if (e == e->next)
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -712,13 +713,25 @@ ipmi_lan_poll_recv(struct ipmi_intf * intf)
|
|||||||
rsp->payload.ipmi_response.cmd);
|
rsp->payload.ipmi_response.cmd);
|
||||||
if (entry != NULL) {
|
if (entry != NULL) {
|
||||||
lprintf(LOG_DEBUG+2, "IPMI Request Match found");
|
lprintf(LOG_DEBUG+2, "IPMI Request Match found");
|
||||||
if (intf->target_addr != intf->my_addr &&
|
if (
|
||||||
bridgePossible) {
|
intf->target_addr != intf->my_addr
|
||||||
|
&&
|
||||||
|
bridgePossible
|
||||||
|
&&
|
||||||
|
rsp->data_len
|
||||||
|
&&
|
||||||
|
rsp->payload.ipmi_response.cmd == 0x34
|
||||||
|
)
|
||||||
|
{
|
||||||
|
/* Check completion code */
|
||||||
if (rsp->data[offset-1] == 0)
|
if (rsp->data[offset-1] == 0)
|
||||||
{
|
{
|
||||||
lprintf(LOG_DEBUG, "Bridged command answer,"
|
lprintf(LOG_DEBUG, "Bridged command answer,"
|
||||||
" waiting for next answer ");
|
" waiting for next answer... ");
|
||||||
rsp = ipmi_lan_recv_packet(intf);
|
ipmi_req_remove_entry(rsp->payload.ipmi_response.rq_seq,
|
||||||
|
rsp->payload.ipmi_response.cmd);
|
||||||
|
ipmi_lan_poll_recv(intf);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1851,13 +1864,21 @@ ipmi_lanplus_build_v2x_ipmi_cmd(
|
|||||||
{
|
{
|
||||||
entry = ipmi_req_add_entry(intf, req, curr_seq);
|
entry = ipmi_req_add_entry(intf, req, curr_seq);
|
||||||
}
|
}
|
||||||
else
|
else /* it's a bridge command */
|
||||||
{
|
{
|
||||||
unsigned char backup_cmd;
|
unsigned char backup_cmd;
|
||||||
|
|
||||||
|
/* Add entry for cmd */
|
||||||
|
entry = ipmi_req_add_entry(intf, req, curr_seq);
|
||||||
|
|
||||||
|
if(entry)
|
||||||
|
{
|
||||||
|
/* Add entry for bridge cmd */
|
||||||
backup_cmd = req->msg.cmd;
|
backup_cmd = req->msg.cmd;
|
||||||
req->msg.cmd = 0x34;
|
req->msg.cmd = 0x34;
|
||||||
entry = ipmi_req_add_entry(intf, req, curr_seq);
|
entry = ipmi_req_add_entry(intf, req, curr_seq);
|
||||||
req->msg.cmd = backup_cmd;
|
req->msg.cmd = backup_cmd;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entry == NULL)
|
if (entry == NULL)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user