On 03/26/2012 10:07 PM, Gowda, Srinivas G wrote:
> 
> 
> 
> Thanks,
> G
> srinivas_g_go...@dell.com
> DELL


Rewritten patch using macros.

Thanks,
G
srinivas_g_go...@dell.com
DELL
diff -Naurp 02-ipmitool_delloem_mac_update/lib/ipmi_delloem.c 
03-ipmitool_delloem_lan_update/lib/ipmi_delloem.c
--- 02-ipmitool_delloem_mac_update/lib/ipmi_delloem.c   2012-04-03 
17:51:36.000000000 +0530
+++ 03-ipmitool_delloem_lan_update/lib/ipmi_delloem.c   2012-04-03 
17:51:37.000000000 +0530
@@ -2485,6 +2485,15 @@ static int ipmi_delloem_lan_main (struct
                        {
                                ipmi_lan_usage();
                                return -1;
+                       } else if(INVAILD_FAILOVER_MODE == nic_selection) {
+                               printf(INVAILD_FAILOVER_MODE_STRING); 
+                               return 0;
+                       } else if(INVAILD_FAILOVER_MODE_SETTINGS == 
nic_selection){
+                               printf(INVAILD_FAILOVER_MODE_SET); 
+                               return 0;
+                       } else if(INVAILD_SHARED_MODE == nic_selection){
+                               printf(INVAILD_SHARED_MODE_SET_STRING); 
+                               return 0;
                        }                               
                
                        rc = ipmi_lan_set_nic_selection_12g(intf,nic_set);
@@ -2498,6 +2507,10 @@ static int ipmi_delloem_lan_main (struct
         {
             ipmi_lan_usage();
             return -1;
+                       }
+                       if(IMC_IDRAC_11G_MODULAR == IMC_Type) {
+                               printf(INVAILD_SHARED_MODE_SET_STRING); 
+                               return 0;                               
         }                               
         rc = ipmi_lan_set_nic_selection(intf,nic_selection);
                }               
@@ -2579,6 +2592,7 @@ int get_nic_selection_mode_12g (struct i
        if (NULL!= argv[current_arg] && 0 == strncmp(argv[current_arg], 
"dedicated\0", 10)) 
        {
                nic_set[0] = 1;
+               nic_set[1] = 0;
                return 0;
        }
        if (NULL!= argv[current_arg] && 0 == strncmp(argv[current_arg], 
"shared\0", 7)) 
@@ -2604,47 +2618,110 @@ int get_nic_selection_mode_12g (struct i
                current_arg++;  
        if (NULL!= argv[current_arg] && 0 == strncmp(argv[current_arg], 
"lom1\0", 5)) 
        {
+               if(IMC_IDRAC_12G_MODULAR == IMC_Type)
+               {
+                       return INVAILD_SHARED_MODE;
+               }
                if(failover) {
+                       if(nic_set[0] == 2)
+                       {
+                               return INVAILD_FAILOVER_MODE;   
+                       } else if(nic_set[0] == 1) {
+                               return INVAILD_FAILOVER_MODE_SETTINGS;  
+                       }               
                        nic_set[1] = 2;
                }       
                else {
+                       
                        nic_set[0] = 2;
+                       if(nic_set[1] == 2)
+                               nic_set[1] = 0; 
                }       
                return 0;
        }
        else if (NULL!= argv[current_arg] && 0 == strncmp(argv[current_arg], 
"lom2\0", 5)) 
        {
+       
+               if(IMC_IDRAC_12G_MODULAR == IMC_Type)
+               {
+                       return INVAILD_SHARED_MODE;
+               }
                if(failover) {          
-                       nic_set[1] = 3;
+                       if(nic_set[0] == 3)
+                       {
+                               return INVAILD_FAILOVER_MODE;   
+                       } else if(nic_set[0] == 1) {
+                               return INVAILD_FAILOVER_MODE_SETTINGS;  
+                       }                               
+                       nic_set[1] = 3;                 
                }       
                else {
                        nic_set[0] = 3;
+                       if(nic_set[1] == 3)
+                               nic_set[1] = 0; 
                }       
                return 0;
        }
        else if (NULL!= argv[current_arg] && 0 == strncmp(argv[current_arg], 
"lom3\0", 5)) 
        {
+       
+               if(IMC_IDRAC_12G_MODULAR == IMC_Type)
+               {
+                       return INVAILD_SHARED_MODE;
+               }
                if(failover) {  
-                       nic_set[1] = 4;
+                       if(nic_set[0] == 4)
+                       {
+                               return INVAILD_FAILOVER_MODE;   
+                       } else if(nic_set[0] == 1) {
+                               return INVAILD_FAILOVER_MODE_SETTINGS;  
+                       }                               
+                       nic_set[1] = 4;                 
+                       
                }       
                else {
                        nic_set[0] = 4;
+                       if(nic_set[1] == 4)
+                               nic_set[1] = 0; 
+                       
                }       
                return 0;
        } 
        else if (NULL!= argv[current_arg] && 0 == strncmp(argv[current_arg], 
"lom4\0", 5)) 
        {
+       
+               if(IMC_IDRAC_12G_MODULAR == IMC_Type)
+               {
+                       return INVAILD_SHARED_MODE;
+               }
                if(failover) {  
-                       nic_set[1] = 5;
+                       if(nic_set[0] == 5)
+                       {
+                               return INVAILD_FAILOVER_MODE;   
+                       } else if(nic_set[0] == 1) {
+                               return INVAILD_FAILOVER_MODE_SETTINGS;  
+                       }                               
+                       nic_set[1] = 5;                 
                }       
                else {
                        nic_set[0] = 5;
+                       if(nic_set[1] == 5)
+                               nic_set[1] = 0; 
+                       
                }       
                return 0;
        }       
        else if (failover && NULL!= argv[current_arg] && 0 == 
strncmp(argv[current_arg], "none\0", 5)) 
        {
+       
+               if(IMC_IDRAC_12G_MODULAR == IMC_Type)
+               {
+                       return INVAILD_SHARED_MODE;
+               }
                if(failover) {  
+                       if(nic_set[0] == 1) {
+                               return INVAILD_FAILOVER_MODE_SETTINGS;  
+                       }       
                        nic_set[1] = 0;
                }       
                return 0;
@@ -2658,6 +2735,14 @@ int get_nic_selection_mode_12g (struct i
        current_arg++;  
        if (failover && NULL!= argv[current_arg] && 0 == 
strncmp(argv[current_arg], "loms\0", 5)) 
        {
+       
+               if(IMC_IDRAC_12G_MODULAR == IMC_Type)
+               {
+                       return INVAILD_SHARED_MODE;
+               }
+               if(nic_set[0] == 1) {
+                       return INVAILD_FAILOVER_MODE_SETTINGS;  
+               }       
                nic_set[1] = 6;
                return 0;
        }       
@@ -2837,13 +2922,13 @@ static int ipmi_lan_get_nic_selection (s
                if ((nic_selection < 6) && (nic_selection > 0) && 
(nic_selection_failover < 7))
                {
                        if(nic_selection == 1) {
-                               printf 
("\n%s",NIC_Selection_Mode_String_12g[nic_selection-1]);
+                               printf 
("%s\n",NIC_Selection_Mode_String_12g[nic_selection-1]);
                        } else if(nic_selection) {
-                               printf ("\nShared LOM   :  
%s",NIC_Selection_Mode_String_12g[nic_selection-1]);
+                               printf ("Shared LOM   :  
%s\n",NIC_Selection_Mode_String_12g[nic_selection-1]);
                                if(nic_selection_failover  == 0)
-                                       printf ("\nFailover LOM :  None");
+                                       printf ("Failover LOM :  None\n");
                                else if(nic_selection_failover   >= 2 && 
nic_selection_failover   <= 6)
-                                       printf ("\nFailover LOM :  
%s",NIC_Selection_Mode_String_12g[nic_selection_failover + 3]);
+                                       printf ("Failover LOM :  
%s\n",NIC_Selection_Mode_String_12g[nic_selection_failover + 3]);
                        }
                                
                } 
@@ -2855,7 +2940,7 @@ static int ipmi_lan_get_nic_selection (s
        }
        else
        {
-    printf ("\n%s",NIC_Selection_Mode_String[nic_selection]);
+               printf ("%s\n",NIC_Selection_Mode_String[nic_selection]);
        }
 
     return 0;
@@ -2864,6 +2949,7 @@ static int ipmi_lan_get_nic_selection (s
 static int ipmi_lan_get_active_nic (struct ipmi_intf* intf)
 {
     uint8_t active_nic=0;
+       uint8_t current_lom =0;
 
     struct ipmi_rs * rsp;
     struct ipmi_rq req;
@@ -2896,9 +2982,38 @@ static int ipmi_lan_get_active_nic (stru
             val2str(rsp->ccode, completion_code_vals) );
         return -1;
     }
-    active_nic = rsp->data[0];
-    if (active_nic < 5)
-        printf ("\n%s",AciveLOM_String[active_nic]);
+       
+       current_lom = rsp->data[0];
+       
+    input_length = 0;
+
+       msg_data[input_length++] = 1; //Get Link status
+       msg_data[input_length++] = 0; //Reserved
+       msg_data[input_length++] = 0; //Reserved        
+       
+       req.msg.netfn = DELL_OEM_NETFN;
+       req.msg.lun = 0;                
+       req.msg.cmd = GET_ACTIVE_NIC_CMD;
+       req.msg.data = msg_data;
+       req.msg.data_len = input_length;
+  
+       rsp = intf->sendrecv(intf, &req);
+       if (rsp == NULL)
+       {
+               lprintf(LOG_ERR, " Error in getting Active LOM Status");
+               return -1;
+       }
+       else if (rsp->ccode > 0) 
+       {
+               lprintf(LOG_ERR, " Error in getting Active LOM Status (%s) \n",
+                 val2str(rsp->ccode, completion_code_vals) );
+               return -1;
+       }
+       active_nic = rsp->data[1];
+       if (current_lom < 5 && active_nic)
+               printf ("\n%s\n",AciveLOM_String[current_lom]);
+       else
+               printf ("\n%s\n",AciveLOM_String[5]);
 
     return 0;
 }      
------------------------------------------------------------------------------
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2
_______________________________________________
Ipmitool-devel mailing list
Ipmitool-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ipmitool-devel

Reply via email to