mirror of
https://github.com/ipmitool/ipmitool.git
synced 2025-05-10 18:47:22 +00:00
Allow update of other SOL parameters
This commit is contained in:
parent
6f1f26a1b1
commit
7c9030bf3b
@ -602,16 +602,178 @@ ipmi_sol_set_param(struct ipmi_intf * intf,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* character-accumulate-level
|
||||||
|
*/
|
||||||
|
else if (! strcmp(param, "character-accumulate-level"))
|
||||||
|
{
|
||||||
|
struct sol_config_parameters params;
|
||||||
|
|
||||||
|
req.msg.data_len = 4;
|
||||||
|
data[1] = SOL_PARAMETER_CHARACTER_INTERVAL;
|
||||||
|
data[2] = (unsigned char)strtol(value, NULL, 0);
|
||||||
|
|
||||||
|
/* We need other values to complete the request */
|
||||||
|
if (ipmi_get_sol_info(intf, channel, ¶ms))
|
||||||
|
{
|
||||||
|
printf("Error fetching SOL parameters for %s update\n",
|
||||||
|
param);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
data[3] = params.character_send_threshold;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
TODO:
|
* character-send-threshold
|
||||||
SOL_PARAMETER_CHARACTER_INTERVAL 0x03
|
|
||||||
SOL_PARAMETER_SOL_RETRY 0x04
|
|
||||||
SOL_PARAMETER_SOL_NON_VOLATILE_BIT_RATE 0x05
|
|
||||||
SOL_PARAMETER_SOL_VOLATILE_BIT_RATE 0x06
|
|
||||||
SOL_PARAMETER_SOL_PAYLOAD_CHANNEL 0x07
|
|
||||||
SOL_PARAMETER_SOL_PAYLOAD_PORT 0x08
|
|
||||||
*/
|
*/
|
||||||
|
else if (! strcmp(param, "character-send-threshold"))
|
||||||
|
{
|
||||||
|
struct sol_config_parameters params;
|
||||||
|
|
||||||
|
req.msg.data_len = 4;
|
||||||
|
data[1] = SOL_PARAMETER_CHARACTER_INTERVAL;
|
||||||
|
data[3] = (unsigned char)strtol(value, NULL, 0);
|
||||||
|
|
||||||
|
/* We need other values to complete the request */
|
||||||
|
if (ipmi_get_sol_info(intf, channel, ¶ms))
|
||||||
|
{
|
||||||
|
printf("Error fetching SOL parameters for %s update\n",
|
||||||
|
param);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
data[2] = params.character_accumulate_level;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* retry-count
|
||||||
|
*/
|
||||||
|
else if (! strcmp(param, "retry-count"))
|
||||||
|
{
|
||||||
|
struct sol_config_parameters params;
|
||||||
|
|
||||||
|
req.msg.data_len = 4;
|
||||||
|
data[1] = SOL_PARAMETER_SOL_RETRY;
|
||||||
|
data[2] = (unsigned char)strtol(value, NULL, 0) & 0x03;
|
||||||
|
|
||||||
|
/* We need other values to complete the request */
|
||||||
|
if (ipmi_get_sol_info(intf, channel, ¶ms))
|
||||||
|
{
|
||||||
|
printf("Error fetching SOL parameters for %s update\n",
|
||||||
|
param);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
data[3] = params.retry_interval;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* retry-interval
|
||||||
|
*/
|
||||||
|
else if (! strcmp(param, "retry-interval"))
|
||||||
|
{
|
||||||
|
struct sol_config_parameters params;
|
||||||
|
|
||||||
|
req.msg.data_len = 4;
|
||||||
|
data[1] = SOL_PARAMETER_SOL_RETRY;
|
||||||
|
data[3] = (unsigned char)strtol(value, NULL, 0);
|
||||||
|
|
||||||
|
/* We need other values to complete the request */
|
||||||
|
if (ipmi_get_sol_info(intf, channel, ¶ms))
|
||||||
|
{
|
||||||
|
printf("Error fetching SOL parameters for %s update\n",
|
||||||
|
param);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
data[2] = params.retry_count;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* non-volatile-bit-rate
|
||||||
|
*/
|
||||||
|
else if (! strcmp(param, "non-volatile-bit-rate"))
|
||||||
|
{
|
||||||
|
struct sol_config_parameters params;
|
||||||
|
|
||||||
|
req.msg.data_len = 3;
|
||||||
|
data[1] = SOL_PARAMETER_SOL_NON_VOLATILE_BIT_RATE;
|
||||||
|
|
||||||
|
if (!strcmp(value, "serial"))
|
||||||
|
{
|
||||||
|
data[2] = 0x00;
|
||||||
|
}
|
||||||
|
else if (!strcmp(value, "19.2"))
|
||||||
|
{
|
||||||
|
data[2] = 0x07;
|
||||||
|
}
|
||||||
|
else if (!strcmp(value, "38.4"))
|
||||||
|
{
|
||||||
|
data[2] = 0x08;
|
||||||
|
}
|
||||||
|
else if (!strcmp(value, "57.6"))
|
||||||
|
{
|
||||||
|
data[2] = 0x09;
|
||||||
|
}
|
||||||
|
else if (!strcmp(value, "115.2"))
|
||||||
|
{
|
||||||
|
data[2] = 0x0A;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("Invalid value \"%s\" for parameter \"%s\"\n",
|
||||||
|
value,
|
||||||
|
param);
|
||||||
|
printf("Valid values are serial, 19.2, 38.4, 57.6 and 115.2\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* volatile-bit-rate
|
||||||
|
*/
|
||||||
|
else if (! strcmp(param, "volatile-bit-rate"))
|
||||||
|
{
|
||||||
|
struct sol_config_parameters params;
|
||||||
|
|
||||||
|
req.msg.data_len = 3;
|
||||||
|
data[1] = SOL_PARAMETER_SOL_VOLATILE_BIT_RATE;
|
||||||
|
|
||||||
|
if (!strcmp(value, "serial"))
|
||||||
|
{
|
||||||
|
data[2] = 0x00;
|
||||||
|
}
|
||||||
|
else if (!strcmp(value, "19.2"))
|
||||||
|
{
|
||||||
|
data[2] = 0x07;
|
||||||
|
}
|
||||||
|
else if (!strcmp(value, "38.4"))
|
||||||
|
{
|
||||||
|
data[2] = 0x08;
|
||||||
|
}
|
||||||
|
else if (!strcmp(value, "57.6"))
|
||||||
|
{
|
||||||
|
data[2] = 0x09;
|
||||||
|
}
|
||||||
|
else if (!strcmp(value, "115.2"))
|
||||||
|
{
|
||||||
|
data[2] = 0x0A;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("Invalid value \"%s\" for parameter \"%s\"\n",
|
||||||
|
value,
|
||||||
|
param);
|
||||||
|
printf("Valid values are serial, 19.2, 38.4, 57.6 and 115.2\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -731,7 +893,7 @@ sendBreak(struct ipmi_intf * intf)
|
|||||||
|
|
||||||
memset(&v2_payload, 0, sizeof(v2_payload));
|
memset(&v2_payload, 0, sizeof(v2_payload));
|
||||||
|
|
||||||
v2_payload.payload_length = 0;
|
v2_payload.payload.sol_packet.character_count = 0;
|
||||||
v2_payload.payload.sol_packet.generate_break = 1;
|
v2_payload.payload.sol_packet.generate_break = 1;
|
||||||
|
|
||||||
intf->send_sol(intf, &v2_payload);
|
intf->send_sol(intf, &v2_payload);
|
||||||
@ -945,7 +1107,7 @@ processSolUserInput(
|
|||||||
{
|
{
|
||||||
struct ipmi_rs * rsp;
|
struct ipmi_rs * rsp;
|
||||||
|
|
||||||
v2_payload.payload_length = length;
|
v2_payload.payload.sol_packet.character_count = length;
|
||||||
rsp = intf->send_sol(intf, &v2_payload);
|
rsp = intf->send_sol(intf, &v2_payload);
|
||||||
|
|
||||||
if (! rsp)
|
if (! rsp)
|
||||||
@ -1219,6 +1381,32 @@ print_sol_usage()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* print_sol_set_usage
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
print_sol_set_usage()
|
||||||
|
{
|
||||||
|
printf("\nSOL set parameters and values: \n\n");
|
||||||
|
printf(" set-in-progress set-complete | "
|
||||||
|
"set-in-progress | commit-write\n");
|
||||||
|
printf(" enabled true | false\n");
|
||||||
|
printf(" force-encryption true | false\n");
|
||||||
|
printf(" force-authentication true | false\n");
|
||||||
|
printf(" privilege-level user | operator | admin | oem\n");
|
||||||
|
printf(" character-accumulate-level <in 5 ms increments>\n");
|
||||||
|
printf(" character-send-threshold N\n");
|
||||||
|
printf(" retry-count N\n");
|
||||||
|
printf(" retry-interval <in 10 ms increments>\n");
|
||||||
|
printf(" non-volatile-bit-rate "
|
||||||
|
"serial | 19.2 | 38.4 | 57.6 | 115.2\n");
|
||||||
|
printf(" volatile-bit-rate "
|
||||||
|
"serial | 19.2 | 38.4 | 57.6 | 115.2\n");
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ipmi_sol_main
|
* ipmi_sol_main
|
||||||
*/
|
*/
|
||||||
@ -1265,7 +1453,7 @@ ipmi_sol_main(struct ipmi_intf * intf, int argc, char ** argv)
|
|||||||
channel = (unsigned char)strtol(argv[3], NULL, 0);
|
channel = (unsigned char)strtol(argv[3], NULL, 0);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print_sol_usage();
|
print_sol_set_usage();
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user