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

ipmi_cmdlang.h File Reference

#include <OpenIPMI/selector.h>

Go to the source code of this file.

Classes

struct  ipmi_cmdlang_s
struct  ipmi_cmdlang_init_s

Typedefs

typedef ipmi_cmd_info_s ipmi_cmd_info_t
typedef ipmi_cmdlang_s ipmi_cmdlang_t
typedef void(* cmd_out_cb )(ipmi_cmdlang_t *info, const char *name, const char *value)
typedef void(* cmd_out_b_cb )(ipmi_cmdlang_t *info, const char *name, const char *value, unsigned int len)
typedef void(* cmd_info_cb )(ipmi_cmdlang_t *info)
typedef ipmi_cmdlang_cmd_s ipmi_cmdlang_cmd_t
typedef void(* ipmi_cmdlang_handler_cb )(ipmi_cmd_info_t *cmd_info)
typedef void(* ipmi_help_finisher_cb )(ipmi_cmdlang_t *cmdlang)
typedef ipmi_cmdlang_init_s ipmi_cmdlang_init_t
typedef ipmi_cmdlang_event_s ipmi_cmdlang_event_t

Enumerations

enum  ipmi_cmdlang_out_types { IPMI_CMDLANG_STRING, IPMI_CMDLANG_BINARY, IPMI_CMDLANG_UNICODE }

Functions

void ipmi_cmdlang_handle (ipmi_cmdlang_t *cmdlang, char *str)
void ipmi_cmdlang_set_evinfo (int evinfo)
int ipmi_cmdlang_get_evinfo (void)
int ipmi_cmdlang_reg_cmd (ipmi_cmdlang_cmd_t *parent, char *name, char *help, ipmi_cmdlang_handler_cb handler, void *handler_data, ipmi_help_finisher_cb help_finish, ipmi_cmdlang_cmd_t **rv)
int ipmi_cmdlang_reg_table (ipmi_cmdlang_init_t *table, int len)
void ipmi_cmdlang_domain_handler (ipmi_cmd_info_t *cmd_info)
void ipmi_cmdlang_entity_handler (ipmi_cmd_info_t *cmd_info)
void ipmi_cmdlang_sensor_handler (ipmi_cmd_info_t *cmd_info)
void ipmi_cmdlang_control_handler (ipmi_cmd_info_t *cmd_info)
void ipmi_cmdlang_mc_handler (ipmi_cmd_info_t *cmd_info)
void ipmi_cmdlang_connection_handler (ipmi_cmd_info_t *cmd_info)
void ipmi_cmdlang_pet_handler (ipmi_cmd_info_t *cmd_info)
void ipmi_cmdlang_lanparm_handler (ipmi_cmd_info_t *cmd_info)
void ipmi_cmdlang_solparm_handler (ipmi_cmd_info_t *cmd_info)
void ipmi_cmdlang_fru_handler (ipmi_cmd_info_t *cmd_info)
void ipmi_cmdlang_pef_handler (ipmi_cmd_info_t *cmd_info)
void ipmi_cmdlang_out (ipmi_cmd_info_t *info, const char *name, const char *value)
void ipmi_cmdlang_out_int (ipmi_cmd_info_t *info, const char *name, int value)
void ipmi_cmdlang_out_double (ipmi_cmd_info_t *info, const char *name, double value)
void ipmi_cmdlang_out_hex (ipmi_cmd_info_t *info, const char *name, int value)
void ipmi_cmdlang_out_long (ipmi_cmd_info_t *info, const char *name, long value)
void ipmi_cmdlang_out_binary (ipmi_cmd_info_t *info, const char *name, const char *value, unsigned int len)
void ipmi_cmdlang_out_unicode (ipmi_cmd_info_t *info, const char *name, const char *value, unsigned int len)
void ipmi_cmdlang_out_type (ipmi_cmd_info_t *info, char *name, enum ipmi_str_type_e type, const char *value, unsigned int len)
void ipmi_cmdlang_out_ip (ipmi_cmd_info_t *info, const char *name, struct in_addr *ip_addr)
void ipmi_cmdlang_out_mac (ipmi_cmd_info_t *info, const char *name, unsigned char mac_addr[6])
void ipmi_cmdlang_out_bool (ipmi_cmd_info_t *info, const char *name, int value)
void ipmi_cmdlang_out_time (ipmi_cmd_info_t *info, const char *name, ipmi_time_t value)
void ipmi_cmdlang_out_timeout (ipmi_cmd_info_t *info, const char *name, ipmi_timeout_t value)
void ipmi_cmdlang_event_out (ipmi_event_t *event, ipmi_cmd_info_t *cmd_info)
void ipmi_cmdlang_down (ipmi_cmd_info_t *info)
void ipmi_cmdlang_up (ipmi_cmd_info_t *info)
void ipmi_cmdlang_cmd_info_get (ipmi_cmd_info_t *info)
void ipmi_cmdlang_cmd_info_put (ipmi_cmd_info_t *info)
void ipmi_cmdlang_get_int (char *str, int *val, ipmi_cmd_info_t *info)
void ipmi_cmdlang_get_double (char *str, double *val, ipmi_cmd_info_t *info)
void ipmi_cmdlang_get_uchar (char *str, unsigned char *val, ipmi_cmd_info_t *info)
void ipmi_cmdlang_get_user (char *str, int *val, ipmi_cmd_info_t *info)
void ipmi_cmdlang_get_time (char *str, ipmi_time_t *val, ipmi_cmd_info_t *info)
void ipmi_cmdlang_get_timeout (char *str, ipmi_timeout_t *val, ipmi_cmd_info_t *info)
void ipmi_cmdlang_get_bool (char *str, int *val, ipmi_cmd_info_t *info)
void ipmi_cmdlang_get_ip (char *str, struct in_addr *val, ipmi_cmd_info_t *info)
void ipmi_cmdlang_get_mac (char *str, unsigned char val[6], ipmi_cmd_info_t *info)
void ipmi_cmdlang_get_color (char *str, int *val, ipmi_cmd_info_t *info)
void ipmi_cmdlang_get_threshold_ev (char *str, enum ipmi_thresh_e *rthresh, enum ipmi_event_value_dir_e *rvalue_dir, enum ipmi_event_dir_e *rdir, ipmi_cmd_info_t *info)
void ipmi_cmdlang_get_discrete_ev (char *str, int *roffset, enum ipmi_event_dir_e *rdir, ipmi_cmd_info_t *info)
void ipmi_cmdlang_get_threshold (char *str, enum ipmi_thresh_e *rthresh, ipmi_cmd_info_t *info)
int ipmi_cmdlang_init (os_handler_t *os_hnd)
void ipmi_cmdlang_cleanup (void)
ipmi_cmd_info_tipmi_cmdlang_alloc_event_info (void)
void ipmi_cmdlang_event_restart (ipmi_cmdlang_event_t *event)
int ipmi_cmdlang_event_next_field (ipmi_cmdlang_event_t *event, unsigned int *level, enum ipmi_cmdlang_out_types *type, char **name, unsigned int *len, char **value)
void ipmi_cmdlang_global_err (char *objstr, char *location, char *errstr, int errval)
void ipmi_cmdlang_report_event (ipmi_cmdlang_event_t *event)
void ipmi_cmdlang_lock (ipmi_cmd_info_t *info)
void ipmi_cmdlang_unlock (ipmi_cmd_info_t *info)
int ipmi_cmdlang_get_argc (ipmi_cmd_info_t *info)
char ** ipmi_cmdlang_get_argv (ipmi_cmd_info_t *info)
int ipmi_cmdlang_get_curr_arg (ipmi_cmd_info_t *info)
ipmi_cmdlang_tipmi_cmdinfo_get_cmdlang (ipmi_cmd_info_t *info)


Typedef Documentation

typedef void(* cmd_info_cb)(ipmi_cmdlang_t *info)
 

Definition at line 64 of file ipmi_cmdlang.h.

typedef void(* cmd_out_b_cb)(ipmi_cmdlang_t *info, const char *name, const char *value, unsigned int len)
 

Definition at line 58 of file ipmi_cmdlang.h.

typedef void(* cmd_out_cb)(ipmi_cmdlang_t *info, const char *name, const char *value)
 

Definition at line 55 of file ipmi_cmdlang.h.

typedef struct ipmi_cmd_info_s ipmi_cmd_info_t
 

Definition at line 44 of file ipmi_cmdlang.h.

typedef struct ipmi_cmdlang_cmd_s ipmi_cmdlang_cmd_t
 

Definition at line 127 of file ipmi_cmdlang.h.

typedef struct ipmi_cmdlang_event_s ipmi_cmdlang_event_t
 

Definition at line 319 of file ipmi_cmdlang.h.

typedef void(* ipmi_cmdlang_handler_cb)(ipmi_cmd_info_t *cmd_info)
 

Definition at line 129 of file ipmi_cmdlang.h.

typedef struct ipmi_cmdlang_init_s ipmi_cmdlang_init_t
 

typedef struct ipmi_cmdlang_s ipmi_cmdlang_t
 

Definition at line 51 of file ipmi_cmdlang.h.

typedef void(* ipmi_help_finisher_cb)(ipmi_cmdlang_t *cmdlang)
 

Definition at line 130 of file ipmi_cmdlang.h.


Enumeration Type Documentation

enum ipmi_cmdlang_out_types
 

Enumerator:
IPMI_CMDLANG_STRING 
IPMI_CMDLANG_BINARY 
IPMI_CMDLANG_UNICODE 

Definition at line 324 of file ipmi_cmdlang.h.

00324                             {
00325     IPMI_CMDLANG_STRING,
00326     IPMI_CMDLANG_BINARY,
00327     IPMI_CMDLANG_UNICODE
00328 };


Function Documentation

ipmi_cmdlang_t* ipmi_cmdinfo_get_cmdlang ipmi_cmd_info_t info  ) 
 

Definition at line 2613 of file cmdlang.c.

References ipmi_cmd_info_s::cmdlang.

Referenced by close_done(), con_activate(), con_list_handler(), control_dump(), control_get(), control_get_done(), control_get_id_done(), control_get_light_done(), control_list_handler(), control_set(), control_set_done(), debug(), domain_close(), domain_fru(), domain_fru_fetched(), domain_ipmb_rescan_time(), domain_list_handler(), domain_msg(), domain_new(), domain_open(), domain_presence(), domain_rescan_sels(), domain_rescan_sels_done(), domain_scan(), domain_sel_rescan_time(), entity_child_handler(), entity_hs_activate(), entity_hs_activate_done(), entity_hs_activation_request(), entity_hs_activation_request_done(), entity_hs_check(), entity_hs_deactivate(), entity_hs_deactivate_done(), entity_hs_get_act_time(), entity_hs_get_act_time_done(), entity_hs_get_deact_time(), entity_hs_get_deact_time_done(), entity_hs_set_act_time(), entity_hs_set_act_time_done(), entity_hs_set_deact_time(), entity_hs_set_deact_time_done(), entity_hs_state(), entity_hs_state_done(), entity_iterate_handler(), entity_list_handler(), entity_tree_handler(), evinfo(), for_each_fru_handler(), for_each_lanparm_handler(), for_each_pef_handler(), for_each_pet_handler(), for_each_solparm_handler(), fru_area_add(), fru_area_delete(), fru_area_length(), fru_area_offset(), fru_close(), fru_list_handler(), fru_setval(), fru_write(), fru_written(), get_sel_time_handler(), got_chan_access(), got_chan_info(), got_users(), ipmi_cmdlang_dump_fru_info(), lanparm_close(), lanparm_close_done(), lanparm_config_close(), lanparm_config_get(), lanparm_config_get_done(), lanparm_config_info(), lanparm_config_set(), lanparm_config_set_done(), lanparm_config_unlock(), lanparm_config_unlock_done(), lanparm_config_update(), lanparm_list_handler(), lanparm_new(), lanparm_unlock_mc(), lanparm_unlock_mc_done(), mc_event_log_enable_set(), mc_get_chan_access(), mc_get_chan_info(), mc_get_event_log_enable(), mc_get_sel_time(), mc_got_event_log_enable(), mc_list_handler(), mc_msg(), mc_rescan_sel_done(), mc_rescan_sels(), mc_reset(), mc_reset_done(), mc_sdrs(), mc_sel_list(), mc_sel_rescan_time(), mc_set_chan_access(), mc_set_event_log_enable(), mc_set_events_enable(), mc_set_sel_time(), mc_user_list(), mc_user_set(), mod_event_enables(), pef_close(), pef_close_done(), pef_config_close(), pef_config_get(), pef_config_get_done(), pef_config_info(), pef_config_set(), pef_config_set_done(), pef_config_unlock(), pef_config_unlock_done(), pef_config_update(), pef_list_handler(), pef_new(), pef_new_done(), pef_unlock_mc(), pef_unlock_mc_done1(), pef_unlock_mc_done2(), pet_close(), pet_list_handler(), pet_mcnew(), pet_new(), read_cmd(), read_sensor(), read_sensor_states(), redisp_cmd(), scan_done(), sdrs_fetched(), sel_add(), sel_add_done(), sel_delete(), sel_delete_done(), sel_force_clear(), sel_force_clear_done(), sel_list(), sensor_dump(), sensor_get(), sensor_get_event_enables(), sensor_get_event_enables_done(), sensor_get_hysteresis(), sensor_get_hysteresis_done(), sensor_get_thresholds(), sensor_get_thresholds_done(), sensor_list_handler(), sensor_rearm(), sensor_rearm_done(), sensor_set_event_enables_done(), sensor_set_hysteresis(), sensor_set_hysteresis_done(), sensor_set_thresholds(), sensor_set_thresholds_done(), set_bool(), set_chan_access1(), set_chan_access2(), set_events_enable_done(), set_guid(), set_int(), set_ip(), set_mac(), set_port(), set_retbool(), set_retint(), set_sel_time_handler(), set_str(), set_user1(), set_user2(), solparm_close(), solparm_close_done(), solparm_config_close(), solparm_config_get(), solparm_config_get_done(), solparm_config_info(), solparm_config_set(), solparm_config_set_done(), solparm_config_unlock(), solparm_config_unlock_done(), solparm_config_update(), solparm_list_handler(), solparm_new(), solparm_unlock_mc(), solparm_unlock_mc_done(), uset_bool(), uset_int(), uset_ip(), uset_mac(), and uset_str().

02614 {
02615     return info->cmdlang;
02616 }

ipmi_cmd_info_t* ipmi_cmdlang_alloc_event_info void   ) 
 

Definition at line 2499 of file cmdlang.c.

References event_done(), event_down(), event_out(), event_out_binary(), event_out_unicode(), event_up(), ipmi_create_lock_os_hnd(), ipmi_destroy_lock(), IPMI_MAX_NAME_LEN, ipmi_mem_alloc(), ipmi_mem_free(), and os_handler_s::lock.

Referenced by control_event_handler(), domain_change(), domain_con_change(), domain_event_handler(), domain_fully_up(), entity_hot_swap(), fru_change(), ipmi_cmdlang_control_change(), ipmi_cmdlang_entity_change(), ipmi_cmdlang_mc_change(), ipmi_cmdlang_sensor_change(), mc_active(), mc_fully_up(), presence_change(), sensor_discrete_event_handler(), and sensor_threshold_event_handler().

02500 {
02501     ipmi_cmd_info_t      *cmdinfo = NULL;
02502     ipmi_cmdlang_event_t *event;
02503     int                  rv;
02504 
02505     cmdinfo = ipmi_mem_alloc(sizeof(*cmdinfo));
02506     if (!cmdinfo)
02507         return NULL;
02508     memset(cmdinfo, 0, sizeof(*cmdinfo));
02509     cmdinfo->usecount = 1;
02510 
02511     rv = ipmi_create_lock_os_hnd(cmdlang_os_hnd, &cmdinfo->lock);
02512     if (rv) {
02513         ipmi_mem_free(cmdinfo);
02514         return NULL;
02515     }
02516 
02517     cmdinfo->cmdlang = ipmi_mem_alloc(sizeof(*cmdinfo->cmdlang));
02518     if (!cmdinfo->cmdlang) {
02519         ipmi_destroy_lock(cmdinfo->lock);
02520         ipmi_mem_free(cmdinfo);
02521         return NULL;
02522     }
02523     memset(cmdinfo->cmdlang, 0, sizeof(*cmdinfo->cmdlang));
02524 
02525     cmdinfo->cmdlang->objstr = ipmi_mem_alloc(IPMI_MAX_NAME_LEN);
02526     if (!cmdinfo->cmdlang->objstr) {
02527         ipmi_mem_free(cmdinfo->cmdlang);
02528         ipmi_destroy_lock(cmdinfo->lock);
02529         ipmi_mem_free(cmdinfo);
02530         return NULL;
02531     }
02532     cmdinfo->cmdlang->objstr[0] = '\0';
02533     cmdinfo->cmdlang->objstr_len = IPMI_MAX_NAME_LEN;
02534 
02535     cmdinfo->cmdlang->user_data = ipmi_mem_alloc(sizeof(ipmi_cmdlang_event_t));
02536     if (!cmdinfo->cmdlang->user_data) {
02537         ipmi_mem_free(cmdinfo->cmdlang->objstr);
02538         ipmi_mem_free(cmdinfo->cmdlang);
02539         ipmi_destroy_lock(cmdinfo->lock);
02540         ipmi_mem_free(cmdinfo);
02541         return NULL;
02542     }
02543 
02544     event = cmdinfo->cmdlang->user_data;
02545     memset(event, 0, sizeof(*event));
02546     event->info = cmdinfo;
02547 
02548     cmdinfo->cmdlang->out = event_out;
02549     cmdinfo->cmdlang->down = event_down;
02550     cmdinfo->cmdlang->out_binary = event_out_binary;
02551     cmdinfo->cmdlang->out_unicode = event_out_unicode;
02552     cmdinfo->cmdlang->up = event_up;
02553     cmdinfo->cmdlang->done = event_done;
02554 
02555     return cmdinfo;
02556 }

void ipmi_cmdlang_cleanup void   ) 
 

Definition at line 2800 of file cmdlang.c.

References cleanup_level(), ipmi_cmdlang_lanparm_shutdown(), ipmi_cmdlang_pef_shutdown(), and ipmi_cmdlang_solparm_shutdown().

Referenced by main().

void ipmi_cmdlang_cmd_info_get ipmi_cmd_info_t info  ) 
 

Definition at line 1699 of file cmdlang.c.

References ipmi_cmdlang_lock(), ipmi_cmdlang_unlock(), and ipmi_cmd_info_s::usecount.

Referenced by control_get(), control_set(), domain_close(), domain_fru(), domain_msg(), domain_new(), domain_open(), domain_rescan_sels(), domain_scan(), entity_hs_activate(), entity_hs_activation_request(), entity_hs_deactivate(), entity_hs_get_act_time(), entity_hs_get_deact_time(), entity_hs_set_act_time(), entity_hs_set_deact_time(), entity_hs_state(), fru_close(), fru_write(), lanparm_close(), lanparm_config_get(), lanparm_config_set(), lanparm_config_unlock(), lanparm_unlock_mc(), mc_get_chan_access(), mc_get_chan_info(), mc_get_event_log_enable(), mc_get_sel_time(), mc_msg(), mc_rescan_sels(), mc_reset(), mc_sdrs(), mc_set_chan_access(), mc_set_event_log_enable(), mc_set_events_enable(), mc_set_sel_time(), mc_user_list(), mc_user_set(), mod_event_enables(), pef_close(), pef_config_get(), pef_config_set(), pef_config_unlock(), pef_new(), pef_unlock_mc(), pet_close(), pet_mcnew(), pet_new(), sel_add(), sel_delete(), sel_force_clear(), sensor_get(), sensor_get_event_enables(), sensor_get_hysteresis(), sensor_get_thresholds(), sensor_rearm(), sensor_set_hysteresis(), sensor_set_thresholds(), solparm_close(), solparm_config_get(), solparm_config_set(), solparm_config_unlock(), and solparm_unlock_mc().

01700 {
01701     ipmi_cmdlang_lock(cmd_info);
01702     cmd_info->usecount++;
01703     ipmi_cmdlang_unlock(cmd_info);
01704 }

void ipmi_cmdlang_cmd_info_put ipmi_cmd_info_t info  ) 
 

Definition at line 1707 of file cmdlang.c.

References ipmi_cmd_info_s::cmdlang, ipmi_cmd_info_s::did_output, ipmi_cmdlang_s::done, ipmi_cmdlang_s::err, ipmi_cmdlang_s::errstr, ipmi_cmdlang_lock(), ipmi_cmdlang_unlock(), ipmi_destroy_lock(), ipmi_mem_free(), ipmi_cmdlang_s::location, ipmi_cmd_info_s::lock, and ipmi_cmd_info_s::usecount.

Referenced by close_done(), control_event_handler(), control_get(), control_get_done(), control_get_id_done(), control_get_light_done(), control_set(), control_set_done(), domain_change(), domain_close(), domain_con_change(), domain_event_handler(), domain_fru(), domain_fru_fetched(), domain_fully_up(), domain_msg(), domain_msg_handler(), domain_new(), domain_new_done(), domain_open(), domain_rescan_sels(), domain_rescan_sels_done(), domain_scan(), entity_hot_swap(), entity_hs_activate(), entity_hs_activate_done(), entity_hs_activation_request(), entity_hs_activation_request_done(), entity_hs_deactivate(), entity_hs_deactivate_done(), entity_hs_get_act_time(), entity_hs_get_act_time_done(), entity_hs_get_deact_time(), entity_hs_get_deact_time_done(), entity_hs_set_act_time(), entity_hs_set_act_time_done(), entity_hs_set_deact_time(), entity_hs_set_deact_time_done(), entity_hs_state(), entity_hs_state_done(), final_close(), fru_change(), fru_close(), fru_deleted(), fru_write(), fru_written(), get_sel_time_handler(), got_chan_access(), got_chan_info(), got_chan_info_multi(), got_users(), ipmi_cmdlang_control_change(), ipmi_cmdlang_entity_change(), ipmi_cmdlang_event_out(), ipmi_cmdlang_handle(), ipmi_cmdlang_mc_change(), ipmi_cmdlang_sensor_change(), lanparm_close(), lanparm_close_done(), lanparm_config_get(), lanparm_config_get_done(), lanparm_config_set(), lanparm_config_set_done(), lanparm_config_unlock(), lanparm_config_unlock_done(), lanparm_unlock_mc(), lanparm_unlock_mc_done(), mc_active(), mc_event_log_enable_set(), mc_fully_up(), mc_get_chan_access(), mc_get_chan_info(), mc_get_event_log_enable(), mc_get_sel_time(), mc_got_event_log_enable(), mc_msg(), mc_msg_handler(), mc_rescan_sel_done(), mc_rescan_sels(), mc_reset(), mc_reset_done(), mc_sdrs(), mc_set_chan_access(), mc_set_event_log_enable(), mc_set_events_enable(), mc_set_sel_time(), mc_user_list(), mc_user_set(), mod_event_enables(), pef_close(), pef_close_done(), pef_config_get(), pef_config_get_done(), pef_config_set(), pef_config_set_done(), pef_config_unlock(), pef_config_unlock_done(), pef_new(), pef_new_done(), pef_unlock_mc(), pef_unlock_mc_done1(), pef_unlock_mc_done2(), pet_close(), pet_done(), pet_mcnew(), pet_new(), presence_change(), read_sensor(), read_sensor_states(), scan_done(), sdrs_fetched(), sel_add(), sel_add_done(), sel_delete(), sel_delete_done(), sel_force_clear(), sel_force_clear_done(), sensor_discrete_event_handler(), sensor_get(), sensor_get_event_enables(), sensor_get_event_enables_done(), sensor_get_hysteresis(), sensor_get_hysteresis_done(), sensor_get_thresholds(), sensor_get_thresholds_done(), sensor_rearm(), sensor_rearm_done(), sensor_set_event_enables_done(), sensor_set_hysteresis(), sensor_set_hysteresis_done(), sensor_set_thresholds(), sensor_set_thresholds_done(), sensor_threshold_event_handler(), set_chan_access1(), set_chan_access2(), set_events_enable_done(), set_sel_time_handler(), set_user1(), set_user2(), solparm_close(), solparm_close_done(), solparm_config_get(), solparm_config_get_done(), solparm_config_set(), solparm_config_set_done(), solparm_config_unlock(), solparm_config_unlock_done(), solparm_unlock_mc(), and solparm_unlock_mc_done().

01708 {
01709     ipmi_cmdlang_lock(cmd_info);
01710     cmd_info->usecount--;
01711     if (cmd_info->usecount == 0) {
01712         if ((!cmd_info->cmdlang->err) && (!cmd_info->did_output)) {
01713             cmd_info->cmdlang->errstr = "Specified object not found";
01714             cmd_info->cmdlang->err = EINVAL;
01715             cmd_info->cmdlang->location = "cmdlang.c(ipmi_cmdlang_handle)";
01716         }
01717 
01718         cmd_info->cmdlang->done(cmd_info->cmdlang);
01719         ipmi_cmdlang_unlock(cmd_info);
01720         if (cmd_info->lock)
01721             ipmi_destroy_lock(cmd_info->lock);
01722         ipmi_mem_free(cmd_info);
01723     } else
01724         ipmi_cmdlang_unlock(cmd_info);
01725 }

void ipmi_cmdlang_connection_handler ipmi_cmd_info_t cmd_info  ) 
 

Definition at line 1178 of file cmdlang.c.

References ipmi_cmd_info_s::argc, ipmi_cmd_info_s::argv, ipmi_cmd_info_s::cmdlang, ipmi_cmd_info_s::curr_arg, ipmi_cmdlang_s::err, ipmi_cmdlang_s::errstr, for_each_connection(), ipmi_cmd_info_s::handler_data, and ipmi_cmdlang_s::location.

01179 {
01180     char *domain, *class, *obj;
01181 
01182     if (cmd_info->curr_arg >= cmd_info->argc) {
01183         domain = class = obj = NULL;
01184     } else {
01185         domain = cmd_info->argv[cmd_info->curr_arg];
01186         class = NULL;
01187         obj = strrchr(domain, '.');
01188         if (!obj) {
01189             cmd_info->cmdlang->errstr = "Invalid connection";
01190             cmd_info->cmdlang->err = EINVAL;
01191             cmd_info->cmdlang->location
01192                 = "cmdlang.c(ipmi_cmdlang_connection_handler)";
01193             return;
01194         }
01195         *obj = '\0';
01196         obj++;
01197         cmd_info->curr_arg++;
01198     }
01199 
01200     for_each_connection(cmd_info,
01201                         domain, class, obj, cmd_info->handler_data,
01202                         cmd_info);
01203 }

void ipmi_cmdlang_control_handler ipmi_cmd_info_t cmd_info  ) 
 

Definition at line 987 of file cmdlang.c.

References ipmi_cmd_info_s::argc, ipmi_cmd_info_s::argv, ipmi_cmd_info_s::cmdlang, ipmi_cmd_info_s::curr_arg, ipmi_cmdlang_s::err, ipmi_cmdlang_s::errstr, for_each_control(), ipmi_cmd_info_s::handler_data, ipmi_cmdlang_s::location, and parse_ipmi_objstr().

00988 {
00989     char *domain, *class, *obj;
00990     int  rv;
00991 
00992     if (cmd_info->curr_arg >= cmd_info->argc) {
00993         domain = class = obj = NULL;
00994     } else {
00995         rv = parse_ipmi_objstr(cmd_info->argv[cmd_info->curr_arg],
00996                                &domain, &class, &obj);
00997         if (rv) {
00998             cmd_info->cmdlang->errstr = "Invalid control";
00999             cmd_info->cmdlang->err = rv;
01000             cmd_info->cmdlang->location
01001                 = "cmdlang.c(ipmi_cmdlang_control_handler)";
01002             return;
01003         }
01004         cmd_info->curr_arg++;
01005     }
01006 
01007     for_each_control(cmd_info, domain, class, obj,
01008                      cmd_info->handler_data, cmd_info);
01009 }

void ipmi_cmdlang_domain_handler ipmi_cmd_info_t cmd_info  ) 
 

Definition at line 217 of file cmdlang.c.

References ipmi_cmd_info_s::argc, ipmi_cmd_info_s::argv, ipmi_cmd_info_s::cmdlang, ipmi_cmd_info_s::curr_arg, ipmi_cmdlang_s::err, ipmi_cmdlang_s::errstr, for_each_domain(), ipmi_cmd_info_s::handler_data, ipmi_cmdlang_s::location, and parse_ipmi_objstr().

00218 {
00219     char *domain, *class, *obj;
00220     int  rv;
00221 
00222     if (cmd_info->curr_arg >= cmd_info->argc) {
00223         domain = class = obj = NULL;
00224     } else {
00225         rv = parse_ipmi_objstr(cmd_info->argv[cmd_info->curr_arg],
00226                                &domain, &class, &obj);
00227         if (rv) {
00228             cmd_info->cmdlang->errstr = "Invalid domain";
00229             cmd_info->cmdlang->err = rv;
00230             cmd_info->cmdlang->location
00231                 = "cmdlang.c(ipmi_cmdlang_domain_handler)";
00232             return;
00233         }
00234         cmd_info->curr_arg++;
00235     }
00236 
00237     for_each_domain(cmd_info, domain, class, obj,
00238                     cmd_info->handler_data, cmd_info);
00239 }

void ipmi_cmdlang_down ipmi_cmd_info_t info  ) 
 

Definition at line 1687 of file cmdlang.c.

References ipmi_cmd_info_s::cmdlang, and ipmi_cmdlang_s::down.

Referenced by con_info(), con_list(), config_info(), control_dump(), control_event_handler(), control_get_done(), control_get_light_done(), control_info(), control_list(), domain_change(), domain_fru_fetched(), domain_info(), domain_list(), domain_msg_handler(), domain_stats(), dump_chan_info(), entity_child_handler(), entity_dump(), entity_hot_swap(), entity_hs_get_act_time_done(), entity_hs_get_deact_time_done(), entity_hs_state_done(), entity_info(), entity_list(), entity_tree(), entity_tree_handler(), fru_areainfo(), fru_change(), fru_info(), fru_list(), get_sel_time_handler(), got_chan_access(), got_users(), ipmi_cmdlang_dump_fru_info(), lanparm_config_get_done(), lanparm_config_info(), lanparm_config_info_handler(), lanparm_config_list(), lanparm_info(), lanparm_list(), mc_event_log_enable_set(), mc_got_event_log_enable(), mc_info(), mc_list(), mc_msg_handler(), mc_sel_info(), mc_sel_list(), pef_config_get_done(), pef_config_info(), pef_config_info_handler(), pef_config_list(), pef_info(), pef_list(), pet_info(), pet_list(), presence_change(), read_sensor(), read_sensor_states(), sdrs_fetched(), sel_add_done(), sel_delete_done(), sel_list(), sensor_discrete_event_handler(), sensor_dump(), sensor_get_event_enables_done(), sensor_get_hysteresis_done(), sensor_get_thresholds_done(), sensor_info(), sensor_list(), sensor_threshold_event_handler(), set_chan_access2(), set_sel_time_handler(), solparm_config_get_done(), solparm_config_info(), solparm_config_info_handler(), solparm_config_list(), solparm_info(), solparm_list(), and traverse_fru_node_tree().

01688 {
01689     info->cmdlang->down(info->cmdlang);
01690 }

void ipmi_cmdlang_entity_handler ipmi_cmd_info_t cmd_info  ) 
 

Definition at line 805 of file cmdlang.c.

References ipmi_cmd_info_s::argc, ipmi_cmd_info_s::argv, ipmi_cmd_info_s::cmdlang, ipmi_cmd_info_s::curr_arg, ipmi_cmdlang_s::err, ipmi_cmdlang_s::errstr, for_each_entity(), ipmi_cmd_info_s::handler_data, ipmi_cmdlang_s::location, and parse_ipmi_objstr().

00806 {
00807     char *domain, *class, *obj;
00808     int  rv;
00809 
00810     if (cmd_info->curr_arg >= cmd_info->argc) {
00811         domain = class = obj = NULL;
00812     } else {
00813         rv = parse_ipmi_objstr(cmd_info->argv[cmd_info->curr_arg],
00814                                &domain, &class, &obj);
00815         if (rv) {
00816             cmd_info->cmdlang->errstr = "Invalid entity";
00817             cmd_info->cmdlang->err = rv;
00818             cmd_info->cmdlang->location
00819                 = "cmdlang.c(ipmi_cmdlang_entity_handler)";
00820             return;
00821         }
00822         cmd_info->curr_arg++;
00823     }
00824 
00825     for_each_entity(cmd_info, domain, class, obj,
00826                     cmd_info->handler_data, cmd_info);
00827 }

int ipmi_cmdlang_event_next_field ipmi_cmdlang_event_t event,
unsigned int *  level,
enum ipmi_cmdlang_out_types type,
char **  name,
unsigned int *  len,
char **  value
 

Definition at line 2567 of file cmdlang.c.

References ipmi_cmdlang_event_s::curr, ipmi_cmdlang_event_entry_s::len, ipmi_cmdlang_event_entry_s::level, ipmi_cmdlang_event_entry_s::name, ipmi_cmdlang_event_entry_s::next, ipmi_cmdlang_event_entry_s::type, and ipmi_cmdlang_event_entry_s::value.

Referenced by ipmi_cmdlang_report_event().

02573 {
02574     ipmi_cmdlang_event_entry_t *curr = event->curr;
02575 
02576     if (!curr)
02577         return 0;
02578 
02579     if (level)
02580         *level = curr->level;
02581     if (name)
02582         *name = curr->name;
02583     if (value)
02584         *value = curr->value;
02585     if (type)
02586         *type = curr->type;
02587     if (len)
02588         *len = curr->len;
02589 
02590     event->curr = curr->next;
02591     return 1;
02592 }

void ipmi_cmdlang_event_out ipmi_event_t event,
ipmi_cmd_info_t cmd_info
 

Definition at line 1196 of file cmd_domain.c.

References get_mc_name(), ipmi_cmdlang_cmd_info_put(), ipmi_cmdlang_out(), ipmi_cmdlang_out_binary(), ipmi_cmdlang_out_int(), ipmi_cmdlang_out_time(), ipmi_event_get_data(), ipmi_event_get_data_len(), ipmi_event_get_mcid(), ipmi_event_get_record_id(), ipmi_event_get_timestamp(), ipmi_event_get_type(), IPMI_MC_NAME_LEN, ipmi_mc_pointer_cb(), ipmi_mem_alloc(), and ipmi_mem_free().

Referenced by control_event_handler(), domain_event_handler(), entity_hot_swap(), mc_sel_list(), presence_change(), sel_list(), sensor_discrete_event_handler(), and sensor_threshold_event_handler().

01198 {
01199     ipmi_mcid_t     mcid;
01200     char            mc_name[IPMI_MC_NAME_LEN];
01201     unsigned int    len;
01202     int             rv;
01203 
01204     mcid = ipmi_event_get_mcid(event);
01205     rv = ipmi_mc_pointer_cb(mcid, get_mc_name, mc_name);
01206     if (rv) {
01207         /* The MC went away, that's actually ok, just ignore it. */
01208         ipmi_cmdlang_cmd_info_put(cmd_info);
01209         return;
01210     }
01211 
01212     ipmi_cmdlang_out(cmd_info, "MC", mc_name);
01213     ipmi_cmdlang_out_int(cmd_info, "Record ID",
01214                          ipmi_event_get_record_id(event));
01215     ipmi_cmdlang_out_int(cmd_info, "Event type", ipmi_event_get_type(event));
01216     ipmi_cmdlang_out_time(cmd_info, "Timestamp",
01217                           ipmi_event_get_timestamp(event));
01218     len = ipmi_event_get_data_len(event);
01219     if (len) {
01220         unsigned char *data;
01221         data = ipmi_mem_alloc(len);
01222         if (!data)
01223             return;
01224         len = ipmi_event_get_data(event, data, 0, len);
01225         ipmi_cmdlang_out_binary(cmd_info, "Data", (char *) data, len);
01226         ipmi_mem_free(data);
01227     }
01228 }

void ipmi_cmdlang_event_restart ipmi_cmdlang_event_t event  ) 
 

Definition at line 2560 of file cmdlang.c.

References ipmi_cmdlang_event_s::curr, and ipmi_cmdlang_event_s::head.

Referenced by ipmi_cmdlang_report_event().

02561 {
02562     event->curr = event->head;
02563 }

void ipmi_cmdlang_fru_handler ipmi_cmd_info_t cmd_info  ) 
 

Definition at line 702 of file cmdlang.c.

References ipmi_cmd_info_s::argc, ipmi_cmd_info_s::argv, ipmi_cmd_info_s::cmdlang, ipmi_cmd_info_s::curr_arg, ipmi_cmdlang_s::err, ipmi_cmdlang_s::errstr, for_each_fru(), ipmi_cmd_info_s::handler_data, and ipmi_cmdlang_s::location.

00703 {
00704     char *domain, *class, *obj;
00705 
00706     if (cmd_info->curr_arg >= cmd_info->argc) {
00707         domain = class = obj = NULL;
00708     } else {
00709         domain = cmd_info->