Main Page | Class List | Directories | File List | Class Members | File Members

cmd_entity.c File Reference

#include <errno.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <OpenIPMI/ipmiif.h>
#include <OpenIPMI/ipmi_cmdlang.h>
#include <OpenIPMI/ipmi_fru.h>
#include <OpenIPMI/internal/ipmi_malloc.h>

Go to the source code of this file.

Defines

#define CMDS_ENTITY_LEN   (sizeof(cmds_entity)/sizeof(ipmi_cmdlang_init_t))

Functions

void ipmi_cmdlang_dump_fru_info (ipmi_cmd_info_t *cmd_info, ipmi_fru_t *fru)
void ipmi_cmdlang_sensor_change (enum ipmi_update_e op, ipmi_entity_t *entity, ipmi_sensor_t *sensor, void *cb_data)
void ipmi_cmdlang_control_change (enum ipmi_update_e op, ipmi_entity_t *entity, ipmi_control_t *control, void *cb_data)
static void entity_iterate_handler (ipmi_entity_t *entity, ipmi_entity_t *parent, void *cb_data)
static void entity_child_handler (ipmi_entity_t *parent, ipmi_entity_t *entity, void *cb_data)
static void entity_tree_handler (ipmi_entity_t *entity, void *cb_data)
static void entity_tree (ipmi_domain_t *domain, void *cb_data)
static void entity_list_handler (ipmi_entity_t *entity, void *cb_data)
static void entity_list (ipmi_domain_t *domain, void *cb_data)
static void entity_dump (ipmi_entity_t *entity, ipmi_cmd_info_t *cmd_info)
static void entity_info (ipmi_entity_t *entity, void *cb_data)
static void fru_info (ipmi_entity_t *entity, void *cb_data)
static void entity_hs_get_act_time_done (ipmi_entity_t *entity, int err, ipmi_timeout_t val, void *cb_data)
static void entity_hs_get_act_time (ipmi_entity_t *entity, void *cb_data)
static void entity_hs_set_act_time_done (ipmi_entity_t *entity, int err, void *cb_data)
static void entity_hs_set_act_time (ipmi_entity_t *entity, void *cb_data)
static void entity_hs_get_deact_time_done (ipmi_entity_t *entity, int err, ipmi_timeout_t val, void *cb_data)
static void entity_hs_get_deact_time (ipmi_entity_t *entity, void *cb_data)
static void entity_hs_set_deact_time_done (ipmi_entity_t *entity, int err, void *cb_data)
static void entity_hs_set_deact_time (ipmi_entity_t *entity, void *cb_data)
static void entity_hs_activation_request_done (ipmi_entity_t *entity, int err, void *cb_data)
static void entity_hs_activation_request (ipmi_entity_t *entity, void *cb_data)
static void entity_hs_activate_done (ipmi_entity_t *entity, int err, void *cb_data)
static void entity_hs_activate (ipmi_entity_t *entity, void *cb_data)
static void entity_hs_deactivate_done (ipmi_entity_t *entity, int err, void *cb_data)
static void entity_hs_deactivate (ipmi_entity_t *entity, void *cb_data)
static void entity_hs_state_done (ipmi_entity_t *entity, int err, enum ipmi_hot_swap_states state, void *cb_data)
static void entity_hs_state (ipmi_entity_t *entity, void *cb_data)
static void entity_hs_check (ipmi_entity_t *entity, void *cb_data)
void fru_change (enum ipmi_update_e op, ipmi_entity_t *entity, void *cb_data)
static int presence_change (ipmi_entity_t *entity, int present, void *cb_data, ipmi_event_t *event)
static int entity_hot_swap (ipmi_entity_t *entity, enum ipmi_hot_swap_states last_state, enum ipmi_hot_swap_states curr_state, void *cb_data, ipmi_event_t *event)
void ipmi_cmdlang_entity_change (enum ipmi_update_e op, ipmi_domain_t *domain, ipmi_entity_t *entity, void *cb_data)
int ipmi_cmdlang_entity_init (os_handler_t *os_hnd)

Variables

static ipmi_cmdlang_cmd_tentity_cmds
static ipmi_cmdlang_cmd_ths_cmds
static ipmi_cmdlang_init_t cmds_entity []


Define Documentation

#define CMDS_ENTITY_LEN   (sizeof(cmds_entity)/sizeof(ipmi_cmdlang_init_t))
 

Definition at line 1099 of file cmd_entity.c.

Referenced by ipmi_cmdlang_entity_init().


Function Documentation

static void entity_child_handler ipmi_entity_t parent,
ipmi_entity_t entity,
void *  cb_data
[static]
 

Definition at line 74 of file cmd_entity.c.

References cmdlang, ipmi_cmdlang_s::err, ipmi_cmdinfo_get_cmdlang(), ipmi_cmdlang_down(), ipmi_cmdlang_out(), ipmi_cmdlang_up(), ipmi_entity_get_is_parent(), ipmi_entity_get_name(), ipmi_entity_iterate_children(), and IPMI_ENTITY_NAME_LEN.

Referenced by entity_tree_handler().

00076 {
00077     ipmi_cmd_info_t *cmd_info = cb_data;
00078     ipmi_cmdlang_t  *cmdlang = ipmi_cmdinfo_get_cmdlang(cmd_info);
00079     char            entity_name[IPMI_ENTITY_NAME_LEN];
00080 
00081     if (cmdlang->err)
00082         return;
00083 
00084     ipmi_entity_get_name(entity, entity_name, sizeof(entity_name));
00085 
00086     ipmi_cmdlang_out(cmd_info, "Name", entity_name);
00087     if (ipmi_entity_get_is_parent(entity)) {
00088         ipmi_cmdlang_down(cmd_info);
00089         ipmi_entity_iterate_children(entity, entity_child_handler, cmd_info);
00090         ipmi_cmdlang_up(cmd_info);
00091     }
00092 }

static void entity_dump ipmi_entity_t entity,
ipmi_cmd_info_t cmd_info
[static]
 

Definition at line 167 of file cmd_entity.c.

References entity_iterate_handler(), IPMI_ASCII_STR, ipmi_cmdlang_down(), ipmi_cmdlang_out(), ipmi_cmdlang_out_bool(), ipmi_cmdlang_out_hex(), ipmi_cmdlang_out_int(), ipmi_cmdlang_out_type(), ipmi_cmdlang_up(), IPMI_ENTITY_FRU, IPMI_ENTITY_GENERIC, ipmi_entity_get_access_address(), ipmi_entity_get_ACPI_device_power_notify_required(), ipmi_entity_get_ACPI_system_power_notify_required(), ipmi_entity_get_address_span(), ipmi_entity_get_bridge(), ipmi_entity_get_channel(), ipmi_entity_get_chassis_device(), ipmi_entity_get_controller_logs_init_agent_errors(), ipmi_entity_get_device_modifier(), ipmi_entity_get_device_type(), ipmi_entity_get_entity_id_string(), ipmi_entity_get_fru_device_id(), ipmi_entity_get_FRU_inventory_device(), ipmi_entity_get_global_init(), ipmi_entity_get_id(), ipmi_entity_get_id_length(), ipmi_entity_get_id_type(), ipmi_entity_get_IPMB_event_generator(), ipmi_entity_get_IPMB_event_receiver(), ipmi_entity_get_is_child(), ipmi_entity_get_is_logical_fru(), ipmi_entity_get_is_parent(), ipmi_entity_get_log_init_agent_errors_accessing(), ipmi_entity_get_lun(), ipmi_entity_get_oem(), ipmi_entity_get_physical_slot_num(), ipmi_entity_get_presence_sensor_always_there(), ipmi_entity_get_private_bus_id(), ipmi_entity_get_SDR_repository_device(), ipmi_entity_get_SEL_device(), ipmi_entity_get_sensor_device(), ipmi_entity_get_slave_address(), ipmi_entity_get_type(), ipmi_entity_hot_swappable(), ipmi_entity_is_present(), ipmi_entity_iterate_children(), ipmi_entity_iterate_parents(), IPMI_ENTITY_MC, ipmi_entity_supports_managed_hot_swap(), ipmi_mem_alloc(), and ipmi_mem_free().

Referenced by entity_info(), and ipmi_cmdlang_entity_change().

00168 {
00169     enum ipmi_dlr_type_e type;
00170     static char          *ent_types[] = { "unknown", "mc", "fru",
00171                                           "generic", "invalid" };
00172     int                  length;
00173     unsigned int         val;
00174 
00175     type = ipmi_entity_get_type(entity);
00176     if (type > IPMI_ENTITY_GENERIC)
00177         type = IPMI_ENTITY_GENERIC + 1;
00178     ipmi_cmdlang_out(cmd_info, "Type", ent_types[type]);
00179 
00180     ipmi_cmdlang_out_bool(cmd_info, "Present", ipmi_entity_is_present(entity));
00181     ipmi_cmdlang_out_bool(cmd_info, "Presence sensor always there",
00182                          ipmi_entity_get_presence_sensor_always_there(entity));
00183     ipmi_cmdlang_out_bool(cmd_info, "Hot swappable",
00184                           ipmi_entity_hot_swappable(entity));
00185     if (ipmi_entity_hot_swappable(entity)) {
00186         ipmi_cmdlang_out_bool(cmd_info, "Supports managed hot swap",
00187                               ipmi_entity_supports_managed_hot_swap(entity));
00188     }
00189 
00190     if (ipmi_entity_get_is_child(entity)) {
00191         ipmi_cmdlang_out(cmd_info, "Parents", NULL);
00192         ipmi_cmdlang_down(cmd_info);
00193         ipmi_entity_iterate_parents(entity, entity_iterate_handler, cmd_info);
00194         ipmi_cmdlang_up(cmd_info);
00195     }
00196     if (ipmi_entity_get_is_parent(entity)) {
00197         ipmi_cmdlang_out(cmd_info, "Children", NULL);
00198         ipmi_cmdlang_down(cmd_info);
00199         ipmi_entity_iterate_children(entity, entity_iterate_handler, cmd_info);
00200         ipmi_cmdlang_up(cmd_info);
00201     }
00202 
00203     if (ipmi_entity_get_physical_slot_num(entity, &val) == 0)
00204         ipmi_cmdlang_out_int(cmd_info, "Physical Slot", val);
00205 
00206     length = ipmi_entity_get_id_length(entity);
00207     if (length &&
00208         (ipmi_entity_get_id_type(entity) == IPMI_ASCII_STR && length > 1))
00209     {
00210         char *str = ipmi_mem_alloc(length);
00211 
00212         if (str) {
00213             length = ipmi_entity_get_id(entity, str, length);
00214             ipmi_cmdlang_out_type(cmd_info, "Id",
00215                                   ipmi_entity_get_id_type(entity),
00216                                   str, length);
00217             ipmi_mem_free(str);
00218         }
00219     }
00220     ipmi_cmdlang_out(cmd_info, "Entity ID String",
00221                      ipmi_entity_get_entity_id_string(entity));
00222 
00223     switch (type) {
00224     case IPMI_ENTITY_MC:
00225         ipmi_cmdlang_out_int(cmd_info, "Channel",
00226                              ipmi_entity_get_channel(entity));
00227         ipmi_cmdlang_out_int(cmd_info, "LUN", ipmi_entity_get_lun(entity));
00228         ipmi_cmdlang_out_hex(cmd_info, "OEM", ipmi_entity_get_oem(entity));
00229         ipmi_cmdlang_out_hex(cmd_info, "Slave Address",
00230                              ipmi_entity_get_slave_address(entity));
00231         ipmi_cmdlang_out_bool(cmd_info, "ACPI_system_power_notify_required",
00232                     ipmi_entity_get_ACPI_system_power_notify_required(entity));
00233         ipmi_cmdlang_out_bool(cmd_info, "ACPI_device_power_notify_required",
00234                     ipmi_entity_get_ACPI_device_power_notify_required(entity));
00235         ipmi_cmdlang_out_bool(cmd_info, "controller_logs_init_agent_errors",
00236                     ipmi_entity_get_controller_logs_init_agent_errors(entity));
00237         ipmi_cmdlang_out_bool(cmd_info, "log_init_agent_errors_accessing",
00238                     ipmi_entity_get_log_init_agent_errors_accessing(entity));
00239         ipmi_cmdlang_out_bool(cmd_info, "global_init",
00240                               ipmi_entity_get_global_init(entity));
00241         ipmi_cmdlang_out_bool(cmd_info, "chassis_device",
00242                               ipmi_entity_get_chassis_device(entity));
00243         ipmi_cmdlang_out_bool(cmd_info, "bridge",
00244                               ipmi_entity_get_bridge(entity));
00245         ipmi_cmdlang_out_bool(cmd_info, "IPMB_event_generator",
00246                               ipmi_entity_get_IPMB_event_generator(entity));
00247         ipmi_cmdlang_out_bool(cmd_info, "IPMB_event_receiver",
00248                               ipmi_entity_get_IPMB_event_receiver(entity));
00249         ipmi_cmdlang_out_bool(cmd_info, "FRU_inventory_device",
00250                               ipmi_entity_get_FRU_inventory_device(entity));
00251         ipmi_cmdlang_out_bool(cmd_info, "SEL_device",
00252                               ipmi_entity_get_SEL_device(entity));
00253         ipmi_cmdlang_out_bool(cmd_info, "SDR_repository_device",
00254                               ipmi_entity_get_SDR_repository_device(entity));
00255         ipmi_cmdlang_out_bool(cmd_info, "sensor_device",
00256                               ipmi_entity_get_sensor_device(entity));
00257         break;
00258 
00259     case IPMI_ENTITY_FRU:
00260         ipmi_cmdlang_out_int(cmd_info, "Channel",
00261                              ipmi_entity_get_channel(entity));
00262         ipmi_cmdlang_out_int(cmd_info, "LUN", ipmi_entity_get_lun(entity));
00263         ipmi_cmdlang_out_hex(cmd_info, "OEM", ipmi_entity_get_oem(entity));
00264         ipmi_cmdlang_out_hex(cmd_info, "access_address",
00265                          ipmi_entity_get_access_address(entity));
00266         ipmi_cmdlang_out_hex(cmd_info, "private_bus_id",
00267                          ipmi_entity_get_private_bus_id(entity));
00268         ipmi_cmdlang_out_int(cmd_info, "device_type",
00269                          ipmi_entity_get_device_type(entity));
00270         ipmi_cmdlang_out_int(cmd_info, "device_modifier",
00271                          ipmi_entity_get_device_modifier(entity));
00272         ipmi_cmdlang_out_bool(cmd_info, "is_logical_fru",
00273                          ipmi_entity_get_is_logical_fru(entity));
00274         ipmi_cmdlang_out_hex(cmd_info, "fru_device_id",
00275                          ipmi_entity_get_fru_device_id(entity));
00276         break;
00277 
00278     case IPMI_ENTITY_GENERIC:
00279         ipmi_cmdlang_out_int(cmd_info, "Channel",
00280                              ipmi_entity_get_channel(entity));
00281         ipmi_cmdlang_out_int(cmd_info, "LUN", ipmi_entity_get_lun(entity));
00282         ipmi_cmdlang_out_hex(cmd_info, "OEM", ipmi_entity_get_oem(entity));
00283         ipmi_cmdlang_out_hex(cmd_info, "access_address",
00284                          ipmi_entity_get_access_address(entity));
00285         ipmi_cmdlang_out_hex(cmd_info, "private_bus_id",
00286                          ipmi_entity_get_private_bus_id(entity));
00287         ipmi_cmdlang_out_int(cmd_info, "device_type",
00288                          ipmi_entity_get_device_type(entity));
00289         ipmi_cmdlang_out_int(cmd_info, "device_modifier",
00290                          ipmi_entity_get_device_modifier(entity));
00291         ipmi_cmdlang_out_hex(cmd_info, "slave_address",
00292                          ipmi_entity_get_slave_address(entity));
00293         ipmi_cmdlang_out_int(cmd_info, "address_span",
00294                          ipmi_entity_get_address_span(entity));
00295         break;
00296 
00297     default:
00298         break;
00299     }
00300 }

static int entity_hot_swap ipmi_entity_t entity,
enum ipmi_hot_swap_states  last_state,
enum ipmi_hot_swap_states  curr_state,
void *  cb_data,
ipmi_event_t event
[static]
 

Definition at line 909 of file cmd_entity.c.

References ipmi_cmdlang_alloc_event_info(), ipmi_cmdlang_cmd_info_put(), ipmi_cmdlang_down(), ipmi_cmdlang_event_out(), ipmi_cmdlang_global_err(), ipmi_cmdlang_out(), ipmi_cmdlang_up(), ipmi_entity_get_name(), IPMI_ENTITY_NAME_LEN, IPMI_EVENT_NOT_HANDLED, and ipmi_hot_swap_state_name().

Referenced by ipmi_cmdlang_entity_change().

00914 {
00915     char            *errstr;
00916     int             rv;
00917     ipmi_cmd_info_t *evi;
00918     char            entity_name[IPMI_ENTITY_NAME_LEN];
00919 
00920     ipmi_entity_get_name(entity, entity_name, sizeof(entity_name));
00921 
00922     evi = ipmi_cmdlang_alloc_event_info();
00923     if (!evi) {
00924         rv = ENOMEM;
00925         errstr = "Out of memory";
00926         goto out_err;
00927     }
00928 
00929     ipmi_cmdlang_out(evi, "Object Type", "Entity");
00930     ipmi_cmdlang_out(evi, "Name", entity_name);
00931     ipmi_cmdlang_out(evi, "Operation", "Hot-Swap Change");
00932     ipmi_cmdlang_out(evi, "Last State", 
00933                      ipmi_hot_swap_state_name(last_state));
00934     ipmi_cmdlang_out(evi, "State", ipmi_hot_swap_state_name(curr_state));
00935 
00936     if (event) {
00937         ipmi_cmdlang_out(evi, "Event", NULL);
00938         ipmi_cmdlang_down(evi);
00939         ipmi_cmdlang_event_out(event, evi);
00940         ipmi_cmdlang_up(evi);
00941     }
00942 
00943     ipmi_cmdlang_cmd_info_put(evi);
00944     return IPMI_EVENT_NOT_HANDLED;
00945 
00946  out_err:
00947     ipmi_cmdlang_global_err(entity_name,
00948                             "cmd_entity.c(entity_hot_swap)",
00949                             errstr, rv);
00950     if (evi)
00951         ipmi_cmdlang_cmd_info_put(evi);
00952 
00953     return IPMI_EVENT_NOT_HANDLED;
00954 }

static void entity_hs_activate ipmi_entity_t entity,
void *  cb_data
[static]
 

Definition at line 660 of file cmd_entity.c.

References cmdlang, entity_hs_activate_done(), ipmi_cmdlang_s::err, ipmi_cmdlang_s::errstr, ipmi_cmdinfo_get_cmdlang(), ipmi_cmdlang_cmd_info_get(), ipmi_cmdlang_cmd_info_put(), ipmi_entity_activate(), ipmi_entity_get_name(), ipmi_cmdlang_s::location, ipmi_cmdlang_s::objstr, and ipmi_cmdlang_s::objstr_len.

00661 {
00662     ipmi_cmd_info_t *cmd_info = cb_data;
00663     ipmi_cmdlang_t  *cmdlang = ipmi_cmdinfo_get_cmdlang(cmd_info);
00664     int             rv;
00665 
00666     ipmi_cmdlang_cmd_info_get(cmd_info);
00667     rv = ipmi_entity_activate(entity,
00668                               entity_hs_activate_done,
00669                               cmd_info);
00670     if (rv) {
00671         ipmi_cmdlang_cmd_info_put(cmd_info);
00672         cmdlang->err = rv;
00673         cmdlang->errstr = "Error sending activate";
00674         ipmi_entity_get_name(entity, cmdlang->objstr,
00675                              cmdlang->objstr_len);
00676         cmdlang->location = "cmd_entity.c(entity_hs_activate)";
00677     }
00678 }

static void entity_hs_activate_done ipmi_entity_t entity,
int  err,
void *  cb_data
[static]
 

Definition at line 633 of file cmd_entity.c.

References cmdlang, ipmi_cmdlang_s::err, ipmi_cmdlang_s::errstr, ipmi_cmdinfo_get_cmdlang(), ipmi_cmdlang_cmd_info_put(), ipmi_cmdlang_lock(), ipmi_cmdlang_out(), ipmi_cmdlang_unlock(), ipmi_entity_get_name(), IPMI_ENTITY_NAME_LEN, ipmi_cmdlang_s::location, ipmi_cmdlang_s::objstr, and ipmi_cmdlang_s::objstr_len.

Referenced by entity_hs_activate().

00636 {
00637     ipmi_cmd_info_t    *cmd_info = cb_data;
00638     ipmi_cmdlang_t     *cmdlang = ipmi_cmdinfo_get_cmdlang(cmd_info);
00639     char               entity_name[IPMI_ENTITY_NAME_LEN];
00640 
00641     ipmi_cmdlang_lock(cmd_info);
00642     if (err) {
00643         cmdlang->errstr = "Error from entity hot-swap activate";
00644         cmdlang->err = err;
00645         ipmi_entity_get_name(entity, cmdlang->objstr,
00646                              cmdlang->objstr_len);
00647         cmdlang->location = "cmd_sensor.c(entity_hs_activate_done)";
00648         goto out;
00649     }
00650 
00651     ipmi_entity_get_name(entity, entity_name, sizeof(entity_name));
00652     ipmi_cmdlang_out(cmd_info, "Activated", entity_name);
00653 
00654  out:
00655     ipmi_cmdlang_unlock(cmd_info);
00656     ipmi_cmdlang_cmd_info_put(cmd_info);
00657 }

static void entity_hs_activation_request ipmi_entity_t entity,
void *  cb_data
[static]
 

Definition at line 611 of file cmd_entity.c.

References cmdlang, entity_hs_activation_request_done(), ipmi_cmdlang_s::err, ipmi_cmdlang_s::errstr, ipmi_cmdinfo_get_cmdlang(), ipmi_cmdlang_cmd_info_get(), ipmi_cmdlang_cmd_info_put(), ipmi_entity_get_name(), ipmi_entity_set_activation_requested(), ipmi_cmdlang_s::location, ipmi_cmdlang_s::objstr, and ipmi_cmdlang_s::objstr_len.

00612 {
00613     ipmi_cmd_info_t *cmd_info = cb_data;
00614     ipmi_cmdlang_t  *cmdlang = ipmi_cmdinfo_get_cmdlang(cmd_info);
00615     int             rv;
00616 
00617     ipmi_cmdlang_cmd_info_get(cmd_info);
00618     rv = ipmi_entity_set_activation_requested
00619         (entity,
00620          entity_hs_activation_request_done,
00621          cmd_info);
00622     if (rv) {
00623         ipmi_cmdlang_cmd_info_put(cmd_info);
00624         cmdlang->err = rv;
00625         cmdlang->errstr = "Error sending activation request";
00626         ipmi_entity_get_name(entity, cmdlang->objstr,
00627                              cmdlang->objstr_len);
00628         cmdlang->location = "cmd_entity.c(entity_hs_activation_request)";
00629     }
00630 }

static void entity_hs_activation_request_done ipmi_entity_t entity,
int  err,
void *  cb_data
[static]
 

Definition at line 584 of file cmd_entity.c.

References cmdlang, ipmi_cmdlang_s::err, ipmi_cmdlang_s::errstr, ipmi_cmdinfo_get_cmdlang(), ipmi_cmdlang_cmd_info_put(), ipmi_cmdlang_lock(), ipmi_cmdlang_out(), ipmi_cmdlang_unlock(), ipmi_entity_get_name(), IPMI_ENTITY_NAME_LEN, ipmi_cmdlang_s::location, ipmi_cmdlang_s::objstr, and ipmi_cmdlang_s::objstr_len.

Referenced by entity_hs_activation_request().

00587 {
00588     ipmi_cmd_info_t    *cmd_info = cb_data;
00589     ipmi_cmdlang_t     *cmdlang = ipmi_cmdinfo_get_cmdlang(cmd_info);
00590     char               entity_name[IPMI_ENTITY_NAME_LEN];
00591 
00592     ipmi_cmdlang_lock(cmd_info);
00593     if (err) {
00594         cmdlang->errstr = "Error from entity hot-swap activation request";
00595         cmdlang->err = err;
00596         ipmi_entity_get_name(entity, cmdlang->objstr,
00597                              cmdlang->objstr_len);
00598         cmdlang->location = "cmd_sensor.c(entity_hs_activation_request_done)";
00599         goto out;
00600     }
00601 
00602     ipmi_entity_get_name(entity, entity_name, sizeof(entity_name));
00603     ipmi_cmdlang_out(cmd_info, "Activation requested", entity_name);
00604 
00605  out:
00606     ipmi_cmdlang_unlock(cmd_info);
00607     ipmi_cmdlang_cmd_info_put(cmd_info);
00608 }

static void entity_hs_check ipmi_entity_t entity,
void *  cb_data
[static]
 

Definition at line 781 of file cmd_entity.c.

References cmdlang, ipmi_cmdlang_s::err, ipmi_cmdlang_s::errstr, ipmi_cmdinfo_get_cmdlang(), ipmi_cmdlang_out(), ipmi_entity_check_hot_swap_state(), ipmi_entity_get_name(), IPMI_ENTITY_NAME_LEN, ipmi_cmdlang_s::location, ipmi_cmdlang_s::objstr, and ipmi_cmdlang_s::objstr_len.

00782 {
00783     ipmi_cmd_info_t *cmd_info = cb_data;
00784     ipmi_cmdlang_t  *cmdlang = ipmi_cmdinfo_get_cmdlang(cmd_info);
00785     int             rv;
00786     char            entity_name[IPMI_ENTITY_NAME_LEN];
00787 
00788     rv = ipmi_entity_check_hot_swap_state(entity);
00789     if (rv) {
00790         cmdlang->err = rv;
00791         cmdlang->errstr = "Error checking hot-swap state";
00792         ipmi_entity_get_name(entity, cmdlang->objstr,
00793                              cmdlang->objstr_len);
00794         cmdlang->location = "cmd_entity.c(entity_hs_check)";
00795     } else {
00796       ipmi_entity_get_name(entity, entity_name, sizeof(entity_name));
00797       ipmi_cmdlang_out(cmd_info, "Check started", entity_name);
00798     }
00799 }

static void entity_hs_deactivate ipmi_entity_t entity,
void *  cb_data
[static]
 

Definition at line 708 of file cmd_entity.c.

References cmdlang, entity_hs_deactivate_done(), ipmi_cmdlang_s::err, ipmi_cmdlang_s::errstr, ipmi_cmdinfo_get_cmdlang(), ipmi_cmdlang_cmd_info_get(), ipmi_cmdlang_cmd_info_put(), ipmi_entity_deactivate(), ipmi_entity_get_name(), ipmi_cmdlang_s::location, ipmi_cmdlang_s::objstr, and ipmi_cmdlang_s::objstr_len.

00709 {
00710     ipmi_cmd_info_t *cmd_info = cb_data;
00711     ipmi_cmdlang_t  *cmdlang = ipmi_cmdinfo_get_cmdlang(cmd_info);
00712     int             rv;
00713 
00714     ipmi_cmdlang_cmd_info_get(cmd_info);
00715     rv = ipmi_entity_deactivate(entity,
00716                                 entity_hs_deactivate_done,
00717                                 cmd_info);
00718     if (rv) {
00719         ipmi_cmdlang_cmd_info_put(cmd_info);
00720         cmdlang->err = rv;
00721         cmdlang->errstr = "Error sending deactivate";
00722         ipmi_entity_get_name(entity, cmdlang->objstr,
00723                              cmdlang->objstr_len);
00724         cmdlang->location = "cmd_entity.c(entity_hs_deactivate)";
00725     }
00726 }

static void entity_hs_deactivate_done ipmi_entity_t entity,
int  err,
void *  cb_data
[static]
 

Definition at line 681 of file cmd_entity.c.

References cmdlang, ipmi_cmdlang_s::err, ipmi_cmdlang_s::errstr, ipmi_cmdinfo_get_cmdlang(), ipmi_cmdlang_cmd_info_put(), ipmi_cmdlang_lock(), ipmi_cmdlang_out(), ipmi_cmdlang_unlock(), ipmi_entity_get_name(), IPMI_ENTITY_NAME_LEN, ipmi_cmdlang_s::location, ipmi_cmdlang_s::objstr, and ipmi_cmdlang_s::objstr_len.

Referenced by entity_hs_deactivate().

00684 {
00685     ipmi_cmd_info_t    *cmd_info = cb_data;
00686     ipmi_cmdlang_t     *cmdlang = ipmi_cmdinfo_get_cmdlang(cmd_info);
00687     char               entity_name[IPMI_ENTITY_NAME_LEN];
00688 
00689     ipmi_cmdlang_lock(cmd_info);
00690     if (err) {
00691         cmdlang->errstr = "Error from entity hot-swap deactivate";
00692         cmdlang->err = err;
00693         ipmi_entity_get_name(entity, cmdlang->objstr,
00694                              cmdlang->objstr_len);
00695         cmdlang->location = "cmd_sensor.c(entity_hs_deactivate_done)";
00696         goto out;
00697     }
00698 
00699     ipmi_entity_get_name(entity, entity_name, sizeof(entity_name));
00700     ipmi_cmdlang_out(cmd_info, "Deactivated", entity_name);
00701 
00702  out:
00703     ipmi_cmdlang_unlock(cmd_info);
00704     ipmi_cmdlang_cmd_info_put(cmd_info);
00705 }

static void entity_hs_get_act_time ipmi_entity_t entity,
void *  cb_data
[static]
 

Definition at line 371 of file cmd_entity.c.

References cmdlang, entity_hs_get_act_time_done(), ipmi_cmdlang_s::err, ipmi_cmdlang_s::errstr, ipmi_cmdinfo_get_cmdlang(), ipmi_cmdlang_cmd_info_get(), ipmi_cmdlang_cmd_info_put(), ipmi_entity_get_auto_activate_time(), ipmi_entity_get_name(), ipmi_cmdlang_s::location, ipmi_cmdlang_s::objstr, and ipmi_cmdlang_s::objstr_len.

00372 {
00373     ipmi_cmd_info_t *cmd_info = cb_data;
00374     ipmi_cmdlang_t  *cmdlang = ipmi_cmdinfo_get_cmdlang(cmd_info);
00375     int             rv;
00376 
00377     ipmi_cmdlang_cmd_info_get(cmd_info);
00378     rv = ipmi_entity_get_auto_activate_time(entity,
00379                                             entity_hs_get_act_time_done,
00380                                             cmd_info);
00381     if (rv) {
00382         ipmi_cmdlang_cmd_info_put(cmd_info);
00383         cmdlang->err = rv;
00384         cmdlang->errstr = "Error getting auto activate time";
00385         ipmi_entity_get_name(entity, cmdlang->objstr,
00386                              cmdlang->objstr_len);
00387         cmdlang->location = "cmd_entity.c(entity_hs_get_act_time)";
00388     }
00389 }

static void entity_hs_get_act_time_done ipmi_entity_t entity,
int  err,
ipmi_timeout_t  val,
void *  cb_data
[static]
 

Definition at line 340 of file cmd_entity.c.

References cmdlang, ipmi_cmdlang_s::err, ipmi_cmdlang_s::errstr, ipmi_cmdinfo_get_cmdlang(), ipmi_cmdlang_cmd_info_put(), ipmi_cmdlang_down(), ipmi_cmdlang_lock(), ipmi_cmdlang_out(), ipmi_cmdlang_out_timeout(), ipmi_cmdlang_unlock(), ipmi_entity_get_name(), IPMI_ENTITY_NAME_LEN, ipmi_cmdlang_s::location, ipmi_cmdlang_s::objstr, and ipmi_cmdlang_s::objstr_len.

Referenced by entity_hs_get_act_time().

00344 {
00345     ipmi_cmd_info_t    *cmd_info = cb_data;
00346     ipmi_cmdlang_t     *cmdlang = ipmi_cmdinfo_get_cmdlang(cmd_info);
00347     char               entity_name[IPMI_ENTITY_NAME_LEN];
00348 
00349     ipmi_cmdlang_lock(cmd_info);
00350     if (err) {
00351         cmdlang->errstr = "Error reading entity hot-swap activate time";
00352         cmdlang->err = err;
00353         ipmi_entity_get_name(entity, cmdlang->objstr,
00354                              cmdlang->objstr_len);
00355         cmdlang->location = "cmd_sensor.c(entity_hs_get_act_time_done)";
00356         goto out;
00357     }
00358 
00359     ipmi_entity_get_name(entity, entity_name, sizeof(entity_name));
00360     ipmi_cmdlang_out(cmd_info, "Entity", NULL);
00361     ipmi_cmdlang_down(cmd_info);
00362     ipmi_cmdlang_out(cmd_info, "Name", entity_name);
00363     ipmi_cmdlang_out_timeout(cmd_info, "Auto-Activation Time", val);
00364 
00365  out:
00366     ipmi_cmdlang_unlock(cmd_info);
00367     ipmi_cmdlang_cmd_info_put(cmd_info);
00368 }

static void entity_hs_get_deact_time ipmi_entity_t entity,
void *  cb_data
[static]
 

Definition at line 493 of file cmd_entity.c.

References cmdlang, entity_hs_get_deact_time_done(), ipmi_cmdlang_s::err, ipmi_cmdlang_s::errstr, ipmi_cmdinfo_get_cmdlang(), ipmi_cmdlang_cmd_info_get(), ipmi_cmdlang_cmd_info_put(), ipmi_entity_get_auto_deactivate_time(), ipmi_entity_get_name(), ipmi_cmdlang_s::location, ipmi_cmdlang_s::objstr, and ipmi_cmdlang_s::objstr_len.

00494 {
00495     ipmi_cmd_info_t *cmd_info = cb_data;
00496     ipmi_cmdlang_t  *cmdlang = ipmi_cmdinfo_get_cmdlang(cmd_info);
00497     int             rv;
00498 
00499     ipmi_cmdlang_cmd_info_get(cmd_info);
00500     rv = ipmi_entity_get_auto_deactivate_time(entity,
00501                                             entity_hs_get_deact_time_done,
00502                                             cmd_info);
00503     if (rv) {
00504         ipmi_cmdlang_cmd_info_put(cmd_info);
00505         cmdlang->err = rv;
00506         cmdlang->errstr = "Error getting auto deactivate time";
00507         ipmi_entity_get_name(entity, cmdlang->objstr,
00508                              cmdlang->objstr_len);
00509         cmdlang->location = "cmd_entity.c(entity_hs_get_deact_time)";
00510     }
00511 }

static void entity_hs_get_deact_time_done ipmi_entity_t entity,
int  err,
ipmi_timeout_t  val,
void *  cb_data
[static]
 

Definition at line 462 of file cmd_entity.c.

References cmdlang, ipmi_cmdlang_s::err, ipmi_cmdlang_s::errstr, ipmi_cmdinfo_get_cmdlang(), ipmi_cmdlang_cmd_info_put(), ipmi_cmdlang_down(), ipmi_cmdlang_lock(), ipmi_cmdlang_out(), ipmi_cmdlang_out_timeout(), ipmi_cmdlang_unlock(), ipmi_entity_get_name(), IPMI_ENTITY_NAME_LEN, ipmi_cmdlang_s::location, ipmi_cmdlang_s::objstr, and ipmi_cmdlang_s::objstr_len.

Referenced by entity_hs_get_deact_time().

00466 {
00467     ipmi_cmd_info_t    *cmd_info = cb_data;
00468     ipmi_cmdlang_t     *cmdlang = ipmi_cmdinfo_get_cmdlang(cmd_info);
00469     char               entity_name[IPMI_ENTITY_NAME_LEN];
00470 
00471     ipmi_cmdlang_lock(cmd_info);
00472     if (err) {
00473         cmdlang->errstr = "Error reading entity hot-swap deactivate time";
00474         cmdlang->err = err;
00475         ipmi_entity_get_name(entity, cmdlang->objstr,
00476                              cmdlang->objstr_len);
00477         cmdlang->location = "cmd_sensor.c(entity_hs_get_deact_time_done)";
00478         goto out;
00479     }
00480 
00481     ipmi_entity_get_name(entity, entity_name, sizeof(entity_name));
00482     ipmi_cmdlang_out(cmd_info, "Entity", NULL);
00483     ipmi_cmdlang_down(cmd_info);
00484     ipmi_cmdlang_out(cmd_info, "Name", entity_name);
00485     ipmi_cmdlang_out_timeout(cmd_info, "Auto-Deactivation Time", val);
00486 
00487  out:
00488     ipmi_cmdlang_unlock(cmd_info);
00489     ipmi_cmdlang_cmd_info_put(cmd_info);
00490 }

static void entity_hs_set_act_time ipmi_entity_t entity,
void *  cb_data
[static]
 

Definition at line 419 of file cmd_entity.c.

References cmdlang, entity_hs_set_act_time_done(), ipmi_cmdlang_s::err, ipmi_cmdlang_s::errstr, ipmi_cmdinfo_get_cmdlang(), ipmi_cmdlang_cmd_info_get(), ipmi_cmdlang_cmd_info_put(), ipmi_cmdlang_get_argc(), ipmi_cmdlang_get_argv(), ipmi_cmdlang_get_curr_arg(), ipmi_cmdlang_get_timeout(), ipmi_entity_get_name(), ipmi_entity_set_auto_activate_time(), ipmi_cmdlang_s::location, ipmi_cmdlang_s::objstr, and ipmi_cmdlang_s::objstr_len.

00420 {
00421     ipmi_cmd_info_t *cmd_info = cb_data;
00422     ipmi_cmdlang_t  *cmdlang = ipmi_cmdinfo_get_cmdlang(cmd_info);
00423     int             rv;
00424     ipmi_timeout_t  val;
00425     int             curr_arg = ipmi_cmdlang_get_curr_arg(cmd_info);
00426     int             argc = ipmi_cmdlang_get_argc(cmd_info);
00427     char            **argv = ipmi_cmdlang_get_argv(cmd_info);
00428 
00429     if ((argc - curr_arg) < 1) {
00430         cmdlang->errstr = "Not enough parameters";
00431         cmdlang->err = EINVAL;
00432         goto out_err;
00433     }
00434 
00435     ipmi_cmdlang_get_timeout(argv[curr_arg], &val, cmd_info);
00436     if (cmdlang->err) {
00437         cmdlang->errstr = "time invalid";
00438         goto out_err;
00439     }
00440     curr_arg++;
00441 
00442     ipmi_cmdlang_cmd_info_get(cmd_info);
00443     rv = ipmi_entity_set_auto_activate_time(entity,
00444                                             val,
00445                                             entity_hs_set_act_time_done,
00446                                             cmd_info);
00447     if (rv) {
00448         ipmi_cmdlang_cmd_info_put(cmd_info);
00449         cmdlang->err = rv;
00450         cmdlang->errstr = "Error setting auto activate time";
00451         goto out_err;
00452     }
00453     return;
00454 
00455  out_err:
00456     ipmi_entity_get_name(entity, cmdlang->objstr,
00457                          cmdlang->objstr_len);
00458     cmdlang->location = "cmd_entity.c(entity_hs_set_act_time)";
00459 }

static void entity_hs_set_act_time_done ipmi_entity_t entity,
int  err,
void *  cb_data
[static]
 

Definition at line 392 of file cmd_entity.c.

References cmdlang, ipmi_cmdlang_s::err, ipmi_cmdlang_s::errstr, ipmi_cmdinfo_get_cmdlang(), ipmi_cmdlang_cmd_info_put(), ipmi_cmdlang_lock(), ipmi_cmdlang_out(), ipmi_cmdlang_unlock(), ipmi_entity_get_name(), IPMI_ENTITY_NAME_LEN, ipmi_cmdlang_s::location, ipmi_cmdlang_s::objstr, and ipmi_cmdlang_s::objstr_len.

Referenced by entity_hs_set_act_time().

00395 {
00396     ipmi_cmd_info_t    *cmd_info = cb_data;
00397     ipmi_cmdlang_t     *cmdlang = ipmi_cmdinfo_get_cmdlang(cmd_info);
00398     char               entity_name[IPMI_ENTITY_NAME_LEN];
00399 
00400     ipmi_cmdlang_lock(cmd_info);
00401     if (err) {
00402         cmdlang->errstr = "Error setting entity hot-swap activate time";
00403         cmdlang->err = err;
00404         ipmi_entity_get_name(entity, cmdlang->objstr,
00405                              cmdlang->objstr_len);
00406         cmdlang->location = "cmd_sensor.c(entity_hs_set_act_time_done)";
00407         goto out;
00408     }
00409 
00410     ipmi_entity_get_name(entity, entity_name, sizeof(entity_name));
00411     ipmi_cmdlang_out(cmd_info, "Set act time", entity_name);
00412 
00413  out:
00414     ipmi_cmdlang_unlock(cmd_info);
00415     ipmi_cmdlang_cmd_info_put(cmd_info);
00416 }

static void entity_hs_set_deact_time ipmi_entity_t entity,
void *  cb_data
[static]
 

Definition at line 541 of file cmd_entity.c.

References cmdlang, entity_hs_set_deact_time_done(), ipmi_cmdlang_s::err, ipmi_cmdlang_s::errstr, ipmi_cmdinfo_get_cmdlang(), ipmi_cmdlang_cmd_info_get(), ipmi_cmdlang_cmd_info_put(), ipmi_cmdlang_get_argc(), ipmi_cmdlang_get_argv(), ipmi_cmdlang_get_curr_arg(), ipmi_cmdlang_get_timeout(), ipmi_entity_get_name(), ipmi_entity_set_auto_deactivate_time(), ipmi_cmdlang_s::location, ipmi_cmdlang_s::objstr, and ipmi_cmdlang_s::objstr_len.

00542 {
00543     ipmi_cmd_info_t *cmd_info = cb_data;
00544     ipmi_cmdlang_t  *cmdlang = ipmi_cmdinfo_get_cmdlang(cmd_info);
00545     int             rv;
00546     ipmi_timeout_t  val;
00547     int             curr_arg = ipmi_cmdlang_get_curr_arg(cmd_info);
00548     int             argc = ipmi_cmdlang_get_argc(cmd_info);
00549     char            **argv = ipmi_cmdlang_get_argv(cmd_info);
00550 
00551     if ((argc - curr_arg) < 1) {
00552         cmdlang->errstr = "Not enough parameters";
00553         cmdlang->err = EINVAL;
00554         goto out_err;
00555     }
00556 
00557     ipmi_cmdlang_get_timeout(argv[curr_arg], &val, cmd_info);
00558     if (cmdlang->err) {
00559         cmdlang->errstr = "time invalid";
00560         goto out_err;
00561     }
00562     curr_arg++;
00563 
00564     ipmi_cmdlang_cmd_info_get(cmd_info);
00565     rv = ipmi_entity_set_auto_deactivate_time(entity,
00566                                               val,
00567                                               entity_hs_set_deact_time_done,
00568                                               cmd_info);
00569     if (rv) {
00570         ipmi_cmdlang_cmd_info_put(cmd_info);
00571         cmdlang->err = rv;
00572         cmdlang->errstr = "Error setting auto deactivate time";
00573         goto out_err;
00574     }
00575     return;
00576 
00577  out_err:
00578     ipmi_entity_get_name(entity, cmdlang->objstr,
00579                          cmdlang->objstr_len);
00580     cmdlang->location = "cmd_entity.c(entity_hs_set_deact_time)";
00581 }

static void entity_hs_set_deact_time_done ipmi_entity_t entity,
int  err,
void *  cb_data
[static]
 

Definition at line 514 of file cmd_entity.c.

References cmdlang, ipmi_cmdlang_s::err, ipmi_cmdlang_s::errstr, ipmi_cmdinfo_get_cmdlang(), ipmi_cmdlang_cmd_info_put(), ipmi_cmdlang_lock(), ipmi_cmdlang_out(), ipmi_cmdlang_unlock(), ipmi_entity_get_name(), IPMI_ENTITY_NAME_LEN, ipmi_cmdlang_s::location, ipmi_cmdlang_s::objstr, and ipmi_cmdlang_s::objstr_len.

Referenced by entity_hs_set_deact_time().

00517 {
00518     ipmi_cmd_info_t    *cmd_info = cb_data;
00519     ipmi_cmdlang_t     *cmdlang = ipmi_cmdinfo_get_cmdlang(cmd_info);
00520     char               entity_name[IPMI_ENTITY_NAME_LEN];
00521 
00522     ipmi_cmdlang_lock(cmd_info);
00523     if (err) {
00524         cmdlang->errstr = "Error setting entity hot-swap deactivate time";
00525         cmdlang->