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

ipmi_addr.h File Reference

#include <netinet/in.h>

Go to the source code of this file.

Classes

struct  ipmi_addr
struct  ipmi_system_interface_addr
struct  ipmi_ipmb_addr
struct  ipmi_lan_addr
struct  ipmi_rmcpp_addr
struct  ipmi_802_3_addr_s

Defines

#define IPMI_MAX_ADDR_SIZE   32
#define IPMI_SYSTEM_INTERFACE_ADDR_TYPE   0xc
#define IPMI_IPMB_ADDR_TYPE   1
#define IPMI_IPMB_BROADCAST_ADDR_TYPE   0x41
#define IPMI_LAN_ADDR_TYPE   0x04
#define IPMI_BMC_CHANNEL   0xf
#define IPMI_SELF_CHANNEL   0xe
#define IPMI_NUM_CHANNELS   0x10
#define IPMI_RMCPP_ADDR_START   0x100
#define IPMI_RMCPP_ADDR_END   0x13f
#define IPMI_RMCPP_DUMMY_NETFN   0x40
#define IPMI_802_3_ADDR_TYPE   4

Typedefs

typedef ipmi_rmcpp_addr ipmi_rmcpp_addr_t
typedef ipmi_addr ipmi_addr_t
typedef ipmi_system_interface_addr ipmi_system_interface_addr_t
typedef ipmi_ipmb_addr ipmi_ipmb_addr_t
typedef ipmi_lan_addr ipmi_lan_addr_t
typedef ipmi_802_3_addr_s ipmi_802_3_addr_t

Functions

int ipmi_addr_equal (const ipmi_addr_t *addr1, int addr1_len, const ipmi_addr_t *addr2, int addr2_len)
unsigned int ipmi_addr_get_lun (const ipmi_addr_t *addr)
int ipmi_addr_set_lun (ipmi_addr_t *addr, unsigned int lun)
int ipmi_addr_equal_nolun (const ipmi_addr_t *addr1, int addr1_len, const ipmi_addr_t *addr2, int addr2_len)
unsigned int ipmi_addr_get_slave_addr (const ipmi_addr_t *addr)


Define Documentation

#define IPMI_802_3_ADDR_TYPE   4
 

Definition at line 176 of file ipmi_addr.h.

#define IPMI_BMC_CHANNEL   0xf
 

Definition at line 139 of file ipmi_addr.h.

#define IPMI_IPMB_ADDR_TYPE   1
 

Definition at line 95 of file ipmi_addr.h.

#define IPMI_IPMB_BROADCAST_ADDR_TYPE   0x41
 

Definition at line 98 of file ipmi_addr.h.

#define IPMI_LAN_ADDR_TYPE   0x04
 

Definition at line 124 of file ipmi_addr.h.

Referenced by dump_msg_data(), get_addr_type(), ipmi_addr_equal(), ipmi_addr_equal_nolun(), ipmi_addr_get_lun(), ipmi_addr_set_lun(), and process_input_line().

#define IPMI_MAX_ADDR_SIZE   32
 

Definition at line 73 of file ipmi_addr.h.

#define IPMI_NUM_CHANNELS   0x10
 

Definition at line 144 of file ipmi_addr.h.

#define IPMI_RMCPP_ADDR_END   0x13f
 

Definition at line 153 of file ipmi_addr.h.

Referenced by lan_send_addr().

#define IPMI_RMCPP_ADDR_START   0x100
 

Definition at line 152 of file ipmi_addr.h.

Referenced by lan_send_addr(), send_rakp1(), send_rakp3(), and send_rmcpp_open_session().

#define IPMI_RMCPP_DUMMY_NETFN   0x40
 

Definition at line 167 of file ipmi_addr.h.

Referenced by send_rakp1(), send_rakp3(), and send_rmcpp_open_session().

#define IPMI_SELF_CHANNEL   0xe
 

Definition at line 142 of file ipmi_addr.h.

Referenced by send_commit_write(), send_enable_sol_command(), send_get_channel_payload_support_command(), send_get_sol_configuration_command(), and send_set_volatile_bitrate().

#define IPMI_SYSTEM_INTERFACE_ADDR_TYPE   0xc
 

Definition at line 86 of file ipmi_addr.h.


Typedef Documentation

typedef struct ipmi_802_3_addr_s ipmi_802_3_addr_t
 

typedef struct ipmi_addr ipmi_addr_t
 

Definition at line 170 of file ipmi_addr.h.

typedef struct ipmi_ipmb_addr ipmi_ipmb_addr_t
 

Definition at line 172 of file ipmi_addr.h.

typedef struct ipmi_lan_addr ipmi_lan_addr_t
 

Definition at line 173 of file ipmi_addr.h.

typedef struct ipmi_rmcpp_addr ipmi_rmcpp_addr_t
 

typedef struct ipmi_system_interface_addr ipmi_system_interface_addr_t
 

Definition at line 171 of file ipmi_addr.h.


Function Documentation

int ipmi_addr_equal const ipmi_addr_t addr1,
int  addr1_len,
const ipmi_addr_t addr2,
int  addr2_len
 

Definition at line 70 of file ipmi_utils.c.

References ipmi_addr::addr_type, ipmi_addr::channel, IPMI_IPMB_ADDR_TYPE, IPMI_LAN_ADDR_TYPE, IPMI_SYSTEM_INTERFACE_ADDR_TYPE, ipmi_lan_addr::local_SWID, ipmi_ipmb_addr::lun, ipmi_system_interface_addr::lun, ipmi_lan_addr::lun, ipmi_lan_addr::privilege, ipmi_lan_addr::remote_SWID, ipmi_lan_addr::session_handle, and ipmi_ipmb_addr::slave_addr.

Referenced by ipmi_handle_recv().

00074 {
00075     if (addr1_len != addr2_len)
00076         return 0;
00077 
00078     if (addr1->addr_type != addr2->addr_type)
00079         return 0;
00080 
00081     if (addr1->channel != addr2->channel)
00082         return 0;
00083 
00084     switch (addr1->addr_type)
00085     {
00086         case IPMI_IPMB_ADDR_TYPE:
00087         {
00088             ipmi_ipmb_addr_t *iaddr1 = (ipmi_ipmb_addr_t *) addr1;
00089             ipmi_ipmb_addr_t *iaddr2 = (ipmi_ipmb_addr_t *) addr2;
00090 
00091             return ((iaddr1->slave_addr == iaddr2->slave_addr)
00092                     && (iaddr1->lun == iaddr2->lun));
00093         }
00094 
00095         case IPMI_SYSTEM_INTERFACE_ADDR_TYPE:
00096         {
00097             ipmi_system_interface_addr_t *iaddr1
00098                 = (ipmi_system_interface_addr_t *) addr1;
00099             ipmi_system_interface_addr_t *iaddr2
00100                 = (ipmi_system_interface_addr_t *) addr2;
00101             return (iaddr1->lun == iaddr2->lun);
00102         }
00103 
00104         if (addr1->addr_type == IPMI_LAN_ADDR_TYPE) {
00105                 struct ipmi_lan_addr *lan_addr1
00106                         = (struct ipmi_lan_addr *) addr1;
00107                 struct ipmi_lan_addr *lan_addr2
00108                     = (struct ipmi_lan_addr *) addr2;
00109 
00110                 return ((lan_addr1->remote_SWID == lan_addr2->remote_SWID)
00111                         && (lan_addr1->local_SWID == lan_addr2->local_SWID)
00112                         && (lan_addr1->privilege == lan_addr2->privilege)
00113                         && (lan_addr1->session_handle
00114                             == lan_addr2->session_handle)
00115                         && (lan_addr1->lun == lan_addr2->lun));
00116         }
00117 
00118         default:
00119             return 0;
00120     }
00121 }

int ipmi_addr_equal_nolun const ipmi_addr_t addr1,
int  addr1_len,
const ipmi_addr_t addr2,
int  addr2_len
 

Definition at line 124 of file ipmi_utils.c.

References ipmi_addr::addr_type, ipmi_addr::channel, IPMI_IPMB_ADDR_TYPE, IPMI_LAN_ADDR_TYPE, IPMI_SYSTEM_INTERFACE_ADDR_TYPE, ipmi_lan_addr::local_SWID, ipmi_lan_addr::privilege, ipmi_lan_addr::remote_SWID, ipmi_lan_addr::session_handle, and ipmi_ipmb_addr::slave_addr.

Referenced by _ipmi_find_mc_by_addr().

00128 {
00129     if (addr1_len != addr2_len)
00130         return 0;
00131 
00132     if (addr1->addr_type != addr2->addr_type)
00133         return 0;
00134 
00135     if (addr1->channel != addr2->channel)
00136         return 0;
00137 
00138     /* Note that we do *not* include the LUN in address comparisons. */
00139     switch (addr1->addr_type)
00140     {
00141         case IPMI_IPMB_ADDR_TYPE:
00142         {
00143             ipmi_ipmb_addr_t *iaddr1 = (ipmi_ipmb_addr_t *) addr1;
00144             ipmi_ipmb_addr_t *iaddr2 = (ipmi_ipmb_addr_t *) addr2;
00145 
00146             return (iaddr1->slave_addr == iaddr2->slave_addr);
00147         }
00148 
00149         case IPMI_SYSTEM_INTERFACE_ADDR_TYPE:
00150             return 1;
00151 
00152         if (addr1->addr_type == IPMI_LAN_ADDR_TYPE) {
00153                 struct ipmi_lan_addr *lan_addr1
00154                         = (struct ipmi_lan_addr *) addr1;
00155                 struct ipmi_lan_addr *lan_addr2
00156                     = (struct ipmi_lan_addr *) addr2;
00157 
00158                 return ((lan_addr1->remote_SWID == lan_addr2->remote_SWID)
00159                         && (lan_addr1->local_SWID == lan_addr2->local_SWID)
00160                         && (lan_addr1->privilege == lan_addr2->privilege)
00161                         && (lan_addr1->session_handle
00162                             == lan_addr2->session_handle));
00163         }
00164 
00165         default:
00166             return 0;
00167     }
00168 }

unsigned int ipmi_addr_get_lun const ipmi_addr_t addr  ) 
 

Definition at line 171 of file ipmi_utils.c.

References ipmi_addr::addr_type, IPMI_IPMB_ADDR_TYPE, IPMI_LAN_ADDR_TYPE, IPMI_SYSTEM_INTERFACE_ADDR_TYPE, ipmi_ipmb_addr::lun, ipmi_system_interface_addr::lun, and ipmi_lan_addr::lun.

Referenced by ll_si_rsp_handler().

00172 {
00173     switch (addr->addr_type)
00174     {
00175         case IPMI_IPMB_ADDR_TYPE:
00176         {
00177             ipmi_ipmb_addr_t *iaddr = (ipmi_ipmb_addr_t *) addr;
00178 
00179             return iaddr->lun;
00180         }
00181 
00182         case IPMI_SYSTEM_INTERFACE_ADDR_TYPE:
00183         {
00184             ipmi_system_interface_addr_t *iaddr
00185                 = (ipmi_system_interface_addr_t *) addr;
00186 
00187             return iaddr->lun;
00188         }
00189 
00190         case IPMI_LAN_ADDR_TYPE:
00191         {
00192             struct ipmi_lan_addr *iaddr
00193                 = (struct ipmi_lan_addr *) addr;
00194 
00195             return iaddr->lun;
00196         }
00197 
00198         default:
00199             return 0;
00200     }
00201 }

unsigned int ipmi_addr_get_slave_addr const ipmi_addr_t addr  ) 
 

Definition at line 246 of file ipmi_utils.c.

References ipmi_addr::addr_type, IPMI_IPMB_ADDR_TYPE, and ipmi_ipmb_addr::slave_addr.

Referenced by _ipmi_event_get_generating_mc(), _ipmi_mc_get_device_id_data_from_rsp(), get_event_rcvr_done(), get_sel_time(), set_event_rcvr_done(), set_sel_time(), and startup_got_sel_time().

00247 {
00248     switch (addr->addr_type)
00249     {
00250         case IPMI_IPMB_ADDR_TYPE:
00251         {
00252             ipmi_ipmb_addr_t *iaddr = (ipmi_ipmb_addr_t *) addr;
00253 
00254             return iaddr->slave_addr;
00255         }
00256 
00257         default:
00258             return 0;
00259     }
00260 }

int ipmi_addr_set_lun ipmi_addr_t addr,
unsigned int  lun
 

Definition at line 204 of file ipmi_utils.c.

References ipmi_addr::addr_type, IPMI_IPMB_ADDR_TYPE, IPMI_LAN_ADDR_TYPE, IPMI_SYSTEM_INTERFACE_ADDR_TYPE, ipmi_ipmb_addr::lun, ipmi_system_interface_addr::lun, and ipmi_lan_addr::lun.

Referenced by ipmi_mc_send_command(), and ll_si_rsp_handler().

00205 {
00206     if (lun >= 4)
00207         return EINVAL;
00208 
00209     switch (addr->addr_type)
00210     {
00211         case IPMI_IPMB_ADDR_TYPE:
00212         {
00213             ipmi_ipmb_addr_t *iaddr = (ipmi_ipmb_addr_t *) addr;
00214 
00215             iaddr->lun = lun;
00216             break;
00217         }
00218 
00219         case IPMI_SYSTEM_INTERFACE_ADDR_TYPE:
00220         {
00221             ipmi_system_interface_addr_t *iaddr
00222                 = (ipmi_system_interface_addr_t *) addr;
00223 
00224             iaddr->lun = lun;
00225             break;
00226         }
00227 
00228         case IPMI_LAN_ADDR_TYPE:
00229         {
00230             struct ipmi_lan_addr *iaddr
00231                 = (struct ipmi_lan_addr *) addr;
00232 
00233             iaddr->lun = lun;
00234             break;
00235         }
00236 
00237         default:
00238             return EINVAL;
00239     }
00240 
00241     return 0;
00242 }


© sourcejam.com 2005-2008