mirror of
https://github.com/ipmitool/ipmitool.git
synced 2025-05-10 18:47:22 +00:00
fix chassis power control, it needs admin privlvl
This commit is contained in:
parent
0405266402
commit
a18557d779
@ -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];
|
||||||
|
@ -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[];
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user