Przeglądaj źródła

add present to getAllBladeInfo

zhangbo 3 lat temu
rodzic
commit
519d2a5049

+ 60 - 0
app/bmc/Api.c

@@ -1065,4 +1065,64 @@ int UpdateFlash(void)
 	FlushIPMIToFlash();
 	FlushFRUToFlash();
 	return 0;
+}
+
+int InitChannelTab(void)
+{
+	int i;
+	//primary IPMB channel
+	g_BMCInfo.ChannelTab[0].ChannelNumber = 0;
+	g_BMCInfo.ChannelTab[0].ChannelProtocol = 1;//Used for IPMB, serial/modem Basic Mode, and LAN.reference IPMIv2.0 Table 6-2
+	g_BMCInfo.ChannelTab[0].ChannelMedium = 1;	//IPMB, reference IPMIv2.0 Table 6-3 
+	g_BMCInfo.ChannelTab[0].SessionSupport = 0;	//session less
+	g_BMCInfo.ChannelTab[0].ActiveSession = 0;
+	g_BMCInfo.ChannelTab[0].ProtocolVendorId[0] = 0x12;
+	g_BMCInfo.ChannelTab[0].ProtocolVendorId[1] = 0x34;
+	g_BMCInfo.ChannelTab[0].ProtocolVendorId[2] = 0x56;
+	g_BMCInfo.ChannelTab[0].AuxiliaryInfo[0] = 0xff;
+	g_BMCInfo.ChannelTab[0].AuxiliaryInfo[1] = 0xff;
+
+	//LAN chennel
+	g_BMCInfo.ChannelTab[1].ChannelNumber = 1;
+	g_BMCInfo.ChannelTab[1].ChannelProtocol = 1;//Used for IPMB, serial/modem Basic Mode, and LAN.reference IPMIv2.0 Table 6-2
+	g_BMCInfo.ChannelTab[1].ChannelMedium = 4;	//802.3 LAN, reference IPMIv2.0 Table 6-3 
+	g_BMCInfo.ChannelTab[1].SessionSupport = 2;	//muti session
+	g_BMCInfo.ChannelTab[1].ActiveSession = 0;
+	g_BMCInfo.ChannelTab[1].ProtocolVendorId[0] = 0x12;
+	g_BMCInfo.ChannelTab[1].ProtocolVendorId[1] = 0x34;
+	g_BMCInfo.ChannelTab[1].ProtocolVendorId[2] = 0x56;
+	g_BMCInfo.ChannelTab[1].AuxiliaryInfo[0] = 0xff;
+	g_BMCInfo.ChannelTab[1].AuxiliaryInfo[1] = 0xff;
+
+	//Secondary IPMB channel
+	g_BMCInfo.ChannelTab[2].ChannelNumber = 6;
+	g_BMCInfo.ChannelTab[2].ChannelProtocol = 1;//Used for IPMB, serial/modem Basic Mode, and LAN.reference IPMIv2.0 Table 6-2
+	g_BMCInfo.ChannelTab[2].ChannelMedium = 1;	//IPMB, reference IPMIv2.0 Table 6-3 
+	g_BMCInfo.ChannelTab[2].SessionSupport = 0;	//session less
+	g_BMCInfo.ChannelTab[2].ActiveSession = 0;
+	g_BMCInfo.ChannelTab[2].ProtocolVendorId[0] = 0x12;
+	g_BMCInfo.ChannelTab[2].ProtocolVendorId[1] = 0x34;
+	g_BMCInfo.ChannelTab[2].ProtocolVendorId[2] = 0x56;
+	g_BMCInfo.ChannelTab[2].AuxiliaryInfo[0] = 0xff;
+	g_BMCInfo.ChannelTab[2].AuxiliaryInfo[1] = 0xff;
+
+	for(i=3;i<15;i++)
+	{
+		g_BMCInfo.ChannelTab[i].ChannelNumber = 0xf;
+	}
+
+
+}
+
+ChannelInfo_T* getChannelInfo(uint8_t ChannelNum)
+{
+	int i;
+	for(i=0;i<15;i++)
+	{
+		if(g_BMCInfo.ChannelTab[i].ChannelNumber == ChannelNum)
+		{
+			return (ChannelInfo_T*)&g_BMCInfo.ChannelTab[i];
+		}
+	}
+	return NULL;
 }

+ 2 - 1
app/bmc/Api.h

@@ -44,7 +44,8 @@ int FlushSELToFlash();
 int GetSDRFromFlash();
 int FlushSDRToFlash();
 int UpdateFlash(void);
-
+int InitChannelTab(void);
+ChannelInfo_T* getChannelInfo(uint8_t ChannelNum);
 	
 int API_BridgeInternal(MsgPkt_T* pReqPkt, MsgPkt_T* pResPkt, uint8_t DestAddr, int Channel);
 

+ 1 - 0
app/bmc/BmcType.h

@@ -87,6 +87,7 @@ typedef struct
 	OemFRUData_T		FRU;
 	uint8_t*			pSDR;
 	uint8_t*			pSEL;		
+	ChannelInfo_T		ChannelTab[15];							//最大支持15个通道。
 
 	//time
     uint32_t 			CurTimerTick;							//uint: 1ms

+ 12 - 11
app/bmc/main.c

@@ -58,17 +58,17 @@ FanInfo_T	gFanInfo[FAN_NUMBERS] = {
 								// 	{3, {"Fan4"}, 0, 0, 0 },
 								};
 BladeStatus_T gBladeStatus[BLADE_NUMBERS] = {
-								/*  healthStatus | name | slotID | pwrStatus */
-									{ 0, "---", 0, 0},
-									{ 0, "---", 0, 0},
-									{ 0, "---", 0, 0},
-									{ 0, "---", 0, 0},
-									{ 0, "---", 0, 0},
-									{ 0, "---", 0, 0},
-									{ 0, "---", 0, 0},
-									{ 0, "---", 0, 0},
-									{ 0, "---", 0, 0},
-									{ 0, "---", 0, 0},
+								/*  present | healthStatus | name | slotID | pwrStatus */
+									{ 0, 0, "---", 0, 0},
+									{ 0, 0, "---", 0, 0},
+									{ 0, 0, "---", 0, 0},
+									{ 0, 0, "---", 0, 0},
+									{ 0, 0, "---", 0, 0},
+									{ 0, 0, "---", 0, 0},
+									{ 0, 0, "---", 0, 0},
+									{ 0, 0, "---", 0, 0},
+									{ 0, 0, "---", 0, 0},
+									{ 0, 0, "---", 0, 0},
 								};
 //void *test_thread(void *var);
 //uint8_t test_flag = 0;
@@ -115,6 +115,7 @@ void main(void)
 	Init_IPMI_FRU_SDR_SEL();
 	Init_SessionTbl();
 	InitTimerTaskTbl();
+	InitChannelTab();
 
 	pthread_mutex_init(&api_bridge_mutex, NULL);
 	pthread_mutex_init(&Flash_Mutex, NULL);

+ 1 - 1
app/bmc/msghndlr/App/App.c

@@ -81,7 +81,7 @@ const CmdHndlrMap_T g_App_CmdHndlr [] =	//notice!
 //    { CMD_GET_AUTH_CODE,            PRIV_OPERATOR,  GET_AUTH_CODE,          sizeof (GetAuthCodeReq_T),      0xAAAA ,0xFFFF},
 //    { CMD_SET_CH_ACCESS,            PRIV_ADMIN,     SET_CH_ACCESS,          sizeof (SetChAccessReq_T),      0xAAAA ,0xFFFF},
 //    { CMD_GET_CH_ACCESS,            PRIV_USER,      GET_CH_ACCESS,          sizeof (GetChAccessReq_T),      0xAAAA ,0xFFFF},
-//    { CMD_GET_CH_INFO,              PRIV_USER,      GET_CH_INFO,            sizeof (uint8_t),                 0xAAAA ,0xFFFF},
+    { CMD_GET_CH_INFO,              PRIV_USER,      GET_CH_INFO,            sizeof (uint8_t),                 0xAAAA ,0xFFFF},
     { CMD_SET_USER_ACCESS,          PRIV_ADMIN,     SET_USER_ACCESS,        0xFF,    0xAAAA ,0xFFFF},
     { CMD_GET_USER_ACCESS,          PRIV_OPERATOR,  GET_USER_ACCESS,        sizeof (GetUserAccessReq_T),    0xAAAA ,0xFFFF},
     { CMD_SET_USER_NAME,            PRIV_ADMIN,     SET_USER_NAME,          0xff,      0xAAAA ,0xFFFF},

+ 50 - 50
app/bmc/msghndlr/App/AppDevice/AppDevice.c

@@ -78,6 +78,11 @@
 #define SET_PASSWORD    2
 #define TEST_PASSWORD   3
 
+#define MAX_LAN_CHANNELS  1
+#define LAN_RMCP_CHANNEL1_TYPE  0x01
+#define LAN_RMCP_CHANNEL2_TYPE  0x02
+#define LAN_RMCP_CHANNEL3_TYPE  0x03
+
 /*** Global variables ***/
 uint8_t   g_TmrRunning;
 /*** Module variables ***/
@@ -2177,62 +2182,57 @@ CloseSession ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes)
 //}
 
 
-///*---------------------------------------
-//* GetChInfo
-//*---------------------------------------*/
-//int
-//GetChInfo ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes, int BMCInst)
-//{
-//      GetChInfoReq_T*     pGetChInfoReq = ( GetChInfoReq_T*)pReq;
-//      GetChInfoRes_T*     pGetChInfoRes = ( GetChInfoRes_T*)pRes;
-//    BMCInfo_t *pBMCInfo = &g_BMCInfo[BMCInst];
-//       ChannelInfo_T*      pChannelInfo;
-//    uint8_t               ChannelNum,*curchannel;
-
-//    if(pGetChInfoReq->ChannelNum & (BIT7 | BIT6 | BIT5 | BIT4)) //Check for Reserved bits
-//    {
-//        pGetChInfoRes->CompletionCode = CC_INV_DATA_FIELD;
-//        return sizeof(*pRes);
-//    }
+/*---------------------------------------
+* GetChInfo
+*---------------------------------------*/
+int
+GetChInfo ( uint8_t* pReq, uint8_t ReqLen,  uint8_t* pRes)
+{
+     GetChInfoReq_T*     pGetChInfoReq = ( GetChInfoReq_T*)pReq;
+     GetChInfoRes_T*     pGetChInfoRes = ( GetChInfoRes_T*)pRes;
+      ChannelInfo_T*      pChannelInfo;
+   uint8_t               ChannelNum,*curchannel;
 
-//    ChannelNum = pGetChInfoReq->ChannelNum;
-//    if (CURRENT_CHANNEL_NUM == ChannelNum)
-//    {
-//        OS_THREAD_TLS_GET(g_tls.CurChannel,curchannel);
-//        ChannelNum = *curchannel & 0xF;
-//        
-//        /* UDS, not being a physical channel, will hold LAN properties */ 
-//        if(UDS_CHANNEL == ChannelNum)
-//        {
-//        	ChannelNum = LAN_RMCP_CHANNEL1_TYPE;
-//        }
-//    }
+   if(pGetChInfoReq->ChannelNum & (BIT7 | BIT6 | BIT5 | BIT4)) //Check for Reserved bits
+   {
+       pGetChInfoRes->CompletionCode = CC_INV_DATA_FIELD;
+       return sizeof(*pRes);
+   }
 
-//    OS_THREAD_MUTEX_ACQUIRE(&pBMCInfo->ChUserMutex,WAIT_INFINITE);
-//    pChannelInfo = getChannelInfo(ChannelNum, BMCInst);
-//    if (NULL == pChannelInfo)
-//    {
-//        OS_THREAD_MUTEX_RELEASE(&pBMCInfo->ChUserMutex);
-//        pGetChInfoRes->CompletionCode = CC_INV_DATA_FIELD ;
-//        return  sizeof (*pRes);
-//    }
+   ChannelNum = pGetChInfoReq->ChannelNum;
+   if (CURRENT_CHANNEL_NUM == ChannelNum)
+   {
+       curchannel = pthread_getspecific(g_tls.CurChannel); 
+       ChannelNum = *curchannel & 0xF;
+       
+       /* UDS, not being a physical channel, will hold LAN properties */ 
+       if(UDS_CHANNEL == ChannelNum)
+       {
+       	ChannelNum = LAN_RMCP_CHANNEL1_TYPE;
+       }
+   }
 
-//    pGetChInfoRes->CompletionCode        = CC_NORMAL;
-//    pGetChInfoRes->ChannelNum            = ChannelNum;
-//    pGetChInfoRes->ChannelMedium         = pChannelInfo->ChannelMedium;
-//    pGetChInfoRes->ChannelProtocol       = pChannelInfo->ChannelProtocol;
-//    pGetChInfoRes->SessionActiveSupport  = pChannelInfo->SessionSupport << 6;
-//    pGetChInfoRes->SessionActiveSupport |= pChannelInfo->ActiveSession;
+   pChannelInfo = getChannelInfo(ChannelNum);
+   if (NULL == pChannelInfo)
+   {
+       pGetChInfoRes->CompletionCode = CC_INV_DATA_FIELD ;
+       return  sizeof (*pRes);
+   }
 
-//    _fmemcpy (pGetChInfoRes->VendorID, pChannelInfo->ProtocolVendorId,
-//                sizeof (pGetChInfoRes->VendorID));
-//    _fmemcpy (pGetChInfoRes->AuxiliaryInfo, pChannelInfo->AuxiliaryInfo,
-//                sizeof (pGetChInfoRes->AuxiliaryInfo));
+   pGetChInfoRes->CompletionCode        = CC_NORMAL;
+   pGetChInfoRes->ChannelNum            = ChannelNum;
+   pGetChInfoRes->ChannelMedium         = pChannelInfo->ChannelMedium;
+   pGetChInfoRes->ChannelProtocol       = pChannelInfo->ChannelProtocol;
+   pGetChInfoRes->SessionActiveSupport  = pChannelInfo->SessionSupport << 6;
+   pGetChInfoRes->SessionActiveSupport |= pChannelInfo->ActiveSession;
 
-//    OS_THREAD_MUTEX_RELEASE(&pBMCInfo->ChUserMutex);
+   memcpy (pGetChInfoRes->VendorID, pChannelInfo->ProtocolVendorId,
+               sizeof (pGetChInfoRes->VendorID));
+   memcpy (pGetChInfoRes->AuxiliaryInfo, pChannelInfo->AuxiliaryInfo,
+               sizeof (pGetChInfoRes->AuxiliaryInfo));
 
-//    return sizeof (GetChInfoRes_T);
-//}
+   return sizeof (GetChInfoRes_T);
+}
 
 ///*---------------------------------------
 //* IsChannelSuppGroups

+ 6 - 0
app/bmc/msghndlr/Storlead/Storlead.c

@@ -454,6 +454,7 @@ int Storlead_getAllBladeStatus(uint8_t *pReq, uint8_t ReqLen, uint8_t *pRes)
     {
         for(i=0;i<BLADE_NUMBERS;i++)
         {
+            gBladeStatus[i].present = 0;
             gBladeStatus[i].healthStatus = 0;
             sprintf(gBladeStatus[i].bladeName, "---");
             gBladeStatus[i].slotID = 0;
@@ -463,6 +464,7 @@ int Storlead_getAllBladeStatus(uint8_t *pReq, uint8_t ReqLen, uint8_t *pRes)
         //当前模块的信息
         if(g_BMCInfo.IndexInChassis < BLADE_NUMBERS)
         {
+            gBladeStatus[g_BMCInfo.IndexInChassis].present = 1;
             gBladeStatus[g_BMCInfo.IndexInChassis].healthStatus = 1;
             memcpy(gBladeStatus[g_BMCInfo.IndexInChassis].bladeName, g_BMCInfo.BladeName, 31);
             gBladeStatus[g_BMCInfo.IndexInChassis].slotID = g_BMCInfo.SlotID;
@@ -477,6 +479,7 @@ int Storlead_getAllBladeStatus(uint8_t *pReq, uint8_t ReqLen, uint8_t *pRes)
         {
             if(gChassisIPMBAddr[index] == 0x20) //chMC
             {
+                gBladeStatus[index].present = 1;
                 gBladeStatus[index].healthStatus = 1;
                 memcpy(gBladeStatus[index].bladeName, g_BMCInfo.BladeName, 31);
                 gBladeStatus[index].slotID = g_BMCInfo.SlotID;
@@ -498,6 +501,7 @@ int Storlead_getAllBladeStatus(uint8_t *pReq, uint8_t ReqLen, uint8_t *pRes)
 
                 if(ResPkt.Data[0] == 0)
                 {
+                    gBladeStatus[index].present = 1;
                     gBladeStatus[index].healthStatus = ResPkt.Data[1];
                     memcpy(gBladeStatus[index].bladeName, &ResPkt.Data[2], 31);
                     gBladeStatus[index].slotID = ResPkt.Data[33];
@@ -506,6 +510,7 @@ int Storlead_getAllBladeStatus(uint8_t *pReq, uint8_t ReqLen, uint8_t *pRes)
                 }
                 else
                 {
+                    gBladeStatus[index].present = 0;
                     gBladeStatus[index].healthStatus = 0;
                     sprintf(gBladeStatus[index].bladeName, "---");
                     gBladeStatus[index].slotID = 0;
@@ -515,6 +520,7 @@ int Storlead_getAllBladeStatus(uint8_t *pReq, uint8_t ReqLen, uint8_t *pRes)
             }
             else
             {
+                gBladeStatus[index].present = 0;
                 gBladeStatus[index].healthStatus = 0;
                 sprintf(gBladeStatus[index].bladeName, "---");
                 gBladeStatus[index].slotID = 0;

+ 171 - 843
app/bmc/msghndlr/Transport/LANConfig.c

@@ -734,857 +734,185 @@ int IPAddrCheck(uint8_t *Addr,int params)
 // }
 
 
-// /*---------------------------------------------------
-//  * GetLanConfigParam
-//  *---------------------------------------------------*/
-// int
-// GetLanConfigParam (  uint8_t* pReq, uint8_t ReqLen,   uint8_t* pRes,  int BMCInst)
-// {
-//        GetLanConfigReq_T*  pGetLanReq = (  GetLanConfigReq_T*) pReq;
-//        GetLanConfigRes_T*  pGetLanRes = (  GetLanConfigRes_T*) pRes;
-//         BMCSharedMem_T*     pSharedMem = BMC_GET_SHARED_MEM (BMCInst);
-//     uint8_t IsOemDefined = FALSE;
-//     NWCFG_STRUCT        NWConfig;
-//     NWCFG6_STRUCT        NWConfig6;
-// //    V6DNS_CONFIG v6dnsconfig;
-//     uint8_t EthIndex,netindex= 0xFF,i;
-//       BMCInfo_t* pBMCInfo = &g_BMCInfo[BMCInst];
-//     int ncsiPortConfigNum = 0;
-
-//     ETHCFG_STRUCT PHYCfg;
-//     ChannelInfo_T* pChannelInfo = NULL;
-
-//     char IfcName[16];  /* Eth interface name */
-//     uint8_t               ComStrLen=MAX_COMM_STRING_SIZE;
-//     int retValue = 0,NIC_Count = 0;
-
-//     pGetLanRes->CCParamRev.CompletionCode = CC_NORMAL;
-//     pGetLanRes->CCParamRev.ParamRevision  = PARAMETER_REVISION_FORMAT;
-
-// //    printf("---> channel: %d, parameter: %#x, setslect: %#x, blockselect: %#x\n", pGetLanReq->ChannelNum, pGetLanReq->ParameterSelect, pGetLanReq->SetSelect, pGetLanReq->BlockSelect);
-//     if(pGetLanReq->ChannelNum & RESERVED_VALUE_70)
-//     {
-//         /* Alarm !!! Somebody is trying to set Reseved Bits */
-//         *pRes = CC_INV_DATA_FIELD;
-//         return sizeof (*pRes);
-//     }
-
-//     if((pGetLanReq->ParameterSelect >= MIN_LAN_OEM_CONF_PARAM) && 
-//             (pGetLanReq->ParameterSelect <= MAX_LAN_OEM_CONF_PARAM) )
-//     {
-//     	/* Converts OEM parameter value to equivalent AMI parameter value */
-//     	if (0 != GetLanAMIParamValue (&pGetLanReq->ParameterSelect, &IsOemDefined) )
-//     	{
-//             pGetLanRes->CCParamRev.CompletionCode = CC_PARAM_NOT_SUPPORTED;
-//             return sizeof(uint8_t);
-//     	}
-
-//     	/* Hook for OEM to handle this parameter */
-//         if ( (IsOemDefined)  && (g_PDKHandle[PDK_GETLANOEMPARAM] != NULL) )
-//         {
-// 			return ((int(*)(uint8_t *, uint8_t, uint8_t *,int))(g_PDKHandle[PDK_GETLANOEMPARAM]))(pReq, ReqLen, pRes, BMCInst);
-//     	}
-   	
-//     }
-
-//     if (g_PDKHandle[PDK_BEFOREGETLANPARM] != NULL)
-//     {
-//         retValue = ((int(*)(uint8_t *, uint8_t, uint8_t *,int))(g_PDKHandle[PDK_BEFOREGETLANPARM]))(pReq, ReqLen, pRes, BMCInst);
-//         if(retValue != 0)
-//         {
-//               return retValue;
-//         }
-//     }
-
-//     //! Validate the SetSelector value. 
-//     if (  (0x00 != pGetLanReq->SetSelect) &&  
-//           (pGetLanReq->ParameterSelect != LAN_PARAM_SELECT_DEST_TYPE) &&  
-//           (pGetLanReq->ParameterSelect != LAN_PARAM_SELECT_DEST_ADDR) &&  
-//           (pGetLanReq->ParameterSelect != LAN_PARAM_VLAN_TAGS) &&
-//           (pGetLanReq->ParameterSelect != LAN_PARAMS_AMI_OEM_SNMPV6_DEST_ADDR) && 
-//           (pGetLanReq->ParameterSelect != LAN_PARAMS_AMI_OEM_IPV6_IP_ADDR) &&
-//           (pGetLanReq->ParameterSelect != LAN_PARAMS_AMI_OEM_IPV6_IP_ADDR_EUI64) &&
-//           (pGetLanReq->ParameterSelect != LAN_PARAMS_AMI_OEM_IPV6_PREFIX_LENGTH))
-//     {
-//     	printf("GetLanConfigParam log1\n");
-//         if( g_corefeatures.ncsi_cmd_support == ENABLED )
-//         {
-//             if ((pGetLanReq->ParameterSelect != LAN_PARAMS_AMI_OEM_NCSI_SETTINGS) &&
-// 				(pGetLanReq->ParameterSelect != LAN_PARAMS_AMI_OEM_NCSI_MODE_CHANGE) &&
-// 				(pGetLanReq->ParameterSelect != LAN_PARAMS_AMI_OEM_NCSI_EXTENSION))
-//             {
-//                 *pRes = CC_INV_DATA_FIELD;  
-//                 return sizeof (*pRes);  
-//             }
-//         }
-//         else
-//         {
-//             *pRes = CC_INV_DATA_FIELD;  
-//             return sizeof (*pRes);  
-//         }
-//     }  
-
-//     //! Validate the BlockSelector value.  
-//     if (0x00 != pGetLanReq->BlockSelect)  
-//     {
-//     	printf("GetLanConfigParam log2\n");
-//         *pRes = CC_INV_DATA_FIELD;  
-//         return sizeof (*pRes);  
-//     }
-
-
-//     EthIndex= GetEthIndex(pGetLanReq->ChannelNum & 0x0F, BMCInst);
-//     if(0xff == EthIndex)
-//     {
-//     	printf("GetLanConfigParam log3\n");
-//         *pRes = CC_INV_DATA_FIELD;
-//         return sizeof (uint8_t);
-//     }
-
-//     /*Get the EthIndex*/
-//     if(GetIfcName(EthIndex,IfcName, BMCInst) != 0)
-//     {
-//         TCRIT("Error in Getting IfcName\n");
-//         *pRes = CC_INV_DATA_FIELD;
-//         return sizeof (uint8_t);
-//     }
+/*---------------------------------------------------
+ * GetLanConfigParam
+ *---------------------------------------------------*/
+int
+GetLanConfigParam (  uint8_t* pReq, uint8_t ReqLen,   uint8_t* pRes)
+{
+    GetLanConfigReq_T*  pGetLanReq = (  GetLanConfigReq_T*) pReq;
+    GetLanConfigRes_T*  pGetLanRes = (  GetLanConfigRes_T*) pRes;
+    uint8_t EthIndex;
+    char IfcName[16];  /* Eth interface name */
 
-//     for(i=0;i<sizeof(Ifcnametable)/sizeof(IfcName_T);i++)
-//     {
-//         if(strcmp(Ifcnametable[i].Ifcname,IfcName) == 0)
-//         {
-//             netindex= Ifcnametable[i].Index;
-//             break;
-//         }
-//     }
+    pGetLanRes->CCParamRev.CompletionCode = CC_NORMAL;
+    pGetLanRes->CCParamRev.ParamRevision  = PARAMETER_REVISION_FORMAT;
 
-//     if(netindex == 0xFF)
-//     {
-//         TCRIT("Error in Getting netindex %d %s\n",netindex,IfcName);
-//         *pRes = CC_INV_DATA_FIELD;
-//         return sizeof (uint8_t);
-//     }
+//    printf("---> channel: %d, parameter: %#x, setslect: %#x, blockselect: %#x\n", pGetLanReq->ChannelNum, pGetLanReq->ParameterSelect, pGetLanReq->SetSelect, pGetLanReq->BlockSelect);
+    if(pGetLanReq->ChannelNum & RESERVED_VALUE_70)
+    {
+        /* Alarm !!! Somebody is trying to set Reseved Bits */
+        *pRes = CC_INV_DATA_FIELD;
+        return sizeof (*pRes);
+    }
     
-//     if ((pGetLanReq->ChannelNum & GET_PARAMETER_REVISION_MASK) != 0)
-//     {
-//         if((MAX_LAN_CONF_PARAM >= pGetLanReq->ParameterSelect) ||
-//                ((MIN_LAN_OEM_CONF_PARAM <= pGetLanReq->ParameterSelect) && (MAX_LAN_OEM_CONF_PARAM >= pGetLanReq->ParameterSelect)) ) 
-//         {
-//             return sizeof(GetLanCCRev_T);
-//         }
-//         else
-//         {
-//              *pRes = CC_PARAM_NOT_SUPPORTED;
-//              return sizeof (*pRes);  
-//         }
-
-//     }
-//     else
-//     {
-//     	printf("GetLanConfigParam log4\n");
-//             switch(pGetLanReq->ParameterSelect)
-//             {
-//             case LAN_PARAM_SET_IN_PROGRESS:
-
-//                 LOCK_BMC_SHARED_MEM(BMCInst);
-//                 pGetLanRes->ConfigData.SetInProgress = BMC_GET_SHARED_MEM(BMCInst)->m_Lan_SetInProgress;
-//                 UNLOCK_BMC_SHARED_MEM(BMCInst);
-//                 break;
-
-//             case LAN_PARAM_AUTH_TYPE_SUPPORT:
-
-//                 pGetLanRes->ConfigData.AuthTypeSupport = pBMCInfo->LANCfs[EthIndex].AuthTypeSupport;
-//                 break;
-
-//             case LAN_PARAM_AUTH_TYPE_ENABLES:
-
-//                 LOCK_BMC_SHARED_MEM(BMCInst);
-//                 _fmemcpy (&pGetLanRes->ConfigData.AuthTypeEnables,
-//                           &(pBMCInfo->LANCfs[EthIndex].AuthTypeEnables), sizeof(AuthTypeEnables_T));
-//                 UNLOCK_BMC_SHARED_MEM(BMCInst);
-//                 break;
-
-//             case LAN_PARAM_IP_ADDRESS:
-//                 if((g_corefeatures.delayed_lan_restart_support) && (pBMCInfo->LANCfs[EthIndex].IPAddrSrc == STATIC_IP_SOURCE))
-//                 {
-//                     if(pBMCInfo->LANCfs[EthIndex].IPv4_Enable)
-//                     {
-//                         _fmemcpy (NWConfig.IPAddr,pBMCInfo->LANCfs[EthIndex].IPAddr, IP_ADDR_LEN);
-//                     }
-//                     else
-//                     {
-//                         memset(&NWConfig, 0, sizeof(NWConfig));
-//                     }
-//                 }
-//                 else
-//                 {
-//                     nwReadNWCfg_v4_v6( &NWConfig, &NWConfig6, netindex,g_corefeatures.global_ipv6);
-//                 }
-//                 _fmemcpy (pGetLanRes->ConfigData.IPAddr, NWConfig.IPAddr, IP_ADDR_LEN);
-
-
-//             break;
-
-//             case LAN_PARAM_IP_ADDRESS_SOURCE:
-//             if(g_corefeatures.delayed_lan_restart_support)
-//             {
-//                 if(pBMCInfo->LANCfs[EthIndex].IPv4_Enable)
-//                 {
-//                     NWConfig.CfgMethod = pBMCInfo->LANCfs[EthIndex].IPAddrSrc;
-//                 }
-//                 else
-//                 {
-//                     memset(&NWConfig, 0, sizeof(NWConfig));
-//                 }
-//             }
-//             else
-//             {
-//                 nwReadNWCfg_v4_v6( &NWConfig, &NWConfig6, netindex,g_corefeatures.global_ipv6);
-//             }
-
-//             pGetLanRes->ConfigData.IPAddrSrc = NWConfig.CfgMethod;
-//               break;
-
-//             case LAN_PARAM_MAC_ADDRESS:
-//                 nwGetNWInformations(&NWConfig,IfcName);
-//                 _fmemcpy (pGetLanRes->ConfigData.MACAddr, NWConfig.MAC, MAC_ADDR_LEN);
-
-//                 break;
-
-//             case LAN_PARAM_SUBNET_MASK:
-//                 if((g_corefeatures.delayed_lan_restart_support) && (pBMCInfo->LANCfs[EthIndex].IPAddrSrc == STATIC_IP_SOURCE))
-//                 {
-//                     if(pBMCInfo->LANCfs[EthIndex].IPv4_Enable)
-//                     {
-//                         _fmemcpy (NWConfig.Mask,pBMCInfo->LANCfs[EthIndex].SubNetMask, IP_ADDR_LEN);
-//                     }
-//                     else
-//                     {
-//                         memset(&NWConfig, 0, sizeof(NWConfig));
-//                     }
-//                 }
-//                 else 
-//                 {
-//                     nwReadNWCfg_v4_v6( &NWConfig, &NWConfig6, netindex,g_corefeatures.global_ipv6);	
-//                 }
-//                 _fmemcpy (pGetLanRes->ConfigData.SubNetMask, NWConfig.Mask, IP_ADDR_LEN);
-//                 break;
-
-//             case LAN_PARAM_IPv4_HEADER:
-
-//                 LOCK_BMC_SHARED_MEM(BMCInst);
-//                 _fmemcpy (&pGetLanRes->ConfigData.Ipv4HdrParam,
-//                           &(pBMCInfo->LANCfs[EthIndex].Ipv4HdrParam), sizeof(IPv4HdrParams_T));
-//                 UNLOCK_BMC_SHARED_MEM(BMCInst);
-//                 break;
-
-//             case LAN_PARAM_PRI_RMCP_PORT:
-
-//                 pGetLanRes->ConfigData.PrimaryRMCPPort = htoipmi_u16(pBMCInfo->LANCfs[EthIndex].PrimaryRMCPPort);
-//                 break;
-
-//             case LAN_PARAM_SEC_RMCP_PORT:
-//                 /* Returning Invalid error message */
-//                 *pRes = CC_PARAM_NOT_SUPPORTED;
-//                 return sizeof (uint8_t);
-//                 /*pGetLanRes->ConfigData.SecondaryPort = htoipmi_u16(pPMConfig->LANConfig[EthIndex].SecondaryPort);*/
-//                 break;
-
-//             case LAN_PARAM_BMC_GENERATED_ARP_CONTROL:
-
-//                 pGetLanRes->ConfigData.BMCGeneratedARPControl = pBMCInfo->LANCfs[EthIndex].BMCGeneratedARPControl;
-//                 break;
-//             case LAN_PARAM_GRATITIOUS_ARP_INTERVAL:
-//                 pGetLanRes->ConfigData.GratitousARPInterval =
-//                         pBMCInfo->LANCfs[EthIndex].GratitousARPInterval;
-//                 break;
-
-//             case LAN_PARAM_DEFAULT_GATEWAY_IP:
-//                 if((g_corefeatures.delayed_lan_restart_support) && (pBMCInfo->LANCfs[EthIndex].IPAddrSrc == STATIC_IP_SOURCE))
-//                 {
-//                     if(pBMCInfo->LANCfs[EthIndex].IPv4_Enable)
-//                     {
-//                         _fmemcpy (NWConfig.Gateway, pBMCInfo->LANCfs[EthIndex].DefaultGatewayIPAddr, IP_ADDR_LEN);
-//                     }
-//                     else
-//                     {
-//                         memset(&NWConfig, 0, sizeof(NWConfig));
-//                     }
-//                 }
-//                 else 
-//                 {
-//                     nwReadNWCfg_v4_v6( &NWConfig, &NWConfig6, netindex,g_corefeatures.global_ipv6);	
-//                 }
-//                 _fmemcpy (pGetLanRes->ConfigData.DefaultGatewayIPAddr, NWConfig.Gateway, IP_ADDR_LEN);
-//                 break;
-
-//             case LAN_PARAM_DEFAULT_GATEWAY_MAC:
-//                 nwReadNWCfg_v4_v6( &NWConfig, &NWConfig6, netindex,g_corefeatures.global_ipv6);
-//                 nwGetSrcMacAddr(&NWConfig.Gateway[0],netindex, &pGetLanRes->ConfigData.DefaultGatewayMACAddr[0]);
-//                 break;
-
-//             case LAN_PARAM_BACKUP_GATEWAY_IP:
-
-//                 LOCK_BMC_SHARED_MEM(BMCInst);
-//                 nwGetBkupGWyAddr(pGetLanRes->ConfigData.BackupGatewayIPAddr,netindex);
-//                 UNLOCK_BMC_SHARED_MEM(BMCInst);
-//                 break;
-
-//             case LAN_PARAM_BACKUP_GATEWAY_MAC:
-
-//                 LOCK_BMC_SHARED_MEM(BMCInst);
-//                 _fmemcpy (pGetLanRes->ConfigData.BackupGatewayMACAddr,
-//                           pBMCInfo->LANCfs[EthIndex].BackupGatewayMACAddr, MAC_ADDR_LEN);
-//                 UNLOCK_BMC_SHARED_MEM(BMCInst);
-//                 break;
-
-//             case LAN_PARAM_COMMUNITY_STRING:
-//                 if (g_PDKHandle[PDK_GETSNMPCOMMUNITYNAME] != NULL )
-//                 {
-//                     if(((int(*)(uint8_t *, uint8_t *,int))(g_PDKHandle[PDK_GETSNMPCOMMUNITYNAME]))(pGetLanRes->ConfigData.CommunityStr,&ComStrLen, BMCInst)==0)
-//                         break;
-//                 }
-//                 LOCK_BMC_SHARED_MEM(BMCInst);
-//                 _fmemcpy (pGetLanRes->ConfigData.CommunityStr,
-//                           pBMCInfo->LANCfs[EthIndex].CommunityStr, MAX_COMM_STRING_SIZE);
-//                 UNLOCK_BMC_SHARED_MEM(BMCInst);
-//                 break;
-
-//             case LAN_PARAM_DEST_NUM:
-
-//                 pGetLanRes->ConfigData.NumDest = pBMCInfo->LANCfs[EthIndex].NumDest;
-//                 break;
-
-//             case LAN_PARAM_SELECT_DEST_TYPE:
-
-
-//                 //if (pGetLanReq->SetSelect > NUM_LAN_DESTINATION)
-//                 if ( pGetLanReq->SetSelect   > pBMCInfo->LANCfs[EthIndex].NumDest )
-//                 {
-//                     *pRes = CC_PARAM_OUT_OF_RANGE ;
-//                     return sizeof (*pRes);
-//                 }
-
-//                 if (0 == pGetLanReq->SetSelect)
-//                 {
-//                     LOCK_BMC_SHARED_MEM(BMCInst);
-//                     _fmemcpy (&pGetLanRes->ConfigData.DestType,
-//                               &pSharedMem->VolLANDestType[EthIndex], sizeof(LANDestType_T));
-//                     UNLOCK_BMC_SHARED_MEM(BMCInst);
-//                 }
-//                 else
-//                 {
-//                     LOCK_BMC_SHARED_MEM(BMCInst);
-//                     _fmemcpy (&pGetLanRes->ConfigData.DestType,
-//                               &(pBMCInfo->LANCfs[EthIndex].DestType[pGetLanReq->SetSelect - 1]),
-//                               sizeof(LANDestType_T));
-//                     UNLOCK_BMC_SHARED_MEM(BMCInst);
-//                 }
-//                 break;
-
-//             case LAN_PARAM_SELECT_DEST_ADDR:
-
-//                 //if (pGetLanReq->SetSelect > NUM_LAN_DESTINATION)
-//                 if ( pGetLanReq->SetSelect   > pBMCInfo->LANCfs[EthIndex].NumDest )
-//                 {
-//                     *pRes = CC_PARAM_OUT_OF_RANGE ;
-//                     return sizeof (*pRes);
-//                 }
-
-//                 if (0 == pGetLanReq->SetSelect)
-//                 {
-//                     LOCK_BMC_SHARED_MEM(BMCInst);
-//                     _fmemcpy (&pGetLanRes->ConfigData.DestAddr,
-//                               &pSharedMem->VolLANDest[EthIndex], sizeof(LANDestAddr_T));
-//                     UNLOCK_BMC_SHARED_MEM(BMCInst);
-//                 }
-//                 else
-//                 {
-//                     LOCK_BMC_SHARED_MEM(BMCInst);
-//                     _fmemcpy (&pGetLanRes->ConfigData.DestAddr,
-//                               &(pBMCInfo->LANCfs[EthIndex].DestAddr[pGetLanReq->SetSelect - 1]),
-//                               sizeof(LANDestAddr_T));
-//                     UNLOCK_BMC_SHARED_MEM(BMCInst);
-//                 }
-//                 break;
-
-//             case LAN_PARAM_VLAN_ID:
-
-//                 if( pBMCInfo->IpmiConfig.VLANIfcSupport == 1)
-//                 {
-//                     pGetLanRes->ConfigData.VLANID = pBMCInfo->LANCfs[EthIndex].VLANID;
-//                 }
-//                 break;
-
-//             case LAN_PARAM_VLAN_PRIORITY:
-
-//                 pGetLanRes->ConfigData.VLANPriority = pBMCInfo->LANCfs[EthIndex].VLANPriority;
-//                 break;
-
-//             case LAN_PARAM_CIPHER_SUITE_ENTRY_SUP:
-
-//                 pGetLanRes->ConfigData.CipherSuiteSup = N0_OF_CIPHER_SUITE_SUPPORTED;
-//                 break;
-
-//             case LAN_PARAM_CIPHER_SUITE_ENTRIES:
-//                 {
-//                     int i;
-//                     _fmemset (pGetLanRes->ConfigData.CipherSuiteEntries, 0,
-//                               sizeof (pGetLanRes->ConfigData.CipherSuiteEntries));
-//                     for (i = 0; i < (N0_OF_CIPHER_SUITE_SUPPORTED); i++)
-//                     {
-//                         pGetLanRes->ConfigData.CipherSuiteEntries[i+1] = g_CipherRec[1 + i * 5];
-//                     }
-//                 }
-//                 break;
-
-//             case LAN_PARAM_CIPHER_SUITE_PRIV_LEVELS:
-
-//                 LOCK_BMC_SHARED_MEM(BMCInst);
-//                 _fmemcpy (pGetLanRes->ConfigData.CipherSuitePrivLevels,
-//                           pBMCInfo->LANCfs[EthIndex].CipherSuitePrivLevels,
-//                           MAX_NUM_CIPHER_SUITE_PRIV_LEVELS);
-//                 UNLOCK_BMC_SHARED_MEM(BMCInst);
-//                 break;
-
-//             case LAN_PARAM_VLAN_TAGS:
-
-//                 *((  uint8_t*)&pGetLanRes->ConfigData) = pGetLanReq->SetSelect;
-//                 if (pGetLanReq->SetSelect > pBMCInfo->LANCfs[EthIndex].NumDest)
-//                 {
-//                     pGetLanRes->CCParamRev.CompletionCode = CC_PARAM_OUT_OF_RANGE;
-//                     return sizeof (GetLanCCRev_T);
-//                 }
-//                 if (0 == pGetLanReq->SetSelect)
-//                 {
-//                     LOCK_BMC_SHARED_MEM(BMCInst);
-//                     _fmemcpy (((  uint8_t*) &pGetLanRes->ConfigData) + 1,&pSharedMem->VLANDestTag, sizeof(VLANDestTags_T));
-//                     UNLOCK_BMC_SHARED_MEM(BMCInst);
-//                 }
-//                 else
-//                 {
-//                     if (pGetLanReq->SetSelect > pBMCInfo->LANCfs[EthIndex].NumDest)
-//                     {
-//                         pGetLanRes->CCParamRev.CompletionCode = CC_PARAM_OUT_OF_RANGE;
-//                         return sizeof(GetLanCCRev_T);
-//                     }
-
-//                     LOCK_BMC_SHARED_MEM(BMCInst);
-//                     _fmemcpy (((  uint8_t*)&pGetLanRes->ConfigData) + 1,
-//                     &pBMCInfo->LANCfs[EthIndex].VLANDestTags[pGetLanReq->SetSelect - 1],
-//                     sizeof(VLANDestTags_T));
-//                     UNLOCK_BMC_SHARED_MEM(BMCInst);
-//                 }
-//                 break;
-
-//             case LAN_PARAMS_BAD_PASSWORD_THRESHOLD:
-//                 LOCK_BMC_SHARED_MEM(BMCInst);
-//                 _fmemcpy(&pGetLanRes->ConfigData.BadPasswd,
-//                                 &pBMCInfo->LANCfs[EthIndex].BadPasswd,sizeof(BadPassword_T));
-//                 UNLOCK_BMC_SHARED_MEM(BMCInst);
-//                 break;
-//             case LAN_PARAMS_AMI_OEM_SNMPV6_DEST_ADDR:
-
-//                 if ( pGetLanReq->SetSelect   > pBMCInfo->LANCfs[EthIndex].NumDest )
-//                 {
-//                     *pRes = CC_PARAM_OUT_OF_RANGE ;
-//                     return sizeof (*pRes);
-//                 }
-
-//                 if (0 == pGetLanReq->SetSelect)
-//                 {
-//                     LOCK_BMC_SHARED_MEM(BMCInst);
-//                     _fmemcpy (&pGetLanRes->ConfigData.Destv6Addr,
-//                               &pSharedMem->VolLANv6Dest[EthIndex], sizeof(LANDestv6Addr_T));
-//                     UNLOCK_BMC_SHARED_MEM(BMCInst);
-//                 }
-//                 else
-//                 {
-//                     LOCK_BMC_SHARED_MEM(BMCInst);
-//                     _fmemcpy (&pGetLanRes->ConfigData.Destv6Addr,
-//                               &(pBMCInfo->LANCfs[EthIndex].Destv6Addr[pGetLanReq->SetSelect - 1]),
-//                               sizeof(LANDestv6Addr_T));
-//                     UNLOCK_BMC_SHARED_MEM(BMCInst);
-//                 }
-
-//                 TDBG("\n GetLanconfig: Getting SNMPv6 configuration done..\n");
-
-//                 return sizeof(GetLanConfigRes_T);
-
-//                 break;
-
-//             case LAN_PARAMS_AMI_OEM_ENABLE_SET_MAC:
-
-//             	pGetLanRes->ConfigData.ChangeMACEnabled = enableSetMACAddr;
-//             	return sizeof(GetLanCCRev_T) + sizeof(uint8_t);
-
-//             case LAN_PARAMS_AMI_OEM_IPV6_ENABLE:
-//                 if(g_corefeatures.delayed_lan_restart_support) 
-//                 {
-//                     NWConfig6.enable = pBMCInfo->LANCfs[EthIndex].IPv6_Enable;
-//                 }
-//                 else
-//                 {
-//                     nwReadNWCfg_v4_v6( &NWConfig, &NWConfig6, netindex,g_corefeatures.global_ipv6);
-//                 }
-//                 pGetLanRes->ConfigData.IPv6_Enable = NWConfig6.enable;
-//                 return sizeof(GetLanCCRev_T) + sizeof(uint8_t);
-                
-//                 break;
-
-//             case LAN_PARAMS_AMI_OEM_IPV6_IP_ADDR_SOURCE:
-//                 if(g_corefeatures.delayed_lan_restart_support) 
-//                 {
-//                     if((pBMCInfo->LANCfs[EthIndex].IPv6_Enable))
-//                     {
-//                         NWConfig6.CfgMethod = pBMCInfo->LANCfs[EthIndex].IPv6_IPAddrSrc;
-//                     }
-//                     else
-//                     {
-//                         memset(&NWConfig6, 0, sizeof(NWConfig6));
-//                     }
-//                 }
-//                 else
-//                 {
-//                     nwReadNWCfg_v4_v6( &NWConfig, &NWConfig6, netindex,g_corefeatures.global_ipv6);
-//                 }
-//                 pGetLanRes->ConfigData.IPv6_IPAddrSrc = NWConfig6.CfgMethod;
-//                 return sizeof(GetLanCCRev_T) + sizeof(uint8_t);
-                
-//                 break;
-
-//             case LAN_PARAMS_AMI_OEM_IPV6_IP_ADDR:
-//             case LAN_PARAMS_AMI_OEM_IPV6_IP_ADDR_EUI64:
-//                 if(pGetLanReq->SetSelect & 0xF0)
-//                 {
-//                     *pRes = CC_INV_DATA_FIELD;
-//                     return sizeof(uint8_t);
-//                 }
-               
-//                 if((g_corefeatures.delayed_lan_restart_support) && (pBMCInfo->LANCfs[EthIndex].IPv6_IPAddrSrc == STATIC_IP_SOURCE))
-//                 {
-//                     if((pBMCInfo->LANCfs[EthIndex].IPv6_Enable))
-//                     {
-//                         _fmemcpy (NWConfig6.GlobalIPAddr,pBMCInfo->LANCfs[EthIndex].IPv6_IPAddr, IP6_ADDR_LEN*MAX_IPV6ADDRS);
-//                     }
-//                     else
-//                     {
-//                         memset(&NWConfig6, 0, sizeof(NWConfig6));
-//                     }
-//                 }
-//                 else
-//                 {
-//                     nwReadNWCfg_v4_v6( &NWConfig, &NWConfig6, netindex,g_corefeatures.global_ipv6);
-//                 }
-//                 _fmemcpy (pGetLanRes->ConfigData.IPv6_LinkAddr, NWConfig6.GlobalIPAddr[(pGetLanReq->SetSelect & 0x0F)], IP6_ADDR_LEN);
-//                 return sizeof(GetLanCCRev_T) + IP6_ADDR_LEN;
-                
-//                 break;
-//             case LAN_PARAMS_AMI_OEM_IPV6_LINK_ADDR:
-//                 nwReadNWCfg_v4_v6( &NWConfig, &NWConfig6, netindex,g_corefeatures.global_ipv6);
-//                 _fmemcpy (pGetLanRes->ConfigData.IPv6_LinkAddr, NWConfig6.LinkIPAddr, IP6_ADDR_LEN);
-//                 return sizeof(GetLanCCRev_T) + IP6_ADDR_LEN;
-
-//             case LAN_PARAMS_AMI_OEM_IPV6_PREFIX_LENGTH:
-
-//                 if(pGetLanReq->SetSelect & 0xF0)
-//                 {
-//                     *pRes = CC_INV_DATA_FIELD;
-//                     return sizeof(uint8_t);
-//                 }
-
-//                 if((g_corefeatures.delayed_lan_restart_support) && (pBMCInfo->LANCfs[EthIndex].IPv6_IPAddrSrc == STATIC_IP_SOURCE))
-//                 {
-//                     if((pBMCInfo->LANCfs[EthIndex].IPv6_Enable))
-//                     {
-//                         NWConfig6.GlobalPrefix[(pGetLanReq->SetSelect & 0x0F)] = pBMCInfo->LANCfs[EthIndex].IPv6_PrefixLen[(pGetLanReq->SetSelect & 0x0F)];
-//                     }
-//                     else
-//                     {
-//                         memset(&NWConfig6, 0, sizeof(NWConfig6));
-//                     }
-//                 }
-//                 else
-//                 {
-//                     nwReadNWCfg_v4_v6( &NWConfig, &NWConfig6, netindex,g_corefeatures.global_ipv6);
-//                 }
-//                 pGetLanRes->ConfigData.IPv6_LinkAddrPrefix = NWConfig6.GlobalPrefix[(pGetLanReq->SetSelect & 0x0F)];
-//                 return sizeof(GetLanCCRev_T) + sizeof(uint8_t);
-                
-//                 break;
-
-//             case LAN_PARAMS_AMI_OEM_IPV6_LINK_ADDR_PREFIX:
-//                 nwReadNWCfg_v4_v6( &NWConfig, &NWConfig6, netindex,g_corefeatures.global_ipv6);
-//                 pGetLanRes->ConfigData.IPv6_LinkAddrPrefix = NWConfig6.LinkPrefix;
-//                 return sizeof(GetLanCCRev_T) + sizeof(uint8_t);
-                
-//                 break;
-
-//             case LAN_PARAMS_AMI_OEM_IPV6_GATEWAY_IP:
-//                 if((g_corefeatures.delayed_lan_restart_support) && (pBMCInfo->LANCfs[EthIndex].IPv6_IPAddrSrc == STATIC_IP_SOURCE))
-//                 {
-//                     if((pBMCInfo->LANCfs[EthIndex].IPv6_Enable))
-//                     {
-//                         _fmemcpy (NWConfig6.Gateway,pBMCInfo->LANCfs[EthIndex].IPv6_GatewayIPAddr, IP6_ADDR_LEN);
-//                     }
-//                     else
-//                     {
-//                         memset(&NWConfig6, 0, sizeof(NWConfig6));
-//                     }
-//                 }
-//                 else
-//                 {
-//                     nwReadNWCfg_v4_v6( &NWConfig, &NWConfig6, netindex,g_corefeatures.global_ipv6);
-//                 }
-//                 _fmemcpy (pGetLanRes->ConfigData.IPv6_GatewayIPAddr, NWConfig6.Gateway, IP6_ADDR_LEN);
-//                 return sizeof(GetLanCCRev_T) + IP6_ADDR_LEN;
-                
-//                 break;
-
-//             case LAN_PARAMS_AMI_OEM_PHY_SETTINGS:
-//                 memset(IfcName, 0, sizeof(IfcName));
-//                 if(GetIfcNameByIndex(EthIndex, IfcName) != 0)
-//                 {
-//                     TCRIT("Error in Getting Interface Name for the lan Index:%d\n",EthIndex);
-//                 }
-//                 if(nwGetEthInformation(&PHYCfg, IfcName) !=0)
-//                 {
-//                     pGetLanRes->CCParamRev.CompletionCode = CC_UNSPECIFIED_ERR;
-//                     return sizeof(GetLanCCRev_T);
-//                 }
-//                 pGetLanRes->ConfigData.PHYConfig.Interface = EthIndex;
-//                 pGetLanRes->ConfigData.PHYConfig.AutoNegotiationEnable = PHYCfg.autoneg;
-//                 pGetLanRes->ConfigData.PHYConfig.Speed = PHYCfg.speed;
-//                 pGetLanRes->ConfigData.PHYConfig.Duplex = PHYCfg.duplex;
-//                 pGetLanRes->ConfigData.PHYConfig.CapabilitiesSupported = PHYCfg.supported;
-
-//                 return sizeof(GetLanCCRev_T) + sizeof(PHYConfig_T);
-
-//             case LAN_PARAMS_AMI_OEM_MTU_SETTINGS:
-//                         memset(IfcName,0,sizeof(IfcName));
-//                         if(GetIfcNameByIndex(EthIndex, IfcName) != 0)
-//                         {
-//                             TCRIT("Error in Getting Interface Name for the lan Index:%d\n",EthIndex);
-//                             pGetLanRes->CCParamRev.CompletionCode = CC_UNSPECIFIED_ERR;
-//                             return sizeof(GetLanCCRev_T);
-
-//                         }
-//                         if(nwGetEthInformation(&PHYCfg, IfcName) !=0)
-//                         {
-//                             pGetLanRes->CCParamRev.CompletionCode = CC_UNSPECIFIED_ERR;
-//                             return sizeof(GetLanCCRev_T);
-//                         }
-					
-//                         pGetLanRes->ConfigData.MTU_size = PHYCfg.maxtxpkt;
-//                         return sizeof(GetLanCCRev_T) + sizeof(uint16_t);
-				
-//         case LAN_PARAMS_SSI_OEM_2ND_PRI_ETH_MAC_ADDR:
-//             if(g_corefeatures.ssi_support == ENABLED)
-//             {
-//                 netindex = 0x1; /* Specify the 2nd interface */
-//                 nwReadNWCfg_v4_v6(&NWConfig, &NWConfig6, netindex,g_corefeatures.global_ipv6);
-//                 _fmemcpy(pGetLanRes->ConfigData.SSI2ndPriEthMACAddr, NWConfig.MAC, MAC_ADDR_LEN);
-//                 return sizeof(GetLanCCRev_T) + sizeof(pGetLanRes->ConfigData.SSI2ndPriEthMACAddr);
-//              }
-//              else
-//              {
-//                 pGetLanRes->CCParamRev.CompletionCode = CC_PARAM_NOT_SUPPORTED;
-//                 return sizeof(uint8_t);
-//              }
-//             break;
-
-//         case LAN_PARAMS_SSI_OEM_LINK_CTRL:
-//             if(g_corefeatures.ssi_support == ENABLED)
-//             {
-//                 pGetLanRes->ConfigData.SSILinkControl = 0;
-
-//                 pChannelInfo = getChannelInfo(pBMCInfo->RMCPLAN1Ch, BMCInst);
-//                 if(NULL == pChannelInfo)
-//                 {
-//                     *pRes = CC_UNSPECIFIED_ERR;
-//                     return	sizeof (*pRes);
-//                 }
+    //! Validate the SetSelector value. 
+    if (0x00 != pGetLanReq->SetSelect)
+    {
+        printf("---> SetSelector not support!\n");
+        *pRes = CC_INV_DATA_FIELD;  
+        return sizeof (*pRes);  
+    }  
 
-//                 if (pChannelInfo->AccessMode == 0x02)		/* If 1st channal is available */
-//                     pGetLanRes->ConfigData.SSILinkControl |= BIT0;
-//                 NIC_Count = g_coremacros.global_nic_count;
-//                 if (NIC_Count == 2)
-//                 {
-//                     pChannelInfo = getChannelInfo(pBMCInfo->RMCPLAN2Ch, BMCInst);
-//                     if(NULL == pChannelInfo)
-//                     {
-//                         *pRes = CC_UNSPECIFIED_ERR;
-//                         return	sizeof (*pRes);
-//                     }
-
-//                     if (pChannelInfo->AccessMode == 0x02)	/* If 2nd channal is available */
-//                         pGetLanRes->ConfigData.SSILinkControl |= BIT1;
-//                 }
-//                 return sizeof(GetLanCCRev_T) + sizeof(pGetLanRes->ConfigData.SSILinkControl);
-//             }
-//             else
-//             {
-//                 pGetLanRes->CCParamRev.CompletionCode = CC_PARAM_NOT_SUPPORTED;
-//                 return sizeof(uint8_t);
-//             }
-//             break;
+    //! Validate the BlockSelector value.  
+    if (0x00 != pGetLanReq->BlockSelect)  
+    {
+        printf("---> BlockSelector not support!\n");
+        *pRes = CC_INV_DATA_FIELD;  
+        return sizeof (*pRes);  
+    }
 
-//         case LAN_PARAMS_SSI_OEM_CMM_IP_ADDR:
-//             if(g_corefeatures.ssi_support == ENABLED)
-//             {
-//                 _fmemcpy (pGetLanRes->ConfigData.CMMIPAddr, pBMCInfo->SSIConfig.CMMIPAddr, IP_ADDR_LEN);
-//                 return sizeof(GetLanCCRev_T) + sizeof(pGetLanRes->ConfigData.CMMIPAddr);
-//             }
-//             else
-//             {
-//                 pGetLanRes->CCParamRev.CompletionCode = CC_PARAM_NOT_SUPPORTED;
-//                 return sizeof(uint8_t);
-//             }
-//             break;
 
-//         default:
-//             if(g_corefeatures.ncsi_cmd_support == ENABLED)
-//             {
-//                 switch(pGetLanReq->ParameterSelect)
-//                 {
-//                     case LAN_PARAMS_AMI_OEM_NCSI_CONFIG_NUM:
-//                         NCSIGetTotalPorts(&ncsiPortConfigNum);
-                        
-//                         if (ncsiPortConfigNum >= 0xFF)
-//                         {
-//                             pGetLanRes->CCParamRev.CompletionCode = CC_INV_DATA_FIELD;
-//                             return sizeof(GetLanCCRev_T);
-//                         }
-//                         else
-//                         {
-//                             pGetLanRes->ConfigData.NumNCSIPortConfigs = ncsiPortConfigNum;
-//                             return sizeof(GetLanCCRev_T) + sizeof(uint8_t);
-//                         }
-//                     break;
-                                
-//                     case LAN_PARAMS_AMI_OEM_NCSI_SETTINGS:
-//                     {
-//                         NIC_Count=g_coremacros.global_nic_count;
-//                         if (pGetLanReq->SetSelect >= NIC_Count)
-//                         {
-//                             pGetLanRes->CCParamRev.CompletionCode = CC_INV_DATA_FIELD;
-//                             return sizeof(GetLanCCRev_T);
-//                         }
-//                         NCSIConfig_T configData;
-//                         char interfaceName[8];
-
-//                         memset(&configData, 0, sizeof(NCSIConfig_T));
-//                         memset(interfaceName, 0, sizeof(interfaceName));
-
-//                         snprintf(interfaceName, sizeof(interfaceName), "%s%d", "eth", pGetLanReq->SetSelect);
-                        
-//                         if (NCSIGetPortConfigByName(interfaceName, &configData) != 0)
-//                         {
-//                             pGetLanRes->CCParamRev.CompletionCode = CC_INV_DATA_FIELD;
-//                             return sizeof(GetLanCCRev_T);
-//                         }
-
-//                         if (configData.PackageId >= 0xFF || configData.ChannelId >= 0xFF)
-//                         {
-//                             pGetLanRes->CCParamRev.CompletionCode = CC_INV_DATA_FIELD;
-//                             return sizeof(GetLanCCRev_T);
-//                         }
-
-//                         pGetLanRes->ConfigData.NCSIPortConfig.Interface = pGetLanReq->SetSelect;
-//                         pGetLanRes->ConfigData.NCSIPortConfig.PackageId = configData.PackageId;
-//                         pGetLanRes->ConfigData.NCSIPortConfig.ChannelId = configData.ChannelId;
-
-//                         return sizeof(GetLanCCRev_T) + sizeof(NCSIPortConfig_T);
-//                     }
-//                     break;
-
-//                     case LAN_PARAMS_AMI_OEM_NCSI_MODE_CHANGE:
-//                     {
-//                         NIC_Count=g_coremacros.global_nic_count;
-//                         if (pGetLanReq->SetSelect >= NIC_Count)
-//                         		{
-//                         	printf("---> log5, SetSelect = %d, NIC_Count = %d\n",pGetLanReq->SetSelect, NIC_Count);
-//                            pGetLanRes->CCParamRev.CompletionCode = CC_INV_DATA_FIELD;
-//                            return sizeof(GetLanCCRev_T);
-//                         		}
-						
-//                         NCSIConfig_T configData;
-//                         char interfaceName[8];
-//                         memset(&configData, 0, sizeof(NCSIConfig_T));
-//                         memset(interfaceName, 0, sizeof(interfaceName));
-				
-//                         snprintf(interfaceName, sizeof(interfaceName), "%s%d", "eth", pGetLanReq->SetSelect);
-				
-//                         if (NCSIGetPortConfigByName(interfaceName, &configData) != 0)
-//                         {
-//                             pGetLanRes->CCParamRev.CompletionCode = CC_INV_DATA_FIELD;
-//                             return sizeof(GetLanCCRev_T);
-//                         }
-						
-//                         if (configData.AutoSelect>= 0xFF)
-//                         {
-//                             pGetLanRes->CCParamRev.CompletionCode = CC_INV_DATA_FIELD;
-//                             return sizeof(GetLanCCRev_T);
-//                         }
-
-//                         pGetLanRes->ConfigData.NCSIModeConfig.Interface = pGetLanReq->SetSelect;
-//                         pGetLanRes->ConfigData.NCSIModeConfig.NCSIMode = configData.AutoSelect;
-
-//                         return sizeof(GetLanCCRev_T) + sizeof(NCSIModeConfig_T);
-//                     }
-//                     break;
-
-//                     case LAN_PARAMS_AMI_OEM_NCSI_EXTENSION:
-//                     {
-//                         char ncsi_default_ifc[IFNAMSIZ + 1] = "eth1";
-                        
-//                         if ((pGetLanReq->SetSelect == 0x20) && 
-//                             (g_corefeatures.ncsi_keep_phy_linkup_support == ENABLED))
-//                         {
-//                             NIC_Count=g_coremacros.global_nic_count;
-//                             NCSIConfig_T configData;
-//                             char interfaceName[8];
-//                             memset(&configData, 0, sizeof(NCSIConfig_T));
-//                             memset(interfaceName, 0, sizeof(interfaceName));
-
-//                             GetMacrodefine_string("CONFIG_SPX_FEATURE_NCSI_DEFAULT_INTERFACE", ncsi_default_ifc);
-//                             snprintf(interfaceName, sizeof(interfaceName), "%s", ncsi_default_ifc);
-
-//                             if (NCSIGetPortConfigByName(interfaceName, &configData) != 0)
-//                             {
-//                                 pGetLanRes->CCParamRev.CompletionCode = CC_INV_DATA_FIELD;
-//                                 return sizeof(GetLanCCRev_T);
-//                             }
-
-//                             char Interface[2];
-//                             snprintf(Interface, sizeof(Interface), "%c", interfaceName[3]);
-//                             pGetLanRes->ConfigData.NCSIPHYConfigGet.Interface = atoi(Interface);
-//                             pGetLanRes->ConfigData.NCSIPHYConfigGet.VetoBit = configData.VetoBit;
-
-//                             return sizeof(GetLanCCRev_T) + sizeof(NCSIPHYConfigGet_T);
-//                     }
-//                     else
-//                     {
-//                         pGetLanRes->CCParamRev.CompletionCode = CC_PARAM_NOT_SUPPORTED;
-//                         return sizeof(GetLanCCRev_T);
-//                     }
-//                 	}
-//                     break;
-					
-//                     default:
-//                         TDBG("In Valid Option\n");
-                        
-//                 }
-//             }
-//             pGetLanRes->CCParamRev.CompletionCode = CC_PARAM_NOT_SUPPORTED;
-//             return sizeof(uint8_t);
-//         }
+    EthIndex= 0;
+    sprintf(IfcName, "eth%d", EthIndex);
 
-//     }
+    if ((pGetLanReq->ChannelNum & GET_PARAMETER_REVISION_MASK) != 0)
+    {
+        if(MAX_LAN_CONF_PARAM >= pGetLanReq->ParameterSelect)
+        {
+            return sizeof(GetLanCCRev_T);
+        }
+        else
+        {
+             *pRes = CC_PARAM_NOT_SUPPORTED;
+             return sizeof (*pRes);  
+        }
 
-    
-//     return sizeof(GetLanCCRev_T) + LanconfigParameterLength[pGetLanReq->ParameterSelect];
-// }
+    }
+    else
+    {
+    	printf("GetLanConfigParam log4\n");
+        switch(pGetLanReq->ParameterSelect)
+        {
+            case LAN_PARAM_SET_IN_PROGRESS:
+                pGetLanRes->ConfigData.SetInProgress = 0;
+                break;
+            case LAN_PARAM_AUTH_TYPE_SUPPORT:
+                pGetLanRes->ConfigData.AuthTypeSupport = 0x04;  //only support MD5
+                break;
+            case LAN_PARAM_AUTH_TYPE_ENABLES:
+                pGetLanRes->ConfigData.AuthTypeEnables.AuthTypeCallBack = 0x04; //MD5
+                pGetLanRes->ConfigData.AuthTypeEnables.AuthTypeUser = 0x04;
+                pGetLanRes->ConfigData.AuthTypeEnables.AuthTypeOperator = 0x04;
+                pGetLanRes->ConfigData.AuthTypeEnables.AuthTypeAdmin = 0x04;
+                pGetLanRes->ConfigData.AuthTypeEnables.AuthTypeOem = 0x04;                
+                break;
+            case LAN_PARAM_IP_ADDRESS:
+                pGetLanRes->ConfigData.IPAddr[0] = g_BMCInfo.IpmiConfig.LanInfo[EthIndex].IPAddr[0]; 
+                pGetLanRes->ConfigData.IPAddr[1] = g_BMCInfo.IpmiConfig.LanInfo[EthIndex].IPAddr[1];
+                pGetLanRes->ConfigData.IPAddr[2] = g_BMCInfo.IpmiConfig.LanInfo[EthIndex].IPAddr[2];
+                pGetLanRes->ConfigData.IPAddr[3] = g_BMCInfo.IpmiConfig.LanInfo[EthIndex].IPAddr[3];
+                break;
+            case LAN_PARAM_IP_ADDRESS_SOURCE:
+                pGetLanRes->ConfigData.IPAddrSrc = 1;   //static
+                break;
+            case LAN_PARAM_MAC_ADDRESS:
+                pGetLanRes->ConfigData.MACAddr[0] = g_BMCInfo.IpmiConfig.LanInfo[EthIndex].MACAddr[0];
+                pGetLanRes->ConfigData.MACAddr[1] = g_BMCInfo.IpmiConfig.LanInfo[EthIndex].MACAddr[1];
+                pGetLanRes->ConfigData.MACAddr[2] = g_BMCInfo.IpmiConfig.LanInfo[EthIndex].MACAddr[2];
+                pGetLanRes->ConfigData.MACAddr[3] = g_BMCInfo.IpmiConfig.LanInfo[EthIndex].MACAddr[3];
+                pGetLanRes->ConfigData.MACAddr[4] = g_BMCInfo.IpmiConfig.LanInfo[EthIndex].MACAddr[4];
+                pGetLanRes->ConfigData.MACAddr[5] = g_BMCInfo.IpmiConfig.LanInfo[EthIndex].MACAddr[5];
+                break;
+            case LAN_PARAM_SUBNET_MASK:
+                pGetLanRes->ConfigData.SubNetMask[0] = g_BMCInfo.IpmiConfig.LanInfo[EthIndex].NetMask[0];
+                pGetLanRes->ConfigData.SubNetMask[1] = g_BMCInfo.IpmiConfig.LanInfo[EthIndex].NetMask[1];
+                pGetLanRes->ConfigData.SubNetMask[2] = g_BMCInfo.IpmiConfig.LanInfo[EthIndex].NetMask[2];
+                pGetLanRes->ConfigData.SubNetMask[3] = g_BMCInfo.IpmiConfig.LanInfo[EthIndex].NetMask[3];
+                break;
+            case LAN_PARAM_IPv4_HEADER: //下面这些参数是多少不知道,参考LanIfc.c的SetIPv4Header函数。
+                pGetLanRes->ConfigData.Ipv4HdrParam.TimeToLive = 64;
+                pGetLanRes->ConfigData.Ipv4HdrParam.IpHeaderFlags = 0;
+                pGetLanRes->ConfigData.Ipv4HdrParam.TypeOfService = 0x10;   //default
+                break;
+            case LAN_PARAM_PRI_RMCP_PORT:
+                pGetLanRes->ConfigData.PrimaryRMCPPort = LAN_RMCP_PORT; //LSB first
+                break;
+            case LAN_PARAM_SEC_RMCP_PORT:
+                *pRes = CC_PARAM_NOT_SUPPORTED;
+                return sizeof (uint8_t);
+                break;
+
+            case LAN_PARAM_BMC_GENERATED_ARP_CONTROL:
+                pGetLanRes->ConfigData.BMCGeneratedARPControl = 0;
+                break;
+            case LAN_PARAM_GRATITIOUS_ARP_INTERVAL:
+                pGetLanRes->ConfigData.GratitousARPInterval = 4;    //4*500ms
+                break;
+            case LAN_PARAM_DEFAULT_GATEWAY_IP:
+                pGetLanRes->ConfigData.DefaultGatewayIPAddr[0] = g_BMCInfo.IpmiConfig.LanInfo[EthIndex].DefaultGW[0];
+                pGetLanRes->ConfigData.DefaultGatewayIPAddr[1] = g_BMCInfo.IpmiConfig.LanInfo[EthIndex].DefaultGW[1];
+                pGetLanRes->ConfigData.DefaultGatewayIPAddr[2] = g_BMCInfo.IpmiConfig.LanInfo[EthIndex].DefaultGW[2];
+                pGetLanRes->ConfigData.DefaultGatewayIPAddr[3] = g_BMCInfo.IpmiConfig.LanInfo[EthIndex].DefaultGW[3];
+                break;
+            case LAN_PARAM_DEFAULT_GATEWAY_MAC: //这个参数提供不了。
+                *pRes = CC_PARAM_NOT_SUPPORTED;
+                return sizeof (uint8_t);
+                break;
+            case LAN_PARAM_BACKUP_GATEWAY_IP:
+                *pRes = CC_PARAM_NOT_SUPPORTED;
+                return sizeof (uint8_t);
+                break;
+            case LAN_PARAM_BACKUP_GATEWAY_MAC:
+                *pRes = CC_PARAM_NOT_SUPPORTED;
+                return sizeof (uint8_t);
+                break;
+            case LAN_PARAM_COMMUNITY_STRING:
+                sprintf(pGetLanRes->ConfigData.CommunityStr,"public");
+                break;
+            case LAN_PARAM_DEST_NUM:
+                pGetLanRes->ConfigData.NumDest = 0;
+                break;
+            case LAN_PARAM_SELECT_DEST_TYPE:
+                *pRes = CC_PARAM_NOT_SUPPORTED;
+                return sizeof (uint8_t);
+                break;
+            case LAN_PARAM_SELECT_DEST_ADDR:
+                *pRes = CC_PARAM_NOT_SUPPORTED;
+                return sizeof (uint8_t);
+                break;
+            case LAN_PARAM_VLAN_ID:
+                *pRes = CC_PARAM_NOT_SUPPORTED;
+                return sizeof (uint8_t);
+                break;
+            case LAN_PARAM_VLAN_PRIORITY:
+                *pRes = CC_PARAM_NOT_SUPPORTED;
+                return sizeof (uint8_t);
+                break;
+            case LAN_PARAM_CIPHER_SUITE_ENTRY_SUP:
+                *pRes = CC_PARAM_NOT_SUPPORTED;
+                return sizeof (uint8_t);
+                break;
+            case LAN_PARAM_CIPHER_SUITE_ENTRIES:
+                *pRes = CC_PARAM_NOT_SUPPORTED;
+                return sizeof (uint8_t);
+                break;
+            case LAN_PARAM_CIPHER_SUITE_PRIV_LEVELS:
+                *pRes = CC_PARAM_NOT_SUPPORTED;
+                return sizeof (uint8_t);
+                break;
+            case LAN_PARAM_VLAN_TAGS:
+                *pRes = CC_PARAM_NOT_SUPPORTED;
+                return sizeof (uint8_t);
+                break;
+            default: 
+                *pRes = CC_PARAM_NOT_SUPPORTED;
+                return sizeof(uint8_t);
+                break;
+        }
+    }
+    return sizeof(GetLanCCRev_T) + LanconfigParameterLength[pGetLanReq->ParameterSelect];
+}
 
 
 // /*---------------------------------------------------

+ 2 - 2
app/bmc/msghndlr/Transport/LANConfig.h

@@ -36,8 +36,8 @@
  * Get/Set commands allow retrieval and updation of various LAN parameters.
  * @{
 **/
- int SetLanConfigParam  (  uint8_t* pReq, uint8_t ReqLen,   uint8_t* pRes );
-// int GetLanConfigParam  (  uint8_t* pReq, uint8_t ReqLen,   uint8_t* pRes );
+int SetLanConfigParam  (  uint8_t* pReq, uint8_t ReqLen,   uint8_t* pRes );
+int GetLanConfigParam  (  uint8_t* pReq, uint8_t ReqLen,   uint8_t* pRes );
 // int SuspendBMCArps (  uint8_t* pReq, uint8_t ReqLen,   uint8_t* pRes );
 // int GetIPUDPRMCPStats (  uint8_t* pReq, uint8_t ReqLen,   uint8_t* pRes );
 

+ 1 - 0
app/common_include/com_BmcType.h

@@ -313,6 +313,7 @@ typedef struct{
 } FanInfo_T;
 
 typedef struct{
+    uint8_t present;        //0:不在位,1:在位。这个字段是给主模块用的,主模块会重写从模块的该字段。
     uint8_t healthStatus;   //0: 未知(灰色) 1:健康(绿色) 2:警告(黄色)3:错误(红色)
     uint8_t bladeName[31];  //10个汉字或30个字符
     uint8_t slotID;         

+ 6 - 6
app/common_include/com_IPMI_LANConfig.h

@@ -310,13 +310,13 @@ typedef struct
 }   GetLanConfigReq_T;
 
 
-///* GetLanConfigRes_T */
-//typedef struct
-//{
-//    GetLanCCRev_T   CCParamRev;
-//    LANConfigUn_T   ConfigData;
+/* GetLanConfigRes_T */
+typedef struct
+{
+   GetLanCCRev_T   CCParamRev;
+   LANConfigUn_T   ConfigData;
 
-//}   GetLanConfigRes_T;
+}   GetLanConfigRes_T;
 
 /* GetLanConfigOEM_T */
 typedef struct

+ 12 - 12
app/goahead-3.6.5/src/libipmi/inc/libipmi_storlead_OEM.h

@@ -29,18 +29,18 @@ typedef struct{
 }SysInfo_T;
 
 
-typedef struct{
-	uint8_t bladeNum;	//index
-	uint8_t isChmc;	//is main blade
-	uint8_t IPMBAddr;	//physical ID
-	uint8_t status;	//0: not install, 1: normal, 2: error
-	uint8_t reserve;
-} bladeStatus_T;
-
-typedef struct{
-	uint8_t complecode;	
-	bladeStatus_T bdStatus[10];
-} CardStatus_T;
+// typedef struct{
+// 	uint8_t bladeNum;	//index
+// 	uint8_t isChmc;	//is main blade
+// 	uint8_t IPMBAddr;	//physical ID
+// 	uint8_t status;	//0: not install, 1: normal, 2: error
+// 	uint8_t reserve;
+// } bladeStatus_T;
+
+// typedef struct{
+// 	uint8_t complecode;	
+// 	bladeStatus_T bdStatus[10];
+// } CardStatus_T;
 
 typedef struct{
 	uint8_t slotNum; //total slot numbers of chassis.

+ 1 - 0
app/goahead-3.6.5/src/web_interface/src/dashboard.c

@@ -499,6 +499,7 @@ void getAllBladeInfo(Webs *wp){
     for(i=0;i<BLADE_NUMBERS;i++)
     {
         cJSON_AddItemToArray(pJsonArry,pJsonsub=cJSON_CreateObject()); /* 给创建的数组增加对对象*/
+        cJSON_AddNumberToObject(pJsonsub, "present", pBladeStatus[i].present);  //0:不在位,1:在位
         cJSON_AddNumberToObject(pJsonsub, "status", pBladeStatus[i].healthStatus); //0:灰色, 1: 绿色 2:红色
         cJSON_AddNumberToObject(pJsonsub, "slot", pBladeStatus[i].slotID); 
         cJSON_AddNumberToObject(pJsonsub, "power", pBladeStatus[i].pwrStatus); 

+ 2 - 1
app/ipmitool-1.8.18/lib/ipmi_lanp.c

@@ -82,9 +82,10 @@ static void print_lan_usage(void);
 static int
 is_lan_channel(struct ipmi_intf * intf, uint8_t chan)
 {
-	uint8_t medium;
+	//uint8_t medium;
 
 	//jimbo modify, 固定死网络的通道号是1
+	printf("--->is_lan_channel %d\n", chan);
 	if(chan == 1)
 		return 1;
 	// if (chan < 1 || chan > IPMI_CHANNEL_NUMBER_MAX)