ID:392 - _ipmi_get_user_name() work-around for some BMCs

Commit adds a work-around for some BMCs which return ccode 0xCC when user is
disabled. However, this isn't reason to stop listing users as this ccode is
perceived as being "normal".
When 0xCC is returned, empty user name will be printed instead of bailing out.
This commit is contained in:
Zdenek Styblik 2015-10-09 20:53:24 +02:00
parent 4a8691f477
commit ffeb535db8
2 changed files with 14 additions and 13 deletions

View File

@ -707,7 +707,10 @@ ipmi_get_user_access(struct ipmi_intf *intf, uint8_t channel, uint8_t user_id)
memset(&user_name, 0, sizeof(user_name));
user_name.user_id = curr_uid;
ccode = _ipmi_get_user_name(intf, &user_name);
if (eval_ccode(ccode) != 0) {
if (ccode == 0xCC) {
user_name.user_id = curr_uid;
memset(&user_name.user_name, '\0', 17);
} else if (eval_ccode(ccode) != 0) {
lprintf(LOG_ERR, "Unable to Get User Name (id %d)", curr_uid);
return (-1);
}

View File

@ -287,20 +287,18 @@ ipmi_print_user_list(struct ipmi_intf *intf, uint8_t channel_number)
memset(&user_name, 0, sizeof(user_name));
user_name.user_id = current_user_id;
ccode = _ipmi_get_user_name(intf, &user_name);
if (eval_ccode(ccode) != 0) {
if (ccode == 0xCC) {
user_name.user_id = current_user_id;
memset(&user_name.user_name, '\0', 17);
} else if (eval_ccode(ccode) != 0) {
return (-1);
}
if ((current_user_id == 0)
|| user_access.link_auth
|| user_access.ipmi_messaging
|| strcmp("", (char *)user_name.user_name)) {
if (csv_output) {
dump_user_access_csv((char *)user_name.user_name,
&user_access);
} else {
dump_user_access((char *)user_name.user_name,
&user_access);
}
if (csv_output) {
dump_user_access_csv((char *)user_name.user_name,
&user_access);
} else {
dump_user_access((char *)user_name.user_name,
&user_access);
}
++current_user_id;
} while ((current_user_id <= user_access.max_user_ids)