fix chassis power control, it needs admin privlvl

This commit is contained in:
Duncan Laurie 2004-04-16 00:14:19 +00:00
parent 0405266402
commit a18557d779
3 changed files with 24 additions and 16 deletions

View File

@ -39,6 +39,18 @@
#include <ipmitool/ipmi.h> #include <ipmitool/ipmi.h>
#define IPMI_SESSION_AUTHTYPE_NONE 0x0
#define IPMI_SESSION_AUTHTYPE_MD2 0x1
#define IPMI_SESSION_AUTHTYPE_MD5 0x2
#define IPMI_SESSION_AUTHTYPE_KEY 0x4
#define IPMI_SESSION_AUTHTYPE_OEM 0x5
#define IPMI_SESSION_PRIV_CALLBACK 0x1
#define IPMI_SESSION_PRIV_USER 0x2
#define IPMI_SESSION_PRIV_OPERATOR 0x3
#define IPMI_SESSION_PRIV_ADMIN 0x4
#define IPMI_SESSION_PRIV_OEM 0x5
struct ipmi_session { struct ipmi_session {
unsigned char hostname[64]; unsigned char hostname[64];
unsigned char username[16]; unsigned char username[16];

View File

@ -46,18 +46,6 @@
# define IPMI_LAN_SUSPEND_ARP_GRAT (1) # define IPMI_LAN_SUSPEND_ARP_GRAT (1)
#define IPMI_LAN_GET_STAT 0x04 #define IPMI_LAN_GET_STAT 0x04
#define IPMI_SESSION_AUTHTYPE_NONE 0x0
#define IPMI_SESSION_AUTHTYPE_MD2 0x1
#define IPMI_SESSION_AUTHTYPE_MD5 0x2
#define IPMI_SESSION_AUTHTYPE_KEY 0x4
#define IPMI_SESSION_AUTHTYPE_OEM 0x5
#define IPMI_SESSION_PRIV_CALLBACK 0x1
#define IPMI_SESSION_PRIV_USER 0x2
#define IPMI_SESSION_PRIV_OPERATOR 0x3
#define IPMI_SESSION_PRIV_ADMIN 0x4
#define IPMI_SESSION_PRIV_OEM 0x5
extern const struct valstr ipmi_privlvl_vals[]; extern const struct valstr ipmi_privlvl_vals[];
extern const struct valstr ipmi_authtype_vals[]; extern const struct valstr ipmi_authtype_vals[];

View File

@ -78,19 +78,27 @@ static const struct valstr ipmi_chassis_power_control_vals[] = {
static void ipmi_chassis_power_control(struct ipmi_intf * intf, unsigned char ctl) static void ipmi_chassis_power_control(struct ipmi_intf * intf, unsigned char ctl)
{ {
struct ipmi_rs * rsp;
struct ipmi_rq req; struct ipmi_rq req;
ipmi_intf_session_set_privlvl(intf, IPMI_SESSION_PRIV_ADMIN);
memset(&req, 0, sizeof(req)); memset(&req, 0, sizeof(req));
req.msg.netfn = IPMI_NETFN_CHASSIS; req.msg.netfn = IPMI_NETFN_CHASSIS;
req.msg.cmd = 0x2; req.msg.cmd = 0x2;
req.msg.data = &ctl; req.msg.data = &ctl;
req.msg.data_len = 1; req.msg.data_len = 1;
printf("Chassis Power Control: %s\n", rsp = intf->sendrecv(intf, &req);
val2str(ctl, ipmi_chassis_power_control_vals));
intf->sendrecv(intf, &req); if (!rsp || rsp->ccode) {
intf->abort = 1; printf("Unable to set Chassis Power Control to %s\n",
val2str(ctl, ipmi_chassis_power_control_vals));
} else {
printf("Chassis Power Control: %s\n",
val2str(ctl, ipmi_chassis_power_control_vals));
intf->abort = 1;
}
} }
static void ipmi_chassis_identify(struct ipmi_intf * intf, char * arg) static void ipmi_chassis_identify(struct ipmi_intf * intf, char * arg)