mirror of
https://github.com/ipmitool/ipmitool.git
synced 2025-05-12 03:27:24 +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));
|
memset(&req, 0, sizeof(req));
|
||||||
rqdata[0] = channel & 0xf;
|
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.netfn = IPMI_NETFN_APP;
|
||||||
req.msg.cmd = 0x41;
|
req.msg.cmd = 0x41;
|
||||||
req.msg.data = rqdata;
|
req.msg.data = rqdata;
|
||||||
@ -236,10 +239,11 @@ ipmi_get_channel_info(struct ipmi_intf * intf, unsigned char channel)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf(" Alerting : %sabled\n", (rsp->data[0] & 0x20) ? "dis" : "en");
|
printf(" Volatile(active) Settings\n");
|
||||||
printf(" Per-message Auth : %sabled\n", (rsp->data[0] & 0x10) ? "dis" : "en");
|
printf(" Alerting : %sabled\n", (rsp->data[0] & 0x20) ? "dis" : "en");
|
||||||
printf(" User Level Auth : %sabled\n", (rsp->data[0] & 0x08) ? "dis" : "en");
|
printf(" Per-message Auth : %sabled\n", (rsp->data[0] & 0x10) ? "dis" : "en");
|
||||||
printf(" Access Mode : ");
|
printf(" User Level Auth : %sabled\n", (rsp->data[0] & 0x08) ? "dis" : "en");
|
||||||
|
printf(" Access Mode : ");
|
||||||
switch (rsp->data[0] & 0x7) {
|
switch (rsp->data[0] & 0x7) {
|
||||||
case 0:
|
case 0:
|
||||||
printf("disabled\n");
|
printf("disabled\n");
|
||||||
@ -257,6 +261,38 @@ ipmi_get_channel_info(struct ipmi_intf * intf, unsigned char channel)
|
|||||||
printf("unknown\n");
|
printf("unknown\n");
|
||||||
break;
|
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
|
static void
|
||||||
@ -272,12 +308,12 @@ lan_set_arp_interval(struct ipmi_intf * intf, unsigned char chan, unsigned char
|
|||||||
if (ival) {
|
if (ival) {
|
||||||
interval = ((unsigned char)atoi(ival) * 2) - 1;
|
interval = ((unsigned char)atoi(ival) * 2) - 1;
|
||||||
set_lan_param(intf, chan, IPMI_LANP_GRAT_ARP, &interval, 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 {
|
} else {
|
||||||
printf("BMC-generated Gratuitous ARP interval: %.1f seconds\n",
|
interval = lp->data[0];
|
||||||
(float)((lp->data[0] + 1) / 2));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
printf("BMC-generated Gratuitous ARP interval: %.1f seconds\n",
|
||||||
|
(float)((interval + 1) / 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -485,10 +521,10 @@ ipmi_set_channel_access(struct ipmi_intf * intf, unsigned char channel, unsigned
|
|||||||
memset(&req, 0, sizeof(req));
|
memset(&req, 0, sizeof(req));
|
||||||
rqdata[0] = channel & 0xf;
|
rqdata[0] = channel & 0xf;
|
||||||
|
|
||||||
rqdata[1] = 0xa0; /* set pef disabled, per-msg auth enabled */
|
rqdata[1] = 0x60; /* save to nvram first */
|
||||||
if (enable)
|
if (enable)
|
||||||
rqdata[1] |= 0x2; /* set always available if enable is set */
|
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.netfn = IPMI_NETFN_APP;
|
||||||
req.msg.cmd = 0x40;
|
req.msg.cmd = 0x40;
|
||||||
@ -502,10 +538,10 @@ ipmi_set_channel_access(struct ipmi_intf * intf, unsigned char channel, unsigned
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
rqdata[1] = 0x60; /* save to nvram */
|
rqdata[1] = 0xa0; /* set pef disabled, per-msg auth enabled */
|
||||||
if (enable)
|
if (enable)
|
||||||
rqdata[1] |= 0x2; /* set always available if enable is set */
|
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);
|
rsp = intf->sendrecv(intf, &req);
|
||||||
if (!rsp || rsp->ccode) {
|
if (!rsp || rsp->ccode) {
|
||||||
@ -514,6 +550,9 @@ ipmi_set_channel_access(struct ipmi_intf * intf, unsigned char channel, unsigned
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!enable) /* can't send close session if access off */
|
||||||
|
intf->abort = 1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user