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-03-06 18:58:36.000000000 +0530
+++ 03-ipmitool_delloem_lan_update/lib/ipmi_delloem.c	2012-03-06 19:01:57.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;
 }      
------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Ipmitool-devel mailing list
Ipmitool-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ipmitool-devel

Reply via email to