summaryrefslogtreecommitdiff
path: root/src/plugins/lanplus/lanplus.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/lanplus/lanplus.c')
-rw-r--r--src/plugins/lanplus/lanplus.c54
1 files changed, 27 insertions, 27 deletions
diff --git a/src/plugins/lanplus/lanplus.c b/src/plugins/lanplus/lanplus.c
index 8776212..2a89a14 100644
--- a/src/plugins/lanplus/lanplus.c
+++ b/src/plugins/lanplus/lanplus.c
@@ -57,6 +57,7 @@
#include <ipmitool/ipmi_lanp.h>
#include <ipmitool/ipmi_channel.h>
#include <ipmitool/ipmi_intf.h>
+#include <ipmitool/ipmi_sel.h>
#include <ipmitool/ipmi_strings.h>
#include <ipmitool/hpm2.h>
#include <ipmitool/bswap.h>
@@ -606,7 +607,7 @@ ipmiv2_lan_ping(struct ipmi_intf * intf)
* Receive whatever comes back. Ignore received packets that don't correspond
* to a request we've sent.
*
- * Returns: the ipmi_rs packet describing the/a reponse we expect.
+ * Returns: the ipmi_rs packet describing the/a response we expect.
*/
static struct ipmi_rs *
ipmi_lan_poll_single(struct ipmi_intf * intf)
@@ -651,7 +652,7 @@ ipmi_lan_poll_single(struct ipmi_intf * intf)
*
* 1) An IPMI 1.5 packet (the response to our GET CHANNEL
* AUTHENTICATION CAPABILITIES request)
- * 2) An RMCP+ message with an IPMI reponse payload
+ * 2) An RMCP+ message with an IPMI response payload
* 3) AN RMCP+ open session response
* 4) An RAKP-2 message (response to an RAKP 1 message)
* 5) An RAKP-4 message (response to an RAKP 3 message)
@@ -662,6 +663,21 @@ ipmi_lan_poll_single(struct ipmi_intf * intf)
read_session_data(rsp, &offset, intf->session);
+ /*
+ * Skip packets that are not intended for this session
+ */
+ if ((session->v2_data.session_state == LANPLUS_STATE_ACTIVE) &&
+ (rsp->session.authtype == IPMI_SESSION_AUTHTYPE_RMCP_PLUS) &&
+ (rsp->session.id != intf->session->v2_data.console_id))
+ {
+ lprintf(LOG_INFO, "packet session id 0x%x does not "
+ "match active session 0x%0x",
+ rsp->session.id, intf->session->v2_data.console_id);
+ lprintf(LOG_ERR, "ERROR: Received an Unexpected message ID");
+ /* read one more packet */
+ return (struct ipmi_rs *)1;
+ }
+
if (lanplus_has_valid_auth_code(rsp, intf->session) == 0) {
lprintf(LOG_ERR, "ERROR: Received message with invalid authcode!");
return NULL;
@@ -681,7 +697,7 @@ ipmi_lan_poll_single(struct ipmi_intf * intf)
}
/*
- * Handle IPMI responses (case #1 and #2) -- all IPMI reponses
+ * Handle IPMI responses (case #1 and #2) -- all IPMI responses
*/
if (rsp->session.payloadtype == IPMI_PAYLOAD_TYPE_IPMI) {
struct ipmi_rq_entry * entry;
@@ -863,7 +879,7 @@ ipmi_lan_poll_single(struct ipmi_intf * intf)
* Receive whatever comes back. Ignore received packets that don't correspond
* to a request we've sent.
*
- * Returns: the ipmi_rs packet describing the/a reponse we expect.
+ * Returns: the ipmi_rs packet describing the/a response we expect.
*/
static struct ipmi_rs *
ipmi_lan_poll_recv(struct ipmi_intf * intf)
@@ -881,7 +897,7 @@ ipmi_lan_poll_recv(struct ipmi_intf * intf)
/*
- * read_open_session_reponse
+ * read_open_session_response
*
* Initialize the ipmi_rs from the IPMI 2.x open session response data.
*
@@ -903,7 +919,7 @@ read_open_session_response(struct ipmi_rs * rsp, int offset)
/* Message tag */
rsp->payload.open_session_response.message_tag = rsp->data[offset];
- /* RAKP reponse code */
+ /* RAKP response code */
rsp->payload.open_session_response.rakp_return_code = rsp->data[offset + 1];
/* Maximum privilege level */
@@ -970,7 +986,7 @@ read_rakp2_message(
/* Message tag */
rsp->payload.rakp2_message.message_tag = rsp->data[offset];
- /* RAKP reponse code */
+ /* RAKP response code */
rsp->payload.rakp2_message.rakp_return_code = rsp->data[offset + 1];
/* Console session ID */
@@ -1051,7 +1067,7 @@ read_rakp4_message(
/* Message tag */
rsp->payload.rakp4_message.message_tag = rsp->data[offset];
- /* RAKP reponse code */
+ /* RAKP response code */
rsp->payload.rakp4_message.rakp_return_code = rsp->data[offset + 1];
/* Console session ID */
@@ -1162,19 +1178,6 @@ read_session_data_v2x(
#endif
- /*
- * Verify that the session ID is what we think it should be
- */
- if ((s->v2_data.session_state == LANPLUS_STATE_ACTIVE) &&
- (rsp->session.id != s->v2_data.console_id))
- {
- lprintf(LOG_ERR, "packet session id 0x%x does not "
- "match active session 0x%0x",
- rsp->session.id, s->v2_data.console_id);
- assert(0);
- }
-
-
/* Ignored, so far */
memcpy(&rsp->session.seq, rsp->data + *offset, 4);
*offset += 4;
@@ -1399,10 +1402,6 @@ void getIpmiPayloadWireRep(
msg[len++] = IPMI_REMOTE_SWID;
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 */
- entry->req.msg.cmd = 0x34; /* (fixup request entry) */
- #endif
msg[len++] = (0x40|intf->target_channel); /* Track request*/
payload->payload_length += 7;
@@ -2101,7 +2100,7 @@ ipmi_lanplus_send_payload(
struct ipmi_v2_payload * payload)
{
struct ipmi_rs * rsp = NULL;
- uint8_t * msg_data;
+ uint8_t * msg_data = NULL;
int msg_length;
struct ipmi_session * session = intf->session;
struct ipmi_rq_entry * entry = NULL;
@@ -2341,6 +2340,7 @@ ipmi_lanplus_send_payload(
case IPMI_PAYLOAD_TYPE_RMCP_OPEN_REQUEST:
case IPMI_PAYLOAD_TYPE_RAKP_1:
case IPMI_PAYLOAD_TYPE_RAKP_3:
+ case IPMI_PAYLOAD_TYPE_SOL:
free(msg_data);
msg_data = NULL;
break;
@@ -3416,7 +3416,7 @@ ipmi_lanplus_open(struct ipmi_intf * intf)
if (!ipmi_oem_active(intf, "i82571spt") &&
ipmi_get_auth_capabilities_cmd(intf, &auth_cap)) {
lprintf(LOG_INFO, "Error issuing Get Channel "
- "Authentication Capabilies request");
+ "Authentication Capabilities request");
goto fail;
}