static ipmi_config_err_t _get_front_panel_buttons (ipmi_config_state_data_t *state_data, struct front_panel_buttons *data) { fiid_obj_t obj_cmd_rs = NULL; ipmi_config_err_t rv = IPMI_CONFIG_ERR_FATAL_ERROR; uint64_t val; int flag; assert (state_data); assert (data); if (!(obj_cmd_rs = fiid_obj_create (tmpl_cmd_get_chassis_status_rs))) { pstdout_fprintf (state_data->pstate, stderr, "fiid_obj_create: %s\n", strerror (errno)); goto cleanup; } if (ipmi_cmd_get_chassis_status (state_data->ipmi_ctx, obj_cmd_rs) < 0) { ipmi_config_err_t ret; if (ipmi_errnum_is_non_fatal (state_data, obj_cmd_rs, &ret)) rv = ret; if (rv == IPMI_CONFIG_ERR_FATAL_ERROR || state_data->prog_data->args->common_args.debug) pstdout_fprintf (state_data->pstate, stderr, "ipmi_cmd_get_chassis_status: %s\n", ipmi_ctx_errormsg (state_data->ipmi_ctx)); goto cleanup; } if ((flag = fiid_obj_get (obj_cmd_rs, "front_panel.standby_button_disabled", &val)) < 0) { pstdout_fprintf (state_data->pstate, stderr, "fiid_obj_get: 'front_panel.standby_button_disabled': %s\n", fiid_obj_errormsg (obj_cmd_rs)); goto cleanup; } if (flag) data->standby = val; else data->standby = BUTTON_UNKNOWN; if ((flag = fiid_obj_get (obj_cmd_rs, "front_panel.diagnostic_interrupt_button_disabled", &val)) < 0) { pstdout_fprintf (state_data->pstate, stderr, "fiid_obj_get: 'front_panel.diagnostic_interrupt_button_disabled': %s\n", fiid_obj_errormsg (obj_cmd_rs)); goto cleanup; } if (flag) data->diagnostic_interrupt = val; else data->diagnostic_interrupt = BUTTON_UNKNOWN; if ((flag = fiid_obj_get (obj_cmd_rs, "front_panel.reset_button_disabled", &val)) < 0) { pstdout_fprintf (state_data->pstate, stderr, "fiid_obj_get: 'front_panel.reset_button_disabled': %s\n", fiid_obj_errormsg (obj_cmd_rs)); goto cleanup; } if (flag) data->reset = val; else data->reset = BUTTON_UNKNOWN; if ((flag = fiid_obj_get (obj_cmd_rs, "front_panel.power_off_button_disabled", &val)) < 0) { pstdout_fprintf (state_data->pstate, stderr, "fiid_obj_get: 'front_panel.power_off_button_disabled': %s\n", fiid_obj_errormsg (obj_cmd_rs)); goto cleanup; } if (flag) data->power_off = val; else data->power_off = BUTTON_UNKNOWN; if ((flag = fiid_obj_get (obj_cmd_rs, "front_panel.standby_button_disable_allowed", &val)) < 0) { pstdout_fprintf (state_data->pstate, stderr, "fiid_obj_get: 'front_panel.standby_button_disable_allowed': %s\n", fiid_obj_errormsg (obj_cmd_rs)); goto cleanup; } if (flag) data->standby_disable_allowed = val; else data->standby_disable_allowed = BUTTON_DISABLE_UNKNOWN; if ((flag = fiid_obj_get (obj_cmd_rs, "front_panel.diagnostic_interrupt_button_disable_allowed", &val)) < 0) { pstdout_fprintf (state_data->pstate, stderr, "fiid_obj_get: 'front_panel.diagnostic_interrupt_button_disable_allowed': %s\n", fiid_obj_errormsg (obj_cmd_rs)); goto cleanup; } if (flag) data->diagnostic_interrupt_disable_allowed = val; else data->diagnostic_interrupt_disable_allowed = BUTTON_DISABLE_UNKNOWN; if ((flag = fiid_obj_get (obj_cmd_rs, "front_panel.reset_button_disable_allowed", &val)) < 0) { pstdout_fprintf (state_data->pstate, stderr, "fiid_obj_get: 'front_panel.reset_button_disable_allowed': %s\n", fiid_obj_errormsg (obj_cmd_rs)); goto cleanup; } if (flag) data->reset_disable_allowed = val; else data->reset_disable_allowed = BUTTON_DISABLE_UNKNOWN; if ((flag = fiid_obj_get (obj_cmd_rs, "front_panel.power_off_button_disable_allowed", &val)) < 0) { pstdout_fprintf (state_data->pstate, stderr, "fiid_obj_get: 'front_panel.power_off_button_disable_allowed': %s\n", fiid_obj_errormsg (obj_cmd_rs)); goto cleanup; } if (flag) data->power_off_disable_allowed = val; else data->power_off_disable_allowed = BUTTON_DISABLE_UNKNOWN; rv = IPMI_CONFIG_ERR_SUCCESS; cleanup: fiid_obj_destroy (obj_cmd_rs); return (rv); }
static ipmi_config_err_t power_restore_policy_checkout (ipmi_config_state_data_t *state_data, const char *section_name, struct ipmi_config_keyvalue *kv) { fiid_obj_t obj_cmd_rs = NULL; ipmi_config_err_t rv = IPMI_CONFIG_ERR_FATAL_ERROR; uint8_t power_restore_policy; uint64_t val; assert (state_data); assert (section_name); assert (kv); if (!(obj_cmd_rs = fiid_obj_create (tmpl_cmd_get_chassis_status_rs))) { pstdout_fprintf (state_data->pstate, stderr, "fiid_obj_create: %s\n", strerror (errno)); goto cleanup; } if (ipmi_cmd_get_chassis_status (state_data->ipmi_ctx, obj_cmd_rs) < 0) { ipmi_config_err_t ret; if (state_data->prog_data->args->common_args.debug) pstdout_fprintf (state_data->pstate, stderr, "ipmi_cmd_get_chassis_status: %s\n", ipmi_ctx_errormsg (state_data->ipmi_ctx)); if (ipmi_errnum_is_non_fatal (state_data, obj_cmd_rs, &ret)) rv = ret; goto cleanup; } if (FIID_OBJ_GET (obj_cmd_rs, "current_power_state.power_restore_policy", &val) < 0) { pstdout_fprintf (state_data->pstate, stderr, "fiid_obj_get: 'current_power_state.power_restore_policy': %s\n", fiid_obj_errormsg (obj_cmd_rs)); goto cleanup; } power_restore_policy = val; if (ipmi_config_section_update_keyvalue_output (state_data, kv, power_restore_policy_string (power_restore_policy)) < 0) return (IPMI_CONFIG_ERR_FATAL_ERROR); rv = IPMI_CONFIG_ERR_SUCCESS; cleanup: fiid_obj_destroy (obj_cmd_rs); return (rv); }