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

cmd_lanparm.c File Reference

#include <errno.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <stdio.h>
#include <OpenIPMI/ipmiif.h>
#include <OpenIPMI/ipmi_lanparm.h>
#include <OpenIPMI/ipmi_cmdlang.h>
#include <OpenIPMI/ipmi_mc.h>
#include <OpenIPMI/internal/ipmi_malloc.h>
#include <OpenIPMI/internal/locked_list.h>

Go to the source code of this file.

Classes

struct  lanparm_info_s
struct  lan_config_info_s
struct  find_config_s
struct  lp_item_s
struct  lps_s
struct  ulp_item_s
struct  ulps_s
struct  lp_config_op_s
struct  lanparm_mc_unlock_s

Defines

#define LAN_CONFIG_NAME_LEN   80
#define FR(name, type)
#define F(name, type)
#define CMDS_LANPARM_LEN   (sizeof(cmds_lanparm)/sizeof(ipmi_cmdlang_init_t))

Typedefs

typedef lanparm_info_s lanparm_info_t
typedef lan_config_info_s lan_config_info_t
typedef find_config_s find_config_t
typedef void(* lp_set )(ipmi_cmd_info_t *cmd_info, char *val, ipmi_lan_config_t *lanc, void *func)
typedef void(* lp_out )(ipmi_cmd_info_t *cmd_info, char *name, ipmi_lan_config_t *lanc, void *func)
typedef lp_item_s lp_item_t
typedef void(* ulp_set )(ipmi_cmd_info_t *cmd_info, int sel, char *val, ipmi_lan_config_t *lanc, void *func)
typedef void(* ulp_out )(ipmi_cmd_info_t *cmd_info, int sel, char *name, ipmi_lan_config_t *lanc, void *func)
typedef ulp_item_s ulp_item_t
typedef lp_config_op_s lp_config_op_t
typedef lanparm_mc_unlock_s lanparm_mc_unlock_t

Functions

static void lanparm_list_handler (ipmi_lanparm_t *lanparm, void *cb_data)
static void lanparm_list (ipmi_domain_t *domain, void *cb_data)
static void get_mc_name (ipmi_mc_t *mc, void *cb_data)
static void lanparm_info (ipmi_lanparm_t *lanparm, void *cb_data)
static void lanparm_new (ipmi_mc_t *mc, void *cb_data)
static void lanparm_close_done (ipmi_lanparm_t *lanparm, int err, void *cb_data)
static void lanparm_close (ipmi_lanparm_t *lanparm, void *cb_data)
static int find_config_handler (void *cb_data, void *item1, void *item2)
static ipmi_lan_config_tfind_config (char *name, int delete)
static void set_retint (ipmi_cmd_info_t *cmd_info, char *val, ipmi_lan_config_t *lanc, void *func)
static void out_retint (ipmi_cmd_info_t *cmd_info, char *name, ipmi_lan_config_t *lanc, void *func)
static void set_retbool (ipmi_cmd_info_t *cmd_info, char *val, ipmi_lan_config_t *lanc, void *func)
static void out_retbool (ipmi_cmd_info_t *cmd_info, char *name, ipmi_lan_config_t *lanc, void *func)
static void set_int (ipmi_cmd_info_t *cmd_info, char *val, ipmi_lan_config_t *lanc, void *func)
static void out_int (ipmi_cmd_info_t *cmd_info, char *name, ipmi_lan_config_t *lanc, void *func)
static void set_bool (ipmi_cmd_info_t *cmd_info, char *val, ipmi_lan_config_t *lanc, void *func)
static void out_bool (ipmi_cmd_info_t *cmd_info, char *name, ipmi_lan_config_t *lanc, void *func)
static void set_ip (ipmi_cmd_info_t *cmd_info, char *val, ipmi_lan_config_t *lanc, void *func)
static void out_ip (ipmi_cmd_info_t *cmd_info, char *name, ipmi_lan_config_t *lanc, void *func)
static void set_port (ipmi_cmd_info_t *cmd_info, char *val, ipmi_lan_config_t *lanc, void *func)
static void out_port (ipmi_cmd_info_t *cmd_info, char *name, ipmi_lan_config_t *lanc, void *func)
static void set_mac (ipmi_cmd_info_t *cmd_info, char *val, ipmi_lan_config_t *lanc, void *func)
static void out_mac (ipmi_cmd_info_t *cmd_info, char *name, ipmi_lan_config_t *lanc, void *func)
static void set_str (ipmi_cmd_info_t *cmd_info, char *val, ipmi_lan_config_t *lanc, void *func)
static void out_str (ipmi_cmd_info_t *cmd_info, char *name, ipmi_lan_config_t *lanc, void *func)
static void uset_bool (ipmi_cmd_info_t *cmd_info, int sel, char *val, ipmi_lan_config_t *lanc, void *func)
static void uout_bool (ipmi_cmd_info_t *cmd_info, int sel, char *name, ipmi_lan_config_t *lanc, void *func)
static void uset_int (ipmi_cmd_info_t *cmd_info, int sel, char *val, ipmi_lan_config_t *lanc, void *func)
static void uout_int (ipmi_cmd_info_t *cmd_info, int sel, char *name, ipmi_lan_config_t *lanc, void *func)
static void uset_ip (ipmi_cmd_info_t *cmd_info, int sel, char *val, ipmi_lan_config_t *lanc, void *func)
static void uout_ip (ipmi_cmd_info_t *cmd_info, int sel, char *name, ipmi_lan_config_t *lanc, void *func)
static void uset_mac (ipmi_cmd_info_t *cmd_info, int sel, char *val, ipmi_lan_config_t *lanc, void *func)
static void uout_mac (ipmi_cmd_info_t *cmd_info, int sel, char *name, ipmi_lan_config_t *lanc, void *func)
static void config_info (ipmi_cmd_info_t *cmd_info, ipmi_lan_config_t *config)
static void lanparm_config_get_done (ipmi_lanparm_t *lanparm, int err, ipmi_lan_config_t *config, void *cb_data)
static void lanparm_config_get (ipmi_lanparm_t *lanparm, void *cb_data)
static void lanparm_config_set_done (ipmi_lanparm_t *lanparm, int err, void *cb_data)
static void lanparm_config_set (ipmi_lanparm_t *lanparm, void *cb_data)
static void lanparm_config_unlock_done (ipmi_lanparm_t *lanparm, int err, void *cb_data)
static void lanparm_config_unlock (ipmi_lanparm_t *lanparm, void *cb_data)
static void lanparm_config_close (ipmi_cmd_info_t *cmd_info)
static int lanparm_config_list_handler (void *cb_data, void *item1, void *item2)
static void lanparm_config_list (ipmi_cmd_info_t *cmd_info)
static int lanparm_config_info_handler (void *cb_data, void *item1, void *item2)
static void lanparm_config_info (ipmi_cmd_info_t *cmd_info)
static void lanparm_config_update (ipmi_cmd_info_t *cmd_info)
static void lanparm_unlock_mc_done (ipmi_lanparm_t *lanparm, int err, void *cb_data)
static void lanparm_unlock_mc (ipmi_mc_t *mc, void *cb_data)
int ipmi_cmdlang_lanparm_init (os_handler_t *os_hnd)
static int config_destroy_handler (void *cb_data, void *item1, void *item2)
void ipmi_cmdlang_lanparm_shutdown (void)

Variables

static locked_list_tlancs
static unsigned int unique_num = 0
static lp_item_t lp_retint = {set_retint, out_retint}
static lp_item_t lp_retbool = {set_retbool, out_retbool}
static lp_item_t lp_int = {set_int, out_int}
static lp_item_t lp_bool = {set_bool, out_bool}
static lp_item_t lp_ip = {set_ip, out_ip}
static lp_item_t lp_port = {set_port, out_port}
static lp_item_t lp_mac = {set_mac, out_mac}
static lp_item_t lp_str = {set_str, out_str}
static struct lps_s lps []
static ulp_item_t lp_ubool = {uset_bool, uout_bool}
static struct ulps_s ulps []
static ulp_item_t lp_uint = {uset_int, uout_int}
static ulp_item_t lp_uip = {uset_ip, uout_ip}
static ulp_item_t lp_umac = {uset_mac, uout_mac}
static struct ulps_s alps []
static struct ulps_s clps []
static char * user_names [5]
static ipmi_cmdlang_cmd_tlanparm_cmds
static ipmi_cmdlang_cmd_tconfig_cmds
static ipmi_cmdlang_init_t cmds_lanparm []


Define Documentation

#define CMDS_LANPARM_LEN   (sizeof(cmds_lanparm)/sizeof(ipmi_cmdlang_init_t))
 

Definition at line 1416 of file cmd_lanparm.c.

Referenced by ipmi_cmdlang_lanparm_init().

#define F name,
type   ) 
 

Value:

{ #name, &lp_ ## type, ipmi_lanconfig_get_ ## name, \
                        ipmi_lanconfig_set_ ## name }

#define FR name,
type   ) 
 

Value:

{ #name, &lp_ ## type, ipmi_lanconfig_get_ ## name, \
                         NULL }

#define LAN_CONFIG_NAME_LEN   80
 

Definition at line 220 of file cmd_lanparm.c.


Typedef Documentation

typedef struct find_config_s find_config_t
 

typedef struct lan_config_info_s lan_config_info_t
 

typedef struct lanparm_info_s lanparm_info_t
 

typedef struct lanparm_mc_unlock_s lanparm_mc_unlock_t
 

typedef struct lp_config_op_s lp_config_op_t
 

typedef struct lp_item_s lp_item_t
 

typedef void(* lp_out)(ipmi_cmd_info_t *cmd_info, char *name, ipmi_lan_config_t *lanc, void *func)
 

Definition at line 268 of file cmd_lanparm.c.

typedef void(* lp_set)(ipmi_cmd_info_t *cmd_info, char *val, ipmi_lan_config_t *lanc, void *func)
 

Definition at line 266 of file cmd_lanparm.c.

typedef struct ulp_item_s ulp_item_t
 

typedef void(* ulp_out)(ipmi_cmd_info_t *cmd_info, int sel, char *name, ipmi_lan_config_t *lanc, void *func)
 

Definition at line 569 of file cmd_lanparm.c.

typedef void(* ulp_set)(ipmi_cmd_info_t *cmd_info, int sel, char *val, ipmi_lan_config_t *lanc, void *func)
 

Definition at line 567 of file cmd_lanparm.c.


Function Documentation

static int config_destroy_handler void *  cb_data,
void *  item1,
void *  item2
[static]
 

Definition at line 1437 of file cmd_lanparm.c.

References lan_config_info_s::config, ipmi_lan_free_config(), ipmi_mem_free(), and LOCKED_LIST_ITER_CONTINUE.

Referenced by ipmi_cmdlang_lanparm_shutdown(), ipmi_cmdlang_pef_shutdown(), and ipmi_cmdlang_solparm_shutdown().

01438 {
01439     lan_config_info_t *info = item1;
01440 
01441     ipmi_lan_free_config(info->config);
01442     ipmi_mem_free(info);
01443     return LOCKED_LIST_ITER_CONTINUE;
01444 }

static void config_info ipmi_cmd_info_t cmd_info,
ipmi_lan_config_t config
[static]
 

Definition at line 752 of file cmd_lanparm.c.

References ulps_s::get_func, i, ipmi_cmdlang_down(), ipmi_cmdlang_out(), ipmi_cmdlang_out_int(), ipmi_cmdlang_up(), ipmi_lanconfig_get_num_alert_destinations(), ipmi_lanconfig_get_num_cipher_suites(), ulps_s::lpi, lps_s::lpi, lps, name, ulp_item_s::out, lp_item_s::out, ulps, and user_names.

Referenced by lanparm_config_get_done(), lanparm_config_info(), lanparm_config_info_handler(), pef_config_get_done(), pef_config_info(), pef_config_info_handler(), solparm_config_get_done(), solparm_config_info(), and solparm_config_info_handler().

00753 {
00754     int i;
00755     int user;
00756     int num;
00757 
00758     /* Basic items */
00759     for (i=0; lps[i].name; i++) {
00760         lp_item_t *lp = lps[i].lpi;
00761         lp->out(cmd_info, lps[i].name, config, lps[i].get_func);
00762     }
00763 
00764     /* per-user items */
00765     for (user=0; user<5; user++) {
00766         ipmi_cmdlang_out(cmd_info, "User", NULL);
00767         ipmi_cmdlang_down(cmd_info);
00768         ipmi_cmdlang_out(cmd_info, "Name", user_names[user]);
00769         for (i=0; ulps[i].name; i++) {
00770             ulp_item_t *lp = ulps[i].lpi;
00771             lp->out(cmd_info, user, ulps[i].name, config, ulps[i].get_func);
00772         }
00773         ipmi_cmdlang_up(cmd_info);
00774     }
00775 
00776     /* per-destination items */
00777     num = ipmi_lanconfig_get_num_alert_destinations(config);
00778     for (user=0; user<num; user++) {
00779         ipmi_cmdlang_out(cmd_info, "Alert Destination", NULL);
00780         ipmi_cmdlang_down(cmd_info);
00781         ipmi_cmdlang_out_int(cmd_info, "Number", user);
00782         for (i=0; alps[i].name; i++) {
00783             ulp_item_t *lp = alps[i].lpi;
00784             lp->out(cmd_info, user, alps[i].name, config, alps[i].get_func);
00785         }
00786         ipmi_cmdlang_up(cmd_info);
00787     }
00788 
00789     /* per-cipher-suite items */
00790     num = ipmi_lanconfig_get_num_cipher_suites(config);
00791     for (user=0; user<num; user++) {
00792         ipmi_cmdlang_out(cmd_info, "Cipher Suite", NULL);
00793         ipmi_cmdlang_down(cmd_info);
00794         ipmi_cmdlang_out_int(cmd_info, "Number", user);
00795         for (i=0; clps[i].name; i++) {
00796             ulp_item_t *lp = clps[i].lpi;
00797             lp->out(cmd_info, user, clps[i].name, config, clps[i].get_func);
00798         }
00799         ipmi_cmdlang_up(cmd_info);
00800     }
00801 }

static ipmi_lan_config_t* find_config char *  name,
int  delete
[static]
 

Definition at line 255 of file cmd_lanparm.c.

References find_config_s::config, find_config_s::delete, find_config_handler(), locked_list_iterate(), and find_config_s::name.

Referenced by lanparm_config_close(), lanparm_config_info(), lanparm_config_set(), lanparm_config_unlock(), lanparm_config_update(), pef_config_close(), pef_config_info(), pef_config_set(), pef_config_unlock(), pef_config_update(), solparm_config_close(), solparm_config_info(), solparm_config_set(), solparm_config_unlock(), and solparm_config_update().

00256 {
00257     find_config_t find;
00258 
00259     find.name = name;
00260     find.config = NULL;
00261     find.delete = delete;
00262     locked_list_iterate(lancs, find_config_handler, &find);
00263     return find.config;
00264 }

static int find_config_handler void *  cb_data,
void *  item1,
void *  item2
[static]
 

Definition at line 237 of file cmd_lanparm.c.

References lan_config_info_s::config, find_config_s::config, find_config_s::delete, ipmi_mem_free(), LOCKED_LIST_ITER_CONTINUE, LOCKED_LIST_ITER_STOP, locked_list_remove(), lan_config_info_s::name, and find_config_s::name.

Referenced by find_config().

00238 {
00239     lan_config_info_t *info = item1;
00240     find_config_t     *find = cb_data;
00241 
00242     if (strcmp(find->name, info->name) == 0) {
00243         find->config = info->config;
00244         if (find->delete) {
00245             locked_list_remove(lancs, item1, item2);
00246             ipmi_mem_free(info);
00247         }
00248         return LOCKED_LIST_ITER_STOP;
00249     }
00250 
00251     return LOCKED_LIST_ITER_CONTINUE;
00252 }

static void get_mc_name ipmi_mc_t mc,
void *  cb_data
[static]
 

Definition at line 83 of file cmd_lanparm.c.

References ipmi_cmdlang_out(), ipmi_mc_get_name(), and IPMI_MC_NAME_LEN.

00084 {
00085     ipmi_cmd_info_t *cmd_info = cb_data;
00086     char            mc_name[IPMI_MC_NAME_LEN];
00087 
00088     ipmi_mc_get_name(mc, mc_name, sizeof(mc_name));
00089     ipmi_cmdlang_out(cmd_info, "MC", mc_name);
00090 }

int ipmi_cmdlang_lanparm_init os_handler_t os_hnd  ) 
 

Definition at line 1419 of file cmd_lanparm.c.

References CMDS_LANPARM_LEN, ipmi_cmdlang_reg_table(), locked_list_alloc(), and locked_list_destroy().

Referenced by ipmi_cmdlang_init().

01420 {
01421     int rv;
01422 
01423     lancs = locked_list_alloc(os_hnd);
01424     if (!lancs)
01425         return ENOMEM;
01426 
01427     rv = ipmi_cmdlang_reg_table(cmds_lanparm, CMDS_LANPARM_LEN);
01428     if (rv) {
01429         locked_list_destroy(lancs);
01430         lancs = NULL;
01431     }
01432 
01433     return rv;
01434 }

void ipmi_cmdlang_lanparm_shutdown void   ) 
 

Definition at line 1447 of file cmd_lanparm.c.

References config_destroy_handler(), locked_list_destroy(), and locked_list_iterate().

Referenced by ipmi_cmdlang_cleanup().

01448 {
01449     locked_list_iterate(lancs, config_destroy_handler, NULL);
01450     locked_list_destroy(lancs);
01451     lancs = NULL;
01452 }

static void lanparm_close ipmi_lanparm_t lanparm,
void *  cb_data
[static]
 

Definition at line 188 of file cmd_lanparm.c.

References cmdlang, ipmi_cmdlang_s::err, ipmi_cmdlang_s::errstr, ipmi_cmdinfo_get_cmdlang(), ipmi_cmdlang_cmd_info_get(), ipmi_cmdlang_cmd_info_put(), ipmi_lanparm_destroy(), ipmi_lanparm_get_name(), ipmi_mem_alloc(), ipmi_mem_free(), lanparm_close_done(), ipmi_cmdlang_s::location, ipmi_lanparm_s::name, ipmi_cmdlang_s::objstr, and ipmi_cmdlang_s::objstr_len.

00189 {
00190     ipmi_cmd_info_t *cmd_info = cb_data;
00191     ipmi_cmdlang_t  *cmdlang = ipmi_cmdinfo_get_cmdlang(cmd_info);
00192     int             rv;
00193     lanparm_info_t  *info;
00194 
00195     info = ipmi_mem_alloc(sizeof(*info));
00196     if (!info) {
00197         cmdlang->errstr = "Out of memory";
00198         cmdlang->err = ENOMEM;
00199         goto out_err;
00200     }
00201     info->cmd_info = cmd_info;
00202     ipmi_lanparm_get_name(lanparm, info->name, sizeof(info->name));
00203 
00204     ipmi_cmdlang_cmd_info_get(cmd_info);
00205     rv = ipmi_lanparm_destroy(lanparm, lanparm_close_done, info);
00206     if (rv) {
00207         ipmi_cmdlang_cmd_info_put(cmd_info);
00208         ipmi_lanparm_get_name(lanparm, cmdlang->objstr,
00209                               cmdlang->objstr_len);
00210         cmdlang->errstr = "Error closing LANPARM";
00211         cmdlang->err = rv;
00212         ipmi_mem_free(info);
00213     }
00214     return;
00215 
00216  out_err:
00217     cmdlang->location = "cmd_lanparm.c(lanparm_close)";
00218 }

static void lanparm_close_done ipmi_lanparm_t lanparm,
int  err,
void *  cb_data
[static]
 

Definition at line 163 of file cmd_lanparm.c.

References lanparm_info_s::cmd_info, 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_lanparm_get_name(), ipmi_mem_free(), ipmi_cmdlang_s::location, lanparm_info_s::name, ipmi_cmdlang_s::objstr, and ipmi_cmdlang_s::objstr_len.

Referenced by lanparm_close().

00164 {
00165     lanparm_info_t  *info = cb_data;
00166     ipmi_cmd_info_t *cmd_info = info->cmd_info;
00167     ipmi_cmdlang_t  *cmdlang = ipmi_cmdinfo_get_cmdlang(cmd_info);
00168 
00169     ipmi_cmdlang_lock(cmd_info);
00170     if (err) {
00171         ipmi_lanparm_get_name(lanparm, cmdlang->objstr,
00172                           cmdlang->objstr_len);
00173         cmdlang->errstr = "Error closing LANPARM";
00174         cmdlang->err = err;
00175         cmdlang->location = "cmd_lanparm.c(lanparm_close_done)";
00176         goto out;
00177     }
00178 
00179     ipmi_cmdlang_out(cmd_info, "LANPARM destroyed", info->name);
00180 
00181  out:
00182     ipmi_cmdlang_unlock(cmd_info);
00183     ipmi_cmdlang_cmd_info_put(cmd_info);
00184     ipmi_mem_free(info);
00185 }

static void lanparm_config_close ipmi_cmd_info_t cmd_info  )  [static]
 

Definition at line 1051 of file cmd_lanparm.c.

References cmdlang, ipmi_cmdlang_s::err, ipmi_cmdlang_s::errstr, find_config(), ipmi_cmdinfo_get_cmdlang(), ipmi_cmdlang_get_argc(), ipmi_cmdlang_get_argv(), ipmi_cmdlang_get_curr_arg(), ipmi_cmdlang_out(), ipmi_lan_free_config(), ipmi_cmdlang_s::location, ipmi_cmdlang_s::objstr, and ipmi_cmdlang_s::objstr_len.

01052 {
01053     ipmi_cmdlang_t    *cmdlang = ipmi_cmdinfo_get_cmdlang(cmd_info);
01054     int               curr_arg = ipmi_cmdlang_get_curr_arg(cmd_info);
01055     int               argc = ipmi_cmdlang_get_argc(cmd_info);
01056     char              **argv = ipmi_cmdlang_get_argv(cmd_info);
01057     ipmi_lan_config_t *lanc;
01058     char              *lanc_name;
01059 
01060     if ((argc - curr_arg) < 1) {
01061         /* Not enough parameters */
01062         cmdlang->errstr = "Not enough parameters";
01063         cmdlang->err = EINVAL;
01064         lanc_name = "";
01065         goto out_err;
01066     }
01067     lanc_name = argv[curr_arg];
01068 
01069     lanc = find_config(lanc_name, 1);
01070     if (!lanc) {
01071         cmdlang->errstr = "Invalid LAN config";
01072         cmdlang->err = EINVAL;
01073         goto out_err;
01074     }
01075 
01076     ipmi_lan_free_config(lanc);
01077     ipmi_cmdlang_out(cmd_info, "LANPARM config destroyed", lanc_name);
01078     return;
01079 
01080  out_err:
01081     strncpy(cmdlang->objstr, lanc_name, cmdlang->objstr_len);
01082     cmdlang->location = "cmd_lanparm.c(lanparm_config_close)";
01083 }

static void lanparm_config_get ipmi_lanparm_t lanparm,
void *  cb_data
[static]
 

Definition at line 859 of file cmd_lanparm.c.

References cmdlang, ipmi_cmdlang_s::err, ipmi_cmdlang_s::errstr, ipmi_cmdinfo_get_cmdlang(), ipmi_cmdlang_cmd_info_get(), ipmi_cmdlang_cmd_info_put(), ipmi_lan_get_config(), ipmi_lanparm_get_name(), lanparm_config_get_done(), ipmi_cmdlang_s::location, ipmi_cmdlang_s::objstr, and ipmi_cmdlang_s::objstr_len.

00860 {
00861     ipmi_cmd_info_t *cmd_info = cb_data;
00862     ipmi_cmdlang_t  *cmdlang = ipmi_cmdinfo_get_cmdlang(cmd_info);
00863     int             rv;
00864 
00865     ipmi_cmdlang_cmd_info_get(cmd_info);
00866     rv = ipmi_lan_get_config(lanparm, lanparm_config_get_done, cmd_info);
00867     if (rv) {
00868         ipmi_lanparm_get_name(lanparm, cmdlang->objstr,
00869                               cmdlang->objstr_len);
00870         ipmi_cmdlang_cmd_info_put(cmd_info);
00871         cmdlang->errstr = "Error getting LANPARM";
00872         cmdlang->err = rv;
00873         cmdlang->location = "cmd_lanparm.c(lanparm_config_get)";
00874     }
00875 }

static void lanparm_config_get_done ipmi_lanparm_t lanparm,
int  err,
ipmi_lan_config_t config,
void *  cb_data
[static]
 

Definition at line 804 of file cmd_lanparm.c.

References cmdlang, config_info(), 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_unlock(), ipmi_cmdlang_up(), ipmi_lan_free_config(), ipmi_lanparm_get_name(), IPMI_LANPARM_NAME_LEN, ipmi_mem_alloc(), ipmi_mem_free(), ipmi_cmdlang_s::location, locked_list_add(), ipmi_cmdlang_s::objstr, ipmi_cmdlang_s::objstr_len, and unique_num.

Referenced by lanparm_config_get().

00808 {
00809     ipmi_cmd_info_t   *cmd_info = cb_data;
00810     ipmi_cmdlang_t    *cmdlang = ipmi_cmdinfo_get_cmdlang(cmd_info);
00811     char              lanparm_name[IPMI_LANPARM_NAME_LEN];
00812     lan_config_info_t *info;
00813 
00814     ipmi_cmdlang_lock(cmd_info);
00815     if (err) {
00816         cmdlang->errstr = "Error getting LANPARM";
00817         cmdlang->err = err;
00818         goto out;
00819     }
00820 
00821     ipmi_lanparm_get_name(lanparm, lanparm_name, sizeof(lanparm_name));
00822 
00823     info = ipmi_mem_alloc(sizeof(*info));
00824     if (!info) {
00825         cmdlang->errstr = "Out of memory";
00826         cmdlang->err = ENOMEM;
00827         ipmi_lan_free_config(config);
00828         goto out;
00829     }
00830     snprintf(info->name, sizeof(info->name), "%s.%u",
00831              lanparm_name, unique_num);
00832     info->config = config;
00833     if (!locked_list_add(lancs, info, NULL)) {
00834         cmdlang->errstr = "Out of memory";
00835         cmdlang->err = ENOMEM;
00836         ipmi_lan_free_config(config);
00837         ipmi_mem_free(info);
00838         goto out;
00839     }
00840     unique_num++;
00841 
00842     ipmi_cmdlang_out(cmd_info, "LANPARM Config", NULL);
00843     ipmi_cmdlang_down(cmd_info);
00844     ipmi_cmdlang_out(cmd_info, "Name", info->name);
00845     config_info(cmd_info, config);
00846     ipmi_cmdlang_up(cmd_info);
00847 
00848  out:
00849     if (cmdlang->err) {
00850         ipmi_lanparm_get_name(lanparm, cmdlang->objstr,
00851                               cmdlang->objstr_len);
00852         cmdlang->location = "cmd_lanparm.c(lanparm_config_get_done)";
00853     }
00854     ipmi_cmdlang_unlock(cmd_info);
00855     ipmi_cmdlang_cmd_info_put(cmd_info);
00856 }

static void lanparm_config_info ipmi_cmd_info_t cmd_info  )  [static]
 

Definition at line 1119 of file cmd_lanparm.c.

References cmdlang, config_info(), ipmi_cmdlang_s::err, ipmi_cmdlang_s::errstr, find_config(), ipmi_cmdinfo_get_cmdlang(), ipmi_cmdlang_down(), ipmi_cmdlang_get_argc(), ipmi_cmdlang_get_argv(), ipmi_cmdlang_get_curr_arg(), ipmi_cmdlang_out(), ipmi_cmdlang_up(), lanparm_config_info_handler(), ipmi_cmdlang_s::location, locked_list_iterate(), ipmi_cmdlang_s::objstr, and ipmi_cmdlang_s::objstr_len.

01120 {
01121     ipmi_cmdlang_t    *cmdlang = ipmi_cmdinfo_get_cmdlang(cmd_info);
01122     int               curr_arg = ipmi_cmdlang_get_curr_arg(cmd_info);
01123     int               argc = ipmi_cmdlang_get_argc(cmd_info);
01124     char              **argv = ipmi_cmdlang_get_argv(cmd_info);
01125     ipmi_lan_config_t *lanc;
01126 
01127     if ((argc - curr_arg) < 1) {
01128         locked_list_iterate(lancs, lanparm_config_info_handler, cmd_info);
01129     } else {
01130         lanc = find_config(argv[curr_arg], 0);
01131         if (!lanc) {
01132             cmdlang->errstr = "Invalid LAN config";
01133             cmdlang->err = EINVAL;
01134             goto out_err;
01135         }
01136         ipmi_cmdlang_out(cmd_info, "LANPARM Config", NULL);
01137         ipmi_cmdlang_down(cmd_info);
01138         ipmi_cmdlang_out(cmd_info, "Name", argv[curr_arg]);
01139         config_info(cmd_info, lanc);
01140         ipmi_cmdlang_up(cmd_info);
01141     }
01142     return;
01143 
01144  out_err:
01145     strncpy(cmdlang->objstr, argv[curr_arg], cmdlang->objstr_len);
01146     cmdlang->location = "cmd_lanparm.c(lanparm_config_info)";
01147 }

static int lanparm_config_info_handler void *  cb_data,
void *  item1,
void *  item2
[static]
 

Definition at line 1105 of file cmd_lanparm.c.

References lan_config_info_s::config, config_info(), ipmi_cmdlang_down(), ipmi_cmdlang_out(), ipmi_cmdlang_up(), LOCKED_LIST_ITER_CONTINUE, and lan_config_info_s::name.

Referenced by lanparm_config_info().

01106 {
01107     ipmi_cmd_info_t   *cmd_info = cb_data;
01108     lan_config_info_t *info = item1;
01109 
01110     ipmi_cmdlang_out(cmd_info, "LANPARM Config", NULL);
01111     ipmi_cmdlang_down(cmd_info);
01112     ipmi_cmdlang_out(cmd_info, "Name", info->name);
01113     config_info(cmd_info, info->config);
01114     ipmi_cmdlang_up(cmd_info);
01115     return LOCKED_LIST_ITER_CONTINUE;
01116 }

static void lanparm_config_list ipmi_cmd_info_t cmd_info  )  [static]
 

Definition at line 1096 of file cmd_lanparm.c.

References ipmi_cmdlang_down(), ipmi_cmdlang_out(), ipmi_cmdlang_up(), lanparm_config_list_handler(), and locked_list_iterate().

01097 {
01098     ipmi_cmdlang_out(cmd_info, "LANPARM Configs", NULL);
01099     ipmi_cmdlang_down(cmd_info);
01100     locked_list_iterate(lancs, lanparm_config_list_handler, cmd_info);
01101     ipmi_cmdlang_up(cmd_info);
01102 }

static int lanparm_config_list_handler void *  cb_data,
void *  item1,
void *  item2
[static]
 

Definition at line 1086 of file cmd_lanparm.c.

References ipmi_cmdlang_out(), LOCKED_LIST_ITER_CONTINUE, and lan_config_info_s::name.

Referenced by lanparm_config_list().

01087 {
01088     ipmi_cmd_info_t   *cmd_info = cb_data;
01089     lan_config_info_t *info = item1;
01090 
01091     ipmi_cmdlang_out(cmd_info, "Name", info->name);
01092     return LOCKED_LIST_ITER_CONTINUE;
01093 }

static void lanparm_config_set ipmi_lanparm_t lanparm,
void *  cb_data
[static]
 

Definition at line 911 of file cmd_lanparm.c.

References cmdlang, ipmi_cmdlang_s::err, ipmi_cmdlang_s::errstr, find_config(), 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_lan_set_config(), ipmi_lanparm_get_name(), ipmi_mem_alloc(), ipmi_mem_free(), lanparm_config_set_done(), ipmi_cmdlang_s::location, name, ipmi_cmdlang_s::objstr, and ipmi_cmdlang_s::objstr_len.

Referenced by start_config_set_cb().

00912 {
00913     ipmi_cmd_info_t   *cmd_info = cb_data;
00914     ipmi_cmdlang_t    *cmdlang = ipmi_cmdinfo_get_cmdlang(cmd_info);
00915     int               rv;
00916     int               curr_arg = ipmi_cmdlang_get_curr_arg(cmd_info);
00917     int               argc = ipmi_cmdlang_get_argc(cmd_info);
00918     char              **argv = ipmi_cmdlang_get_argv(cmd_info);
00919     ipmi_lan_config_t *lanc;
00920     lp_config_op_t    *info = cb_data;
00921     char              *name;
00922 
00923     if ((argc - curr_arg) < 1) {
00924         /* Not enough parameters */
00925         cmdlang->errstr = "Not enough parameters";
00926         cmdlang->err = EINVAL;
00927         goto out_err;
00928     }
00929 
00930     name = argv[curr_arg];
00931     curr_arg++;
00932     
00933     lanc = find_config(name, 0);
00934     if (!lanc) {
00935         cmdlang->errstr = "Invalid LAN config";
00936         cmdlang->err = EINVAL;
00937         goto out_err;
00938     }
00939 
00940     info = ipmi_mem_alloc(sizeof(*info));
00941     if (!info) {
00942         cmdlang->errstr = "Out of memory";
00943         cmdlang->err = ENOMEM;
00944         goto out_err;
00945     }
00946     info->cmd_info = cmd_info;
00947     strncpy(info->name, name, sizeof(info->name));
00948 
00949     ipmi_cmdlang_cmd_info_get(cmd_info);
00950     rv = ipmi_lan_set_config(lanparm, lanc, lanparm_config_set_done, info);
00951     if (rv) {
00952         ipmi_cmdlang_cmd_info_put(cmd_info);
00953         cmdlang->errstr = "Error setting LANPARM";
00954         cmdlang->err = rv;
00955         ipmi_mem_free(info);
00956         goto out_err;
00957     }
00958 
00959     return;
00960 
00961  out_err:
00962     ipmi_lanparm_get_name(lanparm, cmdlang->objstr,
00963                           cmdlang->objstr_len);
00964     cmdlang->location = "cmd_lanparm.c(lanparm_config_set)";
00965 }

static void lanparm_config_set_done