mirror of
https://github.com/ipmitool/ipmitool.git
synced 2025-05-10 18:47:22 +00:00
print out volatile and non-volatile settings for channel access,
set channel access in nvram before in active settings, don't send close session command if disabling channel
This commit is contained in:
parent
3f17e0f508
commit
11a35b0452
@ -225,7 +225,10 @@ ipmi_get_channel_info(struct ipmi_intf * intf, unsigned char channel)
|
||||
|
||||
memset(&req, 0, sizeof(req));
|
||||
rqdata[0] = channel & 0xf;
|
||||
rqdata[1] = 0x80; /* 0x80=active, 0x40=non-volatile */
|
||||
|
||||
/* get volatile settings */
|
||||
|
||||
rqdata[1] = 0x80; /* 0x80=active */
|
||||
req.msg.netfn = IPMI_NETFN_APP;
|
||||
req.msg.cmd = 0x41;
|
||||
req.msg.data = rqdata;
|
||||
@ -236,10 +239,11 @@ ipmi_get_channel_info(struct ipmi_intf * intf, unsigned char channel)
|
||||
return;
|
||||
}
|
||||
|
||||
printf(" Alerting : %sabled\n", (rsp->data[0] & 0x20) ? "dis" : "en");
|
||||
printf(" Per-message Auth : %sabled\n", (rsp->data[0] & 0x10) ? "dis" : "en");
|
||||
printf(" User Level Auth : %sabled\n", (rsp->data[0] & 0x08) ? "dis" : "en");
|
||||
printf(" Access Mode : ");
|
||||
printf(" Volatile(active) Settings\n");
|
||||
printf(" Alerting : %sabled\n", (rsp->data[0] & 0x20) ? "dis" : "en");
|
||||
printf(" Per-message Auth : %sabled\n", (rsp->data[0] & 0x10) ? "dis" : "en");
|
||||
printf(" User Level Auth : %sabled\n", (rsp->data[0] & 0x08) ? "dis" : "en");
|
||||
printf(" Access Mode : ");
|
||||
switch (rsp->data[0] & 0x7) {
|
||||
case 0:
|
||||
printf("disabled\n");
|
||||
@ -257,6 +261,38 @@ ipmi_get_channel_info(struct ipmi_intf * intf, unsigned char channel)
|
||||
printf("unknown\n");
|
||||
break;
|
||||
}
|
||||
|
||||
/* get non-volatile settings */
|
||||
|
||||
rqdata[1] = 0x40; /* 0x40=non-volatile */
|
||||
rsp = intf->sendrecv(intf, &req);
|
||||
if (!rsp || rsp->ccode) {
|
||||
return;
|
||||
}
|
||||
|
||||
printf(" Non-Volatile Settings\n");
|
||||
printf(" Alerting : %sabled\n", (rsp->data[0] & 0x20) ? "dis" : "en");
|
||||
printf(" Per-message Auth : %sabled\n", (rsp->data[0] & 0x10) ? "dis" : "en");
|
||||
printf(" User Level Auth : %sabled\n", (rsp->data[0] & 0x08) ? "dis" : "en");
|
||||
printf(" Access Mode : ");
|
||||
switch (rsp->data[0] & 0x7) {
|
||||
case 0:
|
||||
printf("disabled\n");
|
||||
break;
|
||||
case 1:
|
||||
printf("pre-boot only\n");
|
||||
break;
|
||||
case 2:
|
||||
printf("always available\n");
|
||||
break;
|
||||
case 3:
|
||||
printf("shared\n");
|
||||
break;
|
||||
default:
|
||||
printf("unknown\n");
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
@ -272,12 +308,12 @@ lan_set_arp_interval(struct ipmi_intf * intf, unsigned char chan, unsigned char
|
||||
if (ival) {
|
||||
interval = ((unsigned char)atoi(ival) * 2) - 1;
|
||||
set_lan_param(intf, chan, IPMI_LANP_GRAT_ARP, &interval, 1);
|
||||
printf("BMC-generated Gratuitous ARP interval: %.1f seconds\n",
|
||||
(float)((interval + 1) / 2));
|
||||
} else {
|
||||
printf("BMC-generated Gratuitous ARP interval: %.1f seconds\n",
|
||||
(float)((lp->data[0] + 1) / 2));
|
||||
interval = lp->data[0];
|
||||
}
|
||||
|
||||
printf("BMC-generated Gratuitous ARP interval: %.1f seconds\n",
|
||||
(float)((interval + 1) / 2));
|
||||
}
|
||||
|
||||
static void
|
||||
@ -485,10 +521,10 @@ ipmi_set_channel_access(struct ipmi_intf * intf, unsigned char channel, unsigned
|
||||
memset(&req, 0, sizeof(req));
|
||||
rqdata[0] = channel & 0xf;
|
||||
|
||||
rqdata[1] = 0xa0; /* set pef disabled, per-msg auth enabled */
|
||||
rqdata[1] = 0x60; /* save to nvram first */
|
||||
if (enable)
|
||||
rqdata[1] |= 0x2; /* set always available if enable is set */
|
||||
rqdata[2] = 0x84; /* set channel privilege limit to ADMIN */
|
||||
rqdata[2] = 0x44; /* save to nvram first */
|
||||
|
||||
req.msg.netfn = IPMI_NETFN_APP;
|
||||
req.msg.cmd = 0x40;
|
||||
@ -502,10 +538,10 @@ ipmi_set_channel_access(struct ipmi_intf * intf, unsigned char channel, unsigned
|
||||
return -1;
|
||||
}
|
||||
|
||||
rqdata[1] = 0x60; /* save to nvram */
|
||||
rqdata[1] = 0xa0; /* set pef disabled, per-msg auth enabled */
|
||||
if (enable)
|
||||
rqdata[1] |= 0x2; /* set always available if enable is set */
|
||||
rqdata[2] = 0x44; /* save to nvram */
|
||||
rqdata[2] = 0x84; /* set channel privilege limit to ADMIN */
|
||||
|
||||
rsp = intf->sendrecv(intf, &req);
|
||||
if (!rsp || rsp->ccode) {
|
||||
@ -514,6 +550,9 @@ ipmi_set_channel_access(struct ipmi_intf * intf, unsigned char channel, unsigned
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!enable) /* can't send close session if access off */
|
||||
intf->abort = 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user