mirror of
https://github.com/ipmitool/ipmitool.git
synced 2025-05-10 18:47:22 +00:00
- Added dual bridge support
This commit is contained in:
parent
ed84ac0a9b
commit
80b8d3b318
@ -1327,6 +1327,7 @@ void getIpmiPayloadWireRep(
|
||||
{
|
||||
int cs, tmp, len;
|
||||
int cs2 = 0;
|
||||
int cs3 = 0;
|
||||
uint8_t ourAddress = intf->my_addr;
|
||||
uint8_t bridgedRequest = 0;
|
||||
|
||||
@ -1339,8 +1340,13 @@ void getIpmiPayloadWireRep(
|
||||
if ((intf->target_addr == ourAddress) || (!bridgePossible))
|
||||
cs = len;
|
||||
else {
|
||||
/* bridged request: encapsulate w/in Send Message */
|
||||
bridgedRequest = 1;
|
||||
|
||||
if(intf->transit_addr != ourAddress)
|
||||
{
|
||||
bridgedRequest++;
|
||||
}
|
||||
/* bridged request: encapsulate w/in Send Message */
|
||||
cs = len;
|
||||
msg[len++] = IPMI_BMC_SLAVE_ADDR;
|
||||
msg[len++] = IPMI_NETFN_APP << 2;
|
||||
@ -1349,6 +1355,28 @@ void getIpmiPayloadWireRep(
|
||||
cs2 = len;
|
||||
msg[len++] = IPMI_REMOTE_SWID;
|
||||
msg[len++] = curr_seq << 2;
|
||||
|
||||
|
||||
msg[len++] = 0x34; /* Send Message rqst */
|
||||
if(bridgedRequest == 2)
|
||||
msg[len++] = (0x40|intf->transit_channel); /* Track request*/
|
||||
else
|
||||
msg[len++] = (0x40|intf->target_channel); /* Track request*/
|
||||
|
||||
payload->payload_length += 7;
|
||||
cs = len;
|
||||
|
||||
if(bridgedRequest == 2)
|
||||
{
|
||||
/* bridged request: encapsulate w/in Send Message */
|
||||
cs = len;
|
||||
msg[len++] = intf->transit_addr;
|
||||
msg[len++] = IPMI_NETFN_APP << 2;
|
||||
tmp = len - cs;
|
||||
msg[len++] = ipmi_csum(msg+cs, tmp);
|
||||
cs3 = len;
|
||||
msg[len++] = intf->my_addr;
|
||||
msg[len++] = curr_seq << 2;
|
||||
msg[len++] = 0x34; /* Send Message rqst */
|
||||
#if 0 /* From lan.c example */
|
||||
entry->req.msg.target_cmd = entry->req.msg.cmd; /* Save target command */
|
||||
@ -1360,6 +1388,7 @@ void getIpmiPayloadWireRep(
|
||||
|
||||
cs = len;
|
||||
}
|
||||
}
|
||||
|
||||
/* rsAddr */
|
||||
msg[len++] = intf->target_addr; /* IPMI_BMC_SLAVE_ADDR; */
|
||||
@ -1394,6 +1423,13 @@ void getIpmiPayloadWireRep(
|
||||
tmp = len - cs;
|
||||
msg[len++] = ipmi_csum(msg+cs, tmp);
|
||||
|
||||
/* Dual bridged request: 2nd checksum */
|
||||
if (bridgedRequest == 2) {
|
||||
tmp = len - cs3;
|
||||
msg[len++] = ipmi_csum(msg+cs3, tmp);
|
||||
payload->payload_length += 1;
|
||||
}
|
||||
|
||||
/* bridged request: 2nd checksum */
|
||||
if (bridgedRequest) {
|
||||
tmp = len - cs2;
|
||||
|
Loading…
x
Reference in New Issue
Block a user