123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304 |
- /****************************************************************
- ****************************************************************
- ** **
- ** (C)Copyright 2005-2006, American Megatrends Inc. **
- ** **
- ** All Rights Reserved. **
- ** **
- ** 6145-F, Northbelt Parkway, Norcross, **
- ** **
- ** Georgia - 30071, USA. Phone-(770)-246-8600. **
- ** **
- ****************************************************************
- ****************************************************************/
- /*****************************************************************
- *
- * Firewall.c
- * Firewall Commands Handler
- *
- * Author: Basavaraj Astekar <basavaraja@ami.com>
- * : Bakka Ravinder Reddy <bakkar@ami.com>
- *
- *****************************************************************/
- #include "Firewall.h"
- #include "MsgHndlrTask.h"
- #include "Support.h"
- #include "com_IPMIDefs.h"
- #include "com_IPMI_Firewall.h"
- /* Reserved bit macro definitions */
- #define RESERVED_BITS_GETNETFNSUP 0xF0 //(BIT7 | BIT6 | BIT5 |BIT4)
- #define RESERVED_BITS_GETCMDSUP_CH 0xF0 //(BIT7 | BIT6 | BIT5 |BIT4)
- #define RESERVED_BITS_GETCMDSUP_LUN 0xFC //(BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2)
- #define RESERVED_BITS_GETCMDSUP_NETFUN 0x80 //BIT7 \BIT6 (11 and 10 are reserved as per IPMI spec)
- #define RESERVED_BITS_GETSUBFNSUP_CH 0xF0 //(BIT7 | BIT6 | BIT5 | BIT4)
- #define RESERVED_BITS_GETSUBFNSUP_NETFN 0xC0 //(BIT7 | BIT6)
- #define RESERVED_BITS_GETSUBFNSUP_LUN 0xFC //(BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2)
- #define RESERVED_BITS_GETCFGCMDS_CH 0xF0 //(BIT7 | BIT6 | BIT5 |BIT4)
- #define RESERVED_BITS_GETCFGCMDS_LUN 0xFC //(BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2)
- #define RESERVED_BITS_GETCFGCMDS_NETFUN 0x80 //BIT7 \BIT6 (11 and 10 are reserved as per IPMI spec)
- #define RESERVED_BITS_GETCFGSUBFNS_CH 0xF0 //(BIT7 | BIT6 | BIT5 |BIT4)
- #define RESERVED_BITS_GETCFGSUBFNS_NETFN 0xC0 //(BIT7 | BIT6)
- #define RESERVED_BITS_GETCFGSUBFNS_LUN 0xFC //(BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2)
- #define RESERVED_BITS_SETCMDEN_CH 0xF0 //(BIT7 | BIT6 | BIT5 |BIT4)
- #define RESERVED_BITS_SETCMDEN_LUN 0xFC //(BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2)
- #define RESERVED_BITS_SETCMDEN_NETFUN 0x80 //BIT7 \BIT6 (11 and 10 are reserved as per IPMI spec)
- #define RESERVED_BITS_GETCMDEN_CH 0xF0 //(BIT7 | BIT6 | BIT5 |BIT4)
- #define RESERVED_BITS_GETCMDEN_LUN 0xFC //(BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2)
- #define RESERVED_BITS_GETCMDEN_NETFUN 0x80 //BIT7 \BIT6 (11 and 10 are reserved as per IPMI spec)
- #define RESERVED_BITS_SETSUBFNEN_CH 0xF0 //(BIT7 | BIT6 | BIT5 | BIT4)
- #define RESERVED_BITS_SETSUBFNEN_NETFN 0xC0 //(BIT7 | BIT6)
- #define RESERVED_BITS_SETSUBFNEN_LUN 0xFC //(BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2)
- #define RESERVED_BITS_GETSUBFNEN_CH 0xF0 //(BIT7 | BIT6 | BIT5 | BIT4)
- #define RESERVED_BITS_GETSUBFNEN_NETFN 0xC0 //(BIT7 | BIT6)
- #define RESERVED_BITS_GETSUBFNEN_LUN 0xFC //(BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2)
- #define RESERVED_BITS_GETOEMNETFNIANASUPPORT_CH 0xF0 //(BIT7 | BIT6 | BIT5 | BIT4)
- #define RESERVED_BITS_GETOEMNETFNIANASUPPORT_NETFN 0xC0 //(BIT7 | BIT6)
- #define RESERVED_BITS_GETOEMNETFNIANASUPPORT_LISTINDEX 0xC0 //(BIT7 | BIT6)
- #if IPM_DEVICE == 1
- //static int GetRequiredLength (uint8_t NetFn, uint8_t CmdReqSize);
- //static int ValidateFFNetFnData (uint8_t NetFn, NetFnParams_T* pNetFnParams ,BMCInfo_t *pBMCInfo);
- /*** Local Macro definitions ***/
- #define LUN_NO_CMD_SUPPORT 0x00
- #define LUN_NO_RESTRICTION_SUPPORT 0x01
- #define LUN_RESTRICTION_SUPPORT 0x02
- #define LUN_00 LUN_RESTRICTION_SUPPORT
- #define LUN_01 LUN_NO_CMD_SUPPORT << 2
- #define LUN_10 LUN_NO_CMD_SUPPORT << 4
- #define LUN_11 LUN_NO_CMD_SUPPORT << 6
- #define DMTF_DEFINING_BODY 0x01
- //Group Extension codes
- #define GROUPEXTNCODE_PICMG 0x00
- #define GROUPEXTNCODE_DMTF 0x01
- #define GROUPEXTNCODE_SSI 0x02
- #define GROUPEXTNCODE_VSO 0x03
- #define GROUPEXTNCODE_DCMI 0xDC
- #define Max_GROUPEXTNCODE 5
- /* Add IANA No's to the Array */
- IANA_T m_IANAList[] = { /* LS byte first */
- {{0xFF,0xFF,0xFF}}, /* Reserved Oem IANA */
- #ifdef IANA_OEM_LIST
- IANA_OEM_LIST
- #endif
- };
- uint8_t GroupExtnCode[Max_GROUPEXTNCODE]={
- GROUPEXTNCODE_PICMG,
- GROUPEXTNCODE_DMTF,
- GROUPEXTNCODE_SSI,
- GROUPEXTNCODE_VSO,
- GROUPEXTNCODE_DCMI,
- };
- #if GET_NETFN_SUP != UNIMPLEMENTED
- /*---------------------------------------
- * GetNetFnSup
- *---------------------------------------*/
- int
- GetNetFnSup ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes)
- {
- printf("GetNetFnSup not implement\r\n");
- *pRes = CC_INV_CMD;
- return sizeof(*pRes);
- }
- #endif /* GET_NETFN_SUP != UNIMPLEMENTED */
- #if GET_CMD_SUP != UNIMPLEMENTED
- /*---------------------------------------
- * GetCmdSup
- *---------------------------------------*/
- int
- GetCmdSup ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes)
- {
- printf("GetCmdSup not implement\r\n");
- *pRes = CC_INV_CMD;
- return sizeof(*pRes);
- }
- #endif /* GET_CMD_SUP != UNIMPLEMENTED */
- #if GET_SUBFN_SUP != UNIMPLEMENTED
- /*---------------------------------------
- * GetSubFnSup
- *---------------------------------------*/
- int
- GetSubFnSup ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes)
- {
- printf("GetSubFnSup not implement\r\n");
- *pRes = CC_INV_CMD;
- return sizeof(*pRes);
- }
- #endif /* GET_SUBFN_SUP != UNIMPLEMENTED */
- #if GET_CONFIG_CMDS != UNIMPLEMENTED
- /*---------------------------------------
- * GetConfigCmds
- *---------------------------------------*/
- int
- GetConfigCmds ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes)
- {
- printf("GetConfigCmds not implement\r\n");
- *pRes = CC_INV_CMD;
- return sizeof(*pRes);
- }
- #endif /* GET_CONFIG_CMDS != UNIMPLEMENTED */
- #if GET_CONFIG_SUB_FNS != UNIMPLEMENTED
- /*---------------------------------------
- * GetConfigSubFns
- *---------------------------------------*/
- int
- GetConfigSubFns ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes)
- {
- printf("GetConfigSubFns not implement\r\n");
- *pRes = CC_INV_CMD;
- return sizeof(*pRes);
- }
- #endif /* GET_CONFIG_SUB_FNS != UNIMPLEMENTED */
- #if SET_CMD_ENABLES != UNIMPLEMENTED
- /*---------------------------------------
- * SetCmdEnables
- *---------------------------------------*/
- int
- SetCmdEnables ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes)
- {
- printf("SetCmdEnables not implement\r\n");
- *pRes = CC_INV_CMD;
- return sizeof(*pRes);
- }
- #endif /* SET_CMD_ENABLES != UNIMPLEMENTED */
- #if GET_CMD_ENABLES != UNIMPLEMENTED
- /*---------------------------------------
- * GetCmdEnables
- *---------------------------------------*/
- int
- GetCmdEnables ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes)
- {
- printf("GetCmdEnables not implement\r\n");
- *pRes = CC_INV_CMD;
- return sizeof(*pRes);
- }
- #endif /* GET_CMD_ENABLES != UNIMPLEMENTED */
- #if SET_SUBFN_ENABLES != UNIMPLEMENTED
- /*---------------------------------------
- * SetSubFnEnables
- *---------------------------------------*/
- int
- SetSubFnEnables ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes)
- {
- printf("SetSubFnEnables not implement\r\n");
- *pRes = CC_INV_CMD;
- return sizeof(*pRes);
- }
- #endif /* SET_SUBFN_ENABLES != UNIMPLEMENTED */
- #if GET_SUBFN_ENABLES != UNIMPLEMENTED
- /*---------------------------------------
- * GetSubFnEnables
- *---------------------------------------*/
- int
- GetSubFnEnables ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes)
- {
- printf("GetSubFnEnables not implement\r\n");
- *pRes = CC_INV_CMD;
- return sizeof(*pRes);
- }
- #endif /* GET_SUBFN_ENABLES != UNIMPLEMENTED */
- #if GET_OEM_NETFN_IANA_SUPPORT != UNIMPLEMENTED
- /*---------------------------------------
- * GetOEMNetFnIANASupport
- *---------------------------------------*/
- int
- GetOEMNetFnIANASupport ( uint8_t* pReq, uint8_t ReqLen, uint8_t* pRes)
- {
- printf("GetOEMNetFnIANASupport not implement\r\n");
- *pRes = CC_INV_CMD;
- return sizeof(*pRes);
- }
- #endif //GET_OEM_NETFN_IANA_SUPPORT != UNIMPLEMENTED
- //static int GetRequiredLength(uint8_t NetFn, uint8_t CmdReqSize)
- //{
- // uint8_t RequiredLength;
- // switch (NetFn)
- // {
- // case NETFN_OEM:
- // RequiredLength = CmdReqSize;
- // break;
- // case NETFN_AMI:
- // RequiredLength = CmdReqSize - sizeof(NetFnParams_T) + 1;
- // break;
- // case NETFN_PICMG:
- // RequiredLength = CmdReqSize - sizeof(NetFnParams_T) + 1;
- // break;
- // default:
- // RequiredLength = CmdReqSize - sizeof(NetFnParams_T);
- // break;
- // }
- // return RequiredLength;
- //}
- //static int ValidateFFNetFnData (uint8_t NetFn, NetFnParams_T* pNetFnParams , BMCInfo_t *pBMCInfo)
- //{
- // uint8_t i;
- //
- // // If NetFn is 0x2C, check for Defining Body code
- // if (NETFN_PICMG == NetFn )
- // {
- // for (i = 0; i < sizeof (pBMCInfo->GroupExtnMsgHndlrTbl) / sizeof (pBMCInfo->GroupExtnMsgHndlrTbl [0]); i++)
- // {
- // if (pBMCInfo->GroupExtnMsgHndlrTbl [i].NetFn == NetFn)
- // return (pBMCInfo->GroupExtnMsgHndlrTbl [i].GroupExtnCode != pNetFnParams->DefBodyCode);
- // }
- // }
- // else if (NETFN_OEM == NetFn) // If NetFn is 0x2E, check for OEM IANA
- // {
- // for (i=0; i <(sizeof(m_IANAList)/ sizeof(m_IANAList[0])); i++)
- // {
- // if (0 == _fmemcmp( pNetFnParams->IANA, m_IANAList[i].IANA, sizeof(IANA_T)))
- // {
- // break;
- // }
- // }
- // if (i >= (sizeof(m_IANAList)/ sizeof(m_IANAList[0])))
- // {
- // // Given IANA in Req is not matching any of the IANA in the IANA list
- // return 1;
- // }
- // }
- // return 0;
- //}
- #endif /* IPM_DEVICE */
|