RE: [Freeipmi-devel] FW: [bug #24300] ipmiconsole cannot connect to various Intel servers

2008-12-08 Thread Cress, Andrew R
Al,

For the CTS_MASK, I'm not where I can pull this up, but I thought that this 
option was something that could be detected.  IIRC, I think all BMCs will work 
with this FALSE, but only some support it with TRUE.

For the status loop, I'd first assume a software bug, before pointing to the 
time-tested and fully validated firmware.  The point of the get activation 
payload status is to prevent multiple activate payload commands from being 
issued from one client.

Andy



-Original Message-
From: Al Chu [mailto:[EMAIL PROTECTED]
Sent: Monday, December 08, 2008 2:34 PM
To: Cress, Andrew R
Cc: freeipmi-devel@gnu.org
Subject: RE: [Freeipmi-devel] FW: [bug #24300] ipmiconsole cannot connect to 
various Intel servers

Hey Andrew,

For fi4.log I see a return code of CCh = Invalid data field in Request
for the Activate Payload command.  Comparing FreeIPMI's code to your
code in ipmiutil, I see:

  if (mfg == VENDOR_INTEL)
   ibuf[2] |= SOL_BMC_ASSERTS_CTS_MASK_TRUE;
  else ibuf[2] |= SOL_BMC_ASSERTS_CTS_MASK_FALSE;

So I would assume this is yet another intel specific workaround?  I
can't (code auditting wise) see another difference in the packets.

For fi3.log

I definitely got a cycle in my state machine.  I should (at minimum)
monitor and exit after some number of failed attempts for this state-
machine cycle.

It seems that the get payload activation status request always returns
that SOL is not active.  But whenever the activate payload command is
executed, it responds w/ 80h = payload already active.  The current
state machine moves back to get payload activation status to
(hopefully) verify that the session is now active, so that it can then
move on to deactivate payload.

Since one of these commands is continuously returning bad data, the
cycle results.   So I assume there is a bug in the Intel firmware
somewhere in here.  Perhaps the fix to the activate payload command up
above (from fi4.log) would be enough to make the activate payload
command work?

I'll put a fix in for these and e-mail you a beta link.

Thanks for all the help.

Al

On Mon, 2008-12-08 at 10:35 -0800, Al Chu wrote:
 Hey Andrew,

 Cool.  These logs show that we're fully authenticating, so the hard
 Intel IPMI 2.0 workarounds are over.  So there is something in the
 libipmiconsole state machine that it is stuck on.  Likely some corner
 case b/c I do things differently than ipmitool/ipmiutil.

 I'll take a look into it.

 Al

 On Mon, 2008-12-08 at 10:27 -0800, Cress, Andrew R wrote:
  Al,
 
  Oops.  I forgot the -W intel20 option.
  Here are logs with that included, and debug.
  The problem seems to be with the Trailer now.
  It flags a BMC Error message to one system and repeats the cycle forever 
  on another system.
 
  Both of these can activate SOL sessions via ipmitool and ipmiutil.
  It may be just one more tweak is needed.
 
  Andy
 
  -Original Message-
  From: Al Chu [mailto:[EMAIL PROTECTED]
  Sent: Monday, December 08, 2008 1:13 PM
  To: Cress, Andrew R
  Cc: freeipmi-devel@gnu.org
  Subject: RE: [Freeipmi-devel] FW: [bug #24300] ipmiconsole cannot connect 
  to various Intel servers
 
  Hey Andrew,
 
  Hmmm, the BMC Busy error seems justified.
 
  telco64: --
  telco64: [  93h] = message_tag[ 8b]
  telco64: [   1h] = rmcpplus_status_code[ 8b]
 
  1h = Insufficient resources to create a session
 
  So I think this error is legit given the response.  Any idea why the
  board would respond with this type of error code?  Could it be to many
  failed connection attempts?  I remember an Intel IPMI 1.5 board I played
  with would not be very responsive if there were many failed connections
  in a row.
 
  telco64: =
  telco64: IPMI 2.0 Open Session Request
  telco64: =
  snip
  telco64: IPMI Command Data:
  telco64: --
  telco64: [  C5h] = message_tag[ 8b]
  telco64: [   0h] = requested_maximum_privilege_level[ 4b]
 
  telco64: =
  telco64: IPMI 2.0 Open Session Response
  telco64: =
  snip
  telco64: IPMI Command Data:
  telco64: --
  telco64: [  C5h] = message_tag[ 8b]
  telco64: [   0h] = rmcpplus_status_code[ 8b]
  telco64: [   0h] = maximum_privilege_level[ 4b]
 
  (ipmiconsole_checks.c,
  ipmiconsole_check_open_session_response_privilege, 610):
  hostname=telco64; protocol_state=0x2: open session response privilege
  check failed; p = 3^M
  [error received]: privilege level cannot be obtained for this user
 
  I'll have to look into this.  0h = IPMI_PRIVILEGE_LEVEL_HIGHEST_LEVEL,
  which should not be done for the Intel boards when the intel workaround
  is specified.
 
/* IPMI Workaround
 *
 * Intel IPMI 2.0 implementations don't

[Freeipmi-devel] FW: [bug #24300] ipmiconsole cannot connect to various Intel servers

2008-12-05 Thread Cress, Andrew R
Retry, first send failed.

-Original Message-
From: Cress, Andrew R [mailto:[EMAIL PROTECTED] 
Sent: Friday, December 05, 2008 8:43 AM
To: Albert Chu; Bryan Henderson; Andy Cress; freeipmi-devel@gnu.org
Subject: RE: [bug #24300] ipmiconsole cannot connect to various Intel servers

Al,

This was the first time I had tried ipmiconsole, so I don't know if it worked 
before or what changed.  

For an example of what is different with Intel boards, you can view the source 
to ipmitool or ipmiutil under the 'lanplus' protocol.  It boils down to some 
different assumptions about defaults or special conditions.
In ipmitool, the syntax requires specifying -o intelplus, but ipmiutil 
detects the manufacturer/product id first and doesn't need those options.  

From ipmiutil:
lib/lanplus/lanplus.c:is_sol_partial_ack() has an intelplus special case, which 
probably should apply to all other boards too (?)
lib/lanplus/lanplus.c:ipmi_lanplus_open_session() has an intelplus condition 
for privilege defaults
lib/lanplus/lanplus_crypt.c:lanplus_rakp4_hmac_matches() has two intelplus cases
lib/lanplus/lanplus_crypt.c:lanplus_generate_rakp3_authcode() has an intelplus 
case for privilege defaults

That's all that is different.

Andy

-Original Message-
From: Albert Chu [mailto:[EMAIL PROTECTED] 
Sent: Thursday, December 04, 2008 5:47 PM
To: Albert Chu; Bryan Henderson; Andy Cress; freeipmi-devel@gnu.org
Subject: [bug #24300] ipmiconsole cannot connect to various Intel servers


Follow-up Comment #2, bug #24300 (project freeipmi):

Sorry I didn't see these posts earlier.  Hopefully I've fixed the config on
Savannah so that bugs actually send out e-mails to the mailing list.

I implemented the Intel workarounds a long time ago, but no longer have an
Intel motherboard.  So I've been forward porting the patches since then and
praying they still work and I didn't mess anything up along the way.  I guess
something is messed up or there is something new to workaround.

Hopefully I can find an Intel mobo to try and fix this on.  I'm going through
the code right now visually and can't see a workaround issue.

Al

P.S.  Bryan, I can see how the wording of the manpage was misinterpreted to
make you think I note the manual mentions this can happen with
--workaround=intel20, but it doesn't mention anything to do about it. .  I'm
going to fix up the manpage to instead say:

There are a number of Intel IPMI 2.0 bugs.  These problems may cause
username invalid, password invalid, or k_g invalid errors to occur. 
They can be worked around by specifying the intel20 workaround.


___

Reply to this item at:

  http://savannah.gnu.org/bugs/?24300

___
  Message sent via/by Savannah
  http://savannah.gnu.org/





___
Freeipmi-devel mailing list
Freeipmi-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/freeipmi-devel


RE: [Freeipmi-devel] FW: [bug #24300] ipmiconsole cannot connect to various Intel servers

2008-12-05 Thread Cress, Andrew R
Al,

  /* IPMI Workaround (achu)
   *
   * Discovered on SE7520AF2 with Intel Server Management Module
   * (Professional Edition)
   *
   * The username must be padded despite explicitly not being
   * allowed.  No Null characters (00h) are allowed in the name.
   * Table 13-11 in the IPMI 2.0 spec.
   */
Hmmm.  This is because when the set username command is issued, the command 
data is padded with nulls to 16 bytes, as shown in secion 22.28, and that is 
common across most of the spec.  But Table 13-11 is an exception to the rest of 
IPMI username handling, in that it is not a fixed-length 16-byte entity.  This 
is implemented the same in most Intel BMCs that are currently available.  In 
ipmiutil, this RAKP1 stuff is handled the same way that ipmitool does, by ...

  /* IPMI Workaround (achu)
   *
   * Discovered on SE7520AF2 with Intel Server Management Module
   * (Professional Edition)
   *
   * When the authentication algorithm is HMAC-MD5-128 and the
   * password is greater than 16 bytes, the Intel BMC truncates the
   * password to 16 bytes when generating keys, hashes, etc.  So we
   * have to do the same when generating keys, hashes, etc.
   */
I doubt that the IMM firmware supported 20-byte passwords (the first Intel BMC 
with IPMI 2.0), but some other Intel BMCs do, I believe.  Ipmiutil currently 
does not handle 20-byte passwords, and that could be done conditionally on 
certain systems, but if we are talking about managing passwords for hundreds of 
servers where some support 16 bytes and some support 20 bytes, all of the 
passwords would be restricted to 16-bytes anyway, and the IPMI 2.0 spec 
requires support/compatibility for 16-byte passwords for this reason.  We don't 
have any customers who have a use-case where 20-byte passwords would be used, 
so I haven't implemented the logic for it.  


-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Al Chu
Sent: Friday, December 05, 2008 1:27 PM
To: Cress, Andrew R
Cc: freeipmi-devel@gnu.org
Subject: Re: [Freeipmi-devel] FW: [bug #24300] ipmiconsole cannot connect to 
various Intel servers

Hey Andrew,

On Fri, 2008-12-05 at 09:14 -0800, Cress, Andrew R wrote:
 Retry, first send failed.
 
 -Original Message-
 From: Cress, Andrew R [mailto:[EMAIL PROTECTED] 
 Sent: Friday, December 05, 2008 8:43 AM
 To: Albert Chu; Bryan Henderson; Andy Cress; freeipmi-devel@gnu.org
 Subject: RE: [bug #24300] ipmiconsole cannot connect to various Intel servers
 
 Al,
 
 This was the first time I had tried ipmiconsole, so I don't know if it worked 
 before or what changed.  
 
 For an example of what is different with Intel boards, you can view the 
 source to ipmitool or ipmiutil under the 'lanplus' protocol.  It boils down 
 to some different assumptions about defaults or special conditions.
 In ipmitool, the syntax requires specifying -o intelplus, but ipmiutil 
 detects the manufacturer/product id first and doesn't need those options.  
 
 From ipmiutil:
 lib/lanplus/lanplus.c:is_sol_partial_ack() has an intelplus special case, 
 which probably should apply to all other boards too (?)

Yeah, I'm not quite sure why this would be an intel corner case.  Does
intel return 0 for the accepted_character_count even if it accepted all
the data?  So a return of 0 is just assumed to be equivalent to all
data accepted??  I don't currently handle this case in ipmiconsole.
The assumption is if you didn't accept any data, then you resend data
just as if there was a partial acceptance.

 lib/lanplus/lanplus.c:ipmi_lanplus_open_session() has an intelplus condition 
 for privilege defaults

I handle this one:

  /* IPMI Workaround
   *
   * Intel IPMI 2.0 implementations don't support the highest level 
privilege.
   */
  if (c-config.workaround_flags  IPMICONSOLE_WORKAROUND_INTEL_2_0_SESSION)
privilege_level = c-config.privilege_level;
  else
privilege_level = IPMI_PRIVILEGE_LEVEL_HIGHEST_LEVEL;

 lib/lanplus/lanplus_crypt.c:lanplus_rakp4_hmac_matches() has two intelplus 
 cases

handle this one:

  /* IPMI Workaround
   *
   * Intel IPMI 2.0 implementations respond with the integrity check
   * value based on the integrity algorithm rather than the
   * authentication algorithm.
   */
  if (c-config.workaround_flags  IPMICONSOLE_WORKAROUND_INTEL_2_0_SESSION)
{
  if (c-config.integrity_algorithm == IPMI_INTEGRITY_ALGORITHM_NONE)
authentication_algorithm = IPMI_AUTHENTICATION_ALGORITHM_RAKP_NONE;
  else if (c-config.integrity_algorithm == 
IPMI_INTEGRITY_ALGORITHM_HMAC_SHA1_96)
authentication_algorithm = IPMI_AUTHENTICATION_ALGORITHM_RAKP_HMAC_SHA1;
  else if (c-config.integrity_algorithm == 
IPMI_INTEGRITY_ALGORITHM_HMAC_MD5_128)
authentication_algorithm = IPMI_AUTHENTICATION_ALGORITHM_RAKP_HMAC_MD5;
  else if (c-config.integrity_algorithm

RE: [Freeipmi-devel] PEF alert policy

2007-12-05 Thread Cress, Andrew R
Al,

In a separate email, this problem was resolved by fixing the following 3 
mis-configured parameters:
 PEF Alert Policy[1]: 01 10 11 00 Disabled(10-18 to enable this PEF 
 policy)
 Lan Param(13) Def gateway MAC: 00 00 00 00 00 00   (set to the correct MAC)
 Lan Param(18) Dest type: 01 00 00 00 00  (dest disabled, should be 
 enabled)
With those fixed, he was able to make it work.

Andy

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Al Chu
Sent: Monday, December 03, 2007 11:46 AM
To: Андрей Судаков
Cc: freeipmi-devel@gnu.org
Subject: Re: [Freeipmi-devel] PEF alert policy

Hi, 

I don't know the ipmiutil output below.  If you can send the output of
pef-config, I might be able to see something that could be wrong in
that.

Al

On Mon, 2007-12-03 at 11:45 +0300, Андрей Судаков wrote:
 Hello!
 I try to set up BMC alerting - i want setup my host (IBM server) with
 FreeBSD to sent alert to my IBM Director's host via snmp.
 I try following utilities ftom ports: freeipmi anf ipmitool
 I can set IP adreess of BMC controller, netmask, gw, i can set IP
 adress of destination host and alert type to PET, but i can't set PEF
 alert policy. 
 'ipmitool pef policy' in null
 I've try freeipmi - 'pef-config - o pef_file', setup policy in with
 file and load it to bmc controller via 'pef-config --commit -f
 pef_file', but nothing cange 
 How can i enable alert policy? May be i can use RAW?
 
 This is my config, obtained via remote by pefconfig
 
 pefconfig ver 2.4 
 Opening connection to node 172.16.9.91 ...
 Connected to node 172.16.9.91
 -- BMC version 1.27, IPMI version 2.0 
 
 pefconfig: GetPefEntry ...
 PEFilter(01): 01 Temperature event - enabled for alert
 PEFilter(02): 07 BIOS event - enabled for alert 
 PEFilter(03): 08 Power Supply event - enabled for alert
 PEFilter(04): 08 Power Supply event - enabled for alert
 PEFilter(05): 02 Voltage event - enabled for alert
 PEFilter(06): 02 Voltage event - enabled for alert 
 PEFilter(07): 02 Voltage event - enabled for alert
 PEFilter(08): 1b Other event - enabled for alert
 PEFilter(09): ff Other event - enabled for alert
 PEFilter(10): empty
 PEFilter(11): 12 System Restart event - enabled for alert 
 PEFilter(12): 20 OS Critical Stop event - enabled for alert
 PEFilter(13): 09 Power Unit event - enabled for alert
 PEFilter(14): 09 Power Unit event - enabled for alert
 PEFilter(15): 09 Power Unit event - enabled for alert 
 PEFilter(16): 09 Power Unit event - enabled for alert
 GetPefEntry(6/17): completion code=c9
 GetPefEntry(17), ret = -1
 GetPefEntry(6/18): completion code=c9
 GetPefEntry(18), ret = -1
 GetPefEntry(6/19): completion code=c9 
 GetPefEntry(19), ret = -1
 GetPefEntry(6/20): completion code=c9
 GetPefEntry(20), ret = -1
 PEF Control: 03 PEFenable DoEventMsgs 
 PEF Actions: 0e PwrDn Reset PwrCyc 
 PEF Startup Delay: 60 sec
 PEF Alert Startup Delay: 60 sec 
 PEF Alert Policy[1]: 01 10 11 00 Disabled 
 PEF Alert Policy[2]: 02 00 00 00 Disabled 
 PEF Alert Policy[3]: 03 00 00 00 Disabled 
 PEF Alert Policy[4]: 04 00 00 00 Disabled 
 
 pefconfig: GetLanEntry for channel 1 ... 
 Lan Param(0) Set in progress: 01 
 Lan Param(1) Auth type support: 17 None MD2 MD5 Pswd 
 Lan Param(2) Auth type enables: 17 17 17 17 00 
 Lan Param(3) IP address: 172 16 9 91 
 Lan Param(4) IP addr src: 01 Static 
 Lan Param(5) MAC addr: 00 14 5e f9 eb ef 
 Lan Param(6) Subnet mask: 255 255 0 0 
 Lan Param(7) IPv4 header: 40 40 10 
 Lan Param(10) BMC grat ARP : 03 
 Lan Param(11) grat ARP interval: 04 
 Lan Param(12) Def gateway IP: 172 16 0 1 
 Lan Param(13) Def gateway MAC: 00 00 00 00 00 00 
 Lan Param(14) Sec gateway IP: 0 0 0 0 
 Lan Param(15) Sec gateway MAC: 00 00 00 00 00 00 
 Lan Param(16) Community string: public 
 Lan Param(17) Num dest: 04 
 Lan Param(18) Dest type: 01 00 00 00 00 
 Lan Param(18) Dest type: 02 00 00 00 00 
 Lan Param(18) Dest type: 03 80 00 00 00 
 Lan Param(18) Dest type: 04 00 00 00 00 
 Lan Param(19) Dest address: 01 00 00 [172 16 6 248] 00 1b fc a3 d0 27 
 Lan Param(19) Dest address: 02 00 00 [172 16 6 248] ff ff ff ff ff ff 
 Lan Param(19) Dest address: 03 00 00 [0 0 0 0] ff ff ff ff ff ff 
 Lan Param(19) Dest address: 04 00 00 [0 0 0 0] ff ff ff ff ff ff 
 GetLanEntry: completion code=80 
 GetLanEntry(192), ret = -1
 GetLanEntry: completion code=80
 GetLanEntry(193), ret = -1
 GetLanEntry: completion code=80
 GetLanEntry(194), ret = -1
 GetChanAcc(lan), ret = 0, new value = 02
 Access = Always Avail, PEF Alerts Enabled 
 Channel Access Mode(Lan): 02 04 
 GetSOL for channel 1 ...
 SOL Enable: 01 enabled
 SOL Auth: 82 User 
 SOL Accum Interval: 1e c8 150 msec
 SOL Retry Interval: 07 30 480 msec
 SOL nvol Baud Rate: 07 19.2k 
 SOL vol Baud Rate: 07 19.2k
 SOL Payload Access(1,1): 00 00 00 00 disabled
 SOL Payload Support(1): 03 00 3f 00 00 00 00 00 
 Get User Access(1): 04 04 01 34 IPMI, Admin ()
 Get User Access(2): 04 04 01 34 IPMI, Admin (USERID) 
 Get User Access(3): 04 04 01 13 IPMI, Operator 

[Freeipmi-devel] ipmi_lan_sendto bug

2006-07-07 Thread Cress, Andrew R
This routine didn't seem to work at all in freeipmi-0.2.2-qa0 (would
call sendto with NULL pointer).  The routine is below, with the two
changes are commented with ARC:.

Andy
---

ssize_t 
ipmi_lan_sendto (int sockfd, 
 const void *buffer, 
 size_t buffer_size, 
 int flags, 
 const struct sockaddr *server_addr, 
 socklen_t server_addr_len)
{
  void *packet = NULL;
  size_t packet_length = 0;
  ssize_t bytes_sent = 0;
  int fusepad = 0;
  
  if (buffer == NULL || buffer_size == 0 || server_addr == NULL)
{
  errno = EINVAL;
  return (-1);
}
  
  /*
Note from Table 12-8, RMCP Packet for IPMI via Ethernet footnote
Some LAN adapter chips may have a problem where packets of overall
lengths 56, 84, 112, 128, or 156 are not handled correctly. The
PAD byte is added as necessary to avoid these overall
lengths. Remote console software must use the PAD byte when
formatting packets to any 10/100 Ethernet device that accepts RMCP
packets. -- Anand Babu
  */
  
  if (buffer_size == 56  ||
  buffer_size == 84  ||
  buffer_size == 112 ||
  buffer_size == 128 ||
  buffer_size == 156)
{
  packet_length = buffer_size + IPMI_LAN_PKT_PAD_SIZE;
  packet = alloca (packet_length);
  memset (packet, 0, packet_length);
  memcpy (packet, buffer, buffer_size);
  fusepad = 1;
} else {  /* ARC: was missing */
  packet_length = buffer_size;
  packet = buffer;
}
  
  bytes_sent = sendto (sockfd, 
   packet, 
   packet_length, 
   flags, 
   server_addr, 
   server_addr_len);
  
  if (bytes_sent == -1)
return (-1);
  
  if (fusepad)  /* ARC: change condition */
return (bytes_sent - IPMI_LAN_PKT_PAD_SIZE);
  
  return bytes_sent;
}


___
Freeipmi-devel mailing list
Freeipmi-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/freeipmi-devel


RE: [Freeipmi-devel] ipmi_lan_sendto bug

2006-07-07 Thread Cress, Andrew R
BTW, at ipmi-lan-interface:1541:
   fd_set fd_set;  
Gives FD_ZERO macro errors with several compiler versions, so
   fd_set fd_set1; 
Or similar should be used.

Andy 

-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On
Behalf Of Cress, Andrew R
Sent: Friday, July 07, 2006 4:35 PM
To: freeipmi-devel@gnu.org
Subject: [Freeipmi-devel] ipmi_lan_sendto bug

This routine didn't seem to work at all in freeipmi-0.2.2-qa0 (would
call sendto with NULL pointer).  The routine is below, with the two
changes are commented with ARC:.

Andy
---

ssize_t 
ipmi_lan_sendto (int sockfd, 
 const void *buffer, 
 size_t buffer_size, 
 int flags, 
 const struct sockaddr *server_addr, 
 socklen_t server_addr_len)
{
  void *packet = NULL;
  size_t packet_length = 0;
  ssize_t bytes_sent = 0;
  int fusepad = 0;
  
  if (buffer == NULL || buffer_size == 0 || server_addr == NULL)
{
  errno = EINVAL;
  return (-1);
}
  
  /*
Note from Table 12-8, RMCP Packet for IPMI via Ethernet footnote
Some LAN adapter chips may have a problem where packets of overall
lengths 56, 84, 112, 128, or 156 are not handled correctly. The
PAD byte is added as necessary to avoid these overall
lengths. Remote console software must use the PAD byte when
formatting packets to any 10/100 Ethernet device that accepts RMCP
packets. -- Anand Babu
  */
  
  if (buffer_size == 56  ||
  buffer_size == 84  ||
  buffer_size == 112 ||
  buffer_size == 128 ||
  buffer_size == 156)
{
  packet_length = buffer_size + IPMI_LAN_PKT_PAD_SIZE;
  packet = alloca (packet_length);
  memset (packet, 0, packet_length);
  memcpy (packet, buffer, buffer_size);
  fusepad = 1;
} else {  /* ARC: was missing */
  packet_length = buffer_size;
  packet = buffer;
}
  
  bytes_sent = sendto (sockfd, 
   packet, 
   packet_length, 
   flags, 
   server_addr, 
   server_addr_len);
  
  if (bytes_sent == -1)
return (-1);
  
  if (fusepad)  /* ARC: change condition */
return (bytes_sent - IPMI_LAN_PKT_PAD_SIZE);
  
  return bytes_sent;
}


___
Freeipmi-devel mailing list
Freeipmi-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/freeipmi-devel


___
Freeipmi-devel mailing list
Freeipmi-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/freeipmi-devel


[Freeipmi-devel] Need to issue commands to non-BMC slave addresses

2005-05-25 Thread Cress, Andrew R

In my utilities, there are a few cases where IPMI commands (for FRU)
need to be sent to a slave address other than the BMC slave address
(0x20).  For instance, in our platforms the HotSwap Controller has IPMI
FRU data at slave address 0xC0.  
I currently have no way of passing a different slave address to
ipmi_kcs_cmd_interruptible() or  ipmi_lan_cmd().

I noticed that fill_lan_msg_hdr() inserts a constant BMC slave address,
but I didn't find where the kcs template had a place for the slave
address.

Comments/advice?

Andy



___
Freeipmi-devel mailing list
Freeipmi-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/freeipmi-devel


RE: [Freeipmi-devel] Need to issue commands to non-BMC slave addresses

2005-05-25 Thread Cress, Andrew R
Al,

Thanks for the tip about fidd_obj_set().

The IPMI FRU commands to the HSC are still SMS messages, just the target
has a different slave address.  (See IPMI 2.0 section 5, pg 37,
Requester's ID) This problem becomes decidedly more acute with bladed
systems.  So, there needs to be a method for both local (KCS or SSIF)
and remote (LAN or Serial) addressing to cover it.  Perhaps adding a
parameter to the functions, a field to the template, etc.

Does this need a bugzilla to track it?  

Andy 

-Original Message-
From: Albert Chu [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, May 25, 2005 12:12 PM
To: Cress, Andrew R
Cc: GNU FreeIPMI Developers
Subject: Re: [Freeipmi-devel] Need to issue commands to non-BMC slave
addresses

Hey Andrew,

 Comments/advice?

For lan, in the short term, I think the best thing to do is to use the
fiid_obj_set() function to manually set the field rs_addr of the
tmpl_lan_msg_hdr_rq template.  I'm not quite sure what to for KCS
though.  As far as I can tell, it can only go to the BMC and nothing
else.  According to the IPMI 2.0 spec, beginning of Chapter 9.

The KCS interface is specified solely for SMS messages

indicating it can't be done??  AB, your thoughts?

For the long term though, I believe this has to be fixed in the
libfreeipmi library API somehow.  We simply assume all transactions go
to the BMC slave address, but its apparently not a correct assumption.
I'll add it to the todo list.

Al

--
Albert Chu
[EMAIL PROTECTED]
Lawrence Livermore National Laboratory

- Original Message -
From: Cress, Andrew R [EMAIL PROTECTED]
Date: Wednesday, May 25, 2005 8:50 am
Subject: [Freeipmi-devel] Need to issue commands to non-BMC slave
addresses

 
 In my utilities, there are a few cases where IPMI commands (for FRU)
 need to be sent to a slave address other than the BMC slave address
 (0x20).  For instance, in our platforms the HotSwap Controller has 
 IPMIFRU data at slave address 0xC0.  
 I currently have no way of passing a different slave address to
 ipmi_kcs_cmd_interruptible() or  ipmi_lan_cmd().
 
 I noticed that fill_lan_msg_hdr() inserts a constant BMC slave 
 address,but I didn't find where the kcs template had a place for 
 the slave
 address.
 
 Comments/advice?
 
 Andy
 
 
 
 ___
 Freeipmi-devel mailing list
 Freeipmi-devel@gnu.org
 http://lists.gnu.org/mailman/listinfo/freeipmi-devel
 



___
Freeipmi-devel mailing list
Freeipmi-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/freeipmi-devel