lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 28 Jun 2012 09:45:28 -0700
From:	<Srinivas_G_Gowda@...l.com>
To:	<tcminyard@...il.com>, <linux-kernel@...r.kernel.org>,
	<openipmi@...sta.com>
Subject: [PATCH 1/1 v2 ] ipmi: Setting OS name as Linux in BMC


functions that will send the Set System Info command
and its corresponding handler

Signed-off-by: Srinivas Gowda G <Srinivas_G_Gowda@...l.com>
---
 drivers/char/ipmi/ipmi_msghandler.c |   73 +++++++++++++++++++++++++++++++++++
 include/linux/ipmi_msgdefs.h        |    1 +
 2 files changed, 74 insertions(+), 0 deletions(-)

diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c
index d0abb3a..b1a98b5 100644
--- a/drivers/char/ipmi/ipmi_msghandler.c
+++ b/drivers/char/ipmi/ipmi_msghandler.c
@@ -2709,6 +2709,79 @@ get_guid(ipmi_smi_t intf)
 	intf->null_user_handler = NULL;
 }
 
+static int 
+send_set_os_name_cmd(ipmi_smi_t intf)
+{
+	unsigned char param_select;
+	unsigned char set_selector;
+	unsigned char string_encode;
+	unsigned char str_len;
+	unsigned char data[9];
+
+	struct kernel_ipmi_msg            msg;
+	struct ipmi_system_interface_addr si;
+
+	si.addr_type = IPMI_SYSTEM_INTERFACE_ADDR_TYPE;
+	si.channel = IPMI_BMC_CHANNEL;
+	si.lun = 0;
+	
+	param_select  = 4;	/* parameter number for volatile OS name */
+	set_selector  = 0;	/* set selector, block 0 */
+	string_encode = 0;	/* ASCII Encoding */
+	str_len = 5;		/* length of ASCII string - "Linux" */
+	
+	data[0] = param_select;
+	data[1] = set_selector;
+	data[2] = string_encode;
+	data[3] = str_len;
+	data[4] = 'L';
+	data[5] = 'i';
+	data[6] = 'n';
+	data[7] = 'u';
+	data[8] = 'x';
+
+	msg.netfn = IPMI_NETFN_APP_REQUEST;
+	msg.cmd = IPMI_SET_SYSTEM_INFO;
+	msg.data = data;
+	msg.data_len = 9;
+	return i_ipmi_request(NULL,
+			      intf,
+			      (struct ipmi_addr *) &si,
+			      0,
+			      &msg,
+			      intf,
+			      NULL,
+			      NULL,
+			      0,
+			      intf->channels[0].address,
+			      intf->channels[0].lun,
+			      -1, 0);
+}
+
+/*
+ * msg handler for Set_System_Info cmd - set OS name 
+ */
+static void
+set_os_name_handler(ipmi_smi_t intf, struct ipmi_recv_msg *msg)
+{
+	if ((msg->addr.addr_type != IPMI_SYSTEM_INTERFACE_ADDR_TYPE)
+	    || (msg->msg.netfn != IPMI_NETFN_APP_RESPONSE)
+	    || (msg->msg.cmd != IPMI_SET_SYSTEM_INFO))
+		/* Not for me */
+		return;
+
+	if (msg->msg.data[0] != 0) 
+		/* Error  setting OS name as Linux in BMC. */
+		printk(KERN_WARNING PFX 
+			"Failed to set OS name as Linux: 0x%X\n", msg->msg.data[0]);
+	else
+		printk(KERN_INFO PFX 
+			"OS Name successfully set as Linux\n");		
+
+	os_name_set = 1;
+	wake_up(&intf->waitq);
+}
+
 /*
  *   Set the Operating System Name as "Linux" in BMC 
  *   using "Set System Info" command.
diff --git a/include/linux/ipmi_msgdefs.h b/include/linux/ipmi_msgdefs.h
index df97e6e..b5ea664 100644
--- a/include/linux/ipmi_msgdefs.h
+++ b/include/linux/ipmi_msgdefs.h
@@ -57,6 +57,7 @@
 #define IPMI_GET_BMC_GLOBAL_ENABLES_CMD	0x2f
 #define IPMI_READ_EVENT_MSG_BUFFER_CMD	0x35
 #define IPMI_GET_CHANNEL_INFO_CMD	0x42
+#define IPMI_SET_SYSTEM_INFO		0x58
 
 /* Bit for BMC global enables. */
 #define IPMI_BMC_RCV_MSG_INTR     0x01
-- 
1.7.1


Thanks,
G--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ