mirror of
https://github.com/ipmitool/ipmitool.git
synced 2025-05-11 19:17:22 +00:00
* long lines(= lines longer than 80chars)
* validate user input in 'lib/ipmi_sunoem.c', resp. ipmi_sunoem_main() * 'sunoem sshkey' would accept undefined actions and exit with RC = 0 * RC > 0 and help will be displayed for unknown commands/actions * "code bumming" - some conditions seemed to be redundant commited for Duncan Idaho
This commit is contained in:
parent
62df3e6ea8
commit
219f67e41a
@ -97,20 +97,24 @@ ipmi_sunoem_usage(void)
|
|||||||
lprintf(LOG_NOTICE, " view users with 'user list' command.");
|
lprintf(LOG_NOTICE, " view users with 'user list' command.");
|
||||||
lprintf(LOG_NOTICE, "");
|
lprintf(LOG_NOTICE, "");
|
||||||
lprintf(LOG_NOTICE, " led get <sensorid> [ledtype]");
|
lprintf(LOG_NOTICE, " led get <sensorid> [ledtype]");
|
||||||
lprintf(LOG_NOTICE, " Read status of LED found in Generic Device Locator.");
|
lprintf(LOG_NOTICE,
|
||||||
|
" Read status of LED found in Generic Device Locator.");
|
||||||
lprintf(LOG_NOTICE, "");
|
lprintf(LOG_NOTICE, "");
|
||||||
lprintf(LOG_NOTICE, " led set <sensorid> <ledmode> [ledtype]");
|
lprintf(LOG_NOTICE, " led set <sensorid> <ledmode> [ledtype]");
|
||||||
lprintf(LOG_NOTICE, " Set mode of LED found in Generic Device Locator.");
|
lprintf(LOG_NOTICE,
|
||||||
|
" Set mode of LED found in Generic Device Locator.");
|
||||||
lprintf(LOG_NOTICE, "");
|
lprintf(LOG_NOTICE, "");
|
||||||
lprintf(LOG_NOTICE, " sbled get <sensorid> [ledtype]");
|
lprintf(LOG_NOTICE, " sbled get <sensorid> [ledtype]");
|
||||||
lprintf(LOG_NOTICE, " Read status of LED found in Generic Device Locator");
|
lprintf(LOG_NOTICE,
|
||||||
|
" Read status of LED found in Generic Device Locator");
|
||||||
lprintf(LOG_NOTICE, " for Sun Blade Modular Systems.");
|
lprintf(LOG_NOTICE, " for Sun Blade Modular Systems.");
|
||||||
lprintf(LOG_NOTICE, "");
|
lprintf(LOG_NOTICE, "");
|
||||||
lprintf(LOG_NOTICE, " sbled set <sensorid> <ledmode> [ledtype]");
|
lprintf(LOG_NOTICE, " sbled set <sensorid> <ledmode> [ledtype]");
|
||||||
lprintf(LOG_NOTICE, " Set mode of LED found in Generic Device Locator");
|
lprintf(LOG_NOTICE, " Set mode of LED found in Generic Device Locator");
|
||||||
lprintf(LOG_NOTICE, " for Sun Blade Modular Systems.");
|
lprintf(LOG_NOTICE, " for Sun Blade Modular Systems.");
|
||||||
lprintf(LOG_NOTICE, "");
|
lprintf(LOG_NOTICE, "");
|
||||||
lprintf(LOG_NOTICE, " Use 'sdr list generic' command to get list of Generic");
|
lprintf(LOG_NOTICE,
|
||||||
|
" Use 'sdr list generic' command to get list of Generic");
|
||||||
lprintf(LOG_NOTICE, " Devices that are controllable LEDs.");
|
lprintf(LOG_NOTICE, " Devices that are controllable LEDs.");
|
||||||
lprintf(LOG_NOTICE, "");
|
lprintf(LOG_NOTICE, "");
|
||||||
lprintf(LOG_NOTICE, " Required SIS LED Mode:");
|
lprintf(LOG_NOTICE, " Required SIS LED Mode:");
|
||||||
@ -401,7 +405,8 @@ ipmi_sunoem_led_get(struct ipmi_intf * intf, int argc, char ** argv)
|
|||||||
|
|
||||||
if (strncasecmp(argv[0], "all", 3) == 0) {
|
if (strncasecmp(argv[0], "all", 3) == 0) {
|
||||||
/* do all generic sensors */
|
/* do all generic sensors */
|
||||||
alist = ipmi_sdr_find_sdr_bytype(intf, SDR_RECORD_TYPE_GENERIC_DEVICE_LOCATOR);
|
alist = ipmi_sdr_find_sdr_bytype(intf,
|
||||||
|
SDR_RECORD_TYPE_GENERIC_DEVICE_LOCATOR);
|
||||||
for (a = alist; a != NULL; a = a->next) {
|
for (a = alist; a != NULL; a = a->next) {
|
||||||
if (a->type != SDR_RECORD_TYPE_GENERIC_DEVICE_LOCATOR)
|
if (a->type != SDR_RECORD_TYPE_GENERIC_DEVICE_LOCATOR)
|
||||||
continue;
|
continue;
|
||||||
@ -564,7 +569,8 @@ ipmi_sunoem_led_set(struct ipmi_intf * intf, int argc, char ** argv)
|
|||||||
|
|
||||||
if (strncasecmp(argv[0], "all", 3) == 0) {
|
if (strncasecmp(argv[0], "all", 3) == 0) {
|
||||||
/* do all generic sensors */
|
/* do all generic sensors */
|
||||||
alist = ipmi_sdr_find_sdr_bytype(intf, SDR_RECORD_TYPE_GENERIC_DEVICE_LOCATOR);
|
alist = ipmi_sdr_find_sdr_bytype(intf,
|
||||||
|
SDR_RECORD_TYPE_GENERIC_DEVICE_LOCATOR);
|
||||||
for (a = alist; a != NULL; a = a->next) {
|
for (a = alist; a != NULL; a = a->next) {
|
||||||
if (a->type != SDR_RECORD_TYPE_GENERIC_DEVICE_LOCATOR)
|
if (a->type != SDR_RECORD_TYPE_GENERIC_DEVICE_LOCATOR)
|
||||||
continue;
|
continue;
|
||||||
@ -635,12 +641,14 @@ ipmi_sunoem_led_set(struct ipmi_intf * intf, int argc, char ** argv)
|
|||||||
/* first range set - id 1 and 2 must be equal */
|
/* first range set - id 1 and 2 must be equal */
|
||||||
if (assoc->entity_id_1 == assoc->entity_id_2)
|
if (assoc->entity_id_1 == assoc->entity_id_2)
|
||||||
for (i = assoc->entity_inst_1; i <= assoc->entity_inst_2; i++)
|
for (i = assoc->entity_inst_1; i <= assoc->entity_inst_2; i++)
|
||||||
sunoem_led_set_byentity(intf, assoc->entity_id_1, i, ledtype, ledmode);
|
sunoem_led_set_byentity(intf, assoc->entity_id_1, i, ledtype,
|
||||||
|
ledmode);
|
||||||
|
|
||||||
/* second range set - id 3 and 4 must be equal */
|
/* second range set - id 3 and 4 must be equal */
|
||||||
if (assoc->entity_id_3 == assoc->entity_id_4)
|
if (assoc->entity_id_3 == assoc->entity_id_4)
|
||||||
for (i = assoc->entity_inst_3; i <= assoc->entity_inst_4; i++)
|
for (i = assoc->entity_inst_3; i <= assoc->entity_inst_4; i++)
|
||||||
sunoem_led_set_byentity(intf, assoc->entity_id_3, i, ledtype, ledmode);
|
sunoem_led_set_byentity(intf, assoc->entity_id_3, i, ledtype,
|
||||||
|
ledmode);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/*
|
/*
|
||||||
@ -764,7 +772,7 @@ ipmi_sunoem_sshkey_set(struct ipmi_intf * intf, uint8_t uid, char * ifile)
|
|||||||
int
|
int
|
||||||
ipmi_sunoem_main(struct ipmi_intf * intf, int argc, char ** argv)
|
ipmi_sunoem_main(struct ipmi_intf * intf, int argc, char ** argv)
|
||||||
{
|
{
|
||||||
int rc = 0;
|
int rc = (-1);
|
||||||
|
|
||||||
if (argc == 0 || strncmp(argv[0], "help", 4) == 0) {
|
if (argc == 0 || strncmp(argv[0], "help", 4) == 0) {
|
||||||
ipmi_sunoem_usage();
|
ipmi_sunoem_usage();
|
||||||
@ -772,29 +780,24 @@ ipmi_sunoem_main(struct ipmi_intf * intf, int argc, char ** argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (strncmp(argv[0], "fan", 3) == 0) {
|
if (strncmp(argv[0], "fan", 3) == 0) {
|
||||||
uint8_t pct;
|
if (argc == 3 && strncmp(argv[1], "speed", 5) == 0) {
|
||||||
if (argc < 2) {
|
uint8_t pct = 0;
|
||||||
ipmi_sunoem_usage();
|
if (str2uchar(argv[2], &pct) != 0 || pct > 100) {
|
||||||
return -1;
|
lprintf(LOG_ERR, "Fan speed is limited to range <0..100>.");
|
||||||
}
|
return (-1);
|
||||||
else if (strncmp(argv[1], "speed", 5) == 0) {
|
|
||||||
if (argc < 3) {
|
|
||||||
ipmi_sunoem_usage();
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
pct = (uint8_t)strtol(argv[2], NULL, 0);
|
|
||||||
rc = ipmi_sunoem_fan_speed(intf, pct);
|
rc = ipmi_sunoem_fan_speed(intf, pct);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ipmi_sunoem_usage();
|
ipmi_sunoem_usage();
|
||||||
return -1;
|
return (-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if ((strncmp(argv[0], "led", 3) == 0)
|
||||||
if ((strncmp(argv[0], "led", 3) == 0) || (strncmp(argv[0], "sbled", 5) == 0)) {
|
|| (strncmp(argv[0], "sbled", 5) == 0)) {
|
||||||
if (argc < 2) {
|
if (argc < 2) {
|
||||||
ipmi_sunoem_usage();
|
ipmi_sunoem_usage();
|
||||||
return -1;
|
return (-1);
|
||||||
}
|
}
|
||||||
if (strncmp(argv[0], "sbled", 5) == 0) {
|
if (strncmp(argv[0], "sbled", 5) == 0) {
|
||||||
is_sbcmd = 1;
|
is_sbcmd = 1;
|
||||||
@ -803,46 +806,49 @@ ipmi_sunoem_main(struct ipmi_intf * intf, int argc, char ** argv)
|
|||||||
if (argc < 3) {
|
if (argc < 3) {
|
||||||
char * arg[] = { "all" };
|
char * arg[] = { "all" };
|
||||||
rc = ipmi_sunoem_led_get(intf, 1, arg);
|
rc = ipmi_sunoem_led_get(intf, 1, arg);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
rc = ipmi_sunoem_led_get(intf, argc-2, &(argv[2]));
|
rc = ipmi_sunoem_led_get(intf, argc-2, &(argv[2]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (strncmp(argv[1], "set", 3) == 0) {
|
else if (strncmp(argv[1], "set", 3) == 0) {
|
||||||
if (argc < 4) {
|
if (argc < 4) {
|
||||||
ipmi_sunoem_usage();
|
ipmi_sunoem_usage();
|
||||||
return -1;
|
return (-1);
|
||||||
}
|
}
|
||||||
rc = ipmi_sunoem_led_set(intf, argc-2, &(argv[2]));
|
rc = ipmi_sunoem_led_set(intf, argc-2, &(argv[2]));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ipmi_sunoem_usage();
|
ipmi_sunoem_usage();
|
||||||
return -1;
|
return (-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (strncmp(argv[0], "sshkey", 6) == 0) {
|
||||||
if (strncmp(argv[0], "sshkey", 6) == 0) {
|
uint8_t uid = 0;
|
||||||
if (argc < 2) {
|
if (argc < 3) {
|
||||||
ipmi_sunoem_usage();
|
ipmi_sunoem_usage();
|
||||||
return -1;
|
return (-1);
|
||||||
}
|
}
|
||||||
else if (strncmp(argv[1], "del", 3) == 0) {
|
|
||||||
uint8_t uid;
|
if (str2uchar(argv[2], &uid) != 0 || uid < 1 || uid > 63) {
|
||||||
if (argc < 3) {
|
lprintf(LOG_ERR, "User ID is limited to range <1..63>.");
|
||||||
ipmi_sunoem_usage();
|
return (-1);
|
||||||
return -1;
|
}
|
||||||
}
|
|
||||||
uid = (uint8_t)strtoul(argv[2], NULL, 0);
|
if (strncmp(argv[1], "del", 3) == 0) {
|
||||||
rc = ipmi_sunoem_sshkey_del(intf, uid);
|
rc = ipmi_sunoem_sshkey_del(intf, uid);
|
||||||
}
|
}
|
||||||
else if (strncmp(argv[1], "set", 3) == 0) {
|
else if (argc == 4 && strncmp(argv[1], "set", 3) == 0) {
|
||||||
uint8_t uid;
|
|
||||||
if (argc < 4) {
|
|
||||||
ipmi_sunoem_usage();
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
uid = (uint8_t)strtoul(argv[2], NULL, 0);
|
|
||||||
rc = ipmi_sunoem_sshkey_set(intf, uid, argv[3]);
|
rc = ipmi_sunoem_sshkey_set(intf, uid, argv[3]);
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
ipmi_sunoem_usage();
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ipmi_sunoem_usage();
|
||||||
|
return (-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user