Hello gentlemen,

I'm hopeful that it's not totally late to submit a fix and an IANA patch
for 1.8.10. If it's too late for the changes to be included in 1.8.10,
please just commit them into the CVS.

The lan-msg-bridge-fix.diff patch fixes an issue in the LAN driver with
bridging messages for IPMI sessions without authentication. It also adds
capability of handling AMC.0- and uTCA-style bridging, in which
responses to bridged messages are incorporated into responses of the
Send Message command instead of delivering separately.

The pps-iana.diff patch adds Pigeon Point's IANA and string.

Best regards,
Dmitry


--- src/plugins/lan/lan.c.org   Tue Jul 22 17:41:24 2008
+++ src/plugins/lan/lan.c       Tue Jul 22 17:38:02 2008
@@ -575,25 +575,38 @@ ipmi_lan_poll_recv(struct ipmi_intf * in
                                                         "bridge command 
response");
                                        }
                                        /* bridged command: lose extra header */
-                                       if (rsp->payload.ipmi_response.cmd == 
0x34) {
-                                               if (rsp->data_len == 38) {
+                                       if (rsp->payload.ipmi_response.netfn == 
7 &&
+                                               rsp->payload.ipmi_response.cmd 
== 0x34) {
+                                               if (rsp->data_len - x - 1 == 0) 
{
                                                        rsp = !rsp->ccode ? 
ipmi_lan_recv_packet(intf) : NULL;
                                                        if (rsp && !rsp->ccode 
&&
                                                                
intf->transit_addr != intf->my_addr &&
                                                                
intf->transit_addr != 0 &&
-                                                           (rsp->data[34] >> 
2) == entry->rq_seq) {
+                                                           (rsp->data[x - 3] 
>> 2) == entry->rq_seq) {
                                                                /* double 
bridging: remove the Send Message prologue */
-                                                               
memmove(rsp->data + 29, rsp->data + 36,
-                                                                       
rsp->data_len - 36);
-                                                               rsp->data[28] 
-= 8;
+                                                               
memmove(rsp->data + x - 7, rsp->data + x,
+                                                                       
rsp->data_len - x - 1);
+                                                               rsp->data[x - 
8] -= 8;
                                                                rsp->data_len 
-= 8;
-                                                               entry->rq_seq = 
rsp->data[34] >> 2;
+                                                               entry->rq_seq = 
rsp->data[x - 3] >> 2;
                                                        }
                                                        entry->req.msg.cmd = 
entry->req.msg.target_cmd;
                                                        if (rsp == NULL) {
                                                            
ipmi_req_remove_entry(entry->rq_seq, entry->req.msg.cmd);
                                                        }
                                                        continue;
+                                               } else {
+                                                   /* The bridged answer data 
are inside the incoming packet */
+                                                   char bridge_cnt =
+                                                       1 + (intf->transit_addr 
!= intf->my_addr && intf->transit_addr != 0);
+                                                   memmove(rsp->data + x - 7,
+                                                           rsp->data + x + 7 * 
(bridge_cnt - 1), 
+                                                           rsp->data_len - (x 
+ 7 * (bridge_cnt - 1)));
+                                                   rsp->data[x - 8] -= 8 * 
bridge_cnt;
+                                                   rsp->data_len -= 8 * 
bridge_cnt;
+                                                   entry->rq_seq = rsp->data[x 
- 3] >> 2;
+                                                   entry->req.msg.cmd = 
entry->req.msg.target_cmd;
+                                                   continue;
                                                }
                                        } else {
                                                //x += 
sizeof(rsp->payload.ipmi_response);

Index: include/ipmitool/ipmi.h
===================================================================
RCS file: /cvsroot/ipmitool/ipmitool/include/ipmitool/ipmi.h,v
retrieving revision 1.29
diff -p -u -p -u -r1.29 ipmi.h
--- include/ipmitool/ipmi.h     19 Jul 2008 00:02:27 -0000      1.29
+++ include/ipmitool/ipmi.h     22 Jul 2008 14:11:18 -0000
@@ -265,6 +265,7 @@ typedef enum IPMI_OEM {
      IPMI_OEM_PICMG      = 12634,
      IPMI_OEM_RARITAN    = 13742,
      IPMI_OEM_KONTRON    = 15000,
+     IPMI_OEM_PPS        = 16394,
      IPMI_OEM_AMI        = 20974,
      IPMI_OEM_NOKIA_SIEMENS_NETWORKS = 28458
 } IPMI_OEM;
Index: lib/ipmi_strings.c
===================================================================
RCS file: /cvsroot/ipmitool/ipmitool/lib/ipmi_strings.c,v
retrieving revision 1.29
diff -p -u -p -u -r1.29 ipmi_strings.c
--- lib/ipmi_strings.c  19 Jul 2008 00:02:28 -0000      1.29
+++ lib/ipmi_strings.c  22 Jul 2008 14:11:46 -0000
@@ -66,6 +66,7 @@ const struct valstr ipmi_oem_info[] = {
    { IPMI_OEM_HITACHI_399,            "Hitachi" },
    { IPMI_OEM_NOKIA_SIEMENS_NETWORKS, "Nokia Siemens Networks" },
    { IPMI_OEM_BULL,                   "Bull Company" },
+   { IPMI_OEM_PPS,                    "Pigeon Point Systems" },
    { 0xffff , NULL },
 };
 

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Ipmitool-devel mailing list
Ipmitool-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ipmitool-devel

Reply via email to