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

ipmi_user.h File Reference

#include <OpenIPMI/ipmi_mc.h>

Go to the source code of this file.

Defines

#define IPMI_MC_ALL_USERS   0

Typedefs

typedef ipmi_user_list_s ipmi_user_list_t
typedef void(* ipmi_user_list_cb )(ipmi_mc_t *mc, int err, ipmi_user_list_t *list, void *cb_data)
typedef ipmi_user_s ipmi_user_t

Functions

int ipmi_mc_get_users (ipmi_mc_t *mc, unsigned int channel, unsigned int user, ipmi_user_list_cb handler, void *cb_data)
int ipmi_user_list_get_channel (ipmi_user_list_t *list, unsigned int *channel)
int ipmi_user_list_get_max_user (ipmi_user_list_t *list, unsigned int *max)
int ipmi_user_list_get_enabled_users (ipmi_user_list_t *list, unsigned int *e)
int ipmi_user_list_get_fixed_users (ipmi_user_list_t *list, unsigned int *f)
ipmi_user_list_tipmi_user_list_copy (ipmi_user_list_t *list)
void ipmi_user_list_free (ipmi_user_list_t *list)
unsigned int ipmi_user_list_get_user_count (ipmi_user_list_t *users)
ipmi_user_tipmi_user_list_get_user (ipmi_user_list_t *list, unsigned int idx)
ipmi_user_tipmi_user_copy (ipmi_user_t *user)
void ipmi_user_free (ipmi_user_t *user)
int ipmi_mc_set_user (ipmi_mc_t *mc, unsigned int channel, unsigned int num, ipmi_user_t *user, ipmi_mc_done_cb handler, void *cb_data)
int ipmi_user_get_channel (ipmi_user_t *user, unsigned int *channel)
int ipmi_user_get_num (ipmi_user_t *user, unsigned int *num)
int ipmi_user_set_num (ipmi_user_t *user, unsigned int num)
int ipmi_user_get_name_len (ipmi_user_t *user, unsigned int *len)
int ipmi_user_get_name (ipmi_user_t *user, char *name, unsigned int *len)
int ipmi_user_set_name (ipmi_user_t *user, char *name, unsigned int len)
int ipmi_user_set_password (ipmi_user_t *user, char *pw, unsigned int len)
int ipmi_user_set_password2 (ipmi_user_t *user, char *pw, unsigned int len)
int ipmi_user_get_link_auth_enabled (ipmi_user_t *user, unsigned int *val)
int ipmi_user_set_link_auth_enabled (ipmi_user_t *user, unsigned int val)
int ipmi_user_get_msg_auth_enabled (ipmi_user_t *user, unsigned int *val)
int ipmi_user_set_msg_auth_enabled (ipmi_user_t *user, unsigned int val)
int ipmi_user_get_access_cb_only (ipmi_user_t *user, unsigned int *val)
int ipmi_user_set_access_cb_only (ipmi_user_t *user, unsigned int val)
int ipmi_user_get_privilege_limit (ipmi_user_t *user, unsigned int *val)
int ipmi_user_set_privilege_limit (ipmi_user_t *user, unsigned int val)
int ipmi_user_get_session_limit (ipmi_user_t *user, unsigned int *val)
int ipmi_user_set_session_limit (ipmi_user_t *user, unsigned int val)
int ipmi_user_get_enable (ipmi_user_t *user, unsigned int *val)
int ipmi_user_set_enable (ipmi_user_t *user, unsigned int val)
int ipmi_user_set_all (ipmi_user_t *user)


Define Documentation

#define IPMI_MC_ALL_USERS   0
 

Definition at line 59 of file ipmi_user.h.

Referenced by mc_user_list().


Typedef Documentation

typedef void(* ipmi_user_list_cb)(ipmi_mc_t *mc, int err, ipmi_user_list_t *list, void *cb_data)
 

Definition at line 55 of file ipmi_user.h.

typedef struct ipmi_user_list_s ipmi_user_list_t
 

Definition at line 46 of file ipmi_user.h.

typedef struct ipmi_user_s ipmi_user_t
 

Definition at line 82 of file ipmi_user.h.


Function Documentation

int ipmi_mc_get_users ipmi_mc_t mc,
unsigned int  channel,
unsigned int  user,
ipmi_user_list_cb  handler,
void *  cb_data
 

Definition at line 4712 of file mc.c.

References ipmi_msg::cmd, ipmi_msg::data, ipmi_msg::data_len, got_user0(), IPMI_APP_NETFN, IPMI_GET_CHANNEL_AUTH_CAPABILITIES_CMD, ipmi_mc_send_command(), ipmi_mem_alloc(), ipmi_mem_free(), and ipmi_msg::netfn.

Referenced by mc_user_list(), and mc_user_set().

04717 {
04718     int              rv;
04719     ipmi_user_list_t *list = NULL;
04720     ipmi_msg_t       msg;
04721     unsigned char    data[2];
04722 
04723     if (channel > 15)
04724         return EINVAL;
04725     if (user > 0x3f)
04726         return EINVAL;
04727 
04728     list = ipmi_mem_alloc(sizeof(*list));
04729     if (!list)
04730         return ENOMEM;
04731     memset(list, 0, sizeof(*list));
04732 
04733     list->channel = channel;
04734     list->handler = handler;
04735     list->cb_data = cb_data;
04736     if (user) {
04737         list->curr = user;
04738         list->max = user;
04739     } else {
04740         list->curr = 1;
04741         list->max = 0;
04742     }
04743 
04744     /* First determine if we have 2.0 (RMCP+) support. */
04745     msg.netfn = IPMI_APP_NETFN;
04746     msg.cmd = IPMI_GET_CHANNEL_AUTH_CAPABILITIES_CMD;
04747     msg.data = data;
04748     msg.data_len = 2;
04749     data[0] = (channel & 0xf) | (1 << 7); /* Request IPMI 2.0 data */
04750     data[1] = 2; /* Request user level access */
04751 
04752     rv = ipmi_mc_send_command(mc, 0, &msg, got_user0, list);
04753     if (rv)
04754         ipmi_mem_free(list);
04755     return rv;
04756 }

int ipmi_mc_set_user ipmi_mc_t mc,
unsigned int  channel,
unsigned int  num,
ipmi_user_t user,
ipmi_mc_done_cb  handler,
void *  cb_data
 

Definition at line 4962 of file mc.c.

References ipmi_user_s::cb_data, ipmi_user_s::cb_only_set, ipmi_user_s::channel, ipmi_user_s::enable_set, ipmi_user_s::handler, handler, ipmi_mem_free(), ipmi_user_copy(), ipmi_user_free(), ipmi_user_s::link_enabled_set, ipmi_user_s::msg_enabled_set, ipmi_user_s::name_set, ipmi_user_s::num, ipmi_user_s::privilege_limit_set, ipmi_user_s::pw2_set, ipmi_user_s::pw_set, ipmi_user_s::session_limit_set, set_enable(), set_name(), set_pw(), and set_user_access().

Referenced by set_user1().

04968 {
04969     int             rv = 0;
04970     ipmi_user_t     *user;
04971 
04972     if (channel > 15)
04973         return EINVAL;
04974     if (num > 0x3f)
04975         return EINVAL;
04976 
04977     user = ipmi_user_copy(iuser);
04978     if (!user)
04979         return ENOMEM;
04980     user->num = num;
04981     user->channel = channel;
04982     user->handler = handler;
04983     user->cb_data = cb_data;
04984 
04985     if (user->cb_only_set || user->link_enabled_set || user->msg_enabled_set
04986         || user->privilege_limit_set || user->session_limit_set)
04987         rv = set_user_access(mc, user);
04988     else if (user->name_set)
04989         rv = set_name(mc, user);
04990     else if (user->pw_set || user->pw2_set)
04991         rv = set_pw(mc, user);
04992     else if (user->enable_set)
04993         rv = set_enable(mc, user);
04994     else {
04995         /* Nothing to do. */
04996         handler(mc, 0, cb_data);
04997         ipmi_mem_free(user);
04998     }
04999 
05000     if (rv)
05001         ipmi_user_free(user);
05002 
05003     return rv;
05004 }

ipmi_user_t* ipmi_user_copy ipmi_user_t user  ) 
 

Definition at line 4759 of file mc.c.

References ipmi_mem_alloc().

Referenced by ipmi_mc_set_user(), and ipmi_user_list_get_user().

04760 {
04761     ipmi_user_t *rv;
04762 
04763     rv = ipmi_mem_alloc(sizeof(*rv));
04764     if (rv)
04765         memcpy(rv, user, sizeof(*rv));
04766     return rv;
04767 }

void ipmi_user_free ipmi_user_t user  ) 
 

Definition at line 4770 of file mc.c.

References ipmi_mem_free().

Referenced by got_users(), ipmi_mc_set_user(), set_user1(), and set_user_done().

04771 {
04772     ipmi_mem_free(user);
04773 }

int ipmi_user_get_access_cb_only ipmi_user_t user,
unsigned int *  val
 

Definition at line 5108 of file mc.c.

References ipmi_user_s::cb_only.

Referenced by got_users().

05109 {
05110     *val = user->cb_only;
05111     return 0;
05112 }

int ipmi_user_get_channel ipmi_user_t user,
unsigned int *  channel
 

Definition at line 5007 of file mc.c.

References ipmi_user_s::channel.

05008 {
05009     *channel = user->channel;
05010     return 0;
05011 }

int ipmi_user_get_enable ipmi_user_t user,
unsigned int *  val
 

Definition at line 5156 of file mc.c.

References ipmi_user_s::enable, and ipmi_user_s::enable_read.

05157 {
05158     if (!user->enable_read)
05159         return ENOSYS;
05160     *val = user->enable;
05161     return 0;
05162 }

int ipmi_user_get_link_auth_enabled ipmi_user_t user,
unsigned int *  val
 

Definition at line 5078 of file mc.c.

References ipmi_user_s::link_enabled.

Referenced by got_users().

05079 {
05080     *val = user->link_enabled;
05081     return 0;
05082 }

int ipmi_user_get_msg_auth_enabled ipmi_user_t user,
unsigned int *  val
 

Definition at line 5093 of file mc.c.

References ipmi_user_s::msg_enabled.

Referenced by got_users().

05094 {
05095     *val = user->msg_enabled;
05096     return 0;
05097 }

int ipmi_user_get_name ipmi_user_t user,
char *  name,
unsigned int *  len
 

Definition at line 5037 of file mc.c.

References ipmi_user_s::name.

Referenced by got_users().

05038 {
05039     if (*len > 17)
05040         *len = 17;
05041     memcpy(name, user->name, *len);
05042     return 0;
05043 }

int ipmi_user_get_name_len ipmi_user_t user,
unsigned int *  len
 

Definition at line 5030 of file mc.c.

05031 {
05032     *len = 16;
05033     return 0;
05034 }

int ipmi_user_get_num ipmi_user_t user,
unsigned int *  num
 

Definition at line 5014 of file mc.c.

References ipmi_user_s::num.

Referenced by got_users().

05015 {
05016     *num = user->num;
05017     return 0;
05018 }

int ipmi_user_get_privilege_limit ipmi_user_t user,
unsigned int *  val
 

Definition at line 5123 of file mc.c.

References ipmi_user_s::privilege_limit.

Referenced by got_users().

05124 {
05125     *val = user->privilege_limit;
05126     return 0;
05127 }

int ipmi_user_get_session_limit ipmi_user_t user,
unsigned int *  val
 

Definition at line 5138 of file mc.c.

References ipmi_user_s::session_limit, and ipmi_user_s::session_limit_read.

Referenced by got_users().

05139 {
05140     if (!user->session_limit_read)
05141         return ENOSYS;
05142     *val = user->session_limit;
05143     return 0;
05144 }

ipmi_user_list_t* ipmi_user_list_copy ipmi_user_list_t list  ) 
 

Definition at line 4461 of file mc.c.

References ipmi_user_list_s::idx, ipmi_mem_alloc(), ipmi_mem_free(), and ipmi_user_list_s::users.

04462 {
04463     ipmi_user_list_t *rv;
04464 
04465     rv = ipmi_mem_alloc(sizeof(*rv));
04466     if (!rv)
04467         return NULL;
04468     memcpy(rv, list, sizeof(*rv));
04469     rv->users = ipmi_mem_alloc(sizeof(ipmi_user_t) * list->idx);
04470     if (!rv->users) {
04471         ipmi_mem_free(rv);
04472         return NULL;
04473     }
04474     memcpy(rv->users, list->users, sizeof(ipmi_user_t) * list->idx);
04475     return rv;
04476 }

void ipmi_user_list_free ipmi_user_list_t list  ) 
 

Definition at line 4479 of file mc.c.

References ipmi_mem_free(), and ipmi_user_list_s::users.

Referenced by got_user1(), got_user2(), and user_list_done().

04480 {
04481     if (list->users)
04482         ipmi_mem_free(list->users);
04483     ipmi_mem_free(list);
04484 }

int ipmi_user_list_get_channel ipmi_user_list_t list,
unsigned int *  channel
 

Definition at line 4502 of file mc.c.

References ipmi_user_list_s::channel.

Referenced by got_users().

04503 {
04504     *channel = list->channel;
04505     return 0;
04506 }

int ipmi_user_list_get_enabled_users ipmi_user_list_t list,
unsigned int *  e
 

Definition at line 4516 of file mc.c.

References ipmi_user_list_s::enabled.

Referenced by got_users().

04517 {
04518     *e = list->enabled;
04519     return 0;
04520 }

int ipmi_user_list_get_fixed_users ipmi_user_list_t list,
unsigned int *  f
 

Definition at line 4523 of file mc.c.

References ipmi_user_list_s::fixed.

Referenced by got_users().

04524 {
04525     *f = list->fixed;
04526     return 0;
04527 }

int ipmi_user_list_get_max_user ipmi_user_list_t list,
unsigned int *  max
 

Definition at line 4509 of file mc.c.

References ipmi_user_list_s::max.

Referenced by got_users().

04510 {
04511     *max = list->max;
04512     return 0;
04513 }

ipmi_user_t* ipmi_user_list_get_user ipmi_user_list_t list,
unsigned int  idx
 

Definition at line 4493 of file mc.c.

References ipmi_user_list_s::idx, ipmi_user_copy(), and ipmi_user_list_s::users.

Referenced by got_users(), and set_user1().

04495 {
04496   if (idx >= list->idx)
04497       return NULL;
04498   return ipmi_user_copy(&list->users[idx]);
04499 }

unsigned int ipmi_user_list_get_user_count ipmi_user_list_t users  ) 
 

Definition at line 4487 of file mc.c.

References ipmi_user_list_s::idx.

Referenced by got_users().

04488 {
04489   return list->idx;
04490 }

int ipmi_user_set_access_cb_only ipmi_user_t user,
unsigned int  val
 

Definition at line 5115 of file mc.c.

References ipmi_user_s::cb_only, and ipmi_user_s::cb_only_set.

Referenced by set_user1().

05116 {
05117     user->cb_only = val;
05118     user->cb_only_set = 1;
05119     return 0;
05120 }

int ipmi_user_set_all ipmi_user_t user  ) 
 

Definition at line 5174 of file mc.c.

References ipmi_user_s::cb_only_set, ipmi_user_s::enable_read, ipmi_user_s::enable_set, ipmi_user_s::link_enabled_set, ipmi_user_s::msg_enabled_set, ipmi_user_s::name_set, ipmi_user_s::privilege_limit_set, ipmi_user_s::session_limit_read, and ipmi_user_s::session_limit_set.

05175 {
05176     user->cb_only_set = 1;
05177     user->link_enabled_set = 1;
05178     user->msg_enabled_set = 1;
05179     user->privilege_limit_set = 1;
05180     user->session_limit_set = user->session_limit_read;
05181     user->enable_set = user->enable_read;
05182     user->name_set = 1;
05183     return 0;
05184 }

int ipmi_user_set_enable ipmi_user_t user,
unsigned int  val
 

Definition at line 5165 of file mc.c.

References ipmi_user_s::enable, ipmi_user_s::enable_read, and ipmi_user_s::enable_set.

Referenced by set_user1().

05166 {
05167     user->enable = val;
05168     user->enable_set = 1;
05169     user->enable_read = 1;
05170     return 0;
05171 }

int ipmi_user_set_link_auth_enabled ipmi_user_t user,
unsigned int  val
 

Definition at line 5085 of file mc.c.

References ipmi_user_s::link_enabled, and ipmi_user_s::link_enabled_set.

Referenced by set_user1().

05086 {
05087     user->link_enabled = val;
05088     user->link_enabled_set = 1;
05089     return 0;
05090 }

int ipmi_user_set_msg_auth_enabled ipmi_user_t user,
unsigned int  val
 

Definition at line 5100 of file mc.c.

References ipmi_user_s::msg_enabled, and ipmi_user_s::msg_enabled_set.

Referenced by set_user1().

05101 {
05102     user->msg_enabled = val;
05103     user->msg_enabled_set = 1;
05104     return 0;
05105 }

int ipmi_user_set_name ipmi_user_t user,
char *  name,
unsigned int  len
 

Definition at line 5046 of file mc.c.

References ipmi_user_s::name, and ipmi_user_s::name_set.

Referenced by set_user1().

05047 {
05048     if (len > 16)
05049         return EINVAL;
05050     memcpy(user->name, name, len);
05051     user->name_set = 1;
05052     return 0;
05053 }

int ipmi_user_set_num ipmi_user_t user,
unsigned int  num
 

Definition at line 5021 of file mc.c.

References ipmi_user_s::num.

05022 {
05023     if (num > 0x3f)
05024         return EINVAL;
05025     user->num = num;
05026     return 0;
05027 }

int ipmi_user_set_password ipmi_user_t user,
char *  pw,
unsigned int  len
 

Definition at line 5056 of file mc.c.

References ipmi_user_s::pw, and ipmi_user_s::pw_set.

Referenced by set_user1().

05057 {
05058     if (len > 16)
05059         return EINVAL;
05060     memcpy(user->pw, pw, len);
05061     user->pw_set = 1;
05062     return 0;
05063 }

int ipmi_user_set_password2 ipmi_user_t user,
char *  pw,
unsigned int  len
 

Definition at line 5066 of file mc.c.

References ipmi_user_s::can_use_pw2, ipmi_user_s::pw, and ipmi_user_s::pw2_set.

Referenced by set_user1().

05067 {
05068     if (! user->can_use_pw2)
05069         return ENOSYS;
05070     if (len > 20)
05071         return EINVAL;
05072     memcpy(user->pw, pw, len);
05073     user->pw2_set = 1;
05074     return 0;
05075 }

int ipmi_user_set_privilege_limit ipmi_user_t user,
unsigned int  val
 

Definition at line 5130 of file mc.c.

References ipmi_user_s::privilege_limit, and ipmi_user_s::privilege_limit_set.

Referenced by set_user1().

05131 {
05132     user->privilege_limit = val;
05133     user->privilege_limit_set = 1;
05134     return 0;
05135 }

int ipmi_user_set_session_limit ipmi_user_t user,
unsigned int  val
 

Definition at line 5147 of file mc.c.

References ipmi_user_s::session_limit, ipmi_user_s::session_limit_read, and ipmi_user_s::session_limit_set.

Referenced by set_user1().

05148 {
05149     user->session_limit = val;
05150     user->session_limit_set = 1;
05151     user->session_limit_read = 1;
05152     return 0;
05153 }


© sourcejam.com 2005-2008