session.c 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. #include "session.h"
  2. INT8U Set_BMCInfo_IPMIConfig_LANIfcSupport(INT8U Value,int BMCInst)
  3. {
  4. _FAR_ BMCInfo_t* pBMCInfo = &g_BMCInfo;//[BMCInst];
  5. pBMCInfo->IpmiConfig.LANIfcSupport=Value;
  6. return 0;
  7. }
  8. INT8U Set_BMCInfo_IPMIConfig_SerialIfcSupport(INT8U Value,int BMCInst)
  9. {
  10. _FAR_ BMCInfo_t* pBMCInfo = &g_BMCInfo;//[BMCInst];
  11. pBMCInfo->IpmiConfig.SerialIfcSupport=Value;
  12. return 0;
  13. }
  14. INT8U IsLANChannel(INT8U Channel, int BMCInst)
  15. {
  16. _FAR_ BMCInfo_t* pBMCInfo = &g_BMCInfo;//[BMCInst];
  17. int i=0;
  18. //for(i=0;i<sizeof(pBMCInfo->LanIfcConfig)/sizeof(LANIFCConfig_T);i++)
  19. {
  20. //if(pBMCInfo->LanIfcConfig[i].Chnum == Channel)
  21. {
  22. return 1;
  23. }
  24. }
  25. return 0;
  26. }
  27. _FAR_ ChannelUserInfo_T* getChUserIdInfo (INT8U userId, _NEAR_ INT8U *Index, _FAR_ ChannelUserInfo_T* pChUserInfo, int BMCInst)
  28. {
  29. _FAR_ BMCInfo_t* pBMCInfo = &g_BMCInfo;//[BMCInst];
  30. if (userId == 0) { return NULL; }
  31. for(*Index=0; *Index < pBMCInfo->IpmiConfig.MaxChUsers; (*Index)++)
  32. {
  33. if ((pChUserInfo->UserId == userId) && ((pChUserInfo->ID == USER_ID )))
  34. {
  35. return pChUserInfo;
  36. }
  37. pChUserInfo++;
  38. }
  39. printf("getChUserIdInfo is NULL\n");
  40. return NULL;
  41. }
  42. ChannelInfo_T* getChannelInfo (INT8U ch,int BMCInst)
  43. {
  44. INT8U Index;
  45. ChcfgInfo_T *pChannelInfo=NULL;
  46. _FAR_ BMCInfo_t* pBMCInfo = &g_BMCInfo;//[BMCInst];
  47. if(IsLANChannel(ch, BMCInst))
  48. {
  49. if(pBMCInfo->IpmiConfig.LANIfcSupport != 1)
  50. {
  51. return NULL;
  52. }
  53. }/*else
  54. {
  55. if( PRIMARY_IPMB_CHANNEL == ch && pBMCInfo->IpmiConfig.PrimaryIPMBSupport != 1 )
  56. {
  57. return NULL;
  58. }
  59. else if (pBMCInfo->IpmiConfig.SecondaryIPMBSupport != 1 && (pBMCInfo->SecondaryIPMBCh != CH_NOT_USED && ch == pBMCInfo->SecondaryIPMBCh))
  60. {
  61. return NULL;
  62. }
  63. else if (pBMCInfo->IpmiConfig.SerialIfcSupport != 1 && (pBMCInfo->SERIALch != CH_NOT_USED && ch == pBMCInfo->SERIALch))
  64. {
  65. return NULL;
  66. }
  67. else if (pBMCInfo->IpmiConfig.ICMBIfcSupport != 1 && (pBMCInfo->ICMBCh != CH_NOT_USED && ch == pBMCInfo->ICMBCh))
  68. {
  69. return NULL;
  70. }
  71. else if (pBMCInfo->IpmiConfig.SMBUSIfcSupport !=1 && (pBMCInfo->SMBUSCh != CH_NOT_USED && ch == pBMCInfo->SMBUSCh))
  72. {
  73. return NULL;
  74. }
  75. else if (pBMCInfo->IpmiConfig.USBIfcSupport != 1 && (ch == USB_CHANNEL))
  76. {
  77. return NULL;
  78. }
  79. else if (pBMCInfo->IpmiConfig.SMMIfcSupport != 1 && (pBMCInfo->SMMCh != CH_NOT_USED && ch == pBMCInfo->SMMCh))
  80. {
  81. return NULL;
  82. }
  83. else if(pBMCInfo->IpmiConfig.SYSIfcSupport !=1 && ch == SYS_IFC_CHANNEL)
  84. {
  85. return NULL;
  86. }
  87. }
  88. */
  89. for(Index=0;Index<MAX_NUM_CHANNELS;Index++)
  90. {
  91. // if(pBMCInfo->ChConfig[Index].ChType != 0xff)
  92. {
  93. pChannelInfo = &pBMCInfo->ChConfig;//[Index];
  94. printf("Channel numb is %x %x \n",pChannelInfo->ChannelInfo.ChannelNumber,ch);
  95. if(pChannelInfo->ChannelInfo.ChannelNumber == ch)
  96. {
  97. return (ChannelInfo_T *)&pBMCInfo->ChConfig.ChannelInfo;//[Index].ChannelInfo;
  98. }
  99. }
  100. }
  101. printf("pChannelInfo->ChannelInfo.ChannelNumber != ch\n");
  102. return NULL;
  103. }
  104. _FAR_ UserInfo_T* getUserIdInfo (INT8U UserId, int BMCInst)
  105. {
  106. _FAR_ UserInfo_T* pUserTable = (UserInfo_T *) GetNVRUsrCfgAddr (NVRH_USERCONFIG, BMCInst);
  107. _FAR_ BMCInfo_t* pBMCInfo = &g_BMCInfo;//[BMCInst];
  108. if (UserId == 0) { return NULL; }
  109. if (UserId <= pBMCInfo->IpmiConfig.MaxUsers)
  110. {
  111. return &pUserTable[UserId-1];
  112. }
  113. else
  114. {
  115. return NULL;
  116. }
  117. }
  118. INT8U CalculateCheckSum (INT8U* Data, INT16U Len)
  119. {
  120. INT8U Sum;
  121. INT16U i;
  122. Sum = 0;
  123. for (i = 0; i < Len; i++)
  124. {
  125. Sum += Data [i];
  126. }
  127. Data[2]=(INT8U) (0x100 - Sum);
  128. return (0x100 - Sum);
  129. }
  130. INT8U CalculateCheckSum2 (_FAR_ INT8U* Pkt, INT32U Len)
  131. {
  132. INT8U Sum;
  133. INT32U i;
  134. /* Get Checksum 2 */
  135. Sum = 0;
  136. for (i = 3; i < Len; i++)
  137. {
  138. Sum += Pkt [i];
  139. }
  140. Pkt[Len-1]=(INT8U)(0xFF & (0x100 - Sum));
  141. return (INT8U)(0xFF & (0x100 - Sum));
  142. }
  143. _FAR_ ChannelUserInfo_T* getChUserInfo (_NEAR_ char *userName, _NEAR_ INT8U* chIndex, _FAR_ ChannelUserInfo_T *pChUserInfo,int BMCInst)
  144. {
  145. _FAR_ UserInfo_T* pUserTable = (UserInfo_T *) GetNVRUsrCfgAddr (NVRH_USERCONFIG, BMCInst);
  146. _FAR_ BMCInfo_t* pBMCInfo = &g_BMCInfo;//[BMCInst];
  147. int userIndex;
  148. int i=0;
  149. printf("pBMCInfo->IpmiConfig.MaxUsers is %d:\n",pBMCInfo->IpmiConfig.MaxUsers);
  150. for(i=0;i<16;i++)
  151. printf("%#x ",pUserTable[0].UserName[i]);
  152. printf("\n");
  153. printf("pUserTable[0].UserId is %d ,pChUserInfo[0].UserId is %d\n",pUserTable[0].UserId,pChUserInfo[0].UserId);
  154. /* search the table */
  155. for(userIndex = 0; userIndex < pBMCInfo->IpmiConfig.MaxUsers; userIndex++)
  156. {
  157. for(*chIndex = 0; *chIndex < pBMCInfo->IpmiConfig.MaxChUsers; (*chIndex)++)
  158. {
  159. if ((0 == _fmemcmp(pUserTable[userIndex].UserName, userName, MAX_USERNAME_LEN)) &&
  160. /* Commented to return the pointer for disabled user */
  161. /* (1 == pUserTable[userIndex].UserStatus) && */
  162. (pUserTable[userIndex].UserId == pChUserInfo[*chIndex].UserId))
  163. return (pChUserInfo + *chIndex);
  164. }
  165. }
  166. printf("ChannelUserInfo_T is NULL\n");
  167. return NULL;
  168. }
  169. INT8U*
  170. GetNVRUsrCfgAddr(INT32U NVRHandle, int BMCInst)
  171. {
  172. _FAR_ BMCInfo_t* pBMCInfo = &g_BMCInfo;//[BMCInst];
  173. return ((INT8U *)&pBMCInfo->UserInfo[NVRHandle]);
  174. }
  175. _FAR_ SessionInfo_T* getSessionInfo (INT8U Arg, _FAR_ void *Session,int BMCInst)
  176. {
  177. INT8U Index;
  178. INT8U ActiveSesIndex = 0;
  179. _FAR_ BMCInfo_t* pBMCInfo = &g_BMCInfo;//[BMCInst];
  180. _FAR_ SessionTblInfo_T* pSessionTblInfo = &pBMCInfo->SessionTblInfo;
  181. for (Index = 0; Index < pBMCInfo->IpmiConfig.MaxSession; Index++)
  182. {
  183. if (FALSE == pSessionTblInfo->SessionTbl[Index].Used)
  184. {
  185. continue;
  186. }
  187. if (TRUE == pSessionTblInfo->SessionTbl[Index].Activated)
  188. {
  189. ActiveSesIndex++;
  190. }
  191. switch (Arg)
  192. {
  193. case SESSION_ID_INFO:
  194. printf("pSessionTblInfo->SessionTbl[Index].SessionID is %d,*((INT32U *)Session) is %d\n",pSessionTblInfo->SessionTbl[Index].SessionID,*((INT32U *)Session));
  195. if(pSessionTblInfo->SessionTbl[Index].SessionID == *((INT32U *)Session) )
  196. {
  197. return &pSessionTblInfo->SessionTbl[Index];
  198. }
  199. break;
  200. case SESSION_REMOTE_INFO:
  201. // if(pSessionTblInfo->SessionTbl[Index].RemConSessionID == *((INT32U *)Session) )
  202. // {
  203. // return &pSessionTblInfo->SessionTbl[Index];
  204. // }
  205. break;
  206. case SESSION_HANDLE_INFO:
  207. if (pSessionTblInfo->SessionTbl[Index].SessionHandle == *((_FAR_ INT8U*)Session) && pSessionTblInfo->SessionTbl[Index].Activated)
  208. {
  209. return &pSessionTblInfo->SessionTbl[Index];
  210. }
  211. break;
  212. case SESSION_INDEX_INFO:
  213. if (ActiveSesIndex == *((_FAR_ INT8U*)Session))
  214. {
  215. return &pSessionTblInfo->SessionTbl[Index];
  216. }
  217. break;
  218. case SESSION_CHANNEL_INFO:
  219. if (pSessionTblInfo->SessionTbl[Index].Channel == *((_FAR_ INT8U*)Session))
  220. {
  221. return &pSessionTblInfo->SessionTbl[Index];
  222. }
  223. break;
  224. default:
  225. return NULL;
  226. }
  227. }
  228. return NULL;
  229. }