lusa 5 роки тому
коміт
878dc53b0f
100 змінених файлів з 13878 додано та 0 видалено
  1. 14 0
      Makefile
  2. 37 0
      app/Makefile
  3. 24 0
      app/bmc.sh
  4. 87 0
      app/bmc_server/Makefile
  5. 115 0
      app/bmc_server/Types.h
  6. 107 0
      app/bmc_server/bmc_conf.h
  7. BIN
      app/bmc_server/bmc_main
  8. 381 0
      app/bmc_server/bmc_main.c
  9. BIN
      app/bmc_server/bmc_main.gdb
  10. 81 0
      app/bmc_server/bmc_main.h
  11. 679 0
      app/bmc_server/bmc_type.h
  12. 18 0
      app/bmc_server/ipmb/ipmb_thread.c
  13. 6 0
      app/bmc_server/ipmb/ipmb_thread.h
  14. BIN
      app/bmc_server/ipmi_dev/.IPMI_AppDevice.h.swp
  15. 38 0
      app/bmc_server/ipmi_dev/AMI.h
  16. 32 0
      app/bmc_server/ipmi_dev/AMIBiosCode.h
  17. 104 0
      app/bmc_server/ipmi_dev/AMIConf.h
  18. 146 0
      app/bmc_server/ipmi_dev/AMIDevice.h
  19. 44 0
      app/bmc_server/ipmi_dev/AMIOBSMDevice.h
  20. 35 0
      app/bmc_server/ipmi_dev/AMIResetPass.h
  21. 95 0
      app/bmc_server/ipmi_dev/AMIRestoreDefaults.h
  22. 35 0
      app/bmc_server/ipmi_dev/AMISmtp.h
  23. 50 0
      app/bmc_server/ipmi_dev/AMISyslogConf.h
  24. 49 0
      app/bmc_server/ipmi_dev/API.h
  25. 37 0
      app/bmc_server/ipmi_dev/AlertAPI.h
  26. 395 0
      app/bmc_server/ipmi_dev/Apml.h
  27. 44 0
      app/bmc_server/ipmi_dev/App.h
  28. 52 0
      app/bmc_server/ipmi_dev/AppDevice+.h
  29. 97 0
      app/bmc_server/ipmi_dev/AppDevice.h
  30. 27 0
      app/bmc_server/ipmi_dev/BMCInfo.h
  31. 63 0
      app/bmc_server/ipmi_dev/BMCInit.h
  32. 45 0
      app/bmc_server/ipmi_dev/Badpasswd.h
  33. 44 0
      app/bmc_server/ipmi_dev/Bridge.h
  34. 57 0
      app/bmc_server/ipmi_dev/BridgeDiscovery.h
  35. 57 0
      app/bmc_server/ipmi_dev/BridgeEvt.h
  36. 66 0
      app/bmc_server/ipmi_dev/BridgeMgmt.h
  37. 35 0
      app/bmc_server/ipmi_dev/BridgeMsgAPI.h
  38. 49 0
      app/bmc_server/ipmi_dev/Bridging.h
  39. 41 0
      app/bmc_server/ipmi_dev/Chassis.h
  40. 89 0
      app/bmc_server/ipmi_dev/ChassisAPI.h
  41. 53 0
      app/bmc_server/ipmi_dev/ChassisCtrl.h
  42. 138 0
      app/bmc_server/ipmi_dev/ChassisDevice.h
  43. 44 0
      app/bmc_server/ipmi_dev/Ciphertable.h
  44. 106 0
      app/bmc_server/ipmi_dev/DCMDevice.h
  45. 94 0
      app/bmc_server/ipmi_dev/DCMIConfig.h
  46. 206 0
      app/bmc_server/ipmi_dev/Debug.h
  47. 47 0
      app/bmc_server/ipmi_dev/DeviceConfig.h
  48. 57 0
      app/bmc_server/ipmi_dev/EEPROMAccess.h
  49. 26 0
      app/bmc_server/ipmi_dev/Ethaddr.h
  50. 38 0
      app/bmc_server/ipmi_dev/EventAPI.h
  51. 45 0
      app/bmc_server/ipmi_dev/Events.h
  52. 39 0
      app/bmc_server/ipmi_dev/ExtendedConfig.h
  53. 99 0
      app/bmc_server/ipmi_dev/FFConfig.h
  54. 59 0
      app/bmc_server/ipmi_dev/FRU.h
  55. 60 0
      app/bmc_server/ipmi_dev/FRUAPI.h
  56. 89 0
      app/bmc_server/ipmi_dev/FRURecord.h
  57. 52 0
      app/bmc_server/ipmi_dev/Firewall.h
  58. 58 0
      app/bmc_server/ipmi_dev/GUID.h
  59. 33 0
      app/bmc_server/ipmi_dev/GroupExtn.h
  60. 36 0
      app/bmc_server/ipmi_dev/HPM.h
  61. 41 0
      app/bmc_server/ipmi_dev/HPMCmds.h
  62. 152 0
      app/bmc_server/ipmi_dev/HPMConfig.h
  63. 71 0
      app/bmc_server/ipmi_dev/HPMFuncs.h
  64. 83 0
      app/bmc_server/ipmi_dev/HWConfig.h
  65. 40 0
      app/bmc_server/ipmi_dev/I2CAPI.h
  66. 48 0
      app/bmc_server/ipmi_dev/IPMBIfc.h
  67. 72 0
      app/bmc_server/ipmi_dev/IPMDevice.h
  68. 810 0
      app/bmc_server/ipmi_dev/IPMIConf.h
  69. 278 0
      app/bmc_server/ipmi_dev/IPMIDefs.h
  70. 246 0
      app/bmc_server/ipmi_dev/IPMI_AMI.h
  71. 46 0
      app/bmc_server/ipmi_dev/IPMI_AMIBiosCode.h
  72. 737 0
      app/bmc_server/ipmi_dev/IPMI_AMIConf.h
  73. 1750 0
      app/bmc_server/ipmi_dev/IPMI_AMIDevice.h
  74. 53 0
      app/bmc_server/ipmi_dev/IPMI_AMILicense.h
  75. 375 0
      app/bmc_server/ipmi_dev/IPMI_AMIOBSM.h
  76. 134 0
      app/bmc_server/ipmi_dev/IPMI_AMIResetPass.h
  77. 145 0
      app/bmc_server/ipmi_dev/IPMI_AMISmtp.h
  78. 99 0
      app/bmc_server/ipmi_dev/IPMI_AMISyslogConf.h
  79. 223 0
      app/bmc_server/ipmi_dev/IPMI_App+.h
  80. 100 0
      app/bmc_server/ipmi_dev/IPMI_App.h
  81. 234 0
      app/bmc_server/ipmi_dev/IPMI_AppDevice+.h
  82. 619 0
      app/bmc_server/ipmi_dev/IPMI_AppDevice.h
  83. 49 0
      app/bmc_server/ipmi_dev/IPMI_BrDiscovery.h
  84. 84 0
      app/bmc_server/ipmi_dev/IPMI_BrEvt.h
  85. 205 0
      app/bmc_server/ipmi_dev/IPMI_BrMgmt.h
  86. 57 0
      app/bmc_server/ipmi_dev/IPMI_Bridge.h
  87. 49 0
      app/bmc_server/ipmi_dev/IPMI_Bridging.h
  88. 41 0
      app/bmc_server/ipmi_dev/IPMI_Chassis.h
  89. 402 0
      app/bmc_server/ipmi_dev/IPMI_ChassisDevice.h
  90. 366 0
      app/bmc_server/ipmi_dev/IPMI_DCM.h
  91. 44 0
      app/bmc_server/ipmi_dev/IPMI_DeviceConfig.h
  92. 74 0
      app/bmc_server/ipmi_dev/IPMI_Events.h
  93. 301 0
      app/bmc_server/ipmi_dev/IPMI_FRU.h
  94. 245 0
      app/bmc_server/ipmi_dev/IPMI_Firewall.h
  95. 74 0
      app/bmc_server/ipmi_dev/IPMI_GroupExtn.h
  96. 41 0
      app/bmc_server/ipmi_dev/IPMI_HPM.h
  97. 286 0
      app/bmc_server/ipmi_dev/IPMI_HPMCmds.h
  98. 307 0
      app/bmc_server/ipmi_dev/IPMI_IPM.h
  99. 69 0
      app/bmc_server/ipmi_dev/IPMI_IPMB.h
  100. 74 0
      app/bmc_server/ipmi_dev/IPMI_KCS.h

+ 14 - 0
Makefile

@@ -0,0 +1,14 @@
+# Makefile for an A2F-Linux project
+
+# This project's name
+SAMPLE		:= gd32450i-eval
+
+# Custom applcations subdirectories that this project
+# needs to build. Edit this list as appropriate for your application.
+CUSTOM_APPS	:= app
+
+# Include Make rules applicable to all projects
+include ../Rules.make
+
+export SAMPLE
+export CUSTOM_APPS

+ 37 - 0
app/Makefile

@@ -0,0 +1,37 @@
+all	: 
+	make -C ./web
+#	apps modules test_apps
+clean	: clean_apps clean_modules clean_test_apps
+
+apps	: 
+	#make -C ./web
+	#make -C ./bmc_server
+
+#CFLAGS 	:= -Os -mcpu=cortex-m3 -mthumb
+#LDFLAGS	:= -mcpu=cortex-m3 -mthumb -L$(INSTALL_ROOT)/A2F/root/usr/lib
+#CC	= $(CROSS_COMPILE_APPS)gcc
+
+#SRC = stm32f429.c
+
+#CFLAGS	+= -I$(INSTALL_ROOT)/A2F/root/usr/include
+#CFLAGS	+= ./
+
+#OBJS = $(SRC:%.c=%.o)
+
+modules	:  
+#	make -C ./driver/FMC
+#	make -C ./driver/test
+#	make -C ./driver/Platform
+#	make -C ./driver/I2C
+
+test_apps:
+	make -C ./test_app
+
+clean_apps:
+	rm -rf ./bmc_server/*.o
+
+clean_modules:
+	rm -rf ./driver/*.o
+
+clean_test_apps:
+	rm -rf ./test_app/*.o

+ 24 - 0
app/bmc.sh

@@ -0,0 +1,24 @@
+#!/bin/sh
+
+#install module
+insmod /usr/bin/test_module.ko
+#insmod /usr/bin/gpio.ko 
+insmod /usr/bin/i2c.ko 
+insmod /usr/bin/fmc.ko
+insmod /usr/bin/platform_STM32F429.ko
+
+#create node
+mknod /dev/test_module c 99 0
+#mknod /dev/gpio c 100 0 
+mknod /dev/platform c 100 0
+mknod /dev/i2c1 c 101 0 
+mknod /dev/i2c2 c 101 1 
+mknod /dev/i2c3 c 101 2
+mknod /dev/fmc_cpld c 102 0
+#mknod /dev/spi2 c 153 32
+#ifconfig eth0 192.168.0.15
+#run bmc_main in background
+#./usr/bin/bmc_main &	
+
+
+

+ 87 - 0
app/bmc_server/Makefile

@@ -0,0 +1,87 @@
+EXEC		= bmc_main
+
+CFLAGS		:= -Os -mcpu=cortex-m3 -mthumb
+LDFLAGS		:= -mcpu=cortex-m3 -mthumb -L$(INSTALL_ROOT)/A2F/root/usr/lib
+
+CC	= $(CROSS_COMPILE_APPS)gcc
+
+#source
+SRC	= bmc_main.c
+SRC	+= ./power/power_thread.c
+SRC	+= ./ipmb/ipmb_thread.c
+SRC	+= ./sensor/sensor_driver.c
+SRC	+= ./sensor/sensor_sdr.c
+SRC	+= ./sensor/sensor_thread.c
+SRC	+= ./timer_thread.c
+SRC	+= ./stm32_api/gpio_api.c
+SRC	+= ./platform/platform.c
+SRC	+= ./stm32_api/i2c_api.c
+SRC	+= ./stm32_api/spi_api.c
+
+SRC	+= ./libipmimsghndler/MsgHndlr.c
+SRC	+= ./libipmimsghndler/cmdselect.c
+SRC	+= ./libipmimsghndler/App/App.c
+SRC	+= ./libipmimsghndler/Bridge/Bridge.c
+SRC	+= ./libipmimsghndler/Chassis/Chassis.c
+SRC	+= ./libipmimsghndler/Oem/Oem.c
+SRC	+= ./libipmimsghndler/Oem/OemCmds.c
+SRC	+= ./libipmimsghndler/SensorEvent/SensorEvent.c
+SRC	+= ./libipmimsghndler/Storage/Storage.c
+SRC	+= ./libipmimsghndler/Transport/DeviceConfig.c
+#SRC	+= ./libipmimsghndler/AMI/AMI.c
+
+
+SRC	+= ./sensor/lm73.c
+SRC	+= ./sensor/INA220.c
+SRC	+= ./sensor/sensor_sdr_init.c
+
+#SRC	+= ./libipmimsghndler/App/IPMDevice/Firewall.c
+SRC	+= ./libipmimsghndler/App/AppDevice/AppDevice.c
+#SRC	+= ./libipmimsghndler/App/AppDevice/AppDevice+.c
+SRC	+= ./libipmimsghndler/App/IPMDevice/IPMDevice.c
+SRC	+= ./libipmimsghndler/Storage/Storage.c
+SRC	+= ./libipmimsghndler/SensorEvent/SensorDevice/Sensor.c
+
+SRC	+= ./libHook/message_hook.c
+SRC	+= ./libHook/hook.c
+
+SRC	+= ./lan/lanTask.c
+SRC	+= ./lan/udp_api/udpserver.c
+SRC	+= ./messinit/session.c
+
+#incldue
+CFLAGS	+= -I$(INSTALL_ROOT)/A2F/root/usr/include
+CFLAGS	+= -I ./
+CFLAGS	+= -I ./sensor
+CFLAGS	+= -I ./power
+CFLAGS	+= -I ./platform
+CFLAGS	+= -I ./message
+CFLAGS	+= -I ./ipmb
+CFLAGS	+= -I ./stm32_api
+CFLAGS  += -I ./ipmi_dev
+CFLAGS	+= -I ./libHook
+CFLAGS	+= -I ./libipmimsghndler
+CFLAGS	+= -I ./ipmi_dev
+CFLAGS	+= -I ./messinit
+CFLAGS	+= -I ../
+#library
+
+#sub-directory
+#SUBDIR 	= ./sensor
+
+
+
+
+
+#object
+OBJS	= $(SRC:%.o=%.c)
+
+$(EXEC): $(OBJS)
+	$(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^ $(LIBS) -lpthread
+	rm -f *.o
+
+clean:
+	OBJS	= $(SRC:%.o=%.c)
+	rm -rf $(EXEC) $(OBJS)
+
+

+ 115 - 0
app/bmc_server/Types.h

@@ -0,0 +1,115 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ ****************************************************************
+ *
+ * types.h
+ * Standard Type definitions
+ *
+ * Author: Govind Kothandapani <govindk@ami.com>
+ *
+ *****************************************************************/
+#ifndef TYPES_H
+#define TYPES_H
+
+#include <time.h>
+/*----------------------------------------------
+ * Include the platform specific types here.
+ *----------------------------------------------*/
+//#include "coreTypes.h"
+//#include "icc_what.h"
+
+/*----------------------------------------------
+ * Bit fields
+ *----------------------------------------------*/
+#define BIT0    0x0001
+#define BIT1	0x0002
+#define BIT2	0x0004
+#define BIT3	0x0008
+#define BIT4	0x0010
+#define BIT5	0x0020
+#define BIT6	0x0040
+#define BIT7	0x0080
+#define BIT8	0x0100
+#define BIT9	0x0200
+#define BIT10   0x0400
+#define BIT11   0x0800
+#define BIT12   0x1000
+#define BIT13   0x2000
+#define BIT14   0x4000
+#define BIT15   0x8000
+
+/*----------------------------------------------
+ * Processor specfic type definetion
+ *----------------------------------------------*/
+ typedef unsigned char  INT8U;
+ typedef unsigned short INT16U;
+ typedef unsigned int   INT32U;
+
+ typedef char  INT8S;
+ typedef short INT16S;
+ typedef long  INT32S;
+
+//typedef int			__kernel_pid_t;
+//typedef __kernel_pid_t		pid_t;
+
+typedef int     BOOL;
+typedef int     SOCKET;
+typedef pid_t   HTaskID_T;
+
+
+#define PACKED
+#pragma pack(1)
+
+#define _FAR_
+
+#define TDBG printf
+
+typedef struct
+{
+    pthread_key_t CurSessionID;
+    pthread_key_t CurPrivLevel;
+    pthread_key_t CurChannel;
+    pthread_key_t CurKCSIfcNum;
+    pthread_key_t CurSessionType;
+    pthread_key_t OwnerLUN;
+}TLS_T;
+
+TLS_T g_tls;
+
+/*-----------------------------------------------
+ * Other Types
+ *-----------------------------------------------*/
+typedef unsigned int		INTU;
+
+typedef INT8U   CHAR;
+
+typedef enum _bool{false,true} bool;
+
+#define _NEAR_
+#define _FAR_
+
+
+
+#ifndef PACKED 
+
+#ifdef ICC_OS_LINUX
+#define PACKED __attribute__ ((packed))
+#else
+#define PACKED
+#endif
+
+#endif 
+
+
+#endif	/* TYPES_H */

+ 107 - 0
app/bmc_server/bmc_conf.h

@@ -0,0 +1,107 @@
+/*
+ * Configure the BMC function in here.
+ * Enable function by define macro 1.
+ * Disable function by define macro 0.
+ * Author: Jimbo
+ */
+
+#ifndef __BMC_CONF_H__
+#define __BMC_CONF_H__
+
+#define MAX_SENSOR_NUM		8
+//#define SENSOR_NAME_LEN		20
+
+#define CONF_IPMB_SUPPORT 	1
+#define CONF_POWER_SUPPORT 	1
+#define CONF_SENSOR_SUPPORT	1
+
+#define PRIMARY_IPMB_CHANNEL  0x00
+#define PRIMARY_PB_TBL    	0
+#define SECONDARY_PB_TBL    	1
+
+#define IP6_ADDR_LEN             16
+#define	MAX_USER_NAME_LEN	(16+1) //1 for storing the null character
+#define MSG_PAYLOAD_SIZE	1024 * 4
+#define PIPE_NAME_LEN       	64
+
+#define MSG_PIPES_PATH      "/var/"
+
+#define PARAM_IFC	0x01
+#define BMCNUM		0x1
+
+#define MAX_PYLDS_SUPPORT			2
+
+//Added to Support 20 Alert Strings in Set/Get Pef Config.Parms ../
+///* It should equal to number of Event filter entries */
+#define MAX_ALERT_STRINGS                  MAX_EVT_FILTER_ENTRIES
+#define PEF_MAX_OEM_PARAMETERS              0x20
+#define MAX_SIZE_PET_GUID                   0x11
+#define MAX_PLD_ENABLES_TYPES               4
+#define MAX_FF_CMD_CFGS                     255
+
+#define MAX_PRIVILEGE_TYPES                 7
+#define MAX_NUM_CH_USERS_MDS 0x10
+
+#define MAX_USERNAME_LEN        16
+#define MAX_PASSWORD_LEN        20
+
+#define EMAIL_ADDR_SIZE 64
+#define EMAIL_FORMAT_SIZE   64
+
+
+#define	AUTHTYPE_RESERVED		0x03
+#define LOOP_BACK_REQ                     0x10
+#define NVRH_USERCONFIG 0
+#define USER_ID             (((INT32U)'U'<< 24) | ((INT32U)'S'<< 16) | ('E'<<8) | 'R')
+#define MAX_NUM_CHANNELS		0xc
+
+#define MAX_PASSWD_LEN      ( 20 )
+#define MAX_SIZE_KEY 56
+#define	AUTHTYPE_NONE	0x00
+#define	AUTHTYPE_OEM_PROPRIETARY	0x05
+#define MAX_USER_CFG_MDS 0x10
+#define		SESSION_ID_INFO		1
+#define CHALLENGE_STR_LEN       16
+
+#define		SESSION_HANDLE_INFO						2
+#define		SESSION_INDEX_INFO						3
+#define		SESSION_CHANNEL_INFO					4
+#define		MGD_SYS_SESSION_ID_INFO					5
+#define		SESSION_PAYLOAD_INFO					6
+#define		SESSION_REMOTE_INFO					7
+#define		MAX_INST_SUPPORTED						2
+
+#define	IFNAMSIZ	16
+#define MAX_CHANNEL    0x04
+
+#define PRIV_LEVEL_RESERVED	0x00
+
+#define PRIV_LEVEL_PROPRIETARY	0x05
+#define MAX_PASSWORD_LEN        20
+#define SIXTEEN_COUNT_WINDOW_LEN 16
+
+#define MD5  0x02
+
+/** Pending Bridged Response Tbl Size
+ ** 
+ ** Do not increase beyond 60 as maximum sequence number is 64
+ **------------------------------------------------------------*/
+#define MAX_PENDING_BRIDGE_RES   64
+#define MAX_PENDING_BRIDGE_TBL   2
+
+/*------------------------------------------------------------
+ * IPMI support config
+ *----------------------------------------------------------*/
+#define BRIDGE_DEVICE 		 0
+#define IPM_DEVICE 		 1
+#define APP_DEVICE 		 1
+#define CHASSIS_DEVICE 		 0
+#define EVENT_PROCESSING_DEVICE  0
+#define PEF_DEVICE 		 0
+#define SENSOR_DEVICE 		 1
+#define FRU_DEVICE 		 0
+#define SDR_DEVICE 		 1
+#define SEL_DEVICE 		 0
+#define AMI_DEVICE 		 0
+#define OEM_DEVICE		1
+#endif /* __BMC_CONF_H__ */

BIN
app/bmc_server/bmc_main


+ 381 - 0
app/bmc_server/bmc_main.c

@@ -0,0 +1,381 @@
+#include <stdio.h>
+#include <stdint.h>
+#include "pthread.h"
+#include "errno.h"
+#include "bmc_main.h"
+#include "bmc_conf.h"
+#include "bmc_type.h"
+#include "sensor_thread.h"
+#include "power_thread.h"
+#include "ipmb_thread.h"
+#include "timer_thread.h"
+#include "fcntl.h"
+
+#include "./../stm32f429xx.h"
+#include "./../driver/GPIO/gpio.h"
+#include "platform.h"
+#include "./../driver/I2C/i2c.h"
+#include "i2c_api.h"
+#include "spi_api.h"
+#include "gpio_api.h"
+#include "./lan/udp_api/udp.h"
+#include "./test.h"
+#include <semaphore.h>
+#include "./lan/lanTask.h"
+#include <stdlib.h>
+#include "MsgHndlr.h"
+#include "sensor_sdr_init.h"
+
+#include <sys/types.h>          /* See NOTES */
+#include <sys/socket.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <unistd.h>
+#include <stdio.h>
+
+
+pthread_t	gthreadIDs[MAX_THREAD]={0};
+int 		gthreadIndex = 0;
+
+BMCInfo_t 	g_BMCInfo;
+
+char		SessionSequenceNumberCount=0;
+
+/* mutex */
+pthread_mutex_t 	sensorSdr_mutex;	//when modify sdr
+pthread_mutex_t		powerSta_mutex;
+
+sem_t sem_QUEUE;
+
+IPMIQueue_T g_IPMIIfcQueue[MAX_IPMI_IFCQ];
+
+int InitBMCSharedMem (void);
+
+
+int InitBmcInfo(void);
+
+#define SERVER_PORT 7897
+#define BACKLOG     10
+
+/*
+ * The bmc main function.
+ * All threads are created in here.
+ * Author: Jimbo
+ */
+int main(int argc, char **argv)
+{
+	int iSocketServer;
+	int iSocketClient;
+	struct sockaddr_in tSocketServerAddr; //指定服务器绑定地址
+	struct sockaddr_in tSocketClientAddr; //保存客户端地址
+	int iRet;
+	int iAddrLen;
+	uint32_t recvCnt = 0;
+				 
+	int iRecvLen;
+	unsigned char ucRecvBuf[2000];
+	char sendBuf[1000] = {0};
+
+	int iClientNum = -1;
+										 
+//	signal(SIGCHLD,SIG_IGN); //此函数用于处理僵尸进程
+												
+	iSocketServer = socket(AF_INET, SOCK_STREAM, 0);//AF_INET IPV4连接 SOCK_STREAM启动TCP连接
+	if (-1 == iSocketServer)
+	{
+		printf("socket error!\n");
+		return -1;
+	}
+										 
+	tSocketServerAddr.sin_family      = AF_INET; //一般设置为
+	tSocketServerAddr.sin_port        = htons(SERVER_PORT); //将SERVER_PORT转化为网络字节序 host to net, short
+	tSocketServerAddr.sin_addr.s_addr = INADDR_ANY; //INADDR_ANY表示本机上所有IP
+	memset(tSocketServerAddr.sin_zero, 0, 8);
+																	 
+																	 
+	int opt = 1;  
+	//使用setsockopt函数可以保证端口可被重复绑定
+	iRet = setsockopt(iSocketServer, SOL_SOCKET,SO_REUSEADDR,(const void *)&opt, sizeof(opt) );	
+	if (-1 == iRet)
+	{
+		printf("set sock option error!\n");
+		close(iSocketServer);
+		return -1;
+	}
+																	
+																		
+	iRet = bind(iSocketServer, (const struct sockaddr *)&tSocketServerAddr, sizeof(struct sockaddr)); //绑定端口
+	if (-1 == iRet)
+	{
+		printf("bind error!\n");
+		close(iSocketServer);
+		return -1;
+	}
+							 
+	iRet = listen(iSocketServer, BACKLOG); //设置监听 BACKLOG代表同时监听10路连接
+	if (-1 == iRet)
+	{
+		printf("listen error!\n");
+		return -1;
+	}
+	
+	while (1)
+	{
+		iAddrLen = sizeof(struct sockaddr);
+		iSocketClient = accept(iSocketServer, (struct sockaddr *)&tSocketClientAddr, &iAddrLen); //等待连接 如果建立连接
+		if (-1 != iSocketClient)
+		{
+			iClientNum++;
+			printf("Get connect from client %d : %s\n",  iClientNum, inet_ntoa(tSocketClientAddr.sin_addr));
+			recvCnt = 0;
+			while(1)
+			{
+				/* 接收客户端发来的数据并显示出来 */
+				iRecvLen = recv(iSocketClient, ucRecvBuf, 2000, 0);
+				if (iRecvLen <= 0)
+				{
+					printf("Recv count %d Byte!\n", recvCnt);
+					close(iSocketClient); //关闭连接
+					//return -1;
+					break;
+				}
+				else
+				{
+					if(iRecvLen != 500)
+						printf("Recv error: %d\n",iRecvLen);
+					recvCnt += iRecvLen;
+					//sprintf(sendBuf, "%d\n", recvCnt);
+				//	ucRecvBuf[iRecvLen] = '\0';
+				//	printf("Get Msg From Client %d: %s\n", iClientNum, ucRecvBuf);
+					//send(iSocketClient, sendBuf, 11, 0);//打印的同时发送一条数据给连接的客户端
+				}
+			}
+		}				
+	}
+	
+	
+	close(iSocketServer);
+	return 0;
+	
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/*
+	if(sem_init(&sem_QUEUE, 0, 1) ==-1){
+		printf("A lock for IPMI QUEUE is not created properly!!!\n");
+	}
+	system("ifconfig eth0 192.168.0.15");
+//	platform_init();
+	spi_api_read();	
+	InitBmcInfo();
+	sensor_sdr_init();
+	memset(g_IPMIIfcQueue,0,(sizeof(IPMIQueue_T)*MAX_IPMI_IFCQ));
+	InitBMCSharedMem ();
+	//create fifo 
+	{
+		OS_CREATE_Q(OBSM_TASK_Q);
+        	OS_GET_Q(OBSM_TASK_Q,O_RDWR);
+	
+		OS_CREATE_Q(MSG_HNDLR_Q);
+		OS_GET_Q(MSG_HNDLR_Q,O_RDWR);
+	}
+
+//      create task handler thread
+        if(0 != pthread_create(&gthreadIDs[gthreadIndex++], NULL,LanTask, NULL))
+        {
+        	printf("Error: file:%s,line:%d,create message thread error!\n"\
+                	__FILE__, __LINE__);
+        }
+	
+        //create message handler thread MsgHndlr
+        if(0 != pthread_create(&gthreadIDs[gthreadIndex++], NULL,MsgHndlr, NULL))
+        {
+                printf("Error: file:%s,line:%d,create message thread error!\n"\
+                        __FILE__, __LINE__);
+        }
+  */                                                              
+
+/*
+	//init mutex lock
+	if(pthread_mutex_init(&sensorSdr_mutex,NULL) != 0)
+	{
+		printf("Error: Create sensorSdr_mutex error!\n");
+	}
+	if(pthread_mutex_init(&powerSta_mutex,NULL) != 0)
+	{
+		printf("Error: Create powerSta_mutex error!\n");
+	}
+
+*/
+/*
+	//create message handler thread
+	if(0 != pthread_create(&gthreadIDs[gthreadIndex++], NULL, timer_task, NULL))
+	{
+		printf("Error: file:%s,line:%d,create timer thread error!\n"\
+			__FILE__, __LINE__);
+	}
+
+	//create power manage thread
+	#if(CONF_POWER_SUPPORT == 1)
+	{
+		if(0 != pthread_create(&gthreadIDs[gthreadIndex++], NULL, power_main, NULL))
+		{
+			printf("Error: file:%s,line:%d,create power thread error!\n",\
+				__FILE__, __LINE__);
+		}
+	}
+	#endif
+
+
+	//create sensor manage thread
+	#if(CONF_SENSOR_SUPPORT == 1)
+	{
+		if(0 != pthread_create(&gthreadIDs[gthreadIndex++], NULL, sensor_main, NULL))
+		{
+			printf("Error: file:%s,line:%d,create sensor thread error!\n",\
+				__FILE__, __LINE__);
+		}
+	}
+	#endif
+
+	//create ipmb thread
+	#if(CONF_IPMB_SUPPORT == 1)
+	{
+		if(0 != pthread_create(&gthreadIDs[gthreadIndex++], NULL, ipmb_main, NULL))
+		{
+			printf("Error: file:%s,line:%d,create ipmb thread error!\n"\
+				__FILE__, __LINE__);
+		}
+	}
+	#endif
+
+	
+*/	
+//	udp_server(argc,&(*argv));
+
+	/*for(i=0x4c;i<0x4f;i++)
+	{
+		if(0 == I2C_Master_Transmit(&i2c_dev,0x98, NULL, 0))
+		{
+			printf("---> Find device %#x\n",i);
+		}
+
+	}*/
+/*	printf("------------ I2C2 ---------------\n");
+	i2c_dev.bus = I2C2;
+	//printf("---> i2c_dev.bus = %#x, I2C2=%#x\n",(uint32_t)i2c_dev.bus,(uint32_t)I2C2);
+	for(i=0x4c;i<0x4f;i++)
+	{
+		if(0 == I2C_Master_Transmit(&i2c_dev,i<<1, NULL, 0))
+		{
+			printf("---> Find device %#x\n",i);
+		}
+
+	}
+	printf("------------ I2C3 ---------------\n");
+	i2c_dev.bus = I2C3;
+	//printf("---> i2c_dev.bus = %#x, I2C3=%#x\n",(uint32_t)i2c_dev.bus,(uint32_t)I2C3);
+	for(i=0x4c;i<0x4f;i++)
+	{
+		if(0 == I2C_Master_Transmit(&i2c_dev,i<<1, NULL, 0))
+		{
+			printf("---> Find device %#x\n",i);
+		}
+
+	}
+*/	
+//	printf("---> end test!\n");
+/*	gpio_data_t gpin_data;
+	while(1)
+	{
+		//printf("---> turn on!\n");
+		gpin_data.port = GPIOD;
+		gpin_data.pin = GPIO_PIN_12;
+		gpin_data.data = 0;
+		set_gpio_value(&gpin_data);
+		sleep(1);
+		//printf("---> turn off!\n");
+		gpin_data.port = GPIOD;
+		gpin_data.pin = GPIO_PIN_12;
+		gpin_data.data = 1;
+		set_gpio_value(&gpin_data);
+		sleep(1);
+	}*/
+
+}
+
+
+
+
+int InitBmcInfo(void)
+{
+	//init sensorInfo
+	int i = 0;
+	int j = 0;
+	for(i=0;i<MAX_SENSOR_NUM;i++)	//init sdr
+	{
+		g_BMCInfo.sensorInfo[i].sensorSdr = getSensorSdr(i);	
+	}
+	for(i=0;i<MAX_SENSOR_NUM;i++)	//init sensor table
+	{
+		g_BMCInfo.sensorInfo[i].sensorDev = getSensorDev(i);	
+	}
+	for(i=0;i<MAX_SENSOR_NUM;i++)
+	{
+		g_BMCInfo.SDRConfig.RecordDataOffset[i]=0;
+	}
+	for(i=0;i<MAX_SENSOR_NUM;i++)
+	{
+		if(i<2)
+			for(j=0;j<6;j++)	
+				if(j<3)
+					g_BMCInfo.SDRConfig.SDR[i][j] =0x80;	
+				else
+					g_BMCInfo.SDRConfig.SDR[i][j] =0x7f;
+		else
+			for(j=0;j<6;j++)
+                                if(j<3)
+                                        g_BMCInfo.SDRConfig.SDR[i][j] =0x00;
+                                else
+                                        g_BMCInfo.SDRConfig.SDR[i][j] =0xff;				
+	}
+
+}
+
+
+int InitBMCSharedMem ()
+{
+        BMCInfo_t* pBMCInfo = &g_BMCInfo;
+        pBMCInfo->MsgHndlrTblSize=7;
+        memcpy(pBMCInfo->MsgHndlrTbl,m_MsgHndlrTbl,sizeof(m_MsgHndlrTbl));
+        Set_BMCInfo_IPMIConfig_LANIfcSupport(1,1);
+        Set_BMCInfo_IPMIConfig_SerialIfcSupport(1,1);
+        BMCInfo_InitChConfig();
+        return 0;
+}
+

BIN
app/bmc_server/bmc_main.gdb


+ 81 - 0
app/bmc_server/bmc_main.h

@@ -0,0 +1,81 @@
+#ifndef __BMC_MAIN_H__
+#define __BMC_MAIN_H__
+
+
+#define MAX_THREAD		256
+
+
+#include "pthread.h"
+#include "bmc_type.h"
+#include "bmc_conf.h"
+#include "hook.h"
+#include "Types.h"
+#include <stdio.h>
+#include <stdint.h>
+#include <errno.h>
+#include "semaphore.h"
+#include <fcntl.h>
+#include "IPMIDefs.h"
+#include "Support.h"
+#include <string.h>
+#include <memory.h>
+#include <time.h>
+#include "sensor_driver.h"
+
+#include "SharedMem.h"
+
+
+#include "App.h"
+#include "Chassis.h"
+#include "Bridge.h"
+#include "SensorEvent.h"
+#include "Storage.h"
+
+#include "DeviceConfig.h"
+#include "IPMI_App.h"
+#include "IPMI_Chassis.h"
+#include "IPMI_Bridge.h"
+#include "IPMI_SensorEvent.h"
+#include "IPMI_Storage.h"
+#include "IPMI_Oem.h"
+#include "cmdselect.h"
+//#include "Support.h"
+#include "session.h"
+
+/*------------------------------------------------------------------
+ *  * Timeout Macros
+ *   *------------------------------------------------------------------*/
+#define 	WAIT_NONE			0
+#define 	WAIT_INFINITE			(-1)
+#define		MAX_PENDING_SEQ_NO		50
+#define		SEQ_NO_EXPIRATION_TIME		5
+
+#define 	FALSE				0
+#define 	TRUE				1
+#define   	MAX_IPMI_IFCQ 			256
+
+#define 	MSG_HNDLR_Q         MSG_PIPES_PATH "MsgHndlrQ"
+#define 	OBSM_TASK_Q         MSG_PIPES_PATH "ObsmTaskQ"
+
+#define 	NO_RESPONSE		        0x10
+#define 	NORMAL_RESPONSE		        0x11
+#define 	BRIDGING_REQUEST	        0x12
+
+
+
+
+
+
+
+extern char             SessionSequenceNumberCount;
+extern pthread_t	gthreadIDs[MAX_THREAD];
+extern int		gthreadIndex;
+extern BMCInfo_t 	g_BMCInfo;
+extern pthread_mutex_t	sensorSdr_mutex;
+extern pthread_mutex_t	powerSta_mutex;
+extern IPMIQueue_T 	g_IPMIIfcQueue[MAX_IPMI_IFCQ];
+
+
+
+
+#endif /* __BMC_MAIN_H__ */

+ 679 - 0
app/bmc_server/bmc_type.h

@@ -0,0 +1,679 @@
+/*
+ * Define custom data type in this file.
+ * Author: Jimbo
+ */
+#ifndef __BMC_TYPE_H__
+#define __BMC_TYPE_H__
+#include <stdint.h>
+//#include "bmc_main.h"
+#include "sensor_sdr.h"
+#include "sensor_tbl.h"
+#include "bmc_conf.h"
+#include "Types.h"
+#include "time.h"
+
+#define   	IPMI_IFC_NAME_LEN   		60
+
+/*---- Handle to a Queue -----*/
+typedef long    HQueue_T;
+typedef int (*pCmdHndlr_T) (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes);
+
+
+
+
+typedef int (*pPDK_SensorInitHook_T) (void *pSensorInfo,int BMCInst);
+typedef int (*pPDK_MonitorHook_T) (void* pSensorInfo,INT8U *pReadFlags,int BMCInst);
+typedef int (*pPDK_MonitorExtHook_T) (void *pSensorInfo, INT8U* pReadFlags,int BMCInst);
+
+
+/*----------------------
+ *  *  * Command Handler map
+ *   *   *----------------------*/
+typedef struct
+{
+    INT8U               Cmd;
+    INT8U               Privilege;
+    pCmdHndlr_T         CmdHndlr;
+    INT8U               ReqLen;         /* 0xFF - Any Length */
+    INT16U              FFConfig;
+    INT16U              IfcSupport;
+
+}  CmdHndlrMap_T;
+
+
+/***     add in ??? ***/
+
+
+typedef struct
+{
+    INT8U			NetFn;
+    INT8U			GroupExtnCode;
+    const CmdHndlrMap_T*	CmdHndlrMap;
+
+} GroupExtnMsgHndlrTbl_T;
+
+//GroupExtnMsgHndlrTbl_T m_GroupExtnMsgHndlrTbl [10] =		//notice!
+//{
+
+//};
+
+#define ECC_CE_THRESHOLD        24
+#define ECC_CE_TIMEOUT          (24 * 60 *60) // 24 hours 
+
+#define MAX_PS_NUM              3
+#define MAX_CPU_NUM             2
+#define MAX_FAN_NUM             8
+#define MAX_HDD_NUM             4
+#define MAX_DIMM_NUM            2 // DIMM pairs 
+
+typedef struct
+{
+    INT8U    TempFault;
+    INT8U    PSFault  [MAX_PS_NUM  + 1];
+    INT8U    FanFault [MAX_FAN_NUM + 1];
+    INT8U    CPUFault [MAX_CPU_NUM + 1];
+    INT8U    HDDFault [MAX_HDD_NUM + 1];
+    INT8U    ECCFault_UE [MAX_CPU_NUM][MAX_DIMM_NUM];
+    INT32U   ECCFault_CE [MAX_CPU_NUM][MAX_DIMM_NUM][ECC_CE_THRESHOLD];
+    INT8U    NumAlerts;
+    INT8U    NumFatal;
+} PDK_FaultInfo_T;
+
+
+
+typedef struct
+{
+    INT8U    ChassisID;
+    INT8U    BoardRev;
+    INT8U    SPBoardRev;
+    INT8U    IOBoard;
+    INT8U    NMIBtnStatus;
+    INT8U    FLctBtnStatus;
+    INT8U    BLctBtnStatus;
+    PDK_FaultInfo_T FaultInfo;
+} PDK_SharedMem_T;
+/***     add in ??? ***/
+
+
+
+typedef struct
+{
+    INT8U CmdNum;
+    INT8U Status;
+}NetFnCmds_T;
+
+typedef struct
+{
+    INT8U NetFn;
+    INT8U GroupExtCode;
+    const NetFnCmds_T *NetFunction;
+}NETFNTable_T;
+
+
+typedef struct
+{
+    	INT8U	        sensorReading;
+	INT8U		sensorMonitBusy;
+	sensor_tbl_t 	*sensorDev;
+	SDRRec_T	*sensorSdr;  	
+} SensorInfo_T;
+
+
+/* GetSDRReq_T */
+typedef struct
+{
+    INT16U  ReservationID;
+    INT16U  RecID;
+    INT8U   Offset;
+    INT8U   Size;
+
+} PACKED  GetSDRReq_T;
+
+/* GetSDRRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT16U   NextRecID;
+//    INT8U   NextRecID_L;
+//    INT8U   Data;	
+} PACKED  GetSDRRes_T;
+
+/* IPMI Message Header */
+typedef struct
+{
+    INT8U ResAddr;
+    INT8U NetFnLUN;
+    INT8U ChkSum;
+    INT8U ReqAddr;
+    INT8U RqSeqLUN;
+    INT8U Cmd;
+} IPMIMsgHdr_T;
+
+
+typedef struct
+{
+    INT8U   Used;
+    INT8U   TimeOut;
+    INT8U   SeqNum;
+    INT8U   NetFn;
+    INT8U   Cmd;
+}  PendingSeqNoTbl_T;
+
+/* GetSensorThresholdReq_T */
+typedef struct
+{
+    INT8U   SensorNum;
+
+} PACKED  GetSensorThresholdReq_T;
+
+
+/* GetSensorThresholdRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   GetFlags;
+    INT8U   LowerNonCritical;
+    INT8U   LowerCritical;
+    INT8U   LowerNonRecoverable;
+    INT8U   UpperNonCritical;
+    INT8U   UpperCritical;
+    INT8U   UpperNonRecoverable;
+
+} PACKED  GetSensorThresholdRes_T;
+
+/* GetSensorReadingReq_T */
+typedef struct
+{
+    INT8U   SensorNum;
+
+} PACKED  GetSensorReadingReq_T;
+
+
+/* GetSensorReadingRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   SensorReading;
+    INT8U   Flags;
+    INT8U   ComparisonStatus;
+    INT8U   OptionalStatus;
+
+} PACKED  GetSensorReadingRes_T;
+
+typedef struct
+{
+    INT32U 	SessionID;
+    INT8U 	Privilege;
+    INT16U 	IPMIMsgLen;
+    INT8U 	NetFnLUN;
+    INT8U 	Cmd;
+    INT8U 	ChannelNum;
+    INT8U 	AuthFlag;
+    INT8U 	UserName[MAX_USER_NAME_LEN];
+    INT8U 	IPAddr[IP6_ADDR_LEN];
+    INT32U 	ProcessID;
+    INT32U 	ThreadID;
+}PACKED IPMIUDSMsg_T;
+
+typedef union
+{
+    IPMIMsgHdr_T        IPMIMsgHdr;
+    IPMIUDSMsg_T        UDSMsgHdr;
+
+}PACKED ResMsgHdr_T;
+
+typedef struct
+{
+    INT8U               Used;
+    INT8U               TimeOut;
+    INT8U               SeqNum;
+    INT8U               ChannelNum;
+    INT8U               DstSessionHandle;
+    INT8U               SrcSessionHandle;
+    INT32U              SrcSessionID;
+    INT8U               DestQ[PIPE_NAME_LEN];
+    INT8U               OriginSrc;
+    IPMIMsgHdr_T        ReqMsgHdr;
+    ResMsgHdr_T         ResMsgHdr;
+}  PendingBridgedResTbl_T;
+
+
+
+/**
+ *  * @struct ChannelUserInfo_T
+ *   * Structure for user information per channel.
+ *   **/
+typedef struct
+{
+    INT32U  ID;
+    INT8U   UserId;
+    INTU    AccessLimit:4;
+    INTU    LinkAuth:1;
+    INTU    UserAccessCallback:1;
+    INTU    UserAccessCBCPCallback:1;
+    INT8U   UserCallbackCapabilities;
+    INT8U   CBCPNegOptions;
+    INT8U   CallBack1;
+    INT8U   CallBack2;
+    INT8U   CallBack3;
+    INT8U   FailureAttempts;
+    INT8U   Lock;
+    INT32U LockedTime;
+    INT8U  PayloadEnables [MAX_PLD_ENABLES_TYPES];
+
+    INT8U  IPMIMessaging;
+    INT8U  ActivatingSOL;
+
+} PACKED  ChannelUserInfo_T;
+
+/**
+ *  * @struct UserInfo_T
+ *   * Structure for user information.
+ *   **/
+
+typedef struct
+{
+ INT32U  ID;
+ INT8U   UserId;
+ INT8U   UserName [MAX_USERNAME_LEN];
+ INT8U   UserPassword [MAX_PASSWORD_LEN];
+ INT8U   MaxPasswordSize;                          /**< Maximum password size                                      */
+ INT8U   UserShell;                            /**< user shell type                            */          
+ INT8U     UserEMailID [EMAIL_ADDR_SIZE];  /**< Email-ID registered for the user           */
+ INT8U   MaxSession;                       /**< max No of session allowed for User.    */
+ INT8U   CurrentSession;                   /**< No Current session for the User.       */
+ INTU    UserStatus:1;                     /**< User Enabled/Disabled Status.          */
+ INTU    FixedUser:1;                      /**< Is this user name fixed                */
+ INT8U  EmailFormat[EMAIL_FORMAT_SIZE]; /** Email Alert format                       */
+ INT32U  ExtendedPrivilege;                       /** User Enhanced Privilege Flags           */
+ INT8U   UserPasswdConfigured;                     /*  Flag to allow default Empty Password  */
+} PACKED  UserInfo_T;
+//
+//
+///**
+// * @struct DefaultChCfg_T
+//  * Structure of channel Information.
+//  **/
+//
+
+
+
+typedef struct
+{
+    INT32U          ID;
+    INTU            ChannelIndex;
+    INTU            ChannelNumber:4;
+    INTU            ChannelType:7;     /* Channel Type */
+    INTU            ChannelMedium:7;
+    INTU            ChannelProtocol:5;
+    INTU            SessionSupport:2;               /**< session support. */
+    INTU            ActiveSession:6;                /**< No of active session in this channel. */
+    INT8U           AuthType [MAX_PRIVILEGE_TYPES]; /**< Authentication according to privilege. */
+    INT8U           ProtocolVendorId [3];
+    INT8U           AuxiliaryInfo [2];
+    INTU            ReceiveMsgQ:1;            /**< enable/disable  message to Receive Message Queue. */
+    INTU            AccessMode:4;             /**< channel access mode - disabled/perboot/always/shared. */
+    INTU            AccessModeSupported:4;    /**< access mode supported by this channel. */
+    INTU            Alerting:1;               /**< enable/disable alerting through this channel. */
+    INTU            PerMessageAuth:1;         /**< enable/disable per message Auth through this channel. */
+    INTU            UserLevelAuth:1;          /**< enable/disable userlevel Auth through this channel. */
+    INTU            MaxPrivilege:4;           /**< max privilage level allowed by this channel. */
+    INTU            reserved:1;
+    INTU            SetUserAccess:1;          /**< set user access command not allowed. */
+    INTU            SetChPrivilege:2;
+    INTU            SessionLimit:6;
+    INTU            LoginStatusNUP:1;
+    INTU            LoginStatusNUNP:1;
+    INTU            LoginStatusNNU:1;
+    INTU            MaxUser:6;
+    INTU            NoCurrentUser:6;
+    INTU            NoFixedUser:6;
+    INTU            ChannelIndexRam:4;
+    INTU            ChannelIndexNvRam:4;
+  ChannelUserInfo_T ChannelUserInfo [MAX_NUM_CH_USERS_MDS];
+
+} PACKED  ChannelInfo_T;
+
+
+/*-------------------------
+ *  * Message Handler Table
+ *   *-------------------------*/
+typedef struct
+{
+    INT8U			NetFn;
+    const CmdHndlrMap_T*	CmdHndlrMap;
+
+}  MsgHndlrTbl_T;
+
+/*-----------------------------------
+ *  * Type definitions
+ *   *-----------------------------------*/
+typedef struct
+{
+    INT32U      Param;                    /* Parameter */
+    INT8U       Channel;                  /* Originator's channel number */ //=1
+    INT8U       SrcQ [PIPE_NAME_LEN];     /* Originator Queue */
+    INT8U       Cmd;                      /* Command that needs to be processed*/
+    INT8U       NetFnLUN;                 /* Net function and LUN of command   */// =0
+    INT8U       Privilege;                /* Current privilege level */ //=0
+    INT32U      SessionID;                /* Session ID if any */
+    time_t      ReqTime;                  /* Request Timestamp */ 
+    INT16U      ResTimeOut;              /* response timeout in secs */ //=10
+    INT16U      SessionType;               /* Session Type */
+    INT8U       IPAddr [IP6_ADDR_LEN];    /* IPv6 Address */
+    INT16U      UDPPort;                  /* UDP Port Number  */
+    INT16U      Socket;                   /* socket handle    */
+    INT32U      Size;                     /* Size of the data */
+    INT8U       Data [MSG_PAYLOAD_SIZE];  /* Data */
+} MsgPkt_T;
+
+typedef struct
+{
+    INT8S IfcName[IPMI_IFC_NAME_LEN];
+    HQueue_T IfcQ;
+}PACKED IPMIQueue_T;
+
+
+typedef struct
+{
+    INT8U    IPMBBusNum;
+    INT8S    IPMBBusName[64];
+    int  IPMBSlaveFd;
+    int  IPMBMasterFd;
+    INT8U	m_IPMBSeqNo;
+
+} IPMB_T;
+
+
+typedef struct {
+	INT8U		pwr_good;	//power good.
+	INT8U		S3;
+	INT8U		S4;
+	INT8U		S5;
+}PowerSta_t;
+
+typedef struct
+{
+    INT8U SendMsgTimeout;//
+    INT8U SessionTimeOut;//
+    INT8U SOLSessionTimeOut;//
+    INT8U PrimaryIPMBBusNumber;
+    INT8U SecondaryIPMBBusNumber;
+    INT8U ChassisTimerInterval;
+    INT8U EEPROMBusNum;//
+    INT8U AlterPreConfiguredEntries;//
+    INT8U ChassisInterruptSupport ;//
+    INT8U InterruptSensorHandling;//
+    INT8U EventsForRearm ;//
+    char *pSOLPort;//
+    char *pSerialPort;//
+    INT8U MaxSession;//
+    INT8U SDRAllocationSize;//
+    INT8U SELAllocationSize;//
+    INT8U BMCSlaveAddr;
+    INT8U MaxUsers;//
+    INT8U MaxChUsers;//
+    INT8U PrimaryIPMBSupport ;
+    INT8U SMMIfcSupport ;//
+    INT8U SerialIfcSupport ;//
+    INT8U SerialTerminalSupport;//
+    INT8U LANIfcSupport ;//
+    INT8U KCS1IfcSupport ;//
+    INT8U KCS2IfcSupport ;//
+    INT8U KCS3IfcSuppport ;//
+    INT8U SYSIfcSupport;//
+    INT8U SMBUSIfcSupport;//
+    INT8U ICMBIfcSupport ;//
+    INT8U SecondaryIPMBSupport ;
+    INT8U MaxLanChannel ;//
+    INT8U KCSSMMChannel;//
+    INT8U USBIfcSupport ;//
+    INT8U SOLIfcSupport ;//
+    INT8U APMLSupport;//
+    INT8U DCMISupport ;//
+    INT8U HPMSupport;//
+    INT8U OPMASupport;//
+    INT8U GrpExtnSupport ;//
+    INT8U CardInFlashMode ;//
+    INT8U VLANIfcSupport;//
+    INT8U UDSIfcSupport;//
+    INT8U LinkDownResilentSupport;//
+    INT8U RearmSetSensorThreshold;//
+    INT8U APMLBusNumber;//
+    INT8U PrimaryIPMBAddr;
+    INT8U SecondaryIPMBAddr;
+    INT8U BTIfcSupport;//
+    INT8U ChassisTimerSupport;//
+    INT8U IPMIFirewallSupport;//
+    INT8U InternalPwrGoodMonitoring;//
+} IPMIConfig_T;
+
+
+typedef struct
+{
+    INT8U ChType;
+    ChannelInfo_T ChannelInfo;
+} PACKED ChcfgInfo_T;
+
+
+/*	structure to  keep track the information about a session.	*/
+/* SessionInfo_T */
+typedef struct
+{
+    INT8U			Used; /* Flag to indicate the slot used or not */
+    INT32U			SessionID;
+    INT8U			Activated;
+    INT8U			Channel;
+    INT8U			AuthType;
+    INT8U			Privilege;
+    INT8U			MaxPrivilege;
+    INT32U			InboundSeq;
+    INT32U			OutboundSeq;
+    INT32U			TimeOutValue;
+    INT8U			Password[MAX_PASSWORD_LEN];
+    INT8U			UserId;
+    INT8U			SessionHandle;
+    INT8U			ChallengeString[CHALLENGE_STR_LEN];
+//    LANRMCPPkt_T	LANRMCPPkt;
+    SOCKET			hSocket;
+    BOOL			SerialModemMode;
+    INT32U 			Time;
+#if (IPMI20_SUPPORT == 1)
+    INT8U				Lookup;
+    INT32U				RemConSessionID;
+    INT8U				RemConRandomNo [16];
+    INT8U				MgdSysRandomNo [16];
+    INT8U				AuthAlgorithm;
+    INT8U				IntegrityAlgorithm;
+    INT8U				ConfidentialityAlgorithm;
+//    INT8U				Key1 [MAX_HASH_KEY_SIZE];
+//    INT8U				Key2 [MAX_HASH_KEY_SIZE];
+//    SessPayloadInfo_T	SessPyldInfo [MAX_PYLDS_SUPPORT];
+#endif
+    INT32U                   InitialInboundSeq;
+    INT32U                   InboundTrac[SIXTEEN_COUNT_WINDOW_LEN];
+    INT16U                   InboundRecv;
+    INT8U 			IsLoopBack;
+    INT8U                    Linkstat;
+    INT8U 			EventFlag;
+    INT8U                       UserName[MAX_USER_NAME_LEN];
+} SessionInfo_T;
+
+
+/* SDRRepositoryInfo_T */
+typedef struct
+{
+    INT8U   CompletionCode;     /* Completion Code */
+    INT8U   Version;            /* Version of the SDR 0x51 */
+    INT16U  RecCt;              /* Record Count */
+    INT16U  FreeSpace;          /* Free space LSB first */
+    INT32U  AddTimeStamp;       /* Most recent addition timestamp */
+    INT32U  EraseTimeStamp;     /* Most recent erase timestamp */
+    INT8U   OpSupport;          /* Operation Support */
+
+} PACKED  SDRRepositoryInfo_T;
+
+
+/* SessionTblInfo_T */
+typedef	struct
+{
+    INT16U			Count;
+    SessionInfo_T	*SessionTbl;
+} PACKED  SessionTblInfo_T;
+
+typedef struct
+{
+    INT16U  ReservationID;
+    INT16U  RecordDataOffset[MAX_SENSOR_NUM];
+    INT8U   SDR[MAX_SENSOR_NUM][6];
+} SDR_T;
+
+
+typedef struct {
+	INT8U	 	slotID;
+	INT32U		sensorTick;	//plus 1 every seconds.
+	INT32U		powerOnTick;	//count time in seconds after bmc power on.
+	INT32U		sysResetTick;	//count time in seconds after cpu reset.
+	PowerSta_t	powerSta;
+	SensorInfo_T 	sensorInfo[MAX_SENSOR_NUM+1];
+	UserInfo_T UserInfo[MAX_USER_CFG_MDS];
+
+	//IPMB
+	INT8U 		SERIALch ;
+	SDR_T 		SDRConfig;
+	SessionTblInfo_T SessionTblInfo;
+	INT8U		PrimaryIPMBCh;
+	INT8U		SecondaryIPMBCh;
+	IPMB_T		IPMBConfig;
+	INT8U           IPMBAddr;
+	INT8U  		SendMsgSeqNum;
+	ChcfgInfo_T 	ChConfig;	
+	INT8U           MsgHndlrTblSize;
+	MsgHndlrTbl_T 	MsgHndlrTbl[15];
+	IPMIConfig_T 	IpmiConfig;
+	
+} BMCInfo_t;
+
+
+/* ReserveSDRRepositoryRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   ReservationID_H;
+    INT8U   ReservationID_L;
+//    INT8U   Data;
+
+} PACKED  ReserveSDRRepositoryRes_T;
+
+typedef struct
+{
+    INT8S Ifcname[16];
+    INT8U Index;
+    INT8U Enabled;
+}PACKED IfcName_T;
+
+
+// IfcName_T Ifcnametable [MAX_CHANNEL] = 
+//{
+//        {"eth0", 0, 0},   
+//        {{0}, 0, 0},
+//        {{0}, 0, 0},
+//        {{0}, 0, 0},
+//};
+
+
+
+
+typedef union{
+ uint8_t Data[28];
+ struct{
+ /** RMCP Header **/
+  uint8_t Version;
+  uint8_t Reserved1;
+  uint8_t RMCPSqNum;
+  uint8_t Class;
+ /** ASF Message **/
+  uint8_t ASF_IANA[4];
+  uint8_t MessageType;
+  uint8_t MessageTag;
+  uint8_t Reserved2;
+  uint8_t DataLen;
+  uint8_t OEM_IANA[4];
+  uint8_t Oem_def[4];
+  uint8_t SupportEntities;
+  uint8_t SupportInteractions;
+  uint8_t Reserved3[6];
+ } AST_T; 
+
+} ASF_Pong_Message;
+
+
+typedef union{
+ uint8_t Data[128];
+ struct{
+ /** RMCP Header **/
+  uint8_t Version;
+  uint8_t Reserved1;
+  uint8_t RMCPSqNum;
+  uint8_t Class;
+ /** IPMI Message **/
+  uint8_t MessageType;
+  uint8_t Sequence_Number[4];
+  uint8_t Session_ID[4];
+  uint8_t MessageLength;
+  uint8_t MessageData[114];
+}AST_T; 
+
+} IPMI_Message;
+
+
+
+typedef struct
+{
+    INT8U	ChannelNum;
+    INT8U	Privilege;
+
+} PDK_ChannelInfo_T;
+
+/*   add in     */
+
+#define MAX_PDK_FRU_SUPPORTED 10
+
+#define MAX_NETFN                        64
+
+#define VALID_LUN                       0x01
+
+#define MAX_SENSOR_NUMBERS	    		(256 + (256 * VALID_LUN))
+
+#define MAX_ID_STR_FILE_NAME 128
+
+
+typedef void (*pTimerFn_T) (int BMCInst);
+
+
+
+typedef struct
+{
+    INT8U   DeviceID;       /* FRU Device ID                                */
+    INT8U   IsInternalFRU;  /* Flag to hide FRU					*/
+    INT8U   Type;           /* FRU type NVR/EEPROM/....                     */
+    INT16U  Size;           /* FRU Device size                              */
+    INT8U   AccessType;     /* FRU device access type BYTE/WORD             */
+    INT8S   NVRFile[MAX_ID_STR_FILE_NAME];        /* FRU file name if FRU is NVR                  */
+    INT8U   BusNumber;      /* Bus number if FRU is EEPROM                  */
+    INT8U   SlaveAddr;      /* FRU device slave address if FRU is EEPROM    */
+    INT8U   DeviceType;     /* FRU device type if FRU is EEPROM             */
+    INT16U  Offset;         /* FRU start offset in a physical FRU           */
+    INT8S   FRUName[MAX_ID_STR_LEN]; /* FRU Name                 */
+} FRUInfo_T;
+
+typedef struct
+{
+    INT8U           NumSecs;
+    pTimerFn_T      TimerFn;
+
+} TimerTaskTbl_T;
+
+
+
+#endif /* __BMC_TYPE_H__ */

+ 18 - 0
app/bmc_server/ipmb/ipmb_thread.c

@@ -0,0 +1,18 @@
+#include <stdio.h>
+#include "bmc_main.h"
+#include "ipmb_thread.h"
+
+/*
+ * ipmb thread
+ * Author: Jimbo
+ */
+void *ipmb_main(void *args)
+{
+	printf("start ipmb_main thread.\n");
+	while(1)
+	{
+//		printf("this is ipmb thread!\n");
+		sleep(4);
+	}
+}
+

+ 6 - 0
app/bmc_server/ipmb/ipmb_thread.h

@@ -0,0 +1,6 @@
+#ifndef __IPMB_THREAD_H__
+#define __IPMB_THREAD_H__
+
+void *ipmb_main(void *args);
+
+#endif /* __IPMB_THREAD_H__ */

BIN
app/bmc_server/ipmi_dev/.IPMI_AppDevice.h.swp


+ 38 - 0
app/bmc_server/ipmi_dev/AMI.h

@@ -0,0 +1,38 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************/
+/*****************************************************************
+ *
+ * AMI.h
+ * AMI Command Handler
+ *
+ * Author: Basavaraj Astekar <basavaraja@ami.com>
+ *
+ *****************************************************************/
+#ifndef AMI_H
+#define AMI_H
+
+#include "MsgHndlr.h"
+
+
+/*** Extern Definitions ***/
+extern const ExCmdHndlrMap_T  g_AMI_CmdHndlr []; /**< AMI specific command handler table. */
+
+/**
+ * @defgroup acf AMI Specific Module
+  * IPMI AMI Specific Command Handlers. Invoked by the message handler
+ * @{
+ **/
+/** @} */
+
+#endif  /* APP_H */

+ 32 - 0
app/bmc_server/ipmi_dev/AMIBiosCode.h

@@ -0,0 +1,32 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2010-2011, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        5555 Oakbrook Pkwy, Building 200, Norcross,         **
+ **                                                            **
+ **        Georgia 30093, USA. Phone-(770)-246-8600.           **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************/
+/*****************************************************************
+ *
+ * AMIBiosCode.h
+ * 
+ *
+ * Author: Gokulakannan. S <gokulakannans@amiindia.co.in>
+ *****************************************************************/
+
+
+#ifndef AMIBIOSCODE_H_
+#define AMIBIOSCODE_H_
+
+#include "Types.h"
+
+
+extern int AMIGetBiosCode (_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes, int BMCInst);
+
+
+#endif /* AMIBIOSCODE_H_ */

+ 104 - 0
app/bmc_server/ipmi_dev/AMIConf.h

@@ -0,0 +1,104 @@
+/*****************************************************************
+******************************************************************
+***                                                            ***
+***        (C)Copyright 2010, American Megatrends Inc.         ***
+***                                                            ***
+***                    All Rights Reserved                     ***
+***                                                            ***
+***       5555 Oakbrook Parkway, Norcross, GA 30093, USA       ***
+***                                                            ***
+***                     Phone 770.246.8600                     ***
+***                                                            ***
+******************************************************************
+******************************************************************
+******************************************************************
+*
+* AMIConf.h
+* AMI specific extended configuration commands 
+*
+* Author: Benson Chuang <bensonchuang@ami.com.tw>
+*           
+******************************************************************/
+
+#ifndef __AMICONF_H__ 
+#define __AMICONF_H__
+
+#include "Types.h"
+#include "ncml.h"
+
+#define RIS_IMAGE_NAME		0
+#define RIS_REMOTE_PATH		1
+#define RIS_IP_ADDR		2
+#define RIS_USER_NAME		3
+#define RIS_PASSWORD		4
+#define RIS_SHARE_TYPE		5
+#define RIS_DOMAIN		6
+
+#define RIS_STOP		0
+#define RIS_START		1
+#define MAX_SERVICE_COUNT	3
+#define DEBUG_MSG_ENABLED 0x1
+#define DEBUG_MSG_DISABLED 0x0
+#define SET_COMPLETE			0x00
+#define SET_IN_PROGRESS 		0x01
+#define WRITE_TO_FILE 		0x01
+
+#define ENABLE_DISABLE_MASK 			0xFE
+
+#define BONDING_ACTIVE	1
+#define BONDING_NOTACTIVE 0
+
+#define INVALID_PRIV_REQUEST 0xFFFFFFFC
+#define INVALID_DOMAIN_NAME	0
+
+extern char *ServiceNameList[MAX_SERVICE_NUM];
+extern int AMIGetServiceConf(_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes,int BMCInst);
+extern int AMISetServiceConf(_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes,int BMCInst);
+extern int AMIGetDNSConf(_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes,int BMCInst);
+extern int AMISetDNSConf(_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes,int BMCInst);
+
+/* DNS v6 */
+extern int AMIGetV6DNSConf(_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes,int BMCInst);
+extern int AMISetV6DNSConf(_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes,int BMCInst);
+extern int AMISetActiveSlave(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,int BMCInst );
+extern int AMILinkDownResilent( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes,int BMCInst);
+extern int AMISetIfaceState(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes,int BMCInst);
+extern int AMIGetIfaceState(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes,int BMCInst);
+extern int AMISetFirewall ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,int BMCInst );
+extern int AMIGetFirewall ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,int BMCInst );
+extern int AMISetSNMPConf( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes,int BMCInst);
+extern int AMIGetSNMPConf( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+
+extern int AMIGetSELPolicy (_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+extern int AMISetSELPolicy (_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+extern int AMIGetSELEntires(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+extern int AMIGetSenforInfo(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+extern int AMIGetIPMISessionTimeOut(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+extern int AMIGetUDSInfo(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+extern int AMIGetUDSSessionInfo(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+extern int AMIGetRISConf(_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes,int BMCInst);
+extern int AMISetRISConf(_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes,int BMCInst);
+extern int AMIRISStartStop(_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes,int BMCInst);
+extern int AMIControlDebugMsg(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+extern int AMIGetDebugMsgStatus(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+extern int AMISetExtendedPrivilege(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes,int BMCInst);
+extern int AMIGetExtendedPrivilege(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes,int BMCInst);
+extern int AMIGetHostLockFeatureStatus(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+extern int AMISetHostLockFeatureStatus(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+extern int AMIGetHostAutoLockStatus(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+extern int AMISetHostAutoLockStatus(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+extern int AMIGetChannelType(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+
+/*
+ * @fn ValidateSetIfaceStateBond
+ * @brief Validate the SetIface State Bond Command inupt
+ * @param[in] pReq - Request Structure.
+ * @param[out] pRes - Response Structure.
+ * @param[out] VLANID - VLANID of the slave interfaces (if any, otherwise return 0).
+ * @param[in] CheckBondDisable - Validate the Bond disable feature.
+ * @param[in] BMCInst - Instance of the BMC.
+ * @return 
+ */
+extern int ValidateSetIfaceStateBond (INT8U *pReq, INT8U *pRes, INT8U *VLANID, int CheckBondDisable, int BMCInst);
+
+#endif /* __AMICONF_H__ */

+ 146 - 0
app/bmc_server/ipmi_dev/AMIDevice.h

@@ -0,0 +1,146 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ *****************************************************************
+ *
+ * AMICommands.h
+ * AMI specific Commands
+ *
+ * Author: Basavaraj Astekar <basavaraja@ami.com>
+ *
+ *****************************************************************/
+#ifndef AMI_DEVICE_H
+#define AMI_DEVICE_H
+
+#include "Types.h"
+
+/**
+ * @defgroup acf AMI Device commands
+ * @ingroup acf
+ * IPMI AMI-specific Command Handlers for
+ * @{
+ **/
+
+#define SSH_TEMP_FILE   "/tmp/ssh_temp_key"
+
+
+#define PAM_MODULE_LEN 64
+#define PAM_BUF_LEN   128
+#define  ERR_RETRN                  -1
+
+#define CONNECTION_INFO_HOST            0x01
+#define CONNECTION_INFO_FILE_PATH       0x02
+#define CONNECTION_INFO_RETRY           0x03
+#define FW_UPDATE_SELECT                0x04
+
+#define ACTIVATE_FLASH_TIMEOUT 180
+
+typedef struct
+{
+    INT8U  SqnceNo;
+    char     PamModule[PAM_MODULE_LEN];
+}PamOrder_T;
+
+
+#define PAM_IPMI   "pam_ipmi.so"
+#define PAM_LDAP  "pam_custom_ldap.so"
+#define PAM_AD      "pam_custom_ad.so"
+#define PAM_RADIUS	"pam_custom_radius.so"
+#define PAM_WOUNIX_FILE       "/conf/pam_wounix"
+#define PAM_WITHUNIX_FILE   "/conf/pam_withunix"
+#define PAM_NSSWITCH_FILE   "/conf/nsswitch.conf"
+
+/*** Function Prototypes ***/
+extern void FlashTimerTask (int BMCInst);
+extern int SetDefaultTimezone (INT8U *TimeZone, int BMCInst);
+
+/** @} */
+#ifndef CONFIG_SPX_FEATURE_IPMI_NO_YAFU_SUPPORT
+int InitYafuVar();
+extern int AMIYAFUSwitchFlashDevice ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,_NEAR_ int BMCInst); 
+extern int AMIYAFURestoreFlashDevice ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,_NEAR_ int BMCInst); 
+extern int AMIYAFUGetFlashInfo ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,_NEAR_ int BMCInst); 
+extern int AMIYAFUGetFirmwareInfo ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,_NEAR_ int BMCInst); 
+extern int AMIYAFUGetFMHInfo ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,_NEAR_ int BMCInst); 
+extern int AMIYAFUGetStatus ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,_NEAR_ int BMCInst); 
+extern int AMIYAFUActivateFlashMode ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes,_NEAR_ int BMCInst );
+extern int AMIYAFUDualImgSup(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,_NEAR_ int BMCInst);
+extern int AMIYAFUAllocateMemory ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes,_NEAR_ int BMCInst ); 
+extern int AMIYAFUFreeMemory ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes,_NEAR_ int BMCInst ); 
+extern int AMIYAFUReadFlash ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,_NEAR_ int BMCInst); 
+extern int AMIYAFUWriteFlash ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,_NEAR_ int BMCInst);
+extern int AMIYAFUEraseFlash ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,_NEAR_ int BMCInst); 
+extern int AMIYAFUProtectFlash ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,_NEAR_ int BMCInst); 
+extern int AMIYAFUEraseCopyFlash ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,_NEAR_ int BMCInst); 
+extern int AMIYAFUGetECFStatus( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,_NEAR_ int BMCInst);
+extern int AMIYAFUGetVerifyStatus  ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,_NEAR_ int BMCInst);
+extern int AMIYAFUVerifyFlash ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,_NEAR_ int BMCInst); 
+extern int AMIYAFUReadMemory ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,_NEAR_ int BMCInst); 
+extern int AMIYAFUWriteMemory ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,_NEAR_ int BMCInst);
+extern int AMIYAFUCopyMemory ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,_NEAR_ int BMCInst); 
+extern int AMIYAFUCompareMemory ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes,_NEAR_ int BMCInst );
+extern int AMIYAFUClearMemory ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes,_NEAR_ int BMCInst ); 
+extern int AMIYAFUGetBootConfig ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,_NEAR_ int BMCInst); 
+extern int AMIYAFUSetBootConfig ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,_NEAR_ int BMCInst); 
+extern int AMIYAFUGetBootVars ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,_NEAR_ int BMCInst); 
+extern int AMIYAFUDeactivateFlash ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,_NEAR_ int BMCInst); 
+extern int AMIYAFUResetDevice ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,_NEAR_ int BMCInst); 
+extern int AMIYAFUFWSelectFlash ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes,_NEAR_ int BMCInst );
+#endif
+extern int  AMIDualImageSupport( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes,_NEAR_ int BMCInst );
+extern int AMIGetNMChNum ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,_NEAR_ int BMCInst); 
+extern int AMIGetEthIndex ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,_NEAR_ int BMCInst) ;
+extern int AMIGetFruDetails( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes,int BMCInst );
+extern int AMIGetRootUserAccess (_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int AMISetRootPassword   (_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes,_NEAR_ int BMCInst);
+extern int AMIGetUserShelltype   (_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes,_NEAR_ int BMCInst);
+extern int AMISetUserShelltype   (_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes,_NEAR_ int BMCInst);
+
+extern int AMISetTriggerEvent( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,int BMCInst );
+extern int AMIGetTriggerEvent( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,int BMCInst );
+extern int AMIGetSolConf( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,int BMCInst );
+extern int AMISetLoginAuditConfig( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,int BMCInst );
+extern int AMIGetLoginAuditConfig( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,int BMCInst );
+extern int AMIGetAllIPv6Address ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes ,int BMCInst );
+extern int AMISetPamOrder ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes,int BMCInst);
+extern int AMIGetPamOrder ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes,int BMCInst);
+extern int AMISetPwdEncryptionKey (_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+extern int AMISetUBootMemtest(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+extern int AMIGetUBootMemtestStatus(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+extern int AMISetTimeZone (_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+extern int AMIGetTimeZone (_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+extern int AMISetNTPCfg(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+extern int AMIGetNTPCfg(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+extern int AMIYAFUReplaceSignedImageKey(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+extern int AMIVirtualDeviceGetStatus(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+extern int AMIVirtualDeviceSetStatus(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+
+int GetUBootParam (char*, char* );
+int SetUBootParam (char*, char* );
+int GetAllUBootParam();
+int DefaultSettingsForDualImageSupport();
+
+/**
+ *    TFTP Firmware update 
+ */
+int AMIStartTFTPFwUpdate ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+int AMIGetTftpProgressStatus( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+int AMISetFWCfg ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+int AMIGetFWCfg ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+int AMISetFWProtocol ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+int AMIGetFWProtocol ( _NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+
+extern int AMIGetLicenseValidity(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+extern int AMIAddLicenseKey(_NEAR_ INT8U *pReq, INT32U ReqLen, _NEAR_ INT8U *pRes, int BMCInst);
+
+#endif  /* AMI_CMDS_H */
+

+ 44 - 0
app/bmc_server/ipmi_dev/AMIOBSMDevice.h

@@ -0,0 +1,44 @@
+/****************************************************************
+ **                                                            **
+ **    (C)Copyright 2007-2008, American Megatrends Inc.        **
+ **                                                            **
+ **                   All Rights Reserved.                     **
+ **                                                            **
+ **        5555, Oakbrook Parkway, Suite 200, Norcross,        **
+ **                                                            **
+ **        Georgia - 30093, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************/
+
+ /****************************************************************
+ * @file	AMIOBSMDevice.h
+ * @author	Velu	<velmuruganv@amiindia.co.in>
+ * @brief
+ ****************************************************************/
+
+#ifndef AMIOBSMDEVICE_H
+#define AMIOBSMDEVICE_H
+
+#include "Types.h"
+
+/*** Function Prototypes ***/
+extern int   AMIGetSlotMapInfo           (_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes, int BMCInst);
+extern int   AMIGetSlotInfo              (_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes, int BMCInst);
+extern int   AMIGetPwrInfo               (_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes, int BMCInst);
+extern int   AMIGetPwrDomInfo            (_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes, int BMCInst);
+extern int   AMIGetPwrSupplyInfo         (_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes, int BMCInst);
+extern int   AMIGetCoolingInfo           (_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes, int BMCInst);
+extern int   AMIGetCoolingDomInfo        (_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes, int BMCInst);
+extern int   AMIGetFanInfo               (_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes, int BMCInst);
+extern int   AMIGetBladeStatus           (_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes, int BMCInst);
+extern int   AMIEthRestartAll            (_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes, int BMCInst);
+
+extern int   DbgGetBladeInfo             (_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes, int BMCInst);
+extern int   DbgGetChassisPwrInfo        (_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes, int BMCInst);
+extern int   DbgGetChassisCoolingInfo    (_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes, int BMCInst);
+extern int   DbgBladeInsRemEvent         (_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes, int BMCInst);
+extern int   DbgPSStateChangeEvent       (_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes, int BMCInst);
+extern int   DbgFanStateChangeEvent      (_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes, int BMCInst);
+extern int   DbgThermalStateChangeEvent  (_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes, int BMCInst);
+
+#endif

+ 35 - 0
app/bmc_server/ipmi_dev/AMIResetPass.h

@@ -0,0 +1,35 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ ******************************************************************
+ *
+ * AmiResetPass.h
+ * AMI Reset Password commands Macros
+ *
+ * Author: Gokula Kannan. S	<gokulakannans@amiindia.co.in>
+ *
+ ******************************************************************/
+#ifndef __AMIRESETPASS_H__ 
+#define __AMIRESETPASS_H__
+
+#include "Types.h"
+#include "smtpclient.h"
+
+
+extern int AMIResetPassword(_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes, int BMCInst);
+extern int AMIGetEmailForUser(_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes, int BMCInst);
+extern int AMISetEmailForUser(_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes, int BMCInst);
+extern int AMIGetEmailFormatUser(_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes, int BMCInst);
+extern int AMISetEmailFormatUser(_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes, int BMCInst);
+
+
+#endif // __AMISMTP_H__ 

+ 95 - 0
app/bmc_server/ipmi_dev/AMIRestoreDefaults.h

@@ -0,0 +1,95 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ ******************************************************************
+ *
+ * AmiRestoreDefaults.h
+ * AMI Restore Defaults command Macros
+ *
+ * Author: Gokula Kannan. S	<gokulakannans@amiindia.co.in>
+ *
+ ******************************************************************/
+#ifndef __AMIRESTOREDEF_H__ 
+#define __AMIRESTOREDEF_H__
+
+#include "Types.h"
+
+#ifdef __GNUC__
+#define PACKED __attribute__ ((packed))
+#else
+#define PACKED
+#pragma pack( 1 )
+#endif
+/* GetPreserveConfigRes_T */
+typedef struct
+{
+	INT8U Selector;
+} GetPreserveConfigReq_T;
+
+/* GetPreserveConfigRes_T */
+typedef struct
+{
+	INT8U   CompletionCode;
+	INT8U	Status;
+} GetPreserveConfigRes_T;
+
+/* SetPreserveConfigReq_T */
+typedef struct 
+{
+    INT8U Selector;
+	INT8U	Status;
+} SetPreserveConfigReq_T;
+
+/* SetPreserveConfigRes_T */
+typedef struct 
+{
+    INT8U   CompletionCode;
+} SetPreserveConfigRes_T;
+
+/* GetAllPreserveConfigRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   Reserved;
+    INT16U  Status;
+    INT16U  EnabledStatus;
+} PACKED GetAllPreserveConfigRes_T;
+
+/* SetAllPreserveConfigReq_T */
+typedef struct 
+{
+    INT16U   Status;
+} PACKED SetAllPreserveConfigReq_T;
+
+/* SetAllPreserveConfigRes_T */
+typedef struct 
+{
+    INT8U   CompletionCode;
+} PACKED SetAllPreserveConfigRes_T;
+
+#ifdef __GNUC__
+#else
+#define PACKED
+#pragma pack(  )
+#endif
+
+extern int AMIRestoreDefaults (_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes,int BMCInst);
+
+extern int AMIGetPreserveConfStatus(_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes,int BMCInst);
+
+extern int AMISetPreserveConfStatus(_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes,int BMCInst);
+
+extern int AMISetAllPreserveConfStatus(_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes,int BMCInst);
+
+extern int AMIGetAllPreserveConfStatus(_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes,int BMCInst);
+
+#endif // __AMIRESTOREDEF_H__ 

+ 35 - 0
app/bmc_server/ipmi_dev/AMISmtp.h

@@ -0,0 +1,35 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ ******************************************************************
+ *
+ * AmiSmtp.h
+ * AMI smtp commands Macros
+ *
+ * Author: shivaranjanic <shivaranjanic@amiindia.co.in>
+ *
+ ******************************************************************/
+#ifndef __AMISMTP_H__ 
+#define __AMISMTP_H__
+
+#include "Types.h"
+#include "smtpclient.h"
+
+extern int g_enablesmtpauth;
+
+extern int  SetSMTPConfigParams (_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes, int BMCInst);
+extern int  GetSMTPConfigParams (_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes, int BMCInst);
+extern int GetSMTP_PrimaryServer(SMTP_STRUCT *mail, INT8U SetSelector, INT8U EthIndex, int BMCInst);
+extern int GetSMTP_SecondaryServer(SMTP_STRUCT *mail, INT8U SetSelector, INT8U EthIndex, int BMCInst);
+
+
+#endif // __AMISMTP_H__ 

+ 50 - 0
app/bmc_server/ipmi_dev/AMISyslogConf.h

@@ -0,0 +1,50 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ ******************************************************************
+ *
+ * AmiSyslogConf.h
+ * AMI Syslog configuration command Macros
+ *
+ * Author: Gokula Kannan. S	<gokulakannans@amiindia.co.in>
+ *
+ ******************************************************************/
+#ifndef __AMISYSLOGCONF_H__
+#define __AMISYSLOGCONF_H__
+
+#include "Types.h"
+
+/**
+ * @fn AMIGetLogConf
+ * @brief Get the log configuration file.
+ * @param[in] pReq - pointer to the request.
+ * @param[in] ReqLen - Length of the request.
+ * @param[out] pRes - pointer to the result.
+ * @retval  	CC_NORMAL, on success,
+ * 				CC_UNSPECIFIED_ERR, if any unknown errors.
+ */
+extern int AMIGetLogConf(_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes,int BMCInst);
+/**
+ * @fn AMIGetLogConf
+ * @brief Get the log configuration file.
+ * @param[in] pReq - pointer to the request.
+ * @param[in] ReqLen - Length of the request.
+ * @param[out] pRes - pointer to the result.
+ * @retval  	CC_NORMAL, on success,
+ * 				CC_UNSPECIFIED_ERR, if any unknown errors.
+ */
+extern int AMISetLogConf(_NEAR_ INT8U* pReq, INT32U ReqLen, _NEAR_ INT8U* pRes,int BMCInst);
+
+
+#endif // __AMISYSLOGCONF_H__
+
+

+ 49 - 0
app/bmc_server/ipmi_dev/API.h

@@ -0,0 +1,49 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ *****************************************************************
+ ******************************************************************
+ *
+ * PMApi.h
+ * Platform manager APIs.
+ *
+ *  Author: Govind Kothandapani <govindk@ami.com>
+ *
+ ******************************************************************/
+#ifndef PMAPI_H
+#define PMAPI_H
+#include "Types.h"
+#include "IPMIDefs.h"
+#include "Message.h"
+#include "MsgAPI.h"
+#include "ChassisAPI.h"
+#include "EventAPI.h"
+#include "SELAPI.h"
+#include "SDRAPI.h"
+#include "FRUAPI.h"
+#include "AlertAPI.h"
+#include "MiscAPI.h"
+
+#include "IPMI_App.h"
+#include "IPMI_AppDevice.h"
+#include "IPMI_Sensor.h"
+
+/*------------------------------------------------------------------
+ * @fn API_ExecuteCmd
+ * @brief Execute a IPMI command by posting the request to
+ * Message handler and receives the response.
+ *------------------------------------------------------------------*/
+extern int    API_ExecuteCmd (MsgPkt_T *pMsgPkt, int BMCInst);
+
+
+#endif	/* PMAPI_H */
+

+ 37 - 0
app/bmc_server/ipmi_dev/AlertAPI.h

@@ -0,0 +1,37 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ ******************************************************************
+ * 
+ * AlertAPI.h
+ * Alerting API.
+ *
+ *  Author: Govind Kothandapani <govindk@ami.com>
+ *  		
+ ******************************************************************/
+#ifndef ALERTAPI_H
+#define ALERTAPI_H
+#include "Types.h"
+#include "SELRecord.h"
+
+/*--------------------------------------------------------------------------
+ * @fn API_SendLANAlert
+ * @brief This function sends PET Alerts through the LAN channel.
+ * @param EvtRecord		- Received Event record.
+ * @param DestSel		- Destination Selector
+ * @param AlertImmFlag	- 1 if alert immediate, 0 otherwise.
+ *--------------------------------------------------------------------------*/
+extern int API_SendLANAlert (SELEventRecord_T* EvtRecord,  INT8U DestSel,
+                                                            INT8U   AlertImmFlag,
+                                                            INT8U             EventSeverity, int BMCInst);
+
+#endif	/* ALERTAPI_H */

+ 395 - 0
app/bmc_server/ipmi_dev/Apml.h

@@ -0,0 +1,395 @@
+/*******************************************************************
+*********************************************************************
+*****                                                              **
+*****    (C)Copyright 2008-2009, American Megatrends Inc.          **
+*****                                                              **
+*****    All Rights Reserved.                                      **
+*****                                                              **
+*****    5555 , Oakbrook Pkwy, Norcross,                           **
+*****                                                              **
+*****    Georgia - 30093, USA. Phone-(770)-246-8600.               **
+*****                                                              **
+*********************************************************************
+*********************************************************************
+*********************************************************************
+***
+*** Apml.h
+*** Apml Command Handler.
+***
+*** Author:
+********************************************************************/
+#ifndef _APML_H_
+#define _APML_H_
+
+#include "Types.h"
+#include "MsgHndlr.h"
+
+/*------------------ APML Command Numbers -------------------------*/
+//SB-RMI Commands
+#define CMD_APML_GET_INTERFACE_VERSION	0x01
+#define CMD_APML_READ_RMI_REG			0x02
+#define CMD_APML_WRITE_RMI_REG			0x03
+#define CMD_APML_READ_CPUID				0x04
+#define CMD_APML_READ_HTC_REG			0x05
+#define CMD_APML_WRITE_HTC_REG			0x06
+#define CMD_APML_READ_PSTATE			0x07
+#define CMD_APML_READ_MAX_PSTATE		0x08
+#define CMD_APML_READ_PSTATE_LIMIT		0x09
+#define CMD_APML_WRITE_PSTATE_LIMIT		0x0A
+#define CMD_APML_READ_MCR				0x0B
+#define CMD_APML_WRITE_MCR				0x0C
+// SB-TSI Commands
+#define CMD_APML_READ_TSI_REG			0x0D
+#define CMD_APML_WRITE_TSI_REG			0x0E
+
+#define CMD_APML_READ_TDP_LIMIT_REG             0x0F 
+#define CMD_APML_WRITE_TDP_LIMIT_REG            0x10 
+#define CMD_APML_READ_PROCESSOR_POWER_REG       0x11 
+#define CMD_APML_READ_POWER_AVERAGING_REG       0x12 
+#define CMD_APML_READ_DRAM_THROTTLE_REG         0x13 
+#define CMD_APML_WRITE_DRAM_THROTTLE_REG        0x14 
+ 
+/*APML Command Handler table */
+extern const CmdHndlrMap_T g_APML_CmdHndlr[];
+
+
+/* ApmlGetInterfaceVersionReq_T */
+typedef struct
+{
+    INT8U   		Proc;
+} PACKED ApmlGetInterfaceVersionReq_T;
+
+
+/* ApmlGetInterfaceVersionResp_T */
+typedef struct
+{
+    INT8U   		CompletionCode;
+    INT8U 			Version;
+} PACKED ApmlGetInterfaceVersionRes_T;
+
+/* ApmlReadRMIReq_T */
+typedef struct
+{
+    INT8U			Proc;	
+    INT8U			Register;
+} PACKED ApmlReadRMIReq_T;
+
+
+/* ApmlReadRMIRes_T */
+typedef struct
+{
+    INT8U			CompletionCode;
+    INT8U			Value;	
+} PACKED ApmlReadRMIRes_T;
+
+	
+/* ApmlWriteRMIReq_T */
+typedef struct
+{
+    INT8U			Proc;	
+    INT8U			Register;
+    INT8U			Value;
+} PACKED ApmlWriteRMIReq_T;
+
+
+/* ApmlWriteRMIRes_T */
+typedef struct
+{
+    INT8U			CompletionCode;
+} PACKED ApmlWriteRMIRes_T;
+
+ 
+/* ApmlReadCPUIdReq_T */
+typedef struct
+{
+    INT8U   		Proc;
+    INT8U   		Core;
+    INT32U			Cpuid_func;
+} PACKED ApmlReadCPUIdReq_T;
+
+
+/* ApmlReadCPUIdRes_T */
+typedef struct
+{
+    INT8U   		CompletionCode;
+    INT32U 			eax;
+    INT32U			ebx;
+    INT32U			ecx;
+    INT32U			edx;
+} PACKED ApmlReadCPUIdRes_T;
+
+/* ApmlReadHTCReq_T */
+typedef struct
+{
+    INT8U   		Proc;
+} PACKED ApmlReadHTCReq_T;
+
+
+/* ApmlReadHTCRes_T */
+typedef struct
+{
+    INT8U   		CompletionCode;
+    INT32U 			High;
+    INT32U			Low;
+} PACKED ApmlReadHTCRes_T;
+
+/* ApmlWriteHTCReq_T */
+typedef struct
+{
+    INT8U   		Proc;
+    INT8U   		RegisterValueSize;
+    INT32U 			High;
+    INT32U			Low;
+} PACKED ApmlWriteHTCReq_T;
+
+
+/* ApmlWriteHTCRes_T */
+typedef struct
+{
+    INT8U   		CompletionCode;
+} PACKED ApmlWriteHTCRes_T;
+
+
+/* ApmlReadPStateReq_T */
+typedef struct
+{
+    INT8U   		Proc;
+    INT8U   		Core;
+} PACKED ApmlReadPStateReq_T;
+
+
+/* ApmlReadPStateRes_T */
+typedef struct
+{
+    INT8U   		CompletionCode;
+    INT8U 			PState;
+} PACKED ApmlReadPStateRes_T;
+
+
+/* ApmlReadMaxPStateReq_T */
+typedef struct
+{
+    INT8U   		Proc;
+} PACKED ApmlReadMaxPStateReq_T;
+
+
+/* ApmlReadMaxPStateReq_T */
+typedef struct
+{
+    INT8U   		CompletionCode;
+    INT8U 			MaxPState;
+} PACKED ApmlReadMaxPStateRes_T;
+
+
+/* ApmlReadPStateLimitReq_T */
+typedef struct
+{
+    INT8U			Proc;
+} PACKED ApmlReadPStateLimitReq_T;
+
+
+/* ApmlReadPStateLimitRes_T */
+typedef struct
+{
+    INT8U			CompletionCode;
+    INT8U			LimitActive;
+    INT8U			PStateLimit;
+} PACKED ApmlReadPStateLimitRes_T;
+
+/* ApmlWritePStateLimitReq_T */
+typedef struct
+{
+    INT8U			Proc;
+    INT8U			LimitActive;
+    INT8U			PStateLimit;
+} PACKED ApmlWritePStateLimitReq_T;
+
+
+/* ApmlWritePStateLimitRes_T */
+typedef struct
+{
+    INT8U			CompletionCode;
+} PACKED ApmlWritePStateLimitRes_T;
+
+/* ApmlReadMCRReq_T */
+typedef struct
+{
+    INT8U   		Proc;
+    INT8U   		Core;
+    INT32U			MCR_Addr;
+} PACKED ApmlReadMCRReq_T;
+
+
+/* ApmlReadMCRRes_T */
+typedef struct
+{
+    INT8U   		CompletionCode;
+    INT32U 			High;
+    INT32U			Low;
+} PACKED ApmlReadMCRRes_T;
+
+
+/* ApmlWriteMCRReq_T */
+typedef struct
+{
+    INT8U   		Proc;
+    INT8U   		Core;
+    INT32U			MCR_Addr;
+    INT8U			RegisterValueSize;
+    INT32U 			High;
+    INT32U			Low;
+} PACKED ApmlWriteMCRReq_T;
+
+/* ApmlWriteMCRReq_T */
+typedef struct
+{
+    INT8U   		CompletionCode;
+} PACKED ApmlWriteMCRRes_T;
+
+/* ApmlReadTSIReq_T */
+typedef struct
+{
+    INT8U			Proc;	
+    INT8U			Register;
+} PACKED ApmlReadTSIReq_T;
+
+
+/* ApmlReadTSIRes_T */
+typedef struct
+{
+    INT8U			CompletionCode;
+    INT8U			Value;	
+} PACKED ApmlReadTSIRes_T;
+
+	
+/* ApmlWriteTSIReq_T */
+typedef struct
+{
+    INT8U			Proc;	
+    INT8U			Register;
+    INT8U			Value;
+} PACKED ApmlWriteTSIReq_T;
+
+
+/* ApmlWriteTSIRes_T */
+typedef struct
+{
+    INT8U			CompletionCode;
+} PACKED ApmlWriteTSIRes_T;
+
+typedef struct 
+{ 
+        INT8U                   Proc; 
+} PACKED ApmlReadTDPLimitReq_T; 
+ 
+ 
+/* ApmlReadTDPLimitRes_T */ 
+typedef struct 
+{ 
+        INT8U                   CompletionCode; 
+        INT8U                   ApmlTdpLimiPercent; 
+        INT16U                  ApmlTdpLimit; 
+} PACKED ApmlReadTDPLimitRes_T; 
+ 
+ 
+/* ApmlWriteTDPLimitReq_T */ 
+typedef struct 
+{ 
+        INT8U                   Proc; 
+        INT8U                   ApmlTdpLimiPercent; 
+        INT16U                  ApmlTdpLimit; 
+} PACKED ApmlWriteTDPLimitReq_T; 
+ 
+/* ApmlWriteTDPLimitRes_T */ 
+typedef struct 
+{ 
+        INT8U                   CompletionCode; 
+} PACKED ApmlWriteTDPLimitRes_T; 
+ 
+/* ApmlReadProcessorPowerReq_T */ 
+typedef struct 
+{ 
+        INT8U                   Proc; 
+} PACKED ApmlReadProcessorPowerReq_T; 
+ 
+ 
+/* ApmlReadProcessorPowerRes_T */ 
+typedef struct 
+{ 
+        INT8U                   CompletionCode; 
+        INT16U                  Tdp2Watt; 
+        INT16U                  BaseTdp; 
+        INT16U                  ProcessorTdp; 
+} PACKED ApmlReadProcessorPowerRes_T; 
+ 
+/* ApmlReadPowerAveragingPeriodReq_T */ 
+typedef struct 
+{ 
+        INT8U                   Proc; 
+} PACKED ApmlReadPowerAveragingPeriodReq_T; 
+ 
+ 
+/* ApmlReadPowerAveragingPeriodRes_T */ 
+typedef struct 
+{ 
+        INT8U                   CompletionCode; 
+        uint8                   RunAvgRange; 
+        uint16                  ApmTdpLimit; 
+        uint32                  TdpRunAvgAccCap; 
+} PACKED ApmlReadPowerAveragingPeriodRes_T; 
+ 
+/* ApmlReadDramThrottleReq_T */ 
+typedef struct 
+{ 
+        INT8U                   Proc; 
+} PACKED ApmlReadDramThrottleReq_T; 
+ 
+ 
+/* ApmlReadDramThrottleRes_T */ 
+typedef struct 
+{ 
+        INT8U                   CompletionCode; 
+        INT8U                   BwCapCmdThrottleMode; 
+        INT8U                   BwCapEn; 
+} PACKED ApmlReadDramThrottleRes_T; 
+ 
+ 
+/* ApmlWriteDramThrottleReq_T */ 
+typedef struct 
+{ 
+        INT8U                   Proc; 
+        INT8U                   BwCapCmdThrottleMode; 
+        INT8U                   BwCapEn; 
+} PACKED ApmlWriteDramThrottleReq_T; 
+ 
+/* ApmlWriteDramThrottleRes_T */ 
+typedef struct 
+{ 
+        INT8U                   CompletionCode; 
+} PACKED ApmlWriteDramThrottleRes_T; 
+
+extern int ApmlInit(int BMCInst);
+extern int ApmlClose(int BMCInst);
+
+extern int ApmlGetInterfaceVersion (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int ApmlReadRMIReg (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int ApmlWriteRMIReg (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int ApmlReadCPUId (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int ApmlReadHTCReg (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int ApmlWriteHTCReg (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int ApmlReadPState (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int ApmlReadMaxPState (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int ApmlReadPStateLimit (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int ApmlWritePStateLimit (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int ApmlReadMCR (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int ApmlWriteMCR (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int ApmlReadTSIReg (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int ApmlWriteTSIReg (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+
+extern int ApmlReadTDPLimitReg (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst); 
+extern int ApmlWriteTDPLimitReg (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst); 
+extern int ApmlReadProcessorPowerReg (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst); 
+extern int ApmlReadPowerAveragingReg (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst); 
+extern int ApmlReadDramThrottleReg (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int ApmlWriteDramThrottleReg (_NEAR_ INT8U* pReq,INT8U ReqLen,_NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+#endif //_APML_H_

+ 44 - 0
app/bmc_server/ipmi_dev/App.h

@@ -0,0 +1,44 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************/
+/*****************************************************************
+ *
+ * App.h
+ * Application Command Handler
+ *
+ * Author: Govind Kothandapani <govindk@ami.com>
+ *       : Rama Bisa <ramab@ami.com>
+ *       : Basavaraj Astekar <basavaraja@ami.com>
+ *       : Bakka Ravinder Reddy <bakkar@ami.com>
+ *
+ *****************************************************************/
+#ifndef APP_H
+#define APP_H
+
+//#include "Types.h"
+#include "bmc_type.h"
+//#include "IPMI_App.h"
+
+/*** Extern Definitions ***/
+extern const CmdHndlrMap_T  g_App_CmdHndlr []; /**< IPM Device and
+                        Application Device command handler table. */
+
+/**
+ * @defgroup apcf Application Device Module
+ * IPMI Application device Command Handlers. Invoked by the message handler
+ * @{
+ **/
+/** @} */
+
+#endif  /* APP_H */
+

+ 52 - 0
app/bmc_server/ipmi_dev/AppDevice+.h

@@ -0,0 +1,52 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************/
+/*****************************************************************
+ *
+ * AppDevice.h
+ * AppDevice Commands Handler
+ *
+ * Author: Govind Kothandapani <govindk@ami.com>
+ *       : Rama Bisa <ramab@ami.com>
+ *       : Basavaraj Astekar <basavaraja@ami.com>
+ *       : Bakka Ravinder Reddy <bakkar@ami.com>
+ *
+ *****************************************************************/
+#ifndef APPDEVICE_PLUS_H
+#define APPDEVICE_PLUS_H
+
+#include "Types.h"
+
+/*** Function Prototypes ***/
+/**
+ * @defgroup apcf4 IPMI2.0 Payload Commands
+ * @ingroup apcf
+ * IPMI2.0 RMCP+ Payload Command Handlers. Invoked by the message handler
+ * @{
+ **/
+extern int  ActivatePayload     (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int  DeactivatePayload   (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int  GetPayldActStatus   (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int  GetPayldInstInfo    (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int  SetUsrPayloadAccess (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int  GetUsrPayloadAccess (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int  GetChPayloadSupport (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int  GetChPayloadVersion (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int  GetChOemPayloadInfo (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int  GetChCipherSuites   (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int  SusResPayldEncrypt  (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int  SetChSecurityKeys   (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int  GetSysIfcCaps       (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+/** @} */
+
+#endif  /* APPDEVICE_H */

+ 97 - 0
app/bmc_server/ipmi_dev/AppDevice.h

@@ -0,0 +1,97 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ *
+ * AppDevice.h
+ * AppDevice Commands Handler
+ *
+ * Author: Govind Kothandapani <govindk@ami.com>
+ *       : Rama Bisa <ramab@ami.com>
+ *       : Basavaraj Astekar <basavaraja@ami.com>
+ *       : Bakka Ravinder Reddy <bakkar@ami.com>
+ *
+ *****************************************************************/
+#ifndef APPDEVICE_H
+#define APPDEVICE_H
+
+#include "Types.h"
+//#include "OSPort.h"
+
+#define EVT_MSG_BUF_SIZE    1  /**<Event Message maximum Buffer size */
+#define USER_ID             (((INT32U)'U'<< 24) | ((INT32U)'S'<< 16) | ('E'<<8) | 'R')
+#define IPMI_ROOT_USER      ( 2 )
+#define TWENTY_BYTE_PWD  0x80
+#define CURRENT_CHANNEL_NUM		0x0E
+#define MASTER_RW_ERRCODE 0xFF
+#define IGNORE_ADD_OR_REMOVE 0
+#define IGNORE_ADD_OR_REMOVE_SHELL -1
+#define IPMI_15_PASSWORD_LEN (16 + 2)
+#define IPMI_20_PASSWORD_LEN (20 + 2)
+#define SYS_SEND_MSG_LUN 0x02
+
+/*** Extern Declaration ***/
+
+
+/*** Function Prototypes ***/
+/**
+ * @defgroup apcf2 BMC Watchdog Timer Commands
+ * @ingroup apcf
+ * IPMI BMC Watchdog Timer Command Handlers. Invoked by the message handler
+ * @{
+ **/
+extern int      ResetWDT            (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      SetWDT              (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      GetWDT              (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+/** @} */
+
+/**
+ * @defgroup apcf3 BMC Device and Messaging Commands
+ * @ingroup apcf
+ * IPMI BMC Device and Messaging Command Handlers. Invoked by the message handler
+ * @{
+ **/
+extern int      SetBMCGlobalEnables (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      GetBMCGlobalEnables (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      ClrMsgFlags         (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      GetMsgFlags         (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      EnblMsgChannelRcv   (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      GetMessage          (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      SendMessage         (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      ReadEvtMsgBuffer    (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      GetBTIfcCap         (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      GetSystemGUID       (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      GetChAuthCap        (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      GetSessionChallenge (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      ActivateSession     (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      SetSessionPrivLevel (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      CloseSession        (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      GetSessionInfo      (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      GetAuthCode         (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      SetChAccess         (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      GetChAccess         (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      GetChInfo           (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      SetUserAccess       (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      GetUserAccess       (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      SetUserName         (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      GetUserName         (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      SetUserPassword     (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int      MasterWriteRead     (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int		SetSystemInfoParam  (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int 		GetSystemInfoParam  (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern INT8U  IsChannelSuppGroups(INT8U ChannelNum, int BMCInst);
+extern int ModifyUsrGrp(char * UserName,INT8U ChannelNum,INT8U OldAccessLimit, INT8U NewAccessLimit );
+
+/** @} */
+
+#endif  /* APPDEVICE_H */
+

+ 27 - 0
app/bmc_server/ipmi_dev/BMCInfo.h

@@ -0,0 +1,27 @@
+/*****************************************************************
+ ******************************************************************
+ ****                                                            **
+ ****    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ****                                                            **
+ ****            All Rights Reserved.                            **
+ ****                                                            **
+ ****        6145-F, Northbelt Parkway, Norcross,                **
+ ****                                                            **
+ ****        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ****                                                            **
+ ******************************************************************
+ ******************************************************************
+ *******************************************************************
+ **
+ ** BMCInfo.h
+ ** Multiple BMC functions.
+ **
+ **  Author: Suresh V <sureshv@amiindia.co.in>
+ *******************************************************************/
+
+
+extern int CheckIPMIConfigurations(int BMCInst);
+extern void GetIPMIConfFile (int BMCInst, char* ConfFile);
+extern int GetBMCConfInfo();
+extern int GetIPMIConfInfo(int BMCInst);
+extern void FreeAllocPortMem(int BMCInst);

+ 63 - 0
app/bmc_server/ipmi_dev/BMCInit.h

@@ -0,0 +1,63 @@
+/******************************************************************
+ ******************************************************************
+ ***                                                             **
+ ***    (C)Copyright 2012, American Megatrends Inc.              **
+ ***                                                             **
+ ***    All Rights Reserved.                                     **
+ ***                                                             **
+ ***    5555 , Oakbrook Pkwy, Norcross,                          **
+ ***                                                             **
+ ***    Georgia - 30093, USA. Phone-(770)-246-8600.              **
+ ***                                                             **
+ ******************************************************************
+ ******************************************************************
+ ******************************************************************
+ *
+ * BMCInit.h
+ * BMC Initialization routines
+ *
+ ******************************************************************/
+
+#ifndef _BMCINIT_H_
+#define _BMCINIT_H_
+
+#include "Types.h"
+#include "Debug.h"
+//#include "OSPort.h"
+#include "PendTask.h"
+#include "PEF.h"
+#include "SensorAPI.h"
+#include "featuredef.h"
+#include "BMCInfo.h"
+#include "IPMIConf.h"
+#include "AMIDevice.h"
+#include "ChassisCtrl.h"
+#include "NVRAccess.h"
+#include "Platform.h"
+#include "GUID.h"
+#include "SDR.h"
+#include "SEL.h"
+#include "FRU.h"
+#include "Sensor.h"
+
+#define PWR_ALWAYS_OFF             0x00
+#define PWR_RESTORED               0x01
+#define PWR_ALWAYS_ON              0x02
+#define PWR_NO_CHANGE              0x03
+#define PREV_POWER_STATE        0x01
+
+/**
+*@fn PreInitMsgHndlr
+*@brief Initializtions to be done before invoking MsgHndlr task
+*@param BMCInst - BMC Instance
+*/
+extern int PreInitMsgHndlr(int BMCInst);
+
+/**
+*@fn PostInitMsgHndlr
+*@brief Initializtions to be done after invoking MsgHndlr task
+*@param BMCInst - BMC Instance
+*/
+extern int PostInitMsgHndlr(int BMCInst);
+
+#endif

+ 45 - 0
app/bmc_server/ipmi_dev/Badpasswd.h

@@ -0,0 +1,45 @@
+/******************************************************************
+ ******************************************************************
+ ***                                                                                                           **
+ ***    (C)Copyright 2006-2009, American Megatrends Inc.                            **
+ ***                                                                                                           **
+ ***    All Rights Reserved.                                                                          **
+ ***                                                                                                           **
+ ***    5555 , Oakbrook Pkwy, Norcross,                                                       **
+ ***                                                                                                           **
+ ***    Georgia - 30093, USA. Phone-(770)-246-8600.                                  **
+ ***                                                                                                           **
+ ******************************************************************
+ ******************************************************************
+ ******************************************************************
+ *
+ * Badpasswd.h
+ * Bad password related prototypes
+ *
+ *  Author: Winston <winstonv@amiindia.co.in>
+ ******************************************************************/
+#ifndef _BAD_PASSWORD_
+#define _BAD_PASSWORD_
+
+#include "Types.h"
+#include "Platform.h"
+#include "Session.h"
+
+void     MonitorPassword(int BMCInst);
+
+extern INT32U TimeUpdate();
+
+extern int GenerateLockEvent(INT8U Channel,INT8U UserID, int BMCInst);
+
+extern int LockUser(INT8U Userid,INT8U Channel, int BMCInst); 
+
+extern int UnlockUser(INT8U Userid,INT8U Channel, int BMCInst);
+
+extern int FindUserLockStatus(INT8U Userid,INT8U Channel, int BMCInst);
+
+extern int ClearUserLockAttempts(INT8U SerialorLAN, int BMCInst);
+
+
+#endif
+
+

+ 44 - 0
app/bmc_server/ipmi_dev/Bridge.h

@@ -0,0 +1,44 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ *
+ * Bridge.h
+ * Bridge Command Handler
+ *
+ * Author: Gowtham.M.S <gowthamms@amiindia.co.in>
+ *
+ *****************************************************************/
+#ifndef BRIDGE_H
+#define BRIDGE_H
+
+//#include "Types.h"
+#include "bmc_type.h"
+//#include "IPMI_Bridge.h"
+
+/**
+ * @var g_Bridge_CmdHndlr
+ * @brief Bridge Command Hanlder Map.
+**/
+extern const CmdHndlrMap_T  g_Bridge_CmdHndlr [];
+
+
+/**
+ * @defgroup bridge Bridge Module
+ * IPMI Intelligent Chassis Management Bus interface commands.
+ * This module implements chassis discovery, bridge management
+ * and event generation commands.
+ * @{
+**/
+/** @} */
+
+#endif  /* BRIDGE_H*/

+ 57 - 0
app/bmc_server/ipmi_dev/BridgeDiscovery.h

@@ -0,0 +1,57 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ **                                                            **
+ ****************************************************************
+ ****************************************************************/
+/****************************************************************
+ * $Header:
+ *
+ * $Revision:
+ *
+ * $Date:
+ *
+ *****************************************************************/
+/*****************************************************************
+ *
+ * BridgDiscovery.h
+ * Bridge Discovery functions
+ *
+ * Author: Balasaravanan.P <balasaravananp@amiindia.co.in>
+ *
+ *****************************************************************/
+#ifndef BRIDGE_DISCOVERY_H
+#define BRIDGE_DISCOVERY_H
+
+#include "Types.h"
+
+/**
+ * @var g_IsDiscovered
+ * @brief Bridge device discovery status.
+**/
+extern _FAR_ BOOL g_IsDiscovered;
+
+/**
+ * @defgroup bdf Bridge Discovery Command handlers
+ * @ingroup bridge
+ * IPMI Intelligent Chassis Management Bus Bridge Discovery command interface.
+ * Implemented as per ICMB ver 1.0, Revision 1.3
+ * @{
+**/
+extern int PrepareForDiscovery  (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int GetAddresses         (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int SetDiscovered        (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int GetChassisDeviceID   (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int SetChassisDeviceID   (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+/** @} */
+
+#endif /*BRIDGE_DISCOVERY_H */

+ 57 - 0
app/bmc_server/ipmi_dev/BridgeEvt.h

@@ -0,0 +1,57 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ *
+ * BridgeEvt.h
+ * Bridge Event Commands
+ *
+ * Author: Gowtham.M.S <gowthamms@amiindia.co.in>
+ *
+ *****************************************************************/
+#ifndef BRIDGE_EVT_H
+#define BRIDGE_EVT_H
+
+#include "Types.h"
+
+#pragma pack( 1 )
+/**
+ * @struct BridgeEvt_T
+ * @brief Bridge event message.
+**/
+typedef struct {
+    INT8U   EvtCount;
+    INT16U  EvtDestAddr;
+    INT8U   EvtState;
+    INT8U   EvtSlaveAddr;
+    INT8U   EvtLUN;
+
+} PACKED  BridgeEvt_T;
+
+#pragma pack( )
+
+/**
+ * @defgroup bef Bridge Event Command handlers
+ * @ingroup bridge
+ * IPMI Intelligent Chassis Management Bus Bridge Event command interface.
+ * Implemented as per ICMB ver 1.0, Revision 1.3
+ * @{
+**/
+extern  int GetEventCount   (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern  int SetEventDest    (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern  int SetEventReceptionState (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern  int SendICMBEventMsg(_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern  int GetEventDest    (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern  int GetEventReceptionState (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+/** @} */
+
+#endif  /*BRIDGE_EVT_H*/

+ 66 - 0
app/bmc_server/ipmi_dev/BridgeMgmt.h

@@ -0,0 +1,66 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ * 
+ * BridgMgmt.h
+ * Bridge Management Commands
+ * 
+ * Author: Gowtham.M.S <gowthamms@amiindia.co.in>
+ * 
+ *****************************************************************/
+#ifndef BRIDGE_MGMT_H
+#define BRIDGE_MGMT_H
+
+#include "Types.h"
+#include "IPMI_BrMgmt.h"
+
+#pragma pack( 1 )
+/**
+ * @struct BridgeMgmtSHM_T
+ * @brief Bridge management information in Shared Memory.
+**/
+typedef struct {
+    INT8S           State;
+    INT16U          ICMBAddr;
+    INT16U          ICMBProxyAddr;
+    INT8U           IPMBProxyAddr;
+    INT8U           ProxyLUN;
+    ICMBStats0_T    ICMBStats0;
+    ICMBStats1_T    ICMBStats1;
+
+} PACKED  BridgeMgmtSHM_T;
+
+#pragma pack( )
+
+/**
+ * @defgroup bmf Bridge Management Command handlers
+ * @ingroup bridge
+ * IPMI Intelligent Chassis Management Bus Bridge Management command interface.
+ * Implemented as per ICMB ver 1.0, Revision 1.3
+ * @{
+**/
+extern  int GetBridgeState        (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern  int SetBridgeState        (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern  int GetICMBAddr           (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern  int SetICMBAddr           (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern  int SetBridgeProxyAddr    (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern  int GetBridgeProxyAddr    (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern  int GetBridgeStatistics   (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern  int ClearBridgeStatistics (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern  int GetICMBCaps           (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern  int GetICMBConnectorInfo  (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern  int GetICMBConnectionID   (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern  int SendICMBConnectionID  (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+/** @} */
+
+#endif  /*BRIDGE_MGMT_H*/

+ 35 - 0
app/bmc_server/ipmi_dev/BridgeMsgAPI.h

@@ -0,0 +1,35 @@
+/*******************************************************************
+********************************************************************
+****                                                              **
+****    (C)Copyright 2008-2009, American Megatrends Inc.          **
+****                                                              **
+****    All Rights Reserved.                                      **
+****                                                              **
+****    5555 , Oakbrook Pkwy, Norcross,                           **
+****                                                              **
+****    Georgia - 30093, USA. Phone-(770)-246-8600.               **
+****                                                              **
+********************************************************************
+********************************************************************
+********************************************************************
+**
+** BridgeMsgAPI.h
+** Bridge Messaging API
+**
+** Author: Manimehalai S (manimehalais@amiindia.co.in)
+*******************************************************************/
+#ifndef BRIDGEMSGAPI_H
+#define BRIDGEMSGAPI_H
+#include "Types.h"
+
+
+#define ERR_NULLPKT      -1
+#define ERR_INVALIDCH    -2
+#define ERR_PBTBL_FULL   -3
+#define ERR_POSTMSG_FAIL -4
+
+extern int
+API_BridgeInternal(MsgPkt_T* pMsgPkt, ResMsgHdr_T*  pResMsgHdr, INT8U DestAddr, 
+                      INT8U OriginSrc, int Channel, BOOL ResponseTracking, int BMCInst);
+#endif
+

+ 49 - 0
app/bmc_server/ipmi_dev/Bridging.h

@@ -0,0 +1,49 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************/
+/*****************************************************************
+ * 
+ * Bridging.h
+ * Bridging Commands
+ * 
+ * Author: Gowtham.M.S <gowthamms@amiindia.co.in>
+ * 
+ *****************************************************************/
+#ifndef BRIDGING_H
+#define BRIDGING_H
+
+#include "Types.h"
+
+/**
+ * @var g_IsDiscovered
+ * @brief Bridging status.
+**/
+extern _FAR_ BOOL g_IsBridging;
+
+
+/*** External Definitions ***/
+#define ICMB_BR_REQ_TIMEOUT     10
+
+
+/**
+ * @defgroup bbf Bridging Command handlers
+ * @ingroup bridge
+ * IPMI Intelligent Chassis Management Bus Bridging command interface.
+ * Implemented as per ICMB ver 1.0, Revision 1.3
+ * @{
+**/
+extern  int BridgeReq (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern  int BridgeMsg (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+/** @} */
+
+#endif  /*BRIDGING*/

+ 41 - 0
app/bmc_server/ipmi_dev/Chassis.h

@@ -0,0 +1,41 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ *****************************************************************
+ ******************************************************************
+ *
+ * chassis.h
+ * Chassis.c extern declarations
+ *
+ *  Author: Rama Bisa <ramab@ami.com>
+ *
+ ******************************************************************/
+
+#ifndef CHASSIS_H
+#define CHASSIS_H
+
+//#include "Types.h"
+#include "bmc_type.h"
+//#include "IPMI_Chassis.h"
+
+
+/*** Extern Definitions ***/
+extern const CmdHndlrMap_T g_Chassis_CmdHndlr []; /**< Chassis command handler table. */
+
+/**
+ * @defgroup ccf Chassis Device Module
+ * IPMI Chassis Command Handlers. Invoked by the message handler
+ * @{
+ **/
+/** @} */
+
+#endif /* CHASSIS_H	*/

+ 89 - 0
app/bmc_server/ipmi_dev/ChassisAPI.h

@@ -0,0 +1,89 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ *****************************************************************
+ ******************************************************************
+ *
+ * ChassisAPI.h
+ * Chassis Access API.
+ *
+ *  Author: Govind Kothandapani <govindk@ami.com>
+ *
+ ******************************************************************/
+#ifndef CHASSISAPI_H
+#define CHASSISAPI_H
+#include "Types.h"
+
+/*-----------------------------------------------------------------
+ * @fn API_ChassisPowerOff
+ * @brief Powers off the chassis
+ * @return 	0 	if success
+ *			-1 	on error
+ *-----------------------------------------------------------------*/
+extern int API_ChassisPowerOff (int BMCInst);
+
+/*-----------------------------------------------------------------
+ * @fn API_ChassisPowerOn
+ * @brief Powers on the chassis
+ * @return 	0 	if success
+ *			-1 	on error
+ *-----------------------------------------------------------------*/
+extern int API_ChassisPowerOn (int BMCInst);
+
+/*-----------------------------------------------------------------
+ * @fn API_ChassisPowerCycle
+ * @brief Powers cycles the chassis
+ * @return 	0 	if success
+ *			-1 	on error
+ *-----------------------------------------------------------------*/
+extern int API_ChassisPowerCycle (int BMCInst);
+
+/*-----------------------------------------------------------------
+ * @fn API_ChassisPowerReset
+ * @brief Powers resets the chassis
+ * @return 	0 	if success
+ *			-1 	on error
+ *-----------------------------------------------------------------*/
+extern int API_ChassisPowerReset (int BMCInst);
+
+/*-----------------------------------------------------------------
+ * @fn API_ChassisDiagInterrupt
+ * @brief Generate diagnostic interrupt
+ * @return 	0 	if success
+ *			-1 	on error
+ *-----------------------------------------------------------------*/
+extern int API_ChassisDiagInterrupt (int BMCInst);
+
+/*-----------------------------------------------------------------
+ * @fn API_ChassisSMIInterrupt
+ * @brief Generate SMI Interrupt
+ * @return 	0 	if success
+ *			-1 	on error
+ *-----------------------------------------------------------------*/
+extern int API_ChassisSMIInterrupt (int BMCInst);
+
+/*-----------------------------------------------------------------
+ * @fn API_ChassisPwrOnOffCount
+ * @brief Provides the chassis Power On off count
+ * @return 	number of occurences of power on & off. 	
+ *-----------------------------------------------------------------*/
+extern int API_ChassisPwrOnOffCount (void);
+
+/*-----------------------------------------------------------------
+ * @fn API_OnSetRestartCause
+ * @brief Provides the hook to the API on the restart reason change.
+ * @return 	0 if success. 	
+ *-----------------------------------------------------------------*/
+extern int API_OnSetRestartCause(INT8U u8SysRestartCause, INT8U u8MadeChange,int BMCInst);
+
+#endif	/* CHASSISAPI_H */
+

+ 53 - 0
app/bmc_server/ipmi_dev/ChassisCtrl.h

@@ -0,0 +1,53 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ *****************************************************************
+ ******************************************************************
+ * 
+ * ChassisCtrl.h
+ * Chassis control functions.
+ *
+ *  Author: AMI MegaRAC PM Team
+ ******************************************************************/
+#ifndef _CHASSIS_CTRL_H_
+#define _CHASSIS_CTRL_H_
+#include "Types.h"
+
+
+
+/**
+ * @def Parameters to controle the Chassis actions
+ *
+**/
+#define CHASSIS_POWER_OFF               0x00
+#define CHASSIS_POWER_ON                0x01
+#define CHASSIS_POWER_CYCLE             0x02
+#define CHASSIS_POWER_RESET             0x03
+#define CHASSIS_DIAGNOSTIC_INTERRUPT    0x04
+#define CHASSIS_SOFT_OFF                0x05
+#define CHASSIS_SMI_INTERRUPT           0x06
+
+
+#define CHASSIS_CTRL_ACTION             0x01
+#define ON_SYSTEM_EVENT_DETECTED        0x02
+#define ON_POWER_EVENT_DETECTED         0x03
+#define ON_SET_RESTART_CAUSE            0x04
+
+
+/**
+ * @brief Initialize Chassis Control module.
+ * @return 0 if success, -1 if error.
+**/
+extern int InitChassisCtrl( void );
+extern void OnSetRestartCause (INT8U u8SysRestartCause, INT8U u8MadeChange,int BMCInst);
+
+#endif	/*_CHASSIS_CTRL_H_*/

+ 138 - 0
app/bmc_server/ipmi_dev/ChassisDevice.h

@@ -0,0 +1,138 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ ******************************************************************
+ * 
+ * ChassisDevice.h
+ * ChassisDevice.c extern declarations
+ *
+ *  Author: Rama Bisa <ramab@ami.com>
+ *          
+ ******************************************************************/
+
+#ifndef CHASSIS_DEVICE_H
+#define CHASSIS_DEVICE_H
+
+#include "Types.h"
+
+/*** Definitions and Macros ***/
+#define  CHASSIS_POWER_DOWN                        0x00
+#define  CHASSIS_POWER_UP                          0x01
+#define  CHASSIS_POWER_CYCLE                       0x02
+#define  CHASSIS_HARD_RESET                        0x03
+#define  CHASSIS_PULSE_DIAGNOSTIC_INTERRUPT        0x04
+#define  CHASSIS_SOFT_SHUTDOWN                     0x05
+
+#define  CHASSIS_PARAMETER_VERSION                 0x01
+
+#define  POH_MINS_PER_COUNT                        60
+
+/******************************************************************************
+*
+*  Chassis Command Bit Definitions
+*
+******************************************************************************/
+
+// The chassis status 1st byte definitions:
+//    [4] - power control fault
+//    [3] - power fault in main power subsystem (NOT SUPPORT)
+//    [2] - Interlock (NOT SUPPORT)
+//    [1] - power overload (NOT SUPPORT)
+//    [0] - system power is on
+#define CHASSIS_STATUS_POWER_CTRL_FAULT        (1 << 4)
+#define CHASSIS_STATUS_POWER_FAULT             (1 << 3)
+#define CHASSIS_STATUS_POWER_INTERLOCK         (1 << 2)
+#define CHASSIS_STATUS_POWER_OVERLOAD          (1 << 1)
+#define CHASSIS_STATUS_POWER_ON                (1 << 0)
+
+// The chassis status 2nd byte definitions:
+//    [4] - last "power is on" state was entered via IPMI command
+//    [3] - last power down caused by power fault (NOT SUPPORT)
+//    [2] - last power down caused by a power interlock being activated (NOT SUPPORT)
+//    [1] - last power down caused by a power overload (NOT SUPPORT)
+//    [0] - AC lost
+#define CHASSIS_STATUS_EVENT_POWER_IPMI        (1 << 4)
+#define CHASSIS_STATUS_EVENT_POWER_FAULT       (1 << 3)
+#define CHASSIS_STATUS_EVENT_POWER_INTERLOCK   (1 << 2)
+#define CHASSIS_STATUS_EVENT_POWER_OVERLOAD    (1 << 1)
+#define CHASSIS_STATUS_EVENT_AC_LOST           (1 << 0)
+
+// The chassis status 3rd byte definitions:
+//    [3] - Cooling / fan fault detected
+//    [2] - Drive fault (NOT SUPPORT)
+//    [1] - Front panel lockout active
+//    [0] - Chassis intrusion active
+#define CHASSIS_STATUS_MISC_FAN_FAULT          (1 << 3)
+#define CHASSIS_STATUS_MISC_DRIVE_FAULT        (1 << 2)
+#define CHASSIS_STATUS_MISC_FP_LOCKOUT         (1 << 1)
+#define CHASSIS_STATUS_MISC_INTRUSION          (1 << 0)
+
+// front panel enables
+#define FP_DISENABLES_STANDBY_BUTTON           (1 << 3)
+#define FP_DISENABLES_NMI_BUTTON         	   (1 << 2)
+#define FP_DISENABLES_RESET_BUTTON         	   (1 << 1)
+#define FP_DISENABLES_POWER_BUTTON         	   (1 << 0)
+// system restart cause code defined by IPMI spec
+#define RESTART_CAUSE_UNKNOWN             	   0x0
+#define RESTART_CAUSE_CHASSIS_CTRL             0x1
+#define RESTART_CAUSE_RESET_BUTTON             0x2
+#define RESTART_CAUSE_POWER_BUTTON             0x3
+#define RESTART_CAUSE_WDT_EXPIRATION		   0x4
+#define RESTART_CAUSE_OEM                      0x5
+#define RESTART_CAUSE_AUTO_ALWAYS_ON           0x6
+#define RESTART_CAUSE_AUTO_PREV_STATE          0x7
+#define RESTART_CAUSE_PEF_RESET                0x8
+#define RESTART_CAUSE_PEF_POWER_CYCLE          0x9
+#define RESTART_CAUSE_SOFT_RESET               0xA
+#define RESTART_CAUSE_POWER_DOWN               0xFF         // 0x0C - 0xFF reserved, 0xFF used internally only
+// BMC Boot flag valid bit clearing
+#define BMC_BOOT_FLAG_POWER_BUTTON             (1 << 0)
+#define BMC_BOOT_FLAG_RESET_BUTTON             (1 << 1)
+#define BMC_BOOT_FLAG_WDT_EXPIRATION           (1 << 2)
+#define BMC_BOOT_FLAG_CHASSIS_CTRL             (1 << 3)
+#define BMC_BOOT_FLAG_PEF                      (1 << 4)
+
+// BMC Boot Option "Set In Progress" parameter
+#define BMC_BOOT_OPTION_SET_COMPLETE           0x00
+#define BMC_BOOT_OPTION_SET_IN_PROGRESS        0x01
+#define BMC_BOOT_OPTION_COMMIT_WRITE           0x02
+
+/*** Function Prototypes ***/
+
+/**
+ * @defgroup ccf1 Chassis Device Commands
+ * @ingroup ccf
+ * IPMI Chassis Device Command Handlers. Invoked by the message handler
+ * @{
+ **/
+extern int GetChassisCaps       (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int GetChassisStatus     (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int ChassisControl       (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int SetChassisCaps       (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int SetPowerRestorePolicy(_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int GetChassisIdentify   (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int GetSysRestartCause   (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int GetPOHCounter        (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int SetSysBOOTOptions    (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int GetSysBOOTOptions    (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int SetFPButtonEnables (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int SetPowerCycleInterval (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern void SetACPIState(INT8U State, int BMCInst);
+
+
+/** @} */
+
+/**
+ * @brief   Power On Hours timer tick, invoked every POH_MINS_PER_COUNT minutes by timer task
+ **/
+
+#endif /* CHASSIS_DEVICE_H  */

+ 44 - 0
app/bmc_server/ipmi_dev/Ciphertable.h

@@ -0,0 +1,44 @@
+/*************************************************************** 
+**                                                            **
+**    (C)Copyright 2006-2009,American Megatrends Inc.         **
+**                                                            **
+**            All Rights Reserved.                            **
+**                                                            **
+**        5555 Oakbrook Pkwy Suite 200, Norcross,             **
+**                                                            **
+**        Georgia - 30093, USA. Phone-(770)-246-8600.         **
+**                                                            **
+***************************************************************/
+/***************************************************************/
+/* This file contain the cipher suite table   	               */
+/*						               */
+/*   						               */
+/***************************************************************/
+
+
+#ifndef __CIPHERTABLE_H__
+#define __CIPHERTABLE_H__
+#define MAX_CIPHER_SUITES_BYTES     60
+
+#define N0_OF_CIPHER_SUITE_SUPPORTED  9
+
+/*** Global Variables ***/
+
+//const unsigned char  g_CipherRec [MAX_CIPHER_SUITES_BYTES] =
+//{
+    /* Standard records */
+/*- Start -- ID --- Auth --- Intgr - Conf-*/
+    //0xC0,   0x00,   0x00,   0x40,   0x80,
+    //0xC0,   0x01,   0x01,   0x40,   0x80,
+    //0xC0,   0x02,   0x01,   0x41,   0x80,
+    //0xC0,   0x03,   0x01,   0x41,   0x81,
+    //0xC0,   0x06,   0x02,   0x40,   0x80,
+    //0xC0,   0x07,   0x02,   0x42,   0x80,
+    //0xC0,   0x08,   0x02,   0x42,   0x81,
+    //0xC0,   0x0B,   0x02,   0x43,   0x80,
+    //0xC0,   0x0C,   0x02,   0x43,   0x81,
+/*- Start --OEM-ID -- OEM-IANA - Auth --- Intgr - Conf-*/
+//};
+
+#endif
+

+ 106 - 0
app/bmc_server/ipmi_dev/DCMDevice.h

@@ -0,0 +1,106 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        Suite 200, 5555 oakbrook pkwy, Norcross            **
+ **                                                            **
+ **        Georgia - 30093, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ *****************************************************************
+ *
+ * DCMDevice.h
+ * DCMDevice Commands Handler
+ *
+ * Author: Rama Bisa <ramab@ami.com>
+ * 
+ *****************************************************************/
+#ifndef DCMDEVICE_H
+#define DCMDEVICE_H
+#include "Types.h"
+
+#define FRU_SUB_AREA_NO_DATA  0xC1
+
+#define DCMI_MAJOR_REVISION					1
+#define DCMI_MINOR_REVISION_v1_5			5
+#define DCMI_MINOR_REVISION_v1_0			0
+
+#define POWER_LIMIT_OUT_OF_RANGE    -1
+#define CORRECTION_TIME_OUT_OF_RANGE    -2
+#define THERMAL_LIMIT_OUT_OF_RANGE      -1
+#define THERMAL_EXCEPTION_TIME_OUT_OF_RANGE     -2
+
+
+/******************************************************/
+/* INTERNAL MACRO DEFINITIONS FOR DCMI COMMANDS        */
+/******************************************************/
+#define	SUPPORTED_DCMI_CAPABILITIES			1
+#define MANDATORY_PLATFORM_ATTRIBUTES		2
+#define OPTIONAL_PLATFORM_ATTRIBUTES		3
+#define MANAGEABILITY_ACCESS_ATTRIBUTES		4
+#define ENHANCED_SYSTEM_POWER_ATTRIBUTES	5  /* For DCMI version 1.1 */
+
+#define IDENTIFICATION_SUPPORT				(1 << 0)
+#define SEL_LOG_SUPPORT						(1 << 1)
+#define CHASSIS_POWER_SUPPORT				(1 << 2)
+#define TEMP_MONITOR_SUPPORT				(1 << 3)
+#define PWR_MANAGEMENT_SUPPORT				(1 << 0)
+#define KCS_SUPPORT							(1 << 0)
+#define TMODE_SUPPORT						(1 << 1)
+#define SECONDARY_LAN_SUPPORT				(1 << 2)
+#define PRIMARY_LAN_SUPPORT					(1 << 3)
+#define SOL_SUPPORT							(1 << 4)
+#define VLAN_SUPPORT						(1 << 5)
+#define SEL_AUTO_ROLLOVER_SUPPORT_CHECK			 15
+#define SEL_ROLLOVER_FLUSH_ENTIRE                   (1<<14)
+#define SEL_ROLLOVER_FLUSH_RECORD_LEVEL               (1<<13)
+#define ASSET_TAG_SUPPORT					(1 << 2)
+#define DHCP_HOST_NAME_SUPPORT				(1 << 1)
+#define GUID_SUPPORT						(1 << 0)
+#define BASEBOARD_TEMP_MON_SUPPORT			(1 << 2)
+#define PROCESSORS_TEMP_MON_SUPPORT			(1 << 1)
+#define INLET_TEMP_MON_SUPPORT				(1 << 0)
+#define SAMPLING_FREQUENCY_TEMP_MON			(1 << 0)
+#define DCMI_PARAMETER_REVISION				2
+#define PRIMARY_LAN_CHANNEL_NUMBER			LAN_RMCP_CHANNEL
+#define SECONDARY_LAN_CHANNEL_NUMBER		0xFF /* 0xFF for not supported */
+#define TMODE_OOB_CHANNEL_NUMBER			0xFF /* 0xFF for not supported */
+#define MAX_ASSET_TAG_LEN					63
+#define MAX_OFFSET_VALUE					62
+#define MAX_IDENTIFIERSTRING_LENGTH			64
+#define MAX_IDENTIFIERSTRING_OFFSET			63
+#define FRU_PRODUCT_INFO_AREA_OFFSET		4
+#define DCMI_TEMP_SENSOR_TYPE				1
+#define ACTIVATE_POWER_LIMIT_CODE			0x01
+#define DEACTIVATE_POWER_LIMIT_CODE			0x00
+#define MAX_EXCEPTION_ACTION_CODE			0x11
+#define MODE_POWER_STATS					0x01
+#define MODE_ENHANCED_POWER_STATS			0x02
+#define DEFAULT_TIMEOUT 					100
+#define	SUPPORTED_DCMI_CAPABILITIES			1
+#define MANDATORY_PLATFORM_ATTRIBUTES		2
+#define OPTIONAL_PLATFORM_ATTRIBUTES		3
+#define GET_POWER_LIMIT_RESERVED_BYTE        0xFF
+#define SET_THERMAL_LIMIT_RESERVED           0x8F
+
+
+extern int GetDCMICapabilityInfo (INT8U* pReq, INT8U ReqLen, INT8U* pRes,_NEAR_ int BMCInst);
+extern int GetPowerReading (INT8U* pReq, INT8U ReqLen, INT8U* pRes,_NEAR_ int BMCInst);
+extern int GetPowerLimit (INT8U* pReq, INT8U ReqLen, INT8U* pRes,_NEAR_ int BMCInst);
+extern int SetPowerLimit (INT8U* pReq, INT8U ReqLen, INT8U* pRes,_NEAR_ int BMCInst);
+extern int ActivatePowerLimit (INT8U* pReq, INT8U ReqLen, INT8U* pRes,_NEAR_ int BMCInst);
+extern int GetDCMISensorInfo (INT8U* pReq, INT8U ReqLen, INT8U* pRes,_NEAR_ int BMCInst);
+extern int GetAssetTag (INT8U* pReq, INT8U ReqLen, INT8U* pRes,_NEAR_ int BMCInst);
+extern void DCMIPowerSamplingTask (int BMCInst);
+extern int SetAssetTag (INT8U* pReq, INT8U ReqLen, INT8U* pRes,_NEAR_ int BMCInst);
+extern int GetManagementControllerIdString (INT8U* pReq, INT8U ReqLen, INT8U* pRes,_NEAR_ int BMCInst);
+extern int SetManagementControllerIdString (INT8U* pReq, INT8U ReqLen, INT8U* pRes,_NEAR_ int BMCInst);
+extern void DCMIThermalSamplingTask(int BMCInst);
+extern int SetThermalLimit(INT8U* pReq, INT8U ReqLen, INT8U* pRes,_NEAR_ int BMCInst);
+extern int GetThermalLimit(INT8U* pReq, INT8U ReqLen, INT8U* pRes,_NEAR_ int BMCInst);
+extern int GetTemperatureReading(INT8U* pReq, INT8U ReqLen, INT8U* pRes,_NEAR_ int BMCInst);
+
+#endif  /* IPMDEVICE_H */

+ 94 - 0
app/bmc_server/ipmi_dev/DCMIConfig.h

@@ -0,0 +1,94 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2011, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ *****************************************************************
+ *
+ * DCMIConfig.h
+ * DCMI Configuration related commands.
+ *
+ * Author: Muthuchamy K <muthusamyk@amiindia.co.in>
+ *
+ *****************************************************************/
+#ifndef DCMICONFIG_H
+#define DCMICONFIG_H
+#include "Types.h"
+
+typedef union
+{
+    INT8U   DHCPActivate;
+    INT8U   DHCPDiscovery;
+    INT8U   DHCPTiming1;
+    INT16U   DHCPTiming2;
+    INT16U   DHCPTimimg3;
+}DCMIConfig_T;
+
+typedef struct
+{
+    INT8U   GroupExtnID;
+    INT8U   ParamSelector;
+    INT8U   SetSelector;
+}PACKED GetDCMIConfigParmasReq_T;
+
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   GroupExtnID;
+    INT8U   DCMI_Ver_Maj;
+    INT8U   DCMI_Ver_Min;
+    INT8U   Revision;
+}PACKED CCRevConfig_T;
+
+typedef struct
+{
+    CCRevConfig_T   CCRevision;
+    DCMIConfig_T    Config;
+}PACKED GetDCMIConfigParmasRes_T;
+
+typedef struct
+{
+    INT8U   GroupExtnID;
+    INT8U   ParamSelector;
+    INT8U   SetSelector;
+    DCMIConfig_T    Config;
+}PACKED SetDCMIConfigParmasReq_T;
+
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   GroupExtnID;
+}PACKED SetDCMIConfigParmasRes_T;
+
+#define DCMI_PARAM_DHCP_ACTIVATE    0x01
+#define DCMI_PARAM_DHCP_DISCOVERY   0x02
+#define DCMI_PARAM_DHCP_TIMING1         0x03
+#define DCMI_PARAM_DHCP_TIMING2         0x04
+#define DCMI_PARAM_DHCP_TIMING3         0x05
+
+#define DCMI_CONFIG_REVISION                0x01
+
+#define DHCP_ACTIVATE                             0x01
+#define DHCP_DISCOVERY_RESERVED         0x7C
+
+#define DCMIDHCPCONFIG_FILE         "/conf/dcmi.conf"
+#define DHCP_DISCOVERY          "discovery"
+#define DHCP_TIMING1                "timing1"
+#define DHCP_TIMING2                "timing2"
+#define DHCP_TIMING3                "timing3"
+
+#define NETWORK_RESTART     "/etc/init.d/networking restart"
+
+extern int GetDCMIConfigParameters(_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int SetDCMIConfigParameters(_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+
+
+#endif /* DCMICONFIG_H */
+

+ 206 - 0
app/bmc_server/ipmi_dev/Debug.h

@@ -0,0 +1,206 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ *****************************************************************
+ ******************************************************************
+ *
+ * debug.h
+ * Debug Mode Macros
+ *
+ *  Author: Govind Kothandapani <govindk@ami.com>
+ *
+ ******************************************************************/
+#ifndef DEBUG_H
+#define DEBUG_h
+
+#include "Types.h"
+//#include "dbgout.h"
+
+#define PLATFORM_BREAK  while (1)
+
+#ifdef STHU
+#define IPMI_INFO(STR, Args...)
+#define IPMI_WARNING(STR, Args...)
+#define IPMI_ERROR(STR, Args... )
+#else
+#define IPMI_INFO(STR, Args...)                         TINFO (STR, ##Args);
+#define IPMI_WARNING(STR, Args...)                      TWARN (STR, ##Args);
+#define IPMI_ERROR(STR, Args... )                       TCRIT (STR, ##Args);
+#endif
+
+#ifdef _DEBUG_
+
+extern void    print_buf (INT8U* Buf, INT16U Len);
+
+#if ENABLE_DEBUG_MACROS==0
+
+/*** Turn off all debug macros if they are disabled in the source ***/
+#define IPMI_CHECK_POINT(ARG)
+#define IPMI_DBG_BREAK
+#define IPMI_ASSERT(ARG)
+#define IPMI_ASSERT_CONTINUE(ARG)
+#define IPMI_DBG_PRINT_STRUCT_3(STRUCT, M1, M2, M3)
+#define IPMI_DBG_PRINT_STRUCT_4(STRUCT, M1, M2, M3, M4)
+#define IPMI_DBG_PRINT_STRUCT_5(STRUCT, M1, M2, M3, M4, M5)
+#define IPMI_DBG_PRINT_STRUCT_6(STRUCT, M1, M2, M3, M4, M5, M6)
+
+#define PRINT_BUF(BUF, LEN)
+
+#if ENABLE_DEBUG_LOG==0
+#define IPMI_DBG_PRINT(STR)
+#define IPMI_DBG_PRINT_1(FMT, ARG2)
+#define IPMI_DBG_PRINT_2(FMT, ARG1, ARG2)
+#define IPMI_DBG_PRINT_3(FMT, ARG1, ARG2, ARG3)
+#define IPMI_DBG_PRINT_4(FMT, ARG1, ARG2, ARG3, ARG4)
+#define IPMI_DBG_PRINT_BUF(BUF, LEN)
+
+#else		//ENABLE_DEBUG_LOG
+#define IPMI_DBG_PRINT(FMT)            	PLATFORM_DBGLOGFN(LOG_DEBUG,TDBG_FILE_LINE_FMT FMT,TDBG_FILENAME,TDBG_LINENO)
+#define IPMI_DBG_PRINT_1(fmt, args...) 	PLATFORM_DBGLOGFN(LOG_DEBUG,TDBG_FILE_LINE_FMT fmt,TDBG_FILENAME,TDBG_LINENO,##args)
+#define IPMI_DBG_PRINT_2(fmt, args...) 	PLATFORM_DBGLOGFN(LOG_DEBUG,TDBG_FILE_LINE_FMT fmt,TDBG_FILENAME,TDBG_LINENO,##args)
+#define IPMI_DBG_PRINT_3(fmt, args...) 	PLATFORM_DBGLOGFN(LOG_DEBUG,TDBG_FILE_LINE_FMT fmt,TDBG_FILENAME,TDBG_LINENO,##args)
+#define IPMI_DBG_PRINT_4(fmt, args...) 	PLATFORM_DBGLOGFN(LOG_DEBUG,TDBG_FILE_LINE_FMT fmt,TDBG_FILENAME,TDBG_LINENO,##args)
+#define IPMI_DBG_PRINT_BUF(BUF, LEN) 	PLATFORM_DBGLOGBUFFN(LOG_DEBUG, TDBG_FILENAME,TDBG_LINENO, BUF, LEN)
+#endif
+
+#else	/* ENABLE_DEBUG_MACROS */
+
+/**
+ * @def IPMI_DBG_BREAK
+ * @brief Stops the debugger.
+**/
+#define IPMI_DBG_BREAK	PLATFORM_BREAK
+
+/**
+ * @def IPMI_ASSERT
+ * @brief Asserts for a condition to be true. If the condition fails program
+ * stops executing and the debugger is invoked.
+**/
+#define IPMI_ASSERT(ARG)									\
+ do                                                         \
+ {                                                          \
+    if (!(ARG))                                             \
+    {                                                       \
+        IPMI_WARNING ("Assertion failed at %s line %d\n",  \
+                        (_FAR_ char *)__FILE__, __LINE__);  \
+        IPMI_DBG_BREAK;                                     \
+    }                                                       \
+                                                            \
+ } while (0)
+ 
+ /**
+  * @def IPMI_ASSERT_CONTINUE
+  * @brief Asserts for a condition to be true. If the condition fails program
+  * continues executing.
+ **/
+#define IPMI_ASSERT_CONTINUE(ARG)									\
+do														 \
+{ 														 \
+ if (!(ARG))											 \
+ {														 \
+	 IPMI_WARNING ("Assertion failed at %s line %d\n",  \
+					 (_FAR_ char *)__FILE__, __LINE__);  \
+	 IPMI_WARNING ("Assertion will be handled later...\n");  		\
+ }														 \
+														 \
+} while (0)
+
+#if ENABLE_DEBUG_LOG==0
+/**
+ * @def IPMI_DBG_PRINT
+ * @brief A regular printf style debug printing macro. Could take more
+ * ROM space due to the strings to be stored.
+**/
+#define IPMI_DBG_PRINT(STR)	                            printf (STR)
+#define IPMI_DBG_PRINT_1(FMT, ARG1)	                    printf (FMT, ARG1)
+#define IPMI_DBG_PRINT_2(FMT, ARG1, ARG2)               printf (FMT, ARG1, ARG2)
+#define IPMI_DBG_PRINT_3(FMT, ARG1, ARG2, ARG3)         printf (FMT, ARG1, ARG2, ARG3)
+#define IPMI_DBG_PRINT_4(FMT, ARG1, ARG2, ARG3, ARG4)   printf (FMT, ARG1, ARG2, ARG3, ARG4)
+
+/**
+ * @def IPMI_DBG_PRINT_BUF
+ * @brief Prints the buffer.
+**/
+#define IPMI_DBG_PRINT_BUF(BUF, LEN)                    print_buf (BUF, LEN);
+#define PRINT_BUF(BUF, LEN)                             print_buf (BUF, LEN);
+
+#else	//ENABLE_DEBUG_LOG
+
+#define IPMI_DBG_PRINT(FMT)            											\
+do																				\
+{																				\
+	printf (FMT);																\
+	PLATFORM_DBGLOGFN(LOG_DEBUG,TDBG_FILE_LINE_FMT FMT,TDBG_FILENAME,TDBG_LINENO);	\
+} while (0)
+
+#define IPMI_DBG_PRINT_1(fmt, args...) 											\
+do																				\
+{																				\
+	printf (fmt, args);															\
+	PLATFORM_DBGLOGFN(LOG_DEBUG,TDBG_FILE_LINE_FMT fmt,TDBG_FILENAME,TDBG_LINENO,##args);	\
+} while (0)
+
+#define IPMI_DBG_PRINT_2(fmt, args...) 											\
+do																				\
+{																				\
+	printf (fmt, args);															\
+	PLATFORM_DBGLOGFN(LOG_DEBUG,TDBG_FILE_LINE_FMT fmt,TDBG_FILENAME,TDBG_LINENO,##args);	\
+} while (0)
+
+#define IPMI_DBG_PRINT_3(fmt, args...) 											\
+do																				\
+{																				\
+	printf (fmt, args);															\
+	PLATFORM_DBGLOGFN(LOG_DEBUG,TDBG_FILE_LINE_FMT fmt,TDBG_FILENAME,TDBG_LINENO,##args);	\
+} while (0)
+
+#define IPMI_DBG_PRINT_4(fmt, args...) 											\
+do																				\
+{																				\
+	printf (fmt, args);															\
+	PLATFORM_DBGLOGFN(LOG_DEBUG,TDBG_FILE_LINE_FMT fmt,TDBG_FILENAME,TDBG_LINENO,##args);	\
+} while (0)
+	
+#define IPMI_DBG_PRINT_BUF(BUF, LEN) 											\
+do																				\
+{																				\
+	print_buf (BUF, LEN);														\
+	PLATFORM_DBGLOGBUFFN(LOG_DEBUG,TDBG_FILENAME,TDBG_LINENO,BUF,LEN)			\
+} while (0)
+
+#endif	//ENABLE_DEBUG_LOG
+
+#endif	/* ENABLE_DEBUG_MACROS */
+
+#else   /* If DEBUG */
+
+#define IPMI_DBG_PRINT(STR)
+#define IPMI_DBG_PRINT_1(FMT, ARG2)
+#define IPMI_DBG_PRINT_2(FMT, ARG1, ARG2)
+#define IPMI_DBG_PRINT_3(FMT, ARG1, ARG2, ARG3)
+#define IPMI_DBG_PRINT_4(FMT, ARG1, ARG2, ARG3, ARG4)
+#define IPMI_DBG_BREAK
+#define IPMI_ASSERT(ARG)
+#define IPMI_ASSERT_CONTINUE(ARG)
+#define IPMI_DBG_PRINT_BUF(BUF, LEN)
+#define IPMI_DBG_PRINT_STRUCT_3(STRUCT, M1, M2, M3)
+#define IPMI_DBG_PRINT_STRUCT_4(STRUCT, M1, M2, M3, M4)
+#define IPMI_DBG_PRINT_STRUCT_5(STRUCT, M1, M2, M3, M4, M5)
+#define IPMI_DBG_PRINT_STRUCT_6(STRUCT, M1, M2, M3, M4, M5, M6)
+
+#define PRINT_BUF(BUF, LEN)
+#define IPMI_DBG_PRINT_BUF(BUF, LEN)
+
+#endif     /* If DEBUG */
+
+
+#endif	/* DEBUG_H */

+ 47 - 0
app/bmc_server/ipmi_dev/DeviceConfig.h

@@ -0,0 +1,47 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ *****************************************************************
+ *
+ * DeviceConfig.h
+ * Device Configuration Handler
+ *
+ * Author: Govind Kothandapani <govindk@ami.com>
+ *       : Rama Bisa <ramab@ami.com>
+ *       : Basavaraj Astekar <basavaraja@ami.com>
+ *       : Bakka Ravinder Reddy <bakkar@ami.com>
+ *
+ *****************************************************************/
+#ifndef DEVICE_CONFIG_H
+#define DEVICE_CONFIG_H
+
+//#include "Types.h"
+#include "bmc_type.h"
+//#include "IPMI_DeviceConfig.h"
+
+/**
+ * @var g_Config_CmdHndlr
+ * @brief Transport Configuration Commands Map.
+**/
+extern const CmdHndlrMap_T  g_Config_CmdHndlr [];
+
+
+/**
+ * @defgroup devcfg Device Configuration Module
+ * IPMI Device Configuration command interface. This module
+ * implements configuration and access commands for transport modules
+ * such as LAN, Serial/Modem, Serial Over LAN.
+ * @{
+**/
+/** @} */
+
+#endif  /* DEVICE_CONFIG_H */

+ 57 - 0
app/bmc_server/ipmi_dev/EEPROMAccess.h

@@ -0,0 +1,57 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ *****************************************************************
+ ******************************************************************
+ *
+ * nvram.h
+ * NVRAM Functions
+ *
+ *  Author: Govind Kothandapani <govindk@ami.com>
+ *			Basavaraj Astekar	<basavaraja@ami.com>
+ *			Ravinder Reddy		<bakkar@ami.com>
+ ******************************************************************/
+#ifndef EEPROM_ACCESS_H
+#define EEPROM_ACCESS_H
+
+#include "Types.h"
+#include "IPMI_Main.h"
+#include "NVRData.h"
+
+typedef int (*fnEEPROMHndlr_T) (INT8U SlaveAddr, INT8U* pData, INT16U EEPROMAddr, INT16U Size, INT8U RWFlag);
+
+#pragma pack (1)
+
+typedef struct
+{
+    INT8U               DeviceType;
+    fnEEPROMHndlr_T     fnEEPROMHndlr;
+
+} PACKED EEPROMHndlr_T;
+
+#pragma pack ()
+
+
+ /**
+ * @fn ReadWriteEEPROM
+ * @brief Reads/Writes the Non volatile informations to/from file
+ * @param SlaveAddr - SlaveAddress of device to Write or Read from.
+ * @param pData    - Pointer to data.
+ * @param Offset   - Offset in the file to Write of Read from.
+ * @param Size     - Size of data to read/write.
+ * @param Flag     - Flag to perform write or read operation.
+**/
+extern void ReadWriteEEPROM (INT8U DeviceType, INT8U SlaveAddr, INT8U* pData, INT16U Offset, INT16U Size, INT8U Falg);
+
+
+#endif /* EEPROM_ACCESS_H */
+

+ 26 - 0
app/bmc_server/ipmi_dev/Ethaddr.h

@@ -0,0 +1,26 @@
+/*****************************************************************
+**                                                              **
+**    (C)Copyright 2006-2009,American Megatrends Inc.           **
+**                                                              **
+**            All Rights Reserved.                              **
+**                                                              **
+**        5555 Oakbrook Pkwy Suite 200, Norcross,               **
+**                                                              **
+**        Georgia - 30093, USA. Phone-(770)-246-8600.           **
+**                                                              **
+*****************************************************************/
+
+/************************************************************/
+/*  GetEthIndex   function which return the Eth depends on given channel*/
+/************************************************************/
+
+extern int SplitEthIfcnames(char *Ifcnames, int BMCInst,int *count);
+extern INT8U GetEthIndex(INT8U Channel, int BMCInst);
+extern  	INT8U GetLANChannel(INT8U EthIndex,int BMCInst);
+extern INT8U GetIfcName(INT8U EthIndex,INT8S *IfcName,int BMCInst);
+extern int GetChannelByAddr(char * IPAddr,int BMCInst);
+extern int GetChannelByIPv6Addr(char * IPAddr,int BMCInst);
+extern INT8U IsLANChannel(INT8U Channel, int BMCInst)  ;
+extern int InitDNSConfiguration(int BMCInst);
+extern int GetLinkStatus(INT8U Channel, int BMCInst);
+

+ 38 - 0
app/bmc_server/ipmi_dev/EventAPI.h

@@ -0,0 +1,38 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ ******************************************************************
+ *
+ * EventAPI.h
+ * Event Access API.
+ *
+ *  Author: Govind Kothandapani <govindk@ami.com>
+ *
+ ******************************************************************/
+#ifndef EVENTAPI_H
+#define EVENTAPI_H
+#include "Types.h"
+#include "IPMI_Events.h"
+
+/*-----------------------------------------------------------------
+ * @fn API_PlatformEvtMsg
+ * @brief Adds a Platform event message to BMC.
+ * @param pEventMsg	- Pointer to the buffer holding the event message.
+ * @return 	-0  if Success
+ *			-1	if failed.
+ *-----------------------------------------------------------------*/
+extern int API_PlatformEvtMsg (_FAR_ INT8U* pEventMsg, int BMCInst);
+
+
+
+#endif	/* SELAPI_H */
+

+ 45 - 0
app/bmc_server/ipmi_dev/Events.h

@@ -0,0 +1,45 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************/
+/*****************************************************************
+ *
+ * Events.h
+ * Event processing commands handler
+ *
+ * Author: Bakka Ravinder Reddy <bakkar@ami.com>
+ *
+ *****************************************************************/
+#ifndef EVENTS_H
+#define EVENTS_H
+
+#include "Types.h"
+
+/* Event Type Code */
+#define EVENT_TYPE_TEMP    0x01
+
+/* Sensor Type */
+#define SENSOR_TYPE_FAN     0x04     
+
+/**
+ * @defgroup eic Event Commands
+ * @ingroup senevt
+ * IPMI Event interface command handlers. These commands are used for 
+ * setting/getting event receivers and sending event messages.
+ * @{
+**/
+extern int SetEventReceiver (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int GetEventReceiver (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int PlatformEventMessage (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+/** @} */
+
+#endif  /* EVENTS_H */

+ 39 - 0
app/bmc_server/ipmi_dev/ExtendedConfig.h

@@ -0,0 +1,39 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ ******************************************************************
+ *
+ * support.h
+ * supported commands Macros
+ *
+ * Author: shivaranjanic <shivaranjanic@amiindia.co.in>
+ *
+ ******************************************************************/
+#ifndef __EXNDEDCONFIGS_H__
+#define __EXNDEDCONFIGS_H__
+
+#define OEM_CMDS 		1
+
+
+#include "Types.h"
+//#include "OSPort.h"
+#include "MsgHndlr.h"
+#include <stdio.h>
+#include <string.h>
+
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/select.h>
+#include "smtpclient.h"
+
+
+#endif // __EXNDEDCONFIGS_H__

+ 99 - 0
app/bmc_server/ipmi_dev/FFConfig.h

@@ -0,0 +1,99 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ *****************************************************************
+ ******************************************************************
+ * 
+ * FFConfig.h
+ * Firmware firewall configuration.
+ *
+ *  Author: Basavaraj Astekar<basavarja@ami.com>
+ *          Ravinder Reddy<bakkar@ami.com>
+ ******************************************************************/
+#ifndef FF_CONFIG_H
+#define FF_CONFIG_H
+#include "Types.h"
+#include "PMConfig.h"
+#include "MsgHndlr.h"
+#include "IPMIConf.h"
+
+
+/*** External Definitions ***/
+#define FF_SUCCESS              0x00
+#define FF_NETFN_ERR            0x10
+#define FF_CMD_ERR              0x20
+#define FF_CHANNEL_ERR          0x30
+
+#pragma pack( 1 )
+/**
+ * @struct FFSubFnTbl_T
+ * @brief Firmware Firewall sub-function table structure.
+**/
+typedef struct
+{
+    INT8U   NetFn;
+    INT8U   Cmd;
+    INT32U  SubFn [MAX_NUM_CHANNELS];
+
+} PACKED  FFSubFnTbl_T;
+
+#pragma pack( )
+
+/**
+ * @brief Checks for Sub-function configuration.
+ * @param ChannelNum Channel Number
+ * @param NetFn Net Function
+ * @param Cmd Command
+ * @param SubFn Sub Function
+ * @return 1 if Sub Fn enabled, 0 if disabled.
+**/
+extern int CheckSubFn (INT8U ChannelNum, INT8U NetFn, INT8U Cmd, INT8U SubFn);
+
+/**
+ * @brief Checks for command configurability
+ * @param pCmdHndlrMap Command handler map
+ * @param ChannelNum Channel Number
+ * @param NetFn Net Function
+ * @param Cmd Command
+ * @return 1 if command enabled, 0 if disabled.
+**/
+extern int CheckCmdCfg (_FAR_ CmdHndlrMap_T* pCmdHndlrMap, 
+                        INT8U ChannelNum, INT8U NetFn, INT8U Cmd,int BMCInst);
+
+/**
+ * @brief Get command configuration information address.
+ * @param NetFn - Net function of the command.
+ * @param Cmd - Command.
+ * @return The command configuration.
+**/
+extern _FAR_ INT8U* GetCmdCfgAddr (INT8U NetFn, INT8U Cmd, int BMCInst);
+
+/**
+ * @brief Get sub-function mask.
+ * @param ChannelNum - Channel number.
+ * @param NetFn - Command net function.
+ * @param Cmd - Command.
+ * @param pSubFnMask - Sub-function mask.
+**/
+extern int GetSubFnMask (INT8U ChannelNum, INT8U NetFn, 
+                         INT8U Cmd, _NEAR_ INT32U* pSubFnMask,int BMCInst);
+
+/**
+ * @brief Get command support configuration mask.
+ * @param NetFn - Command net function.
+ * @param Cmd - Command.
+ * @param pFFConfig - Command support configuration information.
+ * @return 0 if success, -1 if error.
+**/
+extern int GetCmdSupCfgMask (INT8U NetFn, INT8U Cmd, _NEAR_ INT16U* pFFConfig,INT8U GroupExtCode,int BMCInst);
+
+#endif /* FF_CONFIG_H */

+ 59 - 0
app/bmc_server/ipmi_dev/FRU.h

@@ -0,0 +1,59 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ ******************************************************************
+ *
+ * fru.h
+ * fru.c extern declarations
+ *
+ *  Author: Rama Bisa <govindk@ami.com>
+ *
+ ******************************************************************/
+
+#ifndef FRU_H
+#define FRU_H
+
+#include "Types.h"
+
+/**
+ * @defgroup fdc FRU Device Command handlers
+ * @ingroup storage
+ * IPMI Platform Management FRU (Field Replaceable Unit) information storage
+ * interface commands. Implemented as per Version 1.0 and Document Rev 1.1.
+ * @{
+**/
+#define  FRU_DEVICE_NOT_FOUND  0xCB
+#define  FRU_NOT_ACCESSIBLE        0x81
+#define  FRU_ACCESSIBLE                  0x0
+#define MAX_PDK_FRU_SUPPORTED 10
+
+#define FRU_COMMON_HEADER_FORMAT_VERSION 0x01
+
+#define  FRU_IC_ONE  0x01
+#define  FRU_IC_TWO  0x02
+
+#define  FRU_DEVICE_TYPE  10
+
+extern int GetFRUAreaInfo (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int ReadFRUData (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int WriteFRUData (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+/** @} */
+
+/**
+ * @brief Validates and Initializes FRU.
+ * @return 0 if success, -1 if error.
+**/
+extern int InitFRU (int BMCInst);
+
+extern int ValidateFRUChecksum (INT8U FRUChksumType, INT8U *Ptr);
+
+#endif /* FRU_H */

+ 60 - 0
app/bmc_server/ipmi_dev/FRUAPI.h

@@ -0,0 +1,60 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ *****************************************************************
+ ******************************************************************
+ *
+ * FRUAPI.h
+ * FRU access Api's.
+ *
+ *  Author: Govind Kothandapani <govindk@ami.com>
+ *
+ ******************************************************************/
+#ifndef FRUAPI_H
+#define FRUAPI_H
+#include "Types.h"
+
+/*------------------------------------------------------------------
+ * @fn GetFRUDeviceSize
+ * @brief Returns the size of the FRU Device.
+ * @param DeviceID	- FRU Device ID to read from.
+ * @returns The size of the FRU Device.
+ *			-1 if error.
+ *------------------------------------------------------------------*/
+extern int API_GetFRUDeviceSize (INT8U DeviceID, int BMCInst);
+
+/*------------------------------------------------------------------
+ * @fn ReadFRUDevice
+ * @brief Reads data from a FRU Device.
+ * @param DeviceID	- FRU Device ID to read from.
+ * @param Offset	- Offset in the FRU Device to read from.
+ * @param Len		- Number of bytes to read.
+ * @param pBuf		- Buffer to read the contents to.
+ * @return 	The number of bytes actually read.
+ *			-1 if error.
+ *------------------------------------------------------------------*/
+extern int API_ReadFRUDevice (INT8U DeviceID, INT16U Offset, INT16U Len, _FAR_ INT8U* pBuf, int BMCInst);
+
+/*------------------------------------------------------------------
+ * @fn WriteFRUDevice
+ * @brief Write the data to FRU Device.
+ * @param DeviceID	- FRU Device ID to write to.
+ * @param Offset	- Offset in the FRU Device to write to.
+ * @param Len		- Number of bytes to write.
+ * @param pBuf		- Buffer to write the contents from.
+ * @return 	The number of bytes actually written.
+ *			-1 if error.
+ *------------------------------------------------------------------*/
+extern int API_WriteFRUDevice (INT8U DeviceID, INT16U Offset, INT16U Len, _FAR_ INT8U* pBuf, int BMCInst);
+
+#endif	/* FRUAPI_H */
+

+ 89 - 0
app/bmc_server/ipmi_dev/FRURecord.h

@@ -0,0 +1,89 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ *****************************************************************
+ ******************************************************************
+ *
+ * FRURecord.h
+ * FRU record structures.
+ *
+ *  Author: Rama Bisa <ramab@ami.com>
+ *
+ ******************************************************************/
+#ifndef FRU_RECORD_H
+#define FRU_RECORD_H
+
+#include "Types.h"
+
+#pragma pack( 1 )
+
+/**
+ * @struct FRUCommonHdr_T
+ * @brief FRU Common Header
+**/
+typedef struct
+{
+    INT8U CommonHeaderFormatVersion;
+    INT8U InternalUseAreaStartOffset;
+    INT8U ChassisInfoAreaStartOffset;
+    INT8U BoardAreaStartOffset;
+    INT8U ProductInfoAreaStartOffset;
+    INT8U MultiRecordAreaStartOffset;
+    INT8U PAD;
+    INT8U CommonHeaderChecksum;
+
+} PACKED  FRUCommonHdr_T;
+
+
+/*** External Definitions ***/
+#define MAX_FRU_DATA_AREA_SIZE  (MAX_FRU_AREA_INFO_SIZE - sizeof(FRUCommonHdr_T) )
+#define FRU_DATA_START(pfru)    ((_FAR_ INT8U*)(&(((_FAR_ FRURepository_T*) pfru)->FruInfo)))
+
+
+/**
+ * @struct FRUInfoArea_T
+ * @brief FRU Info Area
+**/
+typedef struct
+{
+    FRUCommonHdr_T  CommonHeader;
+    INT8U           FRUData [MAX_FRU_DATA_AREA_SIZE];
+
+} PACKED  FRUInfoArea_T;
+
+
+/**
+ * @struct FRUInternalUseAreaHdr
+ * @brief FRU Internal Use Area Header
+**/
+typedef struct
+{
+    INT8U   InternalUseAreaFormatVersion;
+    INT8U   InternalUseAreaInfoLength;
+
+} PACKED  FRUInternalUseAreaHdr;
+
+
+/** 
+ * @struct FRURepository_T
+ * @brief FRU Repository organisation 
+**/
+typedef struct
+{
+    INT8U           Signature [4];  /* $FRU */
+    FRUInfoArea_T   FruInfo[MAX_FRU_DEVICES];
+
+} PACKED  FRURepository_T;
+
+#pragma pack( )
+
+#endif /* FRU_RECORD_H */

+ 52 - 0
app/bmc_server/ipmi_dev/Firewall.h

@@ -0,0 +1,52 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ ******************************************************************
+ * 
+ * Firewall.h
+ * IPMI firmware firewall commands
+ *
+ *  Author: Ravinder Reddy <bakkar@ami.com>
+ *          Basavaraj Astekar <basavaraja@ami.com>
+ *          
+ ******************************************************************/
+#ifndef FIREWALL_H
+#define FIREWALL_H
+#include "Types.h"
+
+#pragma pack(1)
+typedef struct{
+  INT8U IANA[3];
+}PACKED IANA_T;
+#pragma pack()
+/*** Function Prototypes ***/
+
+/**
+ * @defgroup apcf5 Firmware Firewall Commands
+ * @ingroup apcf
+ * IPMI IPM Device Command Handlers. Invoked by the message handler
+ * (IPMI 2.0 feature)
+ * @{
+ **/
+extern int GetNetFnSup      (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int GetCmdSup        (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int GetSubFnSup      (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int GetConfigCmds    (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int GetConfigSubFns  (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int SetCmdEnables    (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int GetCmdEnables    (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int SetSubFnEnables  (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int GetSubFnEnables  (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int GetOEMNetFnIANASupport  (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+/** @} */
+
+#endif /* FIREWALL_H */

+ 58 - 0
app/bmc_server/ipmi_dev/GUID.h

@@ -0,0 +1,58 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2002-2003, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ *****************************************************************
+ *****************************************************************
+ * $Header:
+ *
+ * $Revision:
+ *
+ * $Date:
+ *
+ ******************************************************************
+ ******************************************************************
+ *
+ * GUID.h
+ * 	GUID Generation
+ *
+ *  Author:
+ ******************************************************************/
+#ifndef GUID_H
+#define GUID_H
+
+#define INT64U unsigned long long
+
+#define GUID_GEN_VERSION  0x01 	// "Time based" GUID Generation.
+#define CLOCK_SEQ         0xD7 	// Addition of ASCII Characters "AMI" for clockSeq seed
+
+#define INVALID_GUID 1
+#define VALID_GUID   2
+
+#pragma pack (1)
+
+typedef struct
+{
+   INT8U node[6];
+}PACKED Node_T;
+
+typedef struct
+{
+   Node_T nodeID;
+   INT16U clockSeq_Res;
+   INT16U timeHigh_Ver;
+   INT16U timeMid;
+   INT32U timeLow;
+} PACKED IPMI_GUID_T;
+#pragma pack()
+
+extern void CreateGUID( IPMI_GUID_T* GUID, INT8U* GUIDFileName);
+#endif

+ 33 - 0
app/bmc_server/ipmi_dev/GroupExtn.h

@@ -0,0 +1,33 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2008-2009, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        Suite 200, 5555 oakbrook pkwy, Norcross             **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************/
+/*****************************************************************
+ *
+ * GroupExtn.h
+ * Group Extension Command Handlers
+ *
+ * Author: Rama Bisa <ramab@ami.com>
+ *
+ *****************************************************************/
+#ifndef GROUP_EXTN_H
+#define GROUP_EXTN_H
+
+#include "Types.h"
+#include "MsgHndlr.h"
+#include "IPMI_App.h"
+
+/*** Extern Definitions ***/
+extern const CmdHndlrMap_T  g_DCMI_CmdHndlr [];
+
+#endif  /* GROUP_EXTN_H */
+

+ 36 - 0
app/bmc_server/ipmi_dev/HPM.h

@@ -0,0 +1,36 @@
+/* ***************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2012, American Megatrends Inc.             **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        5555, Oakbrook Parkway, Suite 200,  Norcross,       **
+ **                                                            **
+ **        Georgia - 30093, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************/
+/****************************************************************
+ *
+ * HPM.h
+ * HPM Command Handler
+ *
+ * Author: Joey Chen <JoeyChen@ami.com.tw>
+ *
+ *****************************************************************/
+#ifndef HPM_H
+#define HPM_H
+
+#include "MsgHndlr.h"
+
+
+/*** Extern Definitions ***/
+extern const CmdHndlrMap_T g_HPM_CmdHndlr []; /**< HPM specific command handler table. */
+/**
+ * @defgroup acf HPM Specific Module
+  * IPMI HPM Specific Command Handlers. Invoked by the message handler
+ * @{
+ **/
+/** @} */
+
+#endif  /* HPM_H */

+ 41 - 0
app/bmc_server/ipmi_dev/HPMCmds.h

@@ -0,0 +1,41 @@
+/* ***************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2012, American Megatrends Inc.             **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        5555, Oakbrook Parkway, Suite 200,  Norcross,       **
+ **                                                            **
+ **        Georgia - 30093, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************/
+/****************************************************************
+ *
+ * HPMCmds.h
+ * HPM Command functions
+ *
+ * Author: Joey Chen <JoeyChen@ami.com.tw>
+ *
+ *****************************************************************/
+#ifndef HPMCMDS_H
+#define HPMCMDS_H
+
+#include "Types.h"
+
+/** Extern Definitions **/
+
+extern int GetTargetUpgradeCapablities  (_NEAR_ INT8U * pReq,INT8U ReqLen,_NEAR_ INT8U * pRes, _NEAR_ int BMCInst); 
+extern int GetComponentProperties       (_NEAR_ INT8U * pReq,INT8U ReqLen,_NEAR_ INT8U * pRes, _NEAR_ int BMCInst); 
+extern int InitiateUpgradeAction (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes, _NEAR_ int BMCInst); 
+extern int QuerySelfTestResults (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes, _NEAR_ int BMCInst); 
+
+extern int AbortFirmwareUpgrade (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes, _NEAR_ int BMCInst); 
+extern int UploadFirmwareBlock (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes, _NEAR_ int BMCInst);
+extern int FinishFirmwareUpload (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes, _NEAR_ int BMCInst); 
+extern int GetUpgradeStatus (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes, _NEAR_ int BMCInst); 
+extern int ActivateFirmware (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes, _NEAR_ int BMCInst);
+extern int QueryRollbackStatus (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes, _NEAR_ int BMCInst);
+extern int InitiateManualRollback (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes, _NEAR_ int BMCInst);
+ 
+#endif  /* HPMCMDS_H */

+ 152 - 0
app/bmc_server/ipmi_dev/HPMConfig.h

@@ -0,0 +1,152 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2012, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ *****************************************************************
+ *
+ * HPMConfig.h
+ * HPM Configuration related commands.
+ *
+ * Author: Joey Chen <JoeyChen@ami.com.tw>
+ *
+ *****************************************************************/
+#ifndef HPMCONFIG_H
+#define HPMCONFIG_H
+
+#include "Types.h"
+#include "IPMI_HPMCmds.h"
+#include "featuredef.h"
+#include "fwinfo.h"
+
+#define HPM_CONF_FILE "/conf/hpm.conf"
+#define MAX_TEMP_ARRAY_SIZE         64
+
+#define DEFAULT_MTD_DEVICE  "/dev/mtd0"
+#define MAX_COMPONENTS          COMPONENT_ID_MAX
+#define BOOT_COMPONENT_ID       COMPONENT_ID_0
+#define APP_COMPONENT_ID        COMPONENT_ID_1
+
+#define STR_SECTION_NAME_TARGETCAP "targetcap"
+
+#define STR_UPGRADE_UNDERSIRABLE "upgrade_undesirable"
+#define STR_ROLLBACK_OVERRIDE    "auto_rollback_override"
+#define STR_IPMC_DEGRADED        "ipmc_degraded"
+#define STR_DEFERRED_ACTIVATION  "deferred_activation"
+#define STR_SERVICE_AFFECTED     "service_affected"
+#define STR_MANUAL_ROLLBACK      "manual_rollback"
+#define STR_AUTO_ROLLBACK        "auto_rollback"
+#define STR_SELFTEST             "selftest"
+#define STR_UPGRADE_TIMEOUT      "upgrade_timeout"
+#define STR_SELFTEST_TIMEOUT     "selftest_timeout"
+#define STR_ROLLBACK_TIMEOUT     "rollback_timeout"
+#define STR_INACCESS_TIMEOUT     "inaccess_timeout"
+#define STR_COMP_PRESENCE        "comp_presence"
+
+#define STR_SECTION_NAME_COMPPROP_PREFIX "compprop"
+
+#define STR_COLD_RESET_REQ       "cold_reset_req"
+#define STR_COMPARISON           "comparison"
+#define STR_PREPARATION          "preparation"
+#define STR_ROLLBACK_BACKUP      "rollback_backup"   
+
+#define HPM_IMAGE_1 1
+#define HPM_IMAGE_2 2
+extern CoreFeatures_T g_corefeatures;
+extern char g_FlashingImage;
+
+#pragma pack(1)
+
+typedef struct 
+{
+    INT32U   Memoffset;
+    INT32U   Flashoffset;  
+    INT32U   Sizetocpy;
+    INT32U   AllocateMemSize;
+    INT8U    DescString[DESC_STRING_LEN]; 
+} PACKED ComponentFlashInfo_T;
+
+typedef struct
+{
+    union
+    {
+        unsigned char ByteField;
+        struct
+        {
+            unsigned char SelfTest:1;
+            unsigned char AutoRollback:1; 
+            unsigned char ManualRollback:1;      
+            unsigned char ServiceAffected:1;      
+            unsigned char DeferredActivation:1;      
+            unsigned char IPMCDegradedInUpg:1;        
+            unsigned char AutoRollbackOverridden:1;        
+            unsigned char FWUpgDesirable:1;       
+        } PACKED BitField;
+    } PACKED GlobalCap;                  
+    INT8U UpgradeTimeout;
+    INT8U SelfTestTimeout;
+    INT8U Rollbackimeout;
+    INT8U InaccessiblityTimeout;
+    INT8U ComponentsPresent;
+    
+} PACKED HPMConfTargetCap_T;
+
+typedef struct
+{
+    union
+    {
+        unsigned char ByteField;
+        struct
+        {
+            unsigned char RollbackOrBackup         : 2;
+            unsigned char Preparation              : 1;
+            unsigned char Comparison               : 1;
+            unsigned char DeferredActivation       : 1;
+            unsigned char PayloadColdResetRequired : 1;
+            unsigned char Reserved                 : 2;
+        } PACKED BitField;
+    } PACKED GeneralCompProp;
+    
+} PACKED HPMConfCompProp_T;
+
+#pragma pack()
+
+int IsValidComponentID(INT8U ComponentID);
+BOOL IsIPMCComponentID(INT8U ComponentID);
+BOOL IsContainIPMCComponents(INT8U Components);
+
+BOOL IsValidComponents(INT8U Components);
+BOOL IsOnlyOneComponent(INT8U Components);
+
+int GetCompDescString(INT8U ComponentID, char *DescString, int StrSize);
+
+BOOL IsFwVersionCached(INT8U ComponentID, FwVersionType_E FwVerType);
+void ClearAllCachedFwVersion(void);
+void CacheFwVersion(INT8U ComponentID, FwVersionType_E FwVerType);
+
+int GetCurrFirmwareVersion(INT8U ComponentID, FirmwareVersion_T *FwVersion);
+int GetRollbackFirmwareVersion(INT8U ComponentID, FirmwareVersion_T *FwVersion);
+int GetDeferUpgFirmwareVersion(INT8U ComponentID, FirmwareVersion_T *FwVersion);
+
+BOOL IsBackupComponentSupport(INT8U Components);
+BOOL IsAutoRollbackSupport(INT8U ComponentID);
+BOOL IsManualRollbackSupport(INT8U ComponentID);
+BOOL IsDeferredActivationSupport(INT8U ComponentID);
+
+int ReadAllHPMConf(void);
+int GetTargetCapConf(HPMConfTargetCap_T *TargetCap);
+int GetCompPropConf(HPMConfCompProp_T *CompProp, INT8U CompID);
+
+int GetComponentFlashInfo(ComponentFlashInfo_T *ComponentFlashInfo, INT8U ComponentID);
+
+#endif  /* HPMCONFIG_H */
+
+
+

+ 71 - 0
app/bmc_server/ipmi_dev/HPMFuncs.h

@@ -0,0 +1,71 @@
+/* ***************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2012, American Megatrends Inc.             **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        5555, Oakbrook Parkway, Suite 200,  Norcross,       **
+ **                                                            **
+ **        Georgia - 30093, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************/
+/****************************************************************
+ *
+ * HPMFuncs.h
+ * HPM firmware upgrade related functions
+ *
+ * Author: Joey Chen <JoeyChen@ami.com.tw>
+ *
+ *****************************************************************/
+#ifndef HPMFUNCS_H
+#define HPMFUNCS_H
+
+#include "Types.h"
+#include "IPMI_HPMCmds.h"
+
+#define INVALID_COMPONENT_ID 0xFF
+
+/* HPM Timer relating variables*/
+#define HPM_FLASH_SUCCEEDED	 1
+#define HPM_UPLOAD_BLK_INPROGRESS	 2
+#define HPM_FLASH_FW_INPROGRESS	 3
+#define HPM_MSECS_PER_TICK		1000
+/* Timer timeouts for diff state*/
+#define HPM_UPLOAD_BLK_TIMER_COUNT	60
+#define HPM_FLASH_FW_TIMER_COUNT	900
+
+
+BOOL IsFwUpSupportIfc(int BMCInst);
+INT8U GetSelfTestResultByte(INT8U ByteNum, int BMCInst);
+
+HPMStates_E GetFwUpgState(INT8U ComponentID);
+void UpdateHPMStatus (INT8U CompCode, INT8U Cmd, INT8U CmdDuration);
+int GetHPMStatus (HPMCmdStatus_T *HPMStatus);
+
+BOOL IsCachedComponentID(INT8U ComponentID);
+BOOL IsLastHPMCmdCorrect(INT8U LastCmd);
+
+int VerifyImageLength(INT32U ImageLength);
+ 
+int InitBackupComponents(INT8U Components);
+int InitPreComponents(INT8U Components);
+int InitUpload(INT8U UpgradeAction, INT8U Component);
+
+int HandleFirmwareBlock(INT8U BlkNum, INT8U *Data, INT16U Len);
+int HandleUploadedFirmware(void);
+
+INT8U HandleAbortFirmwareUpgrade(void);
+
+BOOL HandleActivateFirmware(void);
+
+INT8U GetRollbackComponents(void);
+int HandleManualRollback(void);
+
+void RevertToInitState(INT8U ComponentID);
+INT8U GetHPMActCompsFromBootParam(void);
+int SetBootSelectorToBootParam(char image);
+void* HPMTimerTask(void *pArg);
+void SetHPMFlashStatus(INT8U status);
+void SetHPMTimerCnt(INT8U secs);
+#endif  /* HPMFUNCS_H */

+ 83 - 0
app/bmc_server/ipmi_dev/HWConfig.h

@@ -0,0 +1,83 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ ******************************************************************
+ *
+ * HWConfig.h
+ * Hardware Config Data
+ *
+ *  Author: Rama Rao Bisa <ramab@ami.com>
+ *
+ ******************************************************************/
+#ifndef HWCONFIG_H
+#define HWCONFIG_H
+
+#define MAX_I2C_BUSES       1
+
+#pragma pack( 1 )
+
+ /**
+ * @struct ThreshSenConfig_T
+ * @brief Threshold sensor configuration information.
+**/
+typedef struct
+{
+    INT8U   Enable;
+    INT8U   Interval;
+
+} PACKED  ThreshSenConfig_T;
+
+
+/**
+ * @struct NonThreshSenConfig_T 
+ * @brief Non-threshold sensor configuration information.
+**/
+typedef struct
+{
+    INT8U   Enable;
+    INT8U   Interval;
+
+} PACKED  NonThreshSenConfig_T;
+
+
+/**
+ * @struct I2CConfig_T
+ * @brief I2C configuration information.
+**/
+typedef struct
+{
+    INT8U   Active;
+    INT8U   OwnSlaveAddr;
+    INT8U   IntrNo;
+    INT16U  OpFreq;
+    INT16U  BaseRegAddr;
+
+} PACKED  I2CConfig_T;
+
+
+/**
+ * @struct HWConfig_T
+ * @brief Hardware configuration information.
+**/
+typedef struct
+{
+    INT8U                   HWCSignature [4];
+    I2CConfig_T             I2CConfig [MAX_I2C_BUSES];
+    ThreshSenConfig_T       ThreshSenConfig [MAX_SENSORS_ALLOWED];
+    NonThreshSenConfig_T    NonThreshSenConfig [MAX_SENSORS_ALLOWED];
+
+} PACKED  HWConfig_T;
+
+#pragma pack( )
+
+#endif /* HWCONFIG_H */
+

+ 40 - 0
app/bmc_server/ipmi_dev/I2CAPI.h

@@ -0,0 +1,40 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ ******************************************************************
+ *
+ * i2capi.h
+ * I2C access Api's.
+ *
+ *  Author: Govind Kothandapani <govindk@ami.com>
+ ******************************************************************/
+#ifndef I2CAPI_H
+#define I2CAPI_H
+#include "Types.h"
+
+/*----------------------------------------------------------------
+ * @fn API_ReadWriteI2C
+ * @brief Call this function to read & write to the I2C bus.
+ * @param Bus 		- I2C bus to read/write to.
+ * @param SlaveID	- Slave address of the device to read/write to.
+ * @param NumWrite	- Number of bytes to write.
+ * @param pWriteBuf	- Pointer to the buffer to write from.
+ * @param NumRead	- Number of bytes to read.
+ * @param pReadBuf	- Pointer to the buffer to read to.
+ * @return			0  if success.
+ *					-1 if failed.
+ *----------------------------------------------------------------*/
+extern int API_ReadWriteI2C (INT8U Bus,             INT8U SlaveID,
+	   				       	 INT8U NumWrite, _NEAR_ INT8U* WriteBuf,
+			    		   	 INT8U NumRead,  _NEAR_ INT8U* ReadBuf);
+
+#endif	/* I2CAPI_H */

+ 48 - 0
app/bmc_server/ipmi_dev/IPMBIfc.h

@@ -0,0 +1,48 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ *****************************************************************
+ *
+ * IPMBIFc.H
+ * 
+ *
+ * Author: Rama Bisa <ramab@ami.com> 
+ *
+ * 
+ *****************************************************************/
+#ifndef IPMBIFC_H
+#define IPMBIFC_H
+
+#include "Types.h"
+
+#define IPMB_SECONDARY_IFC_Q          MSG_PIPES_PATH "IPMBSecondaryIfcQ" 
+#define IPMB_SECONDARY_RES_Q          MSG_PIPES_PATH "IPMBSecondaryResQ" 
+
+/*** External Definitions ***/
+#define BMC_SLAVE_ADDRESS   0x20
+#define BMC_LUN             0x00
+#define MAX_IPMB_PKT_SIZE   128
+
+#define IPMB_REQUEST			1
+#define IPMB_EVT_MSG_REQUEST	2
+#define MIN_IPMB_MSG_LENGTH		7
+#define PLATFORM_EVENT_MSG_CMD	0x02
+#define MAX_BUS_NAME_LEN 64
+
+typedef struct
+{
+    INT8U  IPMBBusNum;
+    INT8S  IPMBBusName[MAX_BUS_NAME_LEN];
+
+}RecvPktArgs_T;
+
+#endif /* IPMBIFC_H	*/

+ 72 - 0
app/bmc_server/ipmi_dev/IPMDevice.h

@@ -0,0 +1,72 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ *****************************************************************
+ *
+ * IPMDevice.h
+ * IPMDevice Commands Handler
+ *
+ * Author: Govind Kothandapani <govindk@ami.com> 
+ *       : Rama Bisa <ramab@ami.com>
+ *       : Basavaraj Astekar <basavaraja@ami.com>
+ *       : Bakka Ravinder Reddy <bakkar@ami.com>
+ * 
+ *****************************************************************/
+#ifndef IPMDEVICE_H
+#define IPMDEVICE_H
+#include "Types.h"
+
+/*** Extern Declaration ***/
+
+
+
+
+/**
+ * @var _FAR_ INT8U g_ACPISysPwrState
+ * @brief Contains System ACPI state.
+ * @warning Should not be accessed from task other than Message Handler
+ **/
+
+ /*Commented it inorder to access the data across the processes and moved it to the
+ shared memory structure BMCSharedMem_T in SharedMem.h file*/
+
+//extern _FAR_ INT8U      g_ACPISysPwrState;
+
+/**
+ * @var _FAR_ INT8U g_ACPIDevPwrState
+ * @brief Contains Device ACPI state.
+ * @warning Should not be accessed from task other than Message Handler
+ **/
+
+ /*Commented it inorder to access the data across the processes and moved it to the
+ shared memory structure BMCSharedMem_T in SharedMem.h file*/
+
+//	extern _FAR_ INT8U      g_ACPIDevPwrState;
+
+/*** Function Prototypes ***/
+/**
+ * @defgroup apcf1 IPM Device Commands
+ * @ingroup apcf
+ * IPMI IPM Device Command Handlers. Invoked by the message handler
+ * @{
+ **/
+extern int GetDevID             (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int ColdReset            (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int WarmReset            (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int GetSelfTestResults   (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int MfgTestOn            (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int SetACPIPwrState      (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int GetACPIPwrState      (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+extern int GetDevGUID           (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
+/** @} */
+
+#endif  /* IPMDEVICE_H */

+ 810 - 0
app/bmc_server/ipmi_dev/IPMIConf.h

@@ -0,0 +1,810 @@
+///******************************************************************
+// ******************************************************************
+// ***                                                                                                           **
+// ***    (C)Copyright 2005-2006, American Megatrends Inc.                            **
+// ***                                                                                                           **
+// ***    All Rights Reserved.                                                                          **
+// ***                                                                                                           **
+// ***    5555 , Oakbrook Pkwy, Norcross,                                                       **
+// ***                                                                                                           **
+// ***    Georgia - 30093, USA. Phone-(770)-246-8600.                                  **
+// ***                                                                                                           **
+// ******************************************************************
+// ******************************************************************
+// ******************************************************************
+// *
+// * IPMIConf.h
+// * IPMI related configurations
+// *
+// *  Author: Winston <winstonv@amiindia.co.in>
+// ******************************************************************/
+// #ifndef _IPMIConf_H
+// #define _IPMIConf_H
+// #include "Types.h"
+//// #include "OSPort.h"
+// #include "PMConfig.h"
+// #include "Session.h"
+//// #include "SensorMonitor.h"
+// #include "LANIfc.h"
+// #include "SharedMem.h"
+// #include "IPMI_SDR.h"
+// #include "IfcSupport.h"
+// #include "MsgHndlr.h"
+//// #include "hal_defs.h"
+////#include "PDKFRU.h"
+// #include "RMCP+.h"
+// #include "UDSIfc.h"
+// #include "PEFTmr.h"
+// #include "IPMI_SEL.h"
+// #include "Terminal.h"
+// #include "SerialIfc.h"
+// #include <semaphore.h>
+// #include "IPMI_AMISmtp.h"
+//// #include "hal_api.h"
+// #include "SDRRecord.h"
+//// #include "featuredef.h"
+// #include "SELRecord.h"
+//#include "bmc_type.h"
+//
+//
+//#define	OEM_ENV_SIZE 			(0x10000 - sizeof(unsigned long))
+//#define	MAINTLOG_BASE_ADDR		(0x01800000)
+//#define	LOG_BLOCK_SIZE		(65536)	//64K
+//#define 	RUNLOG_BASE_ADDR	(0x01800000 + 65536*50)
+//
+////GPIO define
+//
+////slot ID
+//#define GPIO_GA0					16	//GPIOC0
+//#define GPIO_GA1					17	//GPIOC1
+//#define GPIO_GA2					18	//GPIOC2
+//#define GPIO_GA3					19	//GPIOC3
+//#define GPIO_GA4					20	//GPIOC4
+//
+//#define MAX_PLATFORMID_SIZE 20
+//#define MAX_DYNMC_TBL_COUNT 50
+//#define MAX_MGMT_DEV_LOC_REC 1
+//
+//#define MAX_SOL_DATA_SIZE 248
+//#define MAX_SEN_NAME_SIZE 64
+//#define MAXFILESIZE 0x64
+//#define MAXDIRSIZE 0x64
+//#define MAX_HMAC_BUF_SIZE                   128
+//#define	IPMI_CONFIG_FILE	"/conf/BMC/IPMI.conf"
+// #define   MAX_IPMI_IFCQ 256
+// #define   IPMI_IFC_NAME_LEN   60
+// #define   IFCENABLED       0x1
+// #define   IFCDISABLED     0x0
+// #define   CH_NOT_USED   0xFF
+// #define MAX_NUM_CHANNELS		0xc
+//#define PRIMARY_IPMB_CHANNEL_TYPE 0x00
+//#define SMLINK_IPMB_CHANNEL_TYPE    0x04
+//#define ICMB_CHANNEL_TYPE                   0x05
+//#define SMBUS_CHANNEL_TYPE                0x06
+//#define SERIAL_CHANNEL_TYPE                0x07
+//#define SMM_CHANNEL_TYPE                    0x08
+//#define LAN_RMCP_CHANNEL4_TYPE       0x09
+//#define SYS_CHANNEL_TYPE                     0x0f
+//#define USB_CHANNEL			0x0B
+//#define SYS_IFC_CHANNEL			0x0F
+//#define PRIMARY_IPMB_CHANNEL		0x00
+//#define MAX_IFC_NAME                          16
+//#define LAN1_INDEX 0
+//#define LAN2_INDEX 1
+//#define LAN3_INDEX 2
+//#define LAN4_INDEX 3
+//#define MAX_SYMSEC_SIZE 256
+//#define NM_PRIMARY_IPMB_BUS   0
+//#define NM_SECONDARY_IPMB_BUS 1
+//#define MAX_IPMI_CONFIG_MAPS   64
+//#define MAX_IPMI_IFC_COUNT  20
+//
+//#define MAX_SIZE_KEY 56		/* For Blowfish Encryption Algorithm, the key can have maximum of 56 bytes. */
+//
+//#define GET_LIB_META_INFO_SYMBOL "GetLibMetaInfo"
+//#define SOL_SEND_BUF  0x00
+//#define SOL_RECV_BUF  0x01
+//#define  MANUAL_OFFSETS  "Etc"
+//
+//#define FLUSH_INI_DELETE_DAT 0xFF
+//#define FLUSH_TO_INI_ALONE 0xFE
+//#define FLUSH_OEM_CONFIGS_TO_INI 0xE0
+////Note:- action parameter 0xE0 to 0xEF are used for flushing oem configs to ini
+////Oems can make use of different action parameter to flush particular oem configurations
+//
+//typedef struct {
+//	INT8U	ast2400InitErrFlag; 
+//	INT8U	destroySSD;
+//	INT8U destroySSD_sure;
+//	INT8U	EEPROM_Busy;
+//	INT8U ManualDuty;
+//}PACKED OEM_FLAGS_T;
+//
+//typedef	struct {
+//	unsigned long	crc;		// CRC32 over data bytes
+//	unsigned char	data[OEM_ENV_SIZE]; // Environment data	
+//} PACKED oem_env_t;
+//
+//typedef enum
+//{
+//	SUCCESS	=	0,
+//	DRIVER_INIT_ERR,
+//	FILE_SYS_INIT_ERR,
+//	MEM_INIT_ERR,
+//	TASK_INIT_ERR,
+//	UNKNOWN_ERR
+//} OEM_AST2400_INIT_ERR;
+//
+//typedef enum
+//{
+//    LAN_SESSION_TYPE=1,
+//    SERIAL_SESSION_TYPE,
+//    SERIAL_TERMINAL_SESSION_TYPE,
+//    KCS_SESSION_TYPE,
+//    BT_SESSION_TYPE,
+//    IPMB_SESSION_TYPE,
+//    UDS_SESSION_TYPE,
+//    USB_SESSION_TYPE,
+//}IPMI_SESSIONTYPE;
+//
+//
+///*---------------------- Local typedefs --------------------------*/
+///* For storing the  management controller owner id to enable event */
+//typedef struct
+//{
+//    INT8U   OWNERID;
+//    INT16U  PowerNotification;
+//    BOOL  Status;
+//
+//} PACKED  Mgmt_T;
+//
+//typedef struct
+//{
+//    INT8U   SensorNum;
+//    INT8U   SensorTypeCode;
+//    INT8U   LowerNonCritical;
+//    INT8U   LowerCritical;
+//    INT8U   LowerNonRecoverable;
+//    INT8U   UpperNonCritical;
+//    INT8U   UpperCritical;
+//    INT8U   UpperNonRecoverable;
+//
+//} PACKED SensorThresholds;
+//typedef struct
+//{
+//    int       buf_size;
+//    int       head;
+//    int       tail;
+//    int       is_full;
+//    INT8U*  p_buf;
+//
+//}PACKED RingBuf_T;
+//
+//typedef struct
+//{
+//    int BMCInst;
+//    int Len;
+//    char* Argument;
+//}PACKED BMCArg;
+//
+///*
+//typedef struct
+//{
+//    INT8S IfcName[IPMI_IFC_NAME_LEN];
+//    HQueue_T IfcQ;
+//}PACKED IPMIQueue_T;
+//*/
+//
+//typedef void (*pThreadFn_T) (pthread_t ThrdID);
+//
+//typedef struct
+//{
+//    INT8S IfcName[IPMI_IFC_NAME_LEN];
+//    pThreadFn_T      ThreadFn;
+//}PACKED ThreadPriority_T;
+//
+//typedef struct
+//{
+//    INT8U *pFlag;
+//    CHAR   SectionName[50];
+//}PACKED FlagInit_T;
+//
+//
+//typedef struct
+//{
+//    INT8S SectionName[MAX_SYMSEC_SIZE];
+//    INT8S SymbolName[MAX_SYMSEC_SIZE];
+//    INT8S IFCString[MAX_STR_LENGTH];
+//    INT8U ModuleType;
+//    INT8U Arg_NetFn;
+//    INT8U GroupExtCode;
+//    void* PrivateStore;
+//}PACKED IPMILibMetaInfo_T;
+//
+///*
+//typedef struct
+//{
+//    INT8U SendMsgTimeout;
+//    INT8U SessionTimeOut;
+//    INT8U SOLSessionTimeOut;
+//    INT8U PrimaryIPMBBusNumber;
+//    INT8U SecondaryIPMBBusNumber;
+//    INTU ChassisTimerInterval;
+//    INT8U EEPROMBusNum;
+//    INT8U AlterPreConfiguredEntries;
+//    INT8U ChassisInterruptSupport ;
+//    INT8U InterruptSensorHandling;
+//    INT8U EventsForRearm ;
+//    char *pSOLPort;
+//    char *pSerialPort;
+//    INT8U MaxSession;
+//    INT8U SDRAllocationSize;
+//    INT8U SELAllocationSize;
+//    INT8U BMCSlaveAddr;
+//    INT8U MaxUsers;
+//    INT8U MaxChUsers;
+//    INT8U PrimaryIPMBSupport ;
+//    INT8U SMMIfcSupport ;
+//    INT8U SerialIfcSupport ;
+//    INT8U SerialTerminalSupport;
+//    INT8U LANIfcSupport ;
+//    INT8U KCS1IfcSupport ;
+//    INT8U KCS2IfcSupport ;
+//    INT8U KCS3IfcSuppport ;
+//    INT8U SYSIfcSupport;
+//    INT8U SMBUSIfcSupport;
+//    INT8U ICMBIfcSupport ;
+//    INT8U SecondaryIPMBSupport ;
+//    INT8U MaxLanChannel ;
+//    INT8U KCSSMMChannel;
+//    INT8U USBIfcSupport ;
+//    INT8U SOLIfcSupport ;
+//    INT8U APMLSupport;
+//    INT8U DCMISupport ;
+//    INT8U HPMSupport;
+//    INT8U OPMASupport;
+//    INT8U GrpExtnSupport ;
+//    INT8U CardInFlashMode ;
+//    INT8U VLANIfcSupport;
+//    INT8U UDSIfcSupport;
+//    INT8U LinkDownResilentSupport;
+//    INT8U RearmSetSensorThreshold;
+//    INT8U APMLBusNumber;
+//    INT8U PrimaryIPMBAddr;
+//    INT8U SecondaryIPMBAddr;
+//    INT8U BTIfcSupport;
+//    INT8U ChassisTimerSupport;
+//    INT8U IPMIFirewallSupport;
+//    INT8U InternalPwrGoodMonitoring;
+//} IPMIConfig_T;
+//*/
+//
+//
+//typedef struct
+//{
+//    INT8U     MatchedEventSeverity;
+//    INT8U     AlertStr[ALERT_STR_MAX_BLOCKS* ALERT_STR_BLOCK_SIZE];
+//    INT16U   LANAlertSequence; /**< Contains Event severity from PEF configuration */
+//    INT32U         SpecificTrap; /* SNMP Specific Trap field */
+//    PEFTmrMgr_T    PEFTmrMgr;
+//    INT16U LastProcessedIDs[MAX_DEFERRED_ALERTS];
+//    pthread_mutex_t PEFSharedMemMutex;
+//} PEF_T;
+//
+//typedef struct
+//{
+//    INT16U DCMISamplingTimer;
+//    INT16U DCMITimer;
+//    INT16U DCMICurrentPower;
+//    INT16U DCMIMinPower;
+//    INT16U DCMIMaxPower;
+//    INT16U DCMIPrevPower;
+//    INT16U DCMIAvgPower;
+//    int FirstSample;
+//    INT8U   DCMIThermalTimer;
+//    INT8U   DCMIThermalFirstSample;
+//    INT8U   DCMICurrTempReading[MAX_TEMP_INSTANCE];
+//}DCMI_T;
+//
+//typedef struct
+//{
+//    INT16U  SelReservationID;
+//    INT32U  LastEvtTS;
+//    INT8U    SELLimit;
+//    INT16U  PartialAddRecordID;
+//    INT8U    PartialAddRecOffset;
+//    INT8U    PartialAdd;
+//    INT8U    SenMonSELFlag;
+//    INT16U  MaxSELRecord;
+//    INT8U    RsrvIDCancelled;
+//    BOOL SELOverFlow;
+//    SELEventRecord_T  SelPartialAddRecord;
+//    INT8U SELEventMsg [16];
+//    int selalmostfull;
+//    pthread_mutex_t SELMutex;
+//} SEL_T;
+//
+//typedef struct
+//{
+//    INT8U     SDRError;
+//    BOOL      UpdatingSDR;
+//    INT8U     UpdatingChannel;
+//    SDRRepositoryAllocInfo_T    RepositoryAllocInfo;
+//    SDRRepositoryInfo_T       RepositoryInfo;
+//    INT8U   TrackPOffset;
+//    INT16U  TrackRecID;
+//    INT16U  ReservationID;
+//    INT8U IPMB_Seqnum;
+//    INT8U     PartAddbytes;
+//    INT16U LatestRecordID;
+//    INT16U NumMarkedRecords;
+//    SDRRepository_T*   SDRRAM;
+//    pthread_mutex_t SDRMutex;
+//} SDR_T;
+///*
+//typedef struct
+//{
+//    INT8U    IPMBBusNum;
+//    INT8S    IPMBBusName[64];
+//    int  IPMBSlaveFd;
+//    int  IPMBMasterFd;
+//    INT8U	m_IPMBSeqNo;
+//
+//} IPMB_T;
+//*/
+//typedef struct
+//{
+//	INT8U   SerialPkt [MAX_SERIAL_PKT_SIZE];
+//	INT16U  SerialPktIx;
+//	INT16U  SerialPktLen;
+//	INT8U   CurState;
+//	INT8U   PrevByteEsc;
+//	INT8U   CurMode;
+//	int     serial_fd;
+//    INT32U  SerialSessionID;
+//	INT8U   SerialSessionActive;
+//    INT32U  TerminalSessionID;
+//    INT8U   SessionActivated;
+//	INT8U   TerminalPkt [MAX_SERIAL_PKT_SIZE];
+//	INT8U   TerminalPktIx;
+//	INT8U   TerminalIfc;
+//	BOOL    ErrCode;
+//	INT8U   ErrIndex;
+//    INT8U   TCurState;
+//	INT8U   TPrevByteEsc;
+//	INT8U   CursorPos;
+//    int     terminal_fd;
+//    INT8U   CurSwitchDir; //should sync in PDK_SwitchEMPMux, record the status of UART switch, MUX_2_BMC, MUX_2_SYS.
+//}SERIAL_T;
+//
+//typedef struct
+//{
+//    INT8U   GratArpCnt;
+//    INT8U   ArpSuspendReq;
+//    INT8U   SetInProgress;
+//    INT8U   TmrSet;
+//    INT8U   SelfTestByte;
+//    INT8U   ManufacturingTestOnMode;
+//    INT8U   WarmReset;
+//    INT8U   ColdReset;
+//    INT8U   BBlk;
+//    INT8U   ChassisControl; // = 0xFF;
+//    INT8U   ChassisIdentify;
+//    INT32U  ChassisIdentifyTimeout;
+//    INT8U   ChassisIdentifyForce;
+//    INT8U   FireWallRequired;// = TRUE;  //This Flag decides if firewall required on a specific channnel.
+//    //INT8U   CurKCSIfcNum;
+//    //INT8U   CurSessionType;
+//    //INT8U   MsgHndlrTblSize; // = 7;
+//    //INT8U   GroupExtnMsgHndlrTblSize;// = 0;
+//    //INT8U   TimerTaskTblSize;// = 7;
+//
+//} MSGHNDLR_T;
+//
+//typedef struct
+//{
+//    INT8U NMSupport;
+//    INT8U NM_IPMBBus;
+//    INT8U NMDevSlaveAddress;
+//}NMInfo_T;
+//
+//typedef struct
+//{
+//    INT8U   TmrSet;
+//}WDT_T;
+//
+//typedef struct
+//{
+//    INT16U NumThreshSensors;
+//    INT16U NumNonThreshSensors;
+//    int MonitorBusy;//=0;
+//    INT16U SensorMonitorLoopCount;
+//    bool  InitAgentRearm; // = FALSE;
+//    INT16U ValidSensorCnt;
+//    INT16U ValidSensorList[MAX_SENSOR_NUMBERS];
+//    HealthState_T  HealthState;
+//    INT32U PowerOnTick;
+//    INT32U SysResetTick;
+//    
+//} SENSOR_T;
+//
+//typedef struct
+//{
+//    volatile int    cts;
+//    int             sol_fd ;
+//    INT32U          cur_tick  ;
+//    INT8U           sol_retry ;
+//    INT8U			sol_ack_to_ticks;
+//    INT8U			send_char_threshold ;
+//    INT8U			send_char_timeout;
+//    int             SOLSessionActive;
+//    int	            activate_sol;
+//    int		        is_sending ;
+//    INT8U	        send_seq_num ;
+//    INT8U	        sent_char_count;
+//    INT32U	        last_sent_tick;
+//    INT32U	        first_byte_received_tick;
+//    int             retry   ;
+//    INT8U           MSVTEsc; /* contains escape bytes */
+//     INT8U recv_seq_num      ;
+//    INT8U recv_char_count   ;
+//    int   last_packet_nack    ;
+//    int   send_ack        ;
+//    INT8U ack_seq_num     ;
+//    INT8U   SOLBuf [MAX_SOL_DATA_SIZE + 4 + sizeof (LANRMCPPkt_T) + sizeof (SessionHdr2_T) + 32 + 100];
+//    int StopReadingSerialData;
+//    RingBuf_T  m_buf [2];
+//} SOL_T;
+//
+//typedef struct
+//{
+//    INT8S ifname[MAX_IFC_NAME];
+//    INT8U Chtype;
+//    INT8U Enabled;
+//    INT8U Chnum;
+//    INT8U Ethindex;
+//    INT8U Up_Status;
+//
+//}LANIFCConfig_T;
+//
+//
+//typedef struct
+//{
+//    SOCKET		UDPSocket[MAX_LAN_CHANNELS];
+//    INT8U		WaitCount;
+//    INT8U               UDPChannel[MAX_LAN_CHANNELS];
+//    INT8U               TCPChannel[MAX_LAN_CHANNELS];
+//    INT8U               VLANChannel[MAX_LAN_CHANNELS];
+//    SOCKET		VLANUDPSocket[MAX_LAN_CHANNELS];
+//    SOCKET              VLANTCPSocket[MAX_LAN_CHANNELS];
+//    INT16U		VLANID[MAX_LAN_CHANNELS];
+//    int			VLANIFcheckFlag[MAX_LAN_CHANNELS];
+//    int                     LANIFcheckFlag[MAX_LAN_CHANNELS];
+//    SOCKET		TCPSocket[MAX_LAN_CHANNELS];
+//    INT32U DeleteThisLANSessionID;
+//    MsgPkt_T     MsgReq;
+//    MsgPkt_T     MsgRes;
+//    INT8U HmacInBuf [MAX_HMAC_BUF_SIZE];
+//    INT8U SIK [SESSION_INTEGRITY_KEY_SIZE];
+//    HQueue_T  hVLANIfc_Info_Q;
+//    HQueue_T hLANMon_Q;
+//    INT8U g_ethindex;   /*ethindex which is used in pend task.*/
+//}LAN_T;
+//
+//typedef struct
+//{
+//  fd_set cfdread;
+//  SOCKET UDSSocket;
+//  HQueue_T UDSMon_Q;
+//}UDS_T;
+//
+//typedef struct
+//{
+//    INT8U		total_frus;
+//    INT8U       FRUInfo[MAX_PDK_FRU_SUPPORTED];
+//    FRUInfo_T	*m_FRUInfo[MAX_PDK_FRU_SUPPORTED];
+//    pthread_mutex_t FRUMutex;
+//}FRU_T;
+//
+//typedef struct
+//{
+//    INT32U CurTimerTick;
+//    INT32U BootValidTimerTick;
+//    INT32U MinutesTick;
+//}Timer_T;
+//
+//typedef struct
+//{
+//    INT32U UserInfoAddr;
+//    INT32U DcmicfgAddr;
+//    INT32U WDTDATAddr;
+//    INT32U PEFConfigAddr;
+//    INT32U ChassisConfigAddr;
+//    INT32U SMConfigAddr;
+//    INT32U BridgeMgmtAddr;
+//    INT32U SystemInfoConfigAddr;
+//    INT32U LANCfsAddr;
+//    INT32U RMCPPlusAddr;
+//    INT32U SOLCfgAddr;
+//    INT32U FFCmdConfigTblAddr;
+//    INT32U OPMAConfigAddr;
+//    INT32U SmtpConfigAddr;
+//    INT32U GenConfigAddr;
+//    INT32U ChConfigAddr;
+//    INT32U TriggerEventAddr;
+//    INT32U LoginAuditCfgAddr;
+//    INT32U AMIConfigAddr;
+//    INT32U IPMIConfLocAddr;
+//    INT32U SSIConfigAddr;
+//    INT32U VersionConfigAddr;
+//    INT32U EncUserPasswdAddr;
+//    INT32U LANIFCConfigAddr;
+//    INT32U BONDConfigAddr;
+//    INT32U PEFRecordDetailsConfigAddr;
+//}PACKED IPMICfgLoc_T;
+//
+//typedef int(*flushini)(int);
+//typedef int(*flushchini)(int,int);
+//
+//typedef struct
+//{
+//
+//    INT8U *IniconfigAddr;
+//
+//    flushini Flushini_Hndl;
+//    flushchini Flushchini_Hndl;
+//    INT8U Index;
+//}PACKED IPMIConfigMap_T;
+//
+///* The CDF(Configuration Device File) related structures configured using MDS should be 
+//     maintained in top of BMCInfo_t structure. The IPMI configuration version is maintained in
+//     IPMI_CONFIG_VERSION macro and the version number should be incremented in counts
+//     of '1' whenever there are changes in CDF files used in MDS and  in CDF related structures */
+///*
+//typedef struct
+//{
+//    VersionConfig_T VersionConfig;  //CDF structure
+//    ChassisConfig_T     ChassisConfig;   //CDF structure
+//    BridgeMgmtSHM_T     BridgeMgmt;   //CDF structure
+//    UserInfo_T UserInfo[MAX_USER_CFG_MDS];  //CDF structure
+//    WDTConfig_T         WDTConfig;       //CDF structure
+//    PEFConfig_T         PEFConfig;          //CDF structure
+//    SMConfig_T SMConfig;                    //CDF structure
+//    SystemInfoConfig_T   SystemInfoConfig;      //CDF structure
+//    LANConfig_T         LANCfs[MAX_LAN_CHANNELS];       //CDF structure
+//    RMCPPlus_T          RMCPPlus[MAX_LAN_CHANNELS];     //CDF structure
+//    SOLConfig_T         SOLCfg[MAX_LAN_CHANNELS];       //CDF structure
+//    FFCmdConfigTbl_T    FFCmdConfigTbl [MAX_FF_CMD_CFGS];   //CDF structure
+//    OPMA_Config_T  OPMAConfig;          //CDF structure
+//    Smtp_Config_T SmtpConfig[MAX_LAN_CHANNELS];     //CDF structure
+//    GENConfig_T GenConfig;          //CDF structure
+//    ChcfgInfo_T ChConfig[MAX_NUM_CHANNELS];     //CDF structure
+//    DCMICfg_T Dcmicfg;      //CDF structure
+//    LoginAuditConfig_T LoginAuditCfg;       //CDF structure
+//    TriggerEventCfg_T TriggerEvent;         //CDF structure
+//    AMIConfig_T AMIConfig;                      //CDF structure
+//    LANIFCConfig_T LanIfcConfig[MAX_LAN_CHANNELS];		 //CDF structure
+//    BondIface BondConfig;		 //CDF structure
+//    PEFRecordDetailsConfig_T PEFRecordDetailsConfig;		 //CDF structure
+//    char EthIndex[64];
+//    char EthIndexValues[64][64];
+//    char par_path[64];
+//    int    LANIfccount;
+//    INT8U *pStorageNVRAM;
+//    INT8U *pNVRUsrConfig;
+//    INT8U PrimaryIPMBCh;
+//    INT8U RMCPLAN1Ch ;
+//    INT8U RMCPLAN2Ch ;
+//    INT8U RMCPLAN3Ch ;
+//    INT8U RMCPLAN4Ch ;
+//    INT8U SecondaryIPMBCh;
+//    INT8U ICMBCh ;
+//    INT8U SMBUSCh ;
+//    INT8U SERIALch ;
+//    INT8U SMMCh ;
+//    INT8U SYSCh ;
+//    IPMIConfig_T IpmiConfig;
+//    INT8U *pNVRDCMICfg;
+//    SessionTblInfo_T SessionTblInfo;
+//    UDSSessionTblInfo_T UDSSessionTblInfo;
+//    BMCSharedMem_T BMCSharedMem;
+//    SensorSharedMem_T SensorSharedMem;
+//    SocketTbl_T  *pSocketTbl;
+//    SocketTbl_T  *pUDSocketTbl;
+//    PEF_T PefConfig;
+//    SEL_T SELConfig;
+//    SDR_T SDRConfig;
+//    IPMB_T IPMBConfig;
+//    SOL_T SOLConfig;
+//    LAN_T LANConfig;
+//    MSGHNDLR_T Msghndlr;
+//    SENSOR_T SenConfig;
+//    HAL_T HALConfig;
+//    FRU_T FRUConfig;
+//    UDS_T UDSConfig;
+//    SERIAL_T SerialConfig;
+//    DCMI_T DCMIConfig;
+//    NMInfo_T NMConfig;
+//    WDT_T WDTCfg;
+//    Timer_T TimerCfg;
+//    pthread_mutex_t BMCSharedMemMutex;
+//    pthread_mutex_t SensorSharedMemMutex;
+//    pthread_mutex_t CachSenReadMutex;
+//    pthread_mutex_t SessionTblMutex;
+//    pthread_mutex_t CCSharedMemMutex;
+//    pthread_mutex_t RestartcauseMutex;
+//    pthread_mutex_t hCTSharedMemLEDTmr;
+//    pthread_mutex_t hAPISharedMemMutex;
+//    pthread_mutex_t ResetSharedMemMutex;
+//    pthread_mutex_t m_hSMSharedMemMutex;
+//    pthread_mutex_t hWDTSharedMemMutex;
+//    pthread_mutex_t ThreadSyncMutex;
+//    pthread_mutex_t SMmutex;
+//    pthread_mutex_t CmdHndlrMutex;
+//    pthread_mutex_t PendBridgeMutex;
+//    pthread_mutex_t OBSMSharedMemMutex;
+//    pthread_mutex_t UDSSessionTblMutex;
+//    pthread_mutex_t UDSSocketTblMutex;
+//    pthread_mutex_t ChassisMutex;
+//    pthread_mutex_t EventMutex;
+//    pthread_mutex_t BMCMsgMutex;
+//    pthread_mutex_t ChUserMutex;
+//    sem_t WDTSem;
+//    int SetWDTUpdated;
+//    int WDTPreTmtStat;
+//    DynamicLoader_T g_DynamicInfoTable[MAX_DYNMC_TBL_COUNT];
+//    INT32U g_DynamicInfoTableCount ;
+//    //DynamicLoader_T DynamicInfoTable[100];
+//    //INT32U DynamicInfoTableCount ;
+//
+//    INT8U MsgHndlrTblSize;
+//    INT8U GroupExtnMsgHndlrTblSize;
+//    INT8U TimerTaskTblSize;
+//
+//
+//    MsgHndlrTbl_T MsgHndlrTbl[15];
+//    GroupExtnMsgHndlrTbl_T GroupExtnMsgHndlrTbl [10];
+//    TimerTaskTbl_T    TimerTaskTbl [20];
+//
+//    INT32U CurTimerTick;
+//    int kcsfd[3]; //Will be removed once fix is done in hal driver
+//    ChcfgInfo_T NVRChcfgInfo[MAX_NUM_CHANNELS];
+//    IPMICfgLoc_T IPMIConfLoc;
+//    Mgmt_T MgmtTbl[MAX_MGMT_DEV_LOC_REC];
+//    void * dlpar_handle;
+//    
+//    INT8U               InternalSensorTblSize;
+//    InternalSensorTbl_T InternalSensorTbl[INT_SENSOR_NUM];
+//
+//    //INT8U g_sol_ack_to_ticks;
+//    SSIConfig_T         SSIConfig;
+//    INT8U               SlotID;
+//    INT8U               IPMBAddr;
+//    INT8U    HostOFFStopWDT;    // This flag is set to TRUE, when Chassis is powered off
+//    INT8U    SendMsgSeqNum;
+//    EncryptedUserInfo_T EncryptedUserInfo[MAX_USER_CFG_MDS];
+//    pfunc g_PDKPARHandle[MAX_PDKPAR_HANDLE];
+//    IPMIConfigMap_T Ipmiconfigmap [MAX_IPMI_CONFIG_MAPS];
+//    SELReclaimRepository_T SELReclaimRepos;
+//    INT8U BridgeMsgKCSIfc;
+//} BMCInfo_t;
+//
+//*/
+//// extern BMCInfo_t g_BMCInfo[MAX_NUM_BMC];
+//
+///* MBMCInfo_t structure will hold the variables common for all the instances of BMC*/
+//typedef struct
+//{
+//    INT8U    PwdEncKey[MAX_SIZE_KEY];
+//    int flashpipereq;
+//    int sbmcinst;
+//    INT8U SrcSessionHndl;
+//    int FlashType;
+//}MBMCInfo_t;
+//
+//typedef struct
+//{
+//    pthread_key_t CurSessionID;
+//    pthread_key_t CurPrivLevel;
+//    pthread_key_t CurChannel;
+//    pthread_key_t CurKCSIfcNum;
+//    pthread_key_t CurSessionType;
+//    pthread_key_t OwnerLUN;
+//}TLS_T;
+//
+//typedef struct
+//{
+//    INT8U Action;
+//    INT8U Params;
+//    INT8U BMCInstance;
+//    INT8U Size;
+//}PACKED FlushToIni_T;
+//
+// typedef struct
+//{
+//    INT8U chno; // channel no
+//    int Privilege;
+//} ChannelPriv_t;
+//
+//typedef union{
+//	INT8U	blockData[66];
+//	struct {
+//		//header
+//		INT8U		logIndex;
+//		INT8U		Reserve1[15];
+//		//log data
+//		INT16U	MarkAddr;
+//		INT8U		LRU_LRM;		//0x00
+//		INT8U		Index;
+//		char		Log[32];
+//		INT16U	Year;
+//		INT8U		Month;
+//		INT8U		Day;
+//		INT8U		Hour;
+//		INT8U		Minute;
+//		INT8U		Second;
+//		INT8U		Reserve2;
+//		
+//		INT8U		ChipNum;
+//		INT8U		ErrorLevel;
+//		INT8U		ErrorType;
+//		INT8U		SourceNum;
+//		INT16U	SourceLine;
+//	} PACKED logStruct;
+//}	PACKED RunLogBlock_T;
+//
+//extern ChannelPriv_t g_ChannelPrivtbl[MAX_NUM_CHANNELS];
+//extern char PlatformID [MAX_PLATFORMID_SIZE];
+//extern INT32U IPMITimeout;
+////extern CoreFeatures_T g_corefeatures;
+////extern CoreMacros_T g_coremacros;
+//extern char  g_FlashingImage;
+////extern MBMCInfo_t g_MBMCInfo;
+//extern TLS_T g_tls;
+//
+//extern int FlushWDT(int BMCInst);
+//extern int FlushPEF(int BMCInst);
+//extern int FlushPEFRecordDetails(int BMCInst);
+//extern int FlushChassis(int BMCInst);
+//extern int FlushSerial(int BMCInst);
+//extern int FlushBridge(int BMCInst);
+//extern int FlushSysInfo(int BMCInst);
+//extern int FlushLAN(int BMCInst,int ChIndex);
+//extern int FlushRMCP(int BMCInst,int ChIndex);
+//extern int FlushSOL(int BMCInst,int ChIndex);
+//extern int FlushFirewall(int BMCInst);
+//extern int FlushOPMA(int BMCInst);
+//extern int FlushSMTP(int BMCInst,int ChIndex);
+//extern int FlushGEN(int BMCInst);
+//extern int FlushCHANNEL(int ChNum,int BMCInst);
+//extern int FlushUSRCFG(int BMCInst);
+//extern int FlushDCMICFG(int BMCInst);
+//extern int FlushTRIGGEREVTCFG(int BMCInst);
+//extern int FlushLOGINAUDITCFG(int BMCInst);
+//extern int FlushAMIConfig(int BMCInst);
+//extern int FlushSSIConfig(int BMCInst);
+//extern int FlushVersionConfig(int BMCInst);
+//extern int FlushEncUsrPswdCfg(int BMCInst);
+//extern int FlushLANIfcConfig(int BMCInst);
+//extern int FlushBondCfg(int BMCInst);
+// /**
+// *@fn InitIPMIConfig
+// *@brief This function is invoked to get the IPMI Configurations
+// *@return Returns 0 on success
+// */
+// extern  int InitIPMIConfig (int BMCInst);\
+// int InstallSignal(int SigNum,void (*sighandler)(int sig));
+// extern IPMIQueue_T g_IPMIIfcQueue[MAX_IPMI_IFCQ];
+//
+// void setRunlog(RunLogBlock_T* RunLogBlock, int BMCInst);
+// void getOldestLogBlockIndex(int mtdfd, INT32U startAddr, INT32U logBlockSize, INT8U* newLogIndex, INT8U* oldestBlockIndex);
+//
+// //unsigned long oem_crc32 (unsigned long, const unsigned char *, unsigned int);
+// 
+// extern OEM_FLAGS_T oem_flags;
+////extern RunLogBlock_T	RunLogBlock;
+//
+//#endif //_IPMIConf_H
+//
+//
+//

+ 278 - 0
app/bmc_server/ipmi_dev/IPMIDefs.h

@@ -0,0 +1,278 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ ****************************************************************
+ ******************************************************************
+ *
+ * ipmi_defs.h
+ * IPMI Definitions
+ *
+ *  Author: Govind Kothandapani <govindk@ami.com>
+ *
+ ******************************************************************/
+#ifndef  IPMI_DEFS_H
+#define IPMI_DEFS_H
+#include "Types.h"
+
+/*------- Net Functions  -------------------*/
+#define NETFN_CHASSIS                     0x00
+#define NETFN_BRIDGE                      0x02
+#define NETFN_SENSOR                      0x04
+#define NETFN_APP                         0x06
+#define NETFN_FIRMWARE                    0x08
+#define NETFN_STORAGE                     0x0A
+#define NETFN_TRANSPORT                   0x0C
+#define NETFN_PICMG                       0x2C
+#define NETFN_AMI                         0x32
+#define NETFN_OEM                         0x2E
+#define NETFN_OPMA1                       0x30
+#define NETFN_OPMA2                       0x3E
+#ifdef  CFG_PROJ_SHMC_TEST_SUPPORT_YES
+#define NETFN_TEST_OEM                    0x34
+#endif
+
+#define NETFN_UNKNOWN                     0xFF
+#define IPMI_CMD_UNKNOWN                  0xFF
+
+#define NETFN_GROUP_EXTN                  0x2C
+#define IPMI_GROUP_EXTN_CODE_DCMI         0xDC
+
+#define MAX_USER_NAME_LEN                 (16+1) //+1 for null terminator
+#define IP6_ADDR_LEN                      16
+
+/**** Command Completion Codes ****/
+#define CC_NORMAL                                       0x00
+#define CC_SUCCESS                                      0x00
+#define CC_NODE_BUSY                                    0xC0
+#define CC_INV_CMD                                      0xC1
+#define CC_INV_CMD_FOR_LUN                              0xC2
+#define CC_TIMEOUT                                      0xC3
+#define CC_OUT_OF_SPACE                                 0xC4
+#define CC_INV_RESERVATION_ID                           0xC5
+#define CC_REQ_TRUNCATED                                0xC6
+#define CC_REQ_INV_LEN                                  0xC7
+#define CC_REQ_FIELD_LEN_EXCEEDED                       0xC8
+#define CC_PARAM_OUT_OF_RANGE                           0xC9
+#define CC_CANNOT_RETURN_REQ_BYTES                      0xCA
+#define CC_SEL_REC_NOT_PRESENT                          0xCB
+#define CC_SDR_REC_NOT_PRESENT                          0xCB
+#define CC_FRU_REC_NOT_PRESENT                          0xCB
+#define CC_INV_DATA_FIELD                               0xCC
+#define CC_ILLEGAL_CMD_FOR_SENSOR_REC                   0xCD
+#define CC_COULD_NOT_PROVIDE_RESP                       0xCE
+#define CC_CANNOT_EXEC_DUPL_REQ                         0xCF
+#define CC_SDR_REP_IN_UPDATE_MODE                       0xD0
+#define CC_DEV_IN_FIRMWARE_UPDATE_MODE                  0xD1
+#define CC_INIT_AGENT_IN_PROGRESS                       0xD2
+#define CC_DEST_UNAVAILABLE                             0xD3
+#define CC_INSUFFIENT_PRIVILEGE                         0xD4
+#define CC_PARAM_NOT_SUP_IN_CUR_STATE                   0xD5
+#define CC_ERR_HANDLING_COMMAND_FAILURE                 0xD6
+#define CC_UNSPECIFIED_ERR                              0xFF
+#define CC_GET_MSG_QUEUE_EMPTY                          0x80
+#define CC_EVT_MSG_QUEUE_EMPTY                          0x80
+#define CC_GET_SESSION_INVALID_USER                     0x81
+#define CC_GET_SESSION_NULL_USER_DISABLED               0x82
+#define CC_ACTIVATE_SESS_NO_SESSION_SLOT_AVAILABLE      0x81
+#define CC_ACTIVATE_SESS_NO_SLOT_AVAILABLE_USER         0x82
+#define CC_ACTIVATE_SESS_REQ_LEVEL_EXCEEDS_LIMIT        0x83
+#define CC_ACTIVATE_SESS_SEQ_OUT_OF_RANGE               0x84
+#define CC_ACTIVATE_SESS_INVALID_SESSION_ID             0x85
+#define CC_ACTIVATE_SESS_MAX_PRIVILEGE_EXCEEDS_LIMIT    0x86
+#define CC_PASSWORD_TEST_FAILED                         0x80
+#define CC_PASSWORD_TEST_FAILED_WRONG_SIZE              0x81
+#define CC_SETPASSWORD_INVALID_USERID                   0x81
+#define CC_SETPASSWORD_CANNOT_DISABLE_USER              0x82
+#define CC_NO_ACK_FROM_SLAVE                            0x83
+#define CC_GET_CH_COMMAND_NOT_SUPPORTED                 0x82
+#define CC_SET_CH_COMMAND_NOT_SUPPORTED                 0x82
+#define CC_SET_CH_ACCES_MODE_NOT_SUPPORTED              0x83
+#define CC_SET_SESS_PREV_REQ_LEVEL_NOT_AVAILABLE        0x80
+#define CC_SET_SESS_PREV_REQ_PRIVILEGE_EXCEEDS_LIMIT    0x81
+#define CC_SET_SESS_PREV_INVALID_SESSION_ID             0x82
+#define CC_ACTIVATE_SESS_NO_SLOT_AVAILABLE_USER         0x82
+#define CC_CLOSE_INVALID_SESSION_ID                     0x87
+#define CC_CLOSE_INVALID_SESSION_ID_HANDLE              0x88
+#define CC_PEF_PARAM_NOT_SUPPORTED                      0x80
+#define CC_PEF_SET_IN_PROGRESS                          0x81
+#define CC_SESSION_IN_PROGRESS                          0x82
+#define CC_PEF_ATTEMPT_TO_SET_READ_ONLY_PARAM           0x82
+#define CC_SET_IN_PROGRESS                              0x81
+#define CC_ATTEMPT_TO_SET_RO_PARAM                      0x82
+#define CC_PARAM_NOT_SUPPORTED                          0x80
+#define CC_BIOS_NOT_READY                               0x82
+#define CC_IFC_NOT_SUPPORTED                            0x81
+#define CC_DISABLE_SM                                   0x81
+#define CC_BIOS_IS_BUSY                                 0x81
+#define CC_CMD_UNSUPPORTED_UNCONFIGURABLE               0x80
+#define CC_NTP_RESTART_ERROR                            0x80
+
+#define CC_CALLBACK_REJ_SESSION_ACTIVE                  0x82
+#define CC_WRITE_ONLY_PARAM                             0x83
+
+#define CC_INST_ALREADY_ACTIVE                          0x80
+#define CC_CANNOT_ACTIVATE_WITH_ENCR                    0x83
+#define CC_PAYLOAD_NOT_ENABLED                          0x81
+#define CC_INST_EXCEEDED                                0x82
+#define CC_INST_ALREADY_INACTIVE                        0x80
+#define CC_PAYLOAD_NOT_AVAILABLE                        0x80
+#define CC_ENCRYPT_NOT_AVAILABLE                        0x82
+#define CC_INST_NOT_ACTIVE                              0x83
+#define CC_KEYS_LOCKED                                  0x80
+#define CC_INSUF_KEY_BYTES                              0x81
+#define CC_TOO_MANY_KEY_BYTES                           0x82
+#define CC_KEY_MISMATCH                                 0x83
+
+#define CC_INVALID_KEY                                  0x80
+
+#define CC_OP_NOT_SUPPORTED                             0x80
+#define CC_OP_NOT_ALLOWED                               0x81
+#define CC_ENC_NOT_AVAILABLE                            0x82
+#define CC_CANNOT_ACTIVATE_WITH_ENCR                    0x83
+#define CC_CANNOT_ACTIVATE_WITHOUT_ENCR                 0x84
+
+#define CC_ATTEMPT_TO_RESET_UNIN_WATCHDOG               0x80
+
+#define CC_ILLEGAL_CONNECTOR_ID                         0x81
+#define CC_SEL_ERASE_IN_PROGRESS                        0x81
+
+#define CC_SAME_PAM_ORDER                               0x90
+#define CC_PAM_ORDER_SEC_DIFERS                         0x91
+#define CC_PAM_ORDER_FILE_DIFERS                        0x92
+
+#define CC_INSUFFICIENT_SLAVE_COUNT                     0x84
+#define CC_IFC_ALREADY_SLAVEDTO_BOND                    0x85
+#define CC_BOND_DISABLED_TOCONF_DNS                     0x86
+#define CC_DNS_CURRENTLY_NOT_SUPPORTED_FOR_IPV6         0x87
+#define CC_INV_DOMAIN_NAME                              0x88
+#define CC_TSIGPRIVATEKEY_VALIDATION_FAILED             0x89
+#define CC_DNS_CURRENTLY_NOT_ENABLED                    0x90
+
+#define CC_NULL_USERID_NOT_SUPPORTED                    0x80
+
+#define CC_DEVICE_NOT_SUPPORTED                         0X80
+#define CC_INCOMPLETE_WRITTEN_BYTES			0x80
+
+/* Completion code for Set system info parameter command */
+#define CC_SYS_INFO_PARAM_NOT_SUPPORTED                 0x80
+#define CC_SYS_INFO_SET_IN_PROGRESS                     0x81
+#define CC_SYS_INFO_READ_ONLY_PARAM                     0x82
+#define IPMI_EVM_REVISION                               0x04
+#define IPMI_SENSOR_TEMP_TYPE                           0x01
+#define IPMI_SENSOR_VOLT_TYPE                           0x02
+#define IPMI_SENSOR_FAN_TYPE                            0x04
+#define IPMI_SENSOR_PHYSICAL_SECURITY_TYPE              0x05
+#define IPMI_SENSOR_POWER_SUPPLY_TYPE                   0x08
+#define IPMI_SENSOR_MEMORY_TYPE                         0x0C
+#define IPMI_SENSOR_DRIVE_TYPE                          0x0D
+#define IPMI_SENSOR_BUTTON_TYPE                         0x14
+#define IPMI_SENSOR_ENTITY_PRESENCE_TYPE                0x25
+#define IPMI_SENSOR_OEM_TYPE                            0xC0
+
+/******************OEM Completion codes*********************/
+#define OEMCC_INVALID_USERNAME                          0x01
+#define OEMCC_PASSWD_MISMATCH                           0x02
+#define OEMCC_INVALID_PASSWD                            0x03
+#define OEMCC_DUPLICATE_USERNAME                        0x04
+#define OEMCC_USER_EXISTS_AT_SLOT                       0x05
+#define OEMCC_NOMEM                                     0x06
+#define OEMCC_FILE_ERR                                  0x07
+#define OEMCC_SSHKEY_UPDATE_FAILURE                     0x08
+#define OEMCC_SENSOR_DISABLED                           0x09
+#define OEMCC_INVALID_SDR_ENTRY                         0x0a
+#define OEMCC_CORRUPT_FLASH_DATA                        0x0b
+#define OEMCC_CORRUPT_DATA_CHKSUM                       0x0c
+#define OEMCC_FLASH_UPGRADE_FAILURE                     0x0d
+#define OEMCC_VERSION_MISMATCH                          0x0e
+#define OEMCC_USER_NOT_EXISTS                           0x0f
+
+#define OEMCC_SAL_INVALID_TARGET                        0x0f //CMM sal completion code
+
+#define OEMCC_EMAIL_NOT_CONFIGURED                      0x10
+#define OEMCC_SMTP_DISABLED                             0x11
+#define OEMCC_UNSUPPORTED_AUTH_TYPE                     0x12
+#define OEMCC_SEND_EMAIL_AUTH_FAILED                    0x13
+#define OEMCC_UNABLE_TO_CONNECT_SMTPSERVER              0x14
+#define OEMCC_SEND_EMAIL_FAILED                         0x15
+#define OEMCC_USER_DISABLED                             0x16
+#define OEMCC_RESERVED_USER_NAME                        0x17
+#define OEMCC_INSUFFIENT_LANIFC_COUNT                   0x80
+#define OEMCC_UNSUPPORTED_BOND_MODE                     0x81
+#define OEMCC_VLAN_ENABLED_ON_SLAVE                     0x82
+#define OEMCC_BOND_ALREADY_DISABLED     0x83
+#define OEMCC_INV_PARAM_ONLY_FOR_NON_BONDING            0x81
+#define OEMCC_INV_IP4_NOT_ENABLED                       0x82
+#define OEMCC_INV_MIN_IFC_COUNT_DISABLED                0x83
+#define OEMCC_BOND_NOT_ENABLED                          0x80
+#define OEMCC_ACTIVE_SLAVE_LINK_DOWN                    0x81
+#define OEMCC_ETH_IFACE_DISABLED                        0x85
+#define OEMCC_SEL_EMPTY_REPOSITORY                      0x86
+#define OEMCC_SEL_CLEARED                               0x85
+#define OEMCC_SENSOR_INFO_EMPTY                         0x87
+
+#define OEMCC_ATTEMPT_TO_GET_WO_PARAM                   0x82
+
+#define CC_POWER_LIMIT_OUT_OF_RANGE                     0x84
+#define CC_CORRECTION_TIME_OUT_OF_RANGE                 0x85
+#define CC_STAT_REPORTING_OUT_OF_RANGE                  0x89
+
+#define CC_THERMAL_LIMIT_OUT_OF_RANGE                   0x84
+#define CC_THERMAL_EXCEPTION_TIME_OUT_OF_RANGE          0x85
+
+#define OEMCC_INV_DATE_TIME                             0x93
+/* HPM related Completion codes */
+#define CC_UPG_NOT_SUPPORTED_OVER_IFC                   0x81
+#define CC_INV_COMPONENT_ID                             0x82
+#define CC_INV_COMPONENT_PROP_SELECTOR                  0x83
+#define CC_INV_COMPONENT                                0x81
+#define CC_IMAGE_LEN_MISMATCH                           0x81
+#define CC_INV_FW_CHECKSUM                              0x82
+#define CC_IMAGE_NOT_MATCH                              0x83
+#define CC_UPG_NOT_ABORTED_AT_THIS_MOMENT               0x80
+#define CC_UPG_ABORTED_FW_NOT_RESUMABLE                 0x81
+#define CC_CMD_INPROGRESS                               0x80
+/* Remote Images Service completion code*/
+#define CC_SERVICE_NOT_ENABLED              0x90
+#define CC_INVALID_MEDIA_TYPE               0x91
+#define CC_INVALID_SHARE_TYPE               0x92
+#define CC_INVALID_IP_ADDR                  0x93
+#define CC_INVALID_COMMAND                  0x94
+#define CC_INVALID_IMAGE_FILE_NAME          0x95
+#define CC_INVALID_DOMAIN                   0x96
+#define CC_INVALID_CONFIGURATION            0x97
+#define CC_INVALID_IMG_PATH                 0x98
+#define CC_INVALID_USR_NAME                 0x99
+#define CC_INVALID_PASSWD                   0x9A
+#define CC_INVALID_BLOCK_SELECTOR              0x9B
+#define CC_INV_PROGRESS_BIT              0x9C
+#define CC_PROGRESS_BIT_NOT_SET              0x9D
+#define CC_PUBLICKEY_VALIDATION_FAILED          0x80
+
+/*Host Lock Feature*/
+#define CC_FEATURE_NOT_ENABLED          0x80
+#define CC_INV_FEATURE_CMD          0x81
+#define CC_INV_LOCK_CMD          0x82
+/*--------------------------------------------
+ * Macro to extract the net function.
+ *--------------------------------------------*/
+#define NET_FN(NetFnLUN)	((INT8U)((NetFnLUN & 0xFC) >> 2))
+
+#define _fmemcpy memcpy
+#define _fmemcmp memcmp
+#define _fmemset memset
+#define _fstrcpy strcpy
+#define _fstrlen strlen
+#define _fstrcat strcat
+#define _fstrcmp strcmp
+
+#endif	/* IPMI_DEFS_H */

+ 246 - 0
app/bmc_server/ipmi_dev/IPMI_AMI.h

@@ -0,0 +1,246 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ ****************************************************************
+ *
+ * IPMI_AMI.h
+ * AMI specific IPMI Commands
+ *
+ * Author: Basavaraj Astekar <basavaraja@ami.com>
+ *
+ *****************************************************************/
+#ifndef IPMI_AMI_H_
+#define IPMI_AMI_H_
+
+/*Zone Name Length
+#define TIME_ZONE_LEN   64
+#define TIMEZONE_OFFSET_PVE  "Etc/GMT+"
+#define TIMEZONE_OFFSET_NVE  "Etc/GMT-"
+
+#ifdef __GNUC__
+#define PACKED __attribute__ ((packed))
+#else
+#define PACKED
+#pragma pack( 1 )
+#endif*/
+/**
+*@sturct AMIGetChNumRes_T
+*@brief Structure to get respective channel num
+*           for non BMC related Sensor Owner IDs
+*
+typedef struct
+{
+    INT8U CompletionCode;
+    INT8U ChannelNum;
+
+}PACKED AMIGetChNumRes_T;
+*/
+/**
+*@struct AMIGetEthIndexReq_T
+*@brief Structure to get respective Channel Num
+*
+typedef struct
+{
+
+    INT8U ChannelNum;
+
+}PACKED AMIGetEthIndexReq_T;
+*/
+/**
+*@struct AMIGetEthIndexRes_T
+*@brief Structure to hold the respective EthIndex
+*            for the requested Channel Num
+*/
+/*
+typedef struct
+{
+
+    INT8U CompletionCode;
+    INT8U EthIndex;
+
+}PACKED AMIGetEthIndexRes_T;
+
+#ifdef __GNUC__
+#else
+#define PACKED
+#pragma pack(  )
+#endif
+*/
+/* AMI Net function group command numbers */
+
+/* define your command numbers here */
+
+#define CMD_AMI_YAFU_COMMON_NAK (0X00FF)
+#define CMD_AMI_YAFU_GET_FLASH_INFO  (0x0001)
+#define CMD_AMI_YAFU_GET_FIRMWARE_INFO (0x0002)
+#define CMD_AMI_YAFU_GET_FMH_INFO (0x0003)
+#define CMD_AMI_YAFU_GET_STATUS (0x0004)
+#define CMD_AMI_YAFU_ACTIVATE_FLASH (0x0010)
+#define CMD_AMI_YAFU_ALLOCATE_MEMORY (0x0020)
+#define CMD_AMI_YAFU_FREE_MEMORY (0x0021)
+#define CMD_AMI_YAFU_READ_FLASH (0x0022)
+#define CMD_AMI_YAFU_WRITE_FLASH (0x0023)
+#define CMD_AMI_YAFU_ERASE_FLASH (0x0024)
+#define CMD_AMI_YAFU_PROTECT_FLASH (0x0025)
+#define CMD_AMI_YAFU_ERASE_COPY_FLASH (0x0026)
+#define CMD_AMI_YAFU_VERIFY_FLASH (0x0027)
+#define CMD_AMI_YAFU_GET_ECF_STATUS (0x0028)
+#define CMD_AMI_YAFU_GET_VERIFY_STATUS (0x0029)
+#define CMD_AMI_YAFU_READ_MEMORY (0x0030)
+#define CMD_AMI_YAFU_WRITE_MEMORY (0x0031)
+#define CMD_AMI_YAFU_COPY_MEMORY (0x0032)
+#define CMD_AMI_YAFU_COMPARE_MEMORY (0x0033)
+#define CMD_AMI_YAFU_CLEAR_MEMORY (0x0034)
+#define CMD_AMI_YAFU_GET_BOOT_CONFIG (0x0040)
+#define CMD_AMI_YAFU_SET_BOOT_CONFIG (0x0041)
+#define CMD_AMI_YAFU_GET_BOOT_VARS (0x0042)
+#define CMD_AMI_YAFU_DEACTIVATE_FLASH_MODE (0x0050)
+#define CMD_AMI_YAFU_RESET_DEVICE (0x0051)
+#define CMD_AMI_YAFU_SWITCH_FLASH_DEVICE	(0x0052)
+#define CMD_AMI_YAFU_RESTORE_FLASH_DEVICE	(0x0053)
+#define CMD_AMI_YAFU_DUAL_IMAGE_SUP (0x0054)
+#define CMD_AMI_YAFU_FIRMWARE_SELECT_FLASH  (0x0055)
+
+
+#define CMD_AMI_GET_CHANNEL_NUM (0x60)
+#define CMD_AMI_GET_ETH_INDEX (0x62)
+
+#define CMD_AMI_GET_EMAIL_USER	(0x63)
+#define CMD_AMI_SET_EMAIL_USER	(0x64)
+#define CMD_AMI_RESET_PASS	(0x65)
+#define CMD_AMI_RESTORE_DEF	(0x66)
+#define CMD_AMI_GET_LOG_CONF	(0x67)
+#define CMD_AMI_SET_LOG_CONF	(0x68)
+
+/* AMI Specific Extend Commands */
+#define CMD_AMI_GET_SERVICE_CONF    (0x69)
+#define CMD_AMI_SET_SERVICE_CONF    (0x6a)
+#define CMD_AMI_GET_DNS_CONF        (0x6b)
+#define CMD_AMI_SET_DNS_CONF        (0x6c)
+
+#define CMD_AMI_LINK_DOWN_RESILENT (0x70)
+
+#define CMD_AMI_SET_IFACE_STATE (0x71)
+#define CMD_AMI_GET_IFACE_STATE (0x72)
+
+#define CMD_AMI_GET_BIOS_CODE       (0x73)
+
+// DNS v6 commands */
+#define CMD_AMI_GET_V6DNS_CONF        (0x74)
+#define CMD_AMI_SET_V6DNS_CONF        (0x75)
+
+#define CMD_AMI_SET_FIREWALL		(0x76)
+#define CMD_AMI_GET_FIREWALL		(0x77)
+
+#define CMD_SET_SMTP_CONFIG_PARAMS              ( 0x78 )
+#define CMD_GET_SMTP_CONFIG_PARAMS              ( 0x79 )
+
+//FRU details
+#define CMD_AMI_GET_FRU_DETAILS		(0x80)
+#define CMD_AMI_GET_EMAILFORMAT_USER (0x81)
+#define CMD_AMI_SET_EMAILFORMAT_USER	(0x82)
+
+//Linux Root User Access Commands
+#define CMD_AMI_GET_ROOT_USER_ACCESS	(0x90)
+#define CMD_AMI_SET_ROOT_PASSWORD	    (0x91)
+
+//Set User Shelltype
+#define CMD_AMI_GET_USER_SHELLTYPE	(0x92)
+#define CMD_AMI_SET_USER_SHELLTYPE	(0x93)
+
+/* Trigger Event Configuration Command Numbers */
+#define CMD_AMI_SET_TRIGGER_EVT    (0x94)
+#define CMD_AMI_GET_TRIGGER_EVT    (0x95)
+
+/* SOL Configuration Command Numbers */
+#define CMD_AMI_GET_SOL_CONFIG_PARAMS    (0x96)
+
+/* Login Audit Config Command Numbers */
+#define CMD_AMI_SET_LOGIN_AUDIT_CFG    (0x97)
+#define CMD_AMI_GET_LOGIN_AUDIT_CFG    (0x98)
+#define CMD_AMI_GET_IPV6_ADDRESS       (0x99)
+
+/* IPMI PAM Reordering Command */
+#define CMD_AMI_SET_PAM_ORDER        0x7a
+#define CMD_AMI_GET_PAM_ORDER        0x7b
+
+/* AMI-SNMP related Commands*/
+#define CMD_AMI_GET_SNMP_CONF 0x7c
+#define CMD_AMI_SET_SNMP_CONF 0x7d
+
+/* AMI SEL Commands */
+#define CMD_AMI_GET_SEL_POLICY  0x7e
+#define CMD_AMI_SET_SEL_POLICY  0x7f
+
+/* AMI-Preserve Conf related Commands*/
+#define CMD_AMI_SET_PRESERVE_CONF       0x83
+#define CMD_AMI_GET_PRESERVE_CONF       0x84
+
+/* Retrive SEL Entries Command */
+#define CMD_AMI_GET_SEL_ENTIRES 0x85
+
+/* Retrive Sensor Info Command*/
+#define CMD_AMI_GET_SENSOR_INFO 0x86
+
+/* TFTP FW Update Commands */
+#define CMD_AMI_START_TFTP_FW_UPDATE		0x87
+#define CMD_AMI_GET_TFTP_FW_PROGRESS_STATUS	0x88
+#define CMD_AMI_SET_FW_CONFIGURATION		0x89
+#define CMD_AMI_GET_FW_CONFIGURATION		0x8A
+#define CMD_AMI_SET_FW_PROTOCOL			0x8B
+#define CMD_AMI_GET_FW_PROTOCOL			0x8C
+
+#define CMD_AMI_GET_IPMI_SESSION_TIMEOUT	0x8D
+#define CMD_AMI_GET_UDS_CHANNEL_INFO	    0x8E
+#define CMD_AMI_DUAL_IMG_SUPPORT            0x8F
+#define CMD_AMI_GET_UDS_SESSION_INFO	    0x9A
+#define CMD_AMI_SET_PWD_ENCRYPTION_KEY		0x9B
+
+/* Set the U-boot Memtest Variable and Get Memtest Status*/
+#define CMD_AMI_SET_UBOOT_MEMTEST       0x9C
+#define CMD_AMI_GET_UBOOT_MEMTEST_STATUS        0x9D
+
+/* Remote Images service Commands */
+#define CMD_AMI_GET_RIS_CONF    (0x9E)
+#define CMD_AMI_SET_RIS_CONF    (0x9F)
+#define CMD_AMI_RIS_START_STOP (0xA0)
+#define CMD_AMI_CTL_DBG_MSG       0xA1
+#define CMD_AMI_GET_DBG_MSG_STATUS 0xA2
+#define CMD_AMI_SET_EXTENDED_PRIV                   0xA3
+#define CMD_AMI_GET_EXTENDED_PRIV                   0xA4
+/*Macro's are used to set and get the TimeZone*/
+#define CMD_AMI_SET_TIMEZONE         0xA5
+#define CMD_AMI_GET_TIMEZONE         0xA6
+
+/* AMI-Preserve All Conf related Commands*/
+#define CMD_AMI_SET_ALL_PRESERVE_CONF   0xBA
+#define CMD_AMI_GET_ALL_PRESERVE_CONF   0xBB
+
+#define CMD_AMI_GET_NTP_CFG          0xA7
+#define CMD_AMI_SET_NTP_CFG          0xA8
+#define CMD_AMI_YAFU_SIGNIMAGEKEY_REPLACE          0xA9
+/**Enable/DISable the Virual Dvices*/
+#define CMD_AMI_VIRTUAL_DEVICE_SET_STATUS		0xAA
+#define CMD_AMI_VIRTUAL_DEVICE_GET_STATUS		0xAB
+
+#define CMD_AMI_GET_LICENSE_VALIDITY                    0XAD
+#define CMD_AMI_ADD_LICENSE_KEY                         0XAC
+/* Host Lock Monitor Status Get and Set*/
+#define CMD_AMI_GET_HOST_LOCK_FEATURE_STATUS		0xAE
+#define CMD_AMI_SET_HOST_LOCK_FEATURE_STATUS		0xAF
+#define CMD_AMI_GET_HOST_AUTO_LOCK_STATUS		0xBC
+#define CMD_AMI_SET_HOST_AUTO_LOCK_STATUS		0xBD
+#define CMD_AMI_GET_CHANNEL_TYPE      0xBE 
+
+#endif /* IPMI_AMI_H */
+

+ 46 - 0
app/bmc_server/ipmi_dev/IPMI_AMIBiosCode.h

@@ -0,0 +1,46 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        5555 Oakbrook Pkwy, Building 200, Norcross,         **
+ **                                                            **
+ **        Georgia 30093, USA. Phone-(770)-246-8600.           **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************/
+/*****************************************************************
+ *
+ * IPMI_AMIBiosCode.h
+ * 
+ *
+ * Author: Gokulakannan. S <gokulakannans@amiindia.co.in>
+ *****************************************************************/
+
+
+#ifndef IPMI_AMIBIOSCODE_H_
+#define IPMI_AMIBIOSCODE_H_
+
+#define MAX_SIZE 256
+
+#define CURRENT     0x00
+#define PREVIOUS    0x01
+
+#pragma pack (1)
+
+typedef struct
+{
+    INT8U Command;
+} PACKED AMIGetBiosCodeReq_T;
+
+typedef struct
+{
+    INT8U CompletionCode;
+    INT8U BiosCode[MAX_SIZE];
+} PACKED AMIGetBiosCodeRes_T;
+
+#pragma pack ()
+
+#endif /* IPMI_AMIBIOSCODE_H_ */

+ 737 - 0
app/bmc_server/ipmi_dev/IPMI_AMIConf.h

@@ -0,0 +1,737 @@
+/*****************************************************************
+******************************************************************
+***                                                            ***
+***        (C)Copyright 2010, American Megatrends Inc.         ***
+***                                                            ***
+***                    All Rights Reserved                     ***
+***                                                            ***
+***       5555 Oakbrook Parkway, Norcross, GA 30093, USA       ***
+***                                                            ***
+***                     Phone 770.246.8600                     ***
+***                                                            ***
+******************************************************************
+******************************************************************
+******************************************************************
+*
+* IPMI_AMIConf.h
+* AMI specific configuration commands
+*
+* Author: Benson Chuang <bensonchuang@ami.com.tw>
+*
+******************************************************************/
+
+#ifndef __IPMI_AMICONF_H__
+#define __IPMI_AMICONF_H__
+
+#include <Types.h>
+#include "nwcfg.h"
+#include "Iptables.h"
+#include "IPMI_LANConfig.h"
+#include "IPMI_AppDevice.h"
+//#include "IPMI_SDRRecord.h"
+
+
+
+/* Network Interface EnableState */
+#define  DISABLE_V4_V6 0x00
+#define  ENABLE_V4     0x01
+#define  ENABLE_V6     0x02
+#define  ENABLE_V4_V6  0x03
+
+#define  GET_CMD_MODE  0x00 
+#define  SET_CMD_MODE  0x01 
+
+#define AMI_IFACE_STATE_ETH             0x00
+#define AMI_IFACE_STATE_BOND           0x01
+#define AMI_IFACE_BOND_ENABLED      0x02
+#define AMI_GET_IFACE_COUNT             0x03
+#define AMI_GET_IFACE_CHANNEL           0x04
+#define AMI_GET_IFACE_NAME              0x05
+#define AMI_BOND_ACTIVE_SLAVE           0x06
+#define AMI_BOND_VLAN_ENABLED           0x07
+#define MAX_SERVICES 			7
+#define SERVICE_NAME_SIZE 16
+#define MAX_LAN_CHANNEL             0x05
+#define MAX_IFACE_NAME                16
+#define FULL_SEL_ENTRIES     0xFF
+#define PARTIAL_SEL_ENTRIES   0x00
+#define SEL_EMPTY_REPOSITORY 0x00
+#define THRESHOLD_RESERVED_BIT  0xC0
+#define DISCRETE_RESERVED_BIT   0x80
+
+
+#define AMI_DNS_CONF_HOST_NAME              0x01
+#define AMI_DNS_CONF_REGISTER               0x02
+#define AMI_DNS_CONF_DOMAIN_SETTINGS        0x03
+#define AMI_DNS_CONF_DOMAIN_NAME            0x04
+#define AMI_DNS_CONF_DNS_SETTING            0x05
+#define AMI_DNS_CONF_DNS_IP                 0x06
+#define AMI_DNS_CONF_DNS_RESTART            0x07
+#define AMI_DNS_CONF_TSIG_UPLOAD            0x08
+#define AMI_DNS_CONF_DNS_ENABLE             0x09
+
+#define MAX_DNS_IP_ADDRESS                            0x03
+#define MAX_DOMAIN_BLOCK_SIZE                      64
+#define MAX_BLOCK                                               0x04
+
+#pragma pack (1)
+
+#define MAX_BOND_IFACE_SLAVES       4
+#define DEFAULT_MII_INTERVAL        100
+
+//Host loack feature
+#define HOSTUNLOCK_CMD        0x00
+#define HOSTLOCK_CMD            0x01
+#define   HLENABLED       0x1
+#define   HLDISABLED     0x0
+/*
+ * Service related struct
+ */
+#define MAX_SERVICE_IFACE_NAME_SIZE 16
+
+//GET
+typedef struct
+{
+    INT32U ServiceID;
+} PACKED  AMIGetServiceConfReq_T;
+
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT32U ServiceID;
+    INT8U	 Enable;
+           /* The following fields are meaningful only when the service is enabled */
+    INT8S   InterfaceName[MAX_SERVICE_IFACE_NAME_SIZE + 1]; /* Interface name */
+    INT32U  NonSecureAccessPort;               /* Non-secure access port number */
+    INT32U  SecureAccessPort;                  /* Secure access port number */                        
+    INTU    SessionInactivityTimeout;      	   /* Service session inactivity yimeout in seconds*/
+    INT8U   MaxAllowSession;                   /* Maximum allowed simultaneous sessions */
+    INT8U   CurrentActiveSession;              /* Number of current active sessions */
+    INTU    MinSessionInactivityTimeout;	            /*Min Allowed value for Session timeout in sec*/
+    INTU    MaxSessionInactivityTimeout;               /*Max Allowed value for Session timeout in sec*/
+} PACKED  AMIGetServiceConfRes_T;
+
+//SET
+typedef struct
+{
+	INT32U ServiceID;
+    INT8U	 Enable;
+		    /* The following fields are meaningful only when the service is enabled */
+	INT8S   InterfaceName[MAX_SERVICE_IFACE_NAME_SIZE + 1]; /* Interface name */
+	INT32U  NonSecureAccessPort;               /* Non-secure access port number */
+	INT32U  SecureAccessPort;                  /* Secure access port number */                        
+	INTU    SessionInactivityTimeout;      	   /* Service session inactivity yimeout in seconds*/
+	INT8U   MaxAllowSession;                   /* Maximum allowed simultaneous sessions */
+	INT8U   CurrentActiveSession;              /* Number of current active sessions */
+} PACKED  AMISetServiceConfReq_T;
+
+typedef struct 
+{
+    INT8S   ServiceName [SERVICE_NAME_SIZE]; /* Service name */
+    AMIGetServiceConfRes_T GetAllSeviceCfg;
+}GetAllServiceConf_T;
+
+typedef struct
+{
+    INT8U ServiceCnt;
+    GetAllServiceConf_T ServiceInfo [MAX_SERVICES];
+}GetServiceInfo_T;
+
+typedef struct
+{
+    INT8U   CompletionCode;
+
+} PACKED  AMISetServiceConfRes_T;
+
+
+/*
+ * DNS related struct
+ */
+
+
+typedef struct
+{
+    INT8U   DomainDHCP;
+    INT8U   DomainIndex;
+    INT8U   Domainpriority;
+    INT8U   DomainLen;
+}PACKED DomainSetting;
+
+typedef struct
+{
+    INT8U   DNSDHCP;
+    INT8U   DNSIndex;
+    INT8U   IPPriority;
+}PACKED DNSSetting;
+
+typedef union
+{
+    HOSTNAMECONF        HName;
+    INT8U               RegDNSConf[MAX_LAN_CHANNEL];
+    INT8U               PrivateKey[MAX_TSIG_PRIVKEY_SIZE];
+    DomainSetting       DomainConf;
+    INT8U               DomainName[MAX_DOMAIN_BLOCK_SIZE];
+    DNSSetting          DNSConf;
+    INT8U               DNSIPAddr[IP6_ADDR_LEN];
+    INT8U               DNSEnable;
+} DNSConf_T;
+
+typedef struct
+{
+    INT8U   ParamSelect;
+    INT8U   Blockselector;
+    DNSConf_T    DnsConfig;
+}PACKED AMISetDNSConfReq_T;
+
+typedef struct
+{
+    INT8U   CompletionCode;
+}PACKED AMISetDNSConfRes_T;
+
+typedef struct
+{
+    INT8U   CompletionCode;
+    DNSConf_T   DNSCfg;
+}PACKED AMIGetDNSConfRes_T;
+
+typedef struct
+{
+    INT8U   Param;
+    INT8U   Blockselect;
+}PACKED AMIGetDNSConfReq_T;
+
+
+/*
+* LinkDown Resilent struct
+*/
+typedef struct
+{
+    INT8U LinkDownEnable;
+}PACKED AMILinkDownResilentReq_T;
+
+typedef struct
+{
+    INT8U CompletionCode;
+    INT8U LinkEnableStatus;
+}PACKED AMILinkDownResilentRes_T;
+
+typedef struct
+{
+    INT8U   EthIndex;
+    INT8U   EnableState;
+    /* EnableState - Bit 0 is represented IPv4 and Bit 1 is represented IPv6,
+     *               this byte will be ignored if the command is the "get" command.
+     *                  DISABLE_V4_V6  (0x00) - Disable IPv4 and IPv6     
+     *                  ENABLE_V4         (0x01) - Enable IPv4 only   
+     *                  ENABLE_V6         (0x02) - Enable IPv6 only is not allowed 
+     *                  ENABLE_V4_V6    (0x03) - Enable IPv4 and IPv6
+     */
+}PACKED EthIfaceState;
+
+typedef struct
+{
+    INT8U   Count;
+    INT8U   EthIndex[MAX_LAN_CHANNEL];
+}PACKED LANIfcCount_T;
+
+typedef struct
+{
+    INT8U   Channel;
+}PACKED GetIfcChannel_T;
+
+typedef struct
+{
+    char   IfcName[MAX_IFACE_NAME];
+}PACKED GetIfcName_T;
+
+typedef struct
+{
+    INT8U   Enabled;
+    INT8U   BondIndex;
+}PACKED BondEnabled_T;
+
+typedef struct
+{
+    INT8U BondIndex;
+    INT8U ActiveIndex;
+}PACKED ActiveSlave_T;
+
+typedef struct
+{
+    INT8U Enabled;
+}PACKED BondVLAN_T;
+
+typedef union
+{
+    EthIfaceState   EthIface;
+    BondIface        BondIface;
+    BondEnabled_T   BondEnable;
+    LANIfcCount_T     LANCount;
+    GetIfcChannel_T     IfcChannel;
+    GetIfcName_T        IfcName;
+    ActiveSlave_T       ActiveSlave;
+    BondVLAN_T          BondVLAN;
+}PACKED IfaceConfigFn;
+
+/*
+ * Network Interface Enable/Disable struct
+ */
+typedef struct
+{
+    INT8U   Params;
+    IfaceConfigFn   ConfigData;
+}PACKED AMISetIfaceStateReq_T;
+
+typedef struct
+{
+    INT8U   Params;
+    INT8U   SetSelect;
+    INT8U   BlockSelect;
+}PACKED AMIGetIfaceStateReq_T;
+
+typedef struct
+{
+    INT8U   CompletionCode;
+}PACKED AMISetIfaceStateRes_T;
+
+typedef struct
+{
+    INT8U   CompletionCode;
+    IfaceConfigFn   ConfigData;
+ 
+}PACKED AMIGetIfaceStateRes_T;
+
+
+/*---------------- Function Definitions for Firewall Command Implementation ---------------------*/ 
+
+typedef struct
+{
+	INT8U Param;
+	INT8U State;
+	FirewallConfUn_T CMD_INFO;
+		
+} PACKED AMISetFirewallReq_T;
+
+typedef struct
+{
+	INT8U CompletionCode;
+	
+} PACKED AMISetFirewallRes_T;
+
+
+typedef struct
+{
+	INT8U Param;
+	INT8U EntryNo;
+	
+} PACKED AMIGetFirewallReq_T;
+
+
+typedef struct
+{
+	INT8U CompletionCode;
+    
+}PACKED GetFWCC_T;
+
+typedef union
+{
+    INT8U TotalCount;
+    INT8U IsBlockAll;
+    GetFirewallConf_T Info;
+    
+} GetFirewallConfUn_T;
+
+typedef struct
+{
+    GetFWCC_T    CCParam;
+    GetFirewallConfUn_T FWInfo;
+
+}PACKED AMIGetFirewallRes_T;
+
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   IPMISessionTimeOut;
+}PACKED AMIGetIPMISessionTimeOutRes_T;
+
+/*------------------------------- End of Firewall Command Declarations -------------------------*/
+
+//SNMP:
+/*
+ * SNMP related struct
+ */
+
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U UserID;
+    INT8U snmp_enable;                          
+    INT8U snmp_access_type;                     
+    INT8U snmp_enc_type_1;
+    INT8U snmp_enc_type_2;
+    
+}PACKED AMIGetSNMPConfRes_T;
+
+typedef struct
+{
+    INT8U UserID;
+   
+}PACKED AMIGetSNMPConfReq_T;
+
+typedef struct
+{
+    INT8U UserID;
+    INT8U snmp_enable;                          
+    INT8U snmp_access_type;                     
+    INT8U snmp_enc_type_1;
+    INT8U snmp_enc_type_2;
+}PACKED AMISetSNMPConfReq_T;
+
+typedef struct
+{
+    INT8U   CompletionCode;
+    
+}PACKED AMISetSNMPConfRes_T;
+
+/*
+ * AMIGetSELPolicyRes_T
+ */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   SELPolicy;
+
+} PACKED AMIGetSELPolicyRes_T;
+
+/*
+ * AMISetSELPolicyReq_T
+ */
+typedef struct
+{
+    INT8U   SELPolicy;
+
+} PACKED AMISetSELPolicyReq_T;
+
+/*
+ * AMISetSELPolicyRes_T
+ */
+typedef struct
+{
+    INT8U   CompletionCode;
+
+} PACKED AMISetSELPolicyRes_T;
+
+typedef struct
+{
+    INT8U ServiceName;
+    INT8U SleepSeconds;
+}PACKED RestartService_T;
+
+typedef struct
+{
+    INT32U Noofentretrieved;
+}PACKED AMIGetSELEntriesReq_T;
+
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT32U   Noofentries;
+    INT16U   LastRecID;
+    INT8U   Status;
+}PACKED AMIGetSELEntriesRes_T;
+
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT16U   Noofentries;
+}PACKED AMIGetSensorInfoRes_T;
+
+typedef struct
+{
+    SDRRecHdr_T    hdr;
+    INT8U               OwnerID;
+    INT8U               OwnerLUN;
+    INT8U               SensorNumber;
+    INT8U               SensorReading;
+    INT8U               MaxReading;
+    INT8U               MinReading;
+    INT8U               Flags;
+    INT8U               ComparisonStatus;
+    INT8U               OptionalStatus;
+    INT8U               SensorTypeCode;
+    INT8U               EventTypeCode;
+    INT8U               Units1;
+    INT8U               Units2;
+    INT8U               Units3;
+    INT8U               Linearization;
+    INT8U               M_LSB;
+    INT8U               M_MSB_Tolerance;
+    INT8U               B_LSB;
+    INT8U               B_MSB_Accuracy;
+    INT8U               Accuracy_MSB_Exp;
+    INT8U               RExp_BExp;
+    INT8U               LowerNonCritical;
+    INT8U               LowerCritical;
+    INT8U               LowerNonRecoverable;
+    INT8U               UpperNonCritical;
+    INT8U               UpperCritical;
+    INT8U               UpperNonRecoverable;
+    INT8U               AssertionEventByte1;
+    INT8U               AssertionEventByte2;
+    INT8U               DeassertionEventByte1;
+    INT8U               DeassertionEventByte2;
+    INT8S               SensorName[MAX_ID_STR_LEN];
+    INT16U              Settable_Readable_ThreshMask;    
+
+}PACKED SenInfo_T;
+
+typedef struct
+{
+    INT8U SessionIPAddr[IP6_ADDR_LEN];
+}PACKED AMIGetUDSInfoReq_T;
+
+typedef struct
+{
+    INT8U CompletionCode;
+    INT8U ChannelNum;
+    INT8U ChannelType;
+    INT8U BMCInstance;
+}PACKED AMIGetUDSInfoRes_T;
+
+typedef struct
+{
+    INT8U MaxAllowedSession;
+    INT8U ActiveSessionCount;
+}PACKED UDSSessionCount_T;
+
+typedef struct
+{
+    INT32U LoggedInSessionID;
+    INT8U LoggedInSessionHandle;
+    INT8U LoggedInUserID;
+    INT8U LoggedInPrivilege;
+    INT32U LoggedInTime;
+    INT8U UDSChannelNum;
+    INT8U ChannelNum;
+    INT32U SessionTimeoutValue;
+    INT8U AuthenticationMechanism;
+}PACKED UDSLoggedInSessionInfo_T;
+
+typedef struct
+{
+    INT32U ProcessID;
+    INT32U ThreadID;
+} PACKED UDSSessionPIDInfo_T;
+
+typedef union
+{
+    UDSSessionCount_T UDSSessionCountInfo;
+    UDSLoggedInSessionInfo_T UDSLoggedInSessionInfo;
+    UDSSessionPIDInfo_T UDSSessionPIDInfo;
+}PACKED UDSLoggedInInfoUn_T;
+
+typedef struct
+{
+    INT8U UDSSessionParam;
+    INT8U UDSSessionHandleOrIDOrIndex[4];
+} PACKED AMIGetUDSSessionInfoReq_T;
+
+typedef struct
+{
+    INT8U CompletionCode;
+    UDSLoggedInInfoUn_T UDSLoggedInInfo;
+} PACKED AMIGetUDSSessionInfoRes_T;
+
+
+/*
+ * RIS related struct
+ */
+#define MAX_IMAGE_NAME_LEN		256
+#define MAX_IMAGE_PATH_SIZE		256
+#define MAX_IP_ADDR_LEN		63
+#define MAX_RMS_USERNAME_LEN		256
+#define MAX_RMS_PASSWORD_LEN		32
+#define MAX_SHARE_TYPE_LEN		6
+#define MAX_DOMAIN_LEN			256
+
+//GET
+typedef union 
+{   
+    INT8S   ImageName[MAX_DOMAIN_BLOCK_SIZE + 1]; /* Image name */
+    INT8S   MountPath[MAX_DOMAIN_BLOCK_SIZE+ 1]; /* Mount Path */
+    INT8S   RemoteIP[MAX_IP_ADDR_LEN + 1]; /* Remote machine IP address */
+    INT8S   UserName[MAX_DOMAIN_BLOCK_SIZE + 1];/* Remote machine User Name */                        
+    INT8S   Password[MAX_RMS_PASSWORD_LEN + 1];	/* Remote machine Password*/
+    INT8S   ShareType[MAX_SHARE_TYPE_LEN + 1];/* Remote Share type*/
+    INT8S   Domain[MAX_DOMAIN_BLOCK_SIZE+ 1] ;    /* Remote machine Domain Name*/ 
+    INT8U   ProgressBit;
+} RISConfig_T;
+
+typedef struct
+{
+    INT8U MediaType;
+    INT8U ParameterSelect;
+} PACKED  AMIGetRISConfReq_T;
+
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   MediaType;
+    INT8U   ParameterSelect;
+    RISConfig_T Config;
+} PACKED  AMIGetRISConfRes_T;
+
+//SET
+typedef struct
+{
+    INT8U MediaType;
+    INT8U   ParameterSelect;
+    INT8U   Blockselector;
+    RISConfig_T  config;	
+   
+} PACKED  AMISetRISConfReq_T;
+
+typedef struct
+{
+    INT8U   CompletionCode;
+
+} PACKED  AMISetRISConfRes_T;
+
+//START/STOP
+typedef struct
+{
+    INT8U MediaType;
+    INT8U   ParameterSelect;      
+} PACKED  AMIRISStartStopReq_T;
+
+typedef struct
+{
+    INT8U   CompletionCode;
+} PACKED  AMIRISStartStopRes_T;
+
+/*
+ * AMIControlDebugMsgReq_T
+ */
+typedef struct
+{
+    INT8U CtrlDebugMsg;
+}PACKED AMIControlDebugMsgReq_T;
+
+/*
+ * AMIControlDebugMsgRes_T
+ */
+typedef struct
+{
+    INT8U CompletionCode;
+    INT8U DebugMsgStatus;
+}PACKED AMIControlDebugMsgRes_T;
+
+/*
+ * AMIGetDebugMsgStatusRes_T
+ */
+typedef struct
+{
+    INT8U CompletionCode;
+    INT8U DebugMsgStatus;
+}PACKED AMIGetDebugMsgStatusRes_T;
+/**
+ * @struct AMIGetExtendedPrivReq_T
+ * @brief  get user extended previlege value
+ */
+typedef struct
+{
+    INT8U UserID;
+}PACKED AMIGetExtendedPrivReq_T;
+
+/**
+ * @struct AMIGetExtendedPrivRes_T
+ * @brief  get user extended privilege field
+ */
+typedef struct
+{
+    INT8U CompletionCode;
+    INT32U Extendedpriv;    
+}PACKED AMIGetExtendedPrivRes_T;
+
+
+/**
+ * @struct AMISetExtendedPrivReq_T
+ * @brief  set user extended privilege field 
+ */
+typedef struct
+{
+    INT8U UserID;
+    INT32U Extendedpriv;
+}PACKED AMISetExtendedPrivReq_T;
+/**
+ * @struct AMIGetHostLockStatusRes_T
+ * @brief  get Host Monitor Lock Status
+ */
+typedef struct
+{
+    INT8U CompletionCode;
+    INT8U LockStatus;
+}PACKED AMIGetHostAutoLockStatusRes_T;
+
+/**
+ * @struct AMISetHostLockStatusReq_T
+ * @brief  set Host Monitor Lock Status
+ */
+typedef struct
+{
+    INT8U LockStatus;
+}PACKED AMISetHostAutoLockStatusReq_T;
+
+/**
+ * @struct AMISetHostLockStatusReq_T
+ * @brief  set Host Monitor Lock Status
+ */
+typedef struct
+{
+	INT8U CompletionCode;
+}PACKED AMISetHostAutoLockStatusRes_T;
+
+/**
+ * @struct AMIGetHostLockFeatureStatusRes_T
+ * @brief  get Host Monitor Lock Feature Status
+ */
+typedef struct
+{
+    INT8U CompletionCode;
+    INT8U LockFeatureStatus;
+}PACKED AMIGetHostLockFeatureStatusRes_T;
+
+/**
+ * @struct AMISetHostLockFeatureStatusReq_T
+ * @brief  set Host Monitor Lock Feature Status
+ */
+typedef struct
+{
+    INT8U LockFeatureStatus;
+}PACKED AMISetHostLockFeatureStatusReq_T;
+
+/**
+ * @struct AMISetHostLockStatusReq_T
+ * @brief  set Host Monitor Lock Status
+ */
+typedef struct
+{
+	INT8U CompletionCode;
+}PACKED AMISetHostLockFeatureStatusRes_T;
+
+typedef struct 
+{ 
+    INT8U ChannelNumber; 
+}PACKED AMIGetChannelTypeReq_T; 
+
+typedef struct 
+{ 
+    INT8U CompletionCode; 
+    INT8U ChannelNumber; 
+    INT8U ChannelType; 
+}PACKED AMIGetChannelTypeRes_T; 
+
+#pragma pack ()
+
+
+#endif //__IPMI_AMICONF_H__

+ 1750 - 0
app/bmc_server/ipmi_dev/IPMI_AMIDevice.h

@@ -0,0 +1,1750 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ ****************************************************************
+ *
+ * IPMI_AMI.h
+ * AMI specific IPMI Commands
+ *
+ * Author: Basavaraj Astekar <basavaraja@ami.com>
+ *
+ *****************************************************************/
+#ifndef IPMI_AMI_DEVICE_H_
+#define IPMI_AMI_DEVICE_H_
+
+#include "Types.h"
+//#include "coreTypes.h"
+//#include "fmhinfo.h"
+//#include "IPMI_SDRRecord.h"
+#include "IPMI_AMI.h"
+//#include "tftp.h"
+#include "IPMI_AMILicense.h"
+#ifndef MSDOS
+#include "flashlib.h"
+#endif
+
+#define MAX_SIZE_KEY 56		/* For Blowfish Encryption Algorithm, the key can have maximum of 56 bytes. */
+
+//Maximum Size of Public Key
+#define MAX_PERMITTED_KEY_SIZE  (8*1024)
+
+#define MAX_LINUX_ROOT_USER_PASSWORD_LEN        64
+#define MAX_SOL_PORT_STR_LEN        			16
+#define MTD_DEV_NAME_LEN			31
+/*Number of PAM module are going to re-ordered*/
+#define MODULES_TO_MODIFIED  4
+#define MAX_BOOTVAR_LENGTH 400
+#define MAX_BOOTVAL_LENGTH 400 
+#define MAX_FMHLENGTH 1024
+
+#define CRITICAL                                0x1
+#define NON_CRITICAL                            0x2
+#define NON_RECOVERABLE                         0x3
+#define FAN_TROUBLED                            0x4
+#define BMC_WDT_EXPIRE                          0x5
+#define SYS_DC_ON                               0x6
+#define SYS_DC_OFF                              0x7
+#define SYS_RESET                               0x8
+#define SPEC_DATE_TIME                          0x9
+#define LPC_RESET_FLAG                          0xa
+
+/*Macros used for Dual Image Support*/
+#define SETFWBOOTSELECTOR           0x1
+#define GETFWBOOTSELECTOR           0x2
+#define SETFWUPLOADSELECTOR         0x3
+#define GETFWUPLOADSELECTOR         0x4
+#define SETREBOOTSTATUS                 0x5
+#define GETREBOOTSTATUS                 0x6
+#define GETCURACTIVEIMG             0x7
+#define GETDUALIMGFWINFO                0x8
+#define TIME_ZONE_PATH  "/usr/share/zoneinfo/"
+#define LINK_CMD        "ln -sf"
+#define LOCALTIME       "/conf/localtime"
+#define MAX_MINS        60
+#define ZONE_PATH_SIZE  128
+
+/**Macro Used For AMISetVirtualDevice*/
+#define VIRTUAL_DEVICE_ENABLE 0x1
+#define VIRTUAL_DEVICE_DISABLE 0x0
+/*
+ * User roles( for command auth. purposes). Currently used by AMISetLEDmode.
+ */
+typedef enum {
+	REGULAR,
+	ADMIN,
+	POLICY
+} user_role_t;
+
+/*
+ * LEDs
+ */
+typedef enum {
+	OK2RM  = 0,
+	SERVICE  = 1,
+	ACT  = 2,
+	LOCATE = 3
+} LEDtype_t;
+
+/*
+ * LED modes
+ */
+typedef enum {
+	LED_OFF  = 0,
+	LED_ON = 1,
+	LED_STANDBY_BLINK  = 2,
+	LED_SLOW_BLINK  = 3,
+	LED_FAST_BLINK  = 4
+} LEDmode_t;
+
+/* Define your IPMI request and response structures here */
+
+#pragma pack(1)
+/**
+ * @struct AMICommandReq_T
+ * @brief AMI command request structure
+ **/
+typedef struct
+{
+    /* define your structures here */
+	INT8U	dummy;
+
+} PACKED  AMITestCmdReq_T;
+
+/**
+ * @struct AMICommandRes_T
+ * @brief AMI command response structure
+ **/
+typedef struct
+{
+    /* define your structures here */
+	INT8U	dummy;
+
+} PACKED  AMITestCmdRes_T;
+
+
+//#define MAX_IPMI_UPLOAD_BLOCK   ( 64 * 1024 )
+#define MAX_IPMI_UPLOAD_BLOCK   ( 100 )
+
+/**
+ * @struct AMISetSSHKeyReq_T
+ * @brief AMI Set SSH Key command request structure
+ **/
+typedef struct
+{
+    /* UserID of the user whose ssh key we're uploading */
+    INT8U   UserID;
+
+    /* Zero-indexed block number for upload.  Set to 0xff for the last */
+    /* block.                                                          */
+    INT8U   KeyDataBlockNumber;
+
+    /* Amount of data in this block.  Should be max block size for all */
+    /* but the last block when the total key size is not a multiple of */
+    /* the maximum block size.                                         */
+    INT8U   DataLen;
+
+    INT8U   Data[ MAX_IPMI_UPLOAD_BLOCK ];
+} PACKED AMISetSSHKeyReq_T;
+
+
+/**
+ * @struct AMISetSSHKeyRes_T
+ * @brief AMI Set SSH Key command response structure
+ **/
+typedef struct
+{
+    INT8U CompletionCode;
+} PACKED AMISetSSHKeyRes_T;
+
+
+/**
+ * @struct AMIDelSSHKeyReq_T
+ * @brief AMI Delete SSH Key command request structure
+ **/
+typedef struct
+{
+    /* UserID of the user whose ssh key we're deleting */
+    INT8U   UserID;
+} PACKED AMIDelSSHKeyReq_T;
+
+/**
+ * @struct AMIDelSSHKeyRes_T
+ * @brief AMI Delete SSH Key command response structure
+ **/
+typedef struct
+{
+    INT8U CompletionCode;
+} PACKED AMIDelSSHKeyRes_T;
+
+
+/**
+ * @struct AMIUpgradeBlockReq_T
+ * @brief AMI Upgrade Block command request structure
+ **/
+typedef struct
+{
+    /* Block information */
+    BI_t   blkInfo;
+} PACKED AMIUpgradeBlockReq_T;
+
+/**
+ * @struct AMIUpgradeBlockRes_T
+ * @brief AMI Upgrade Block command response structure
+ **/
+typedef struct
+{
+    INT8U CompletionCode;
+} PACKED AMIUpgradeBlockRes_T;
+
+
+/* Init Flash */
+typedef struct
+{
+    FLASH_PARAMS params;
+} PACKED AMIInitFlashReq_T;
+
+typedef struct
+{
+    INT8U CompletionCode;
+    FLASH_PARAMS params;
+} PACKED AMIInitFlashRes_T;
+
+/* Exit Flash */
+typedef struct
+{
+    FLASH_PARAMS params;
+} PACKED AMIExitFlashReq_T;
+
+/* Exit Flash */
+typedef struct
+{
+    FLASH_PARAMS params;
+} PACKED AMIStartFirmwareUpdateReq_T;
+
+
+typedef struct
+{
+    INT8U CompletionCode;
+} PACKED AMIExitFlashRes_T;
+/* Get Flash Layout */
+typedef struct
+{
+    FLASH_LAYOUT FlashLayout;
+} PACKED AMIGetFlashLayoutReq_T;
+
+typedef struct
+{
+    INT8U CompletionCode;
+    FLASH_LAYOUT FlashLayout;
+} PACKED AMIGetFlashLayoutRes_T;
+
+typedef struct
+{
+    INT8U CompletionCode;
+} PACKED  AMIResetCardRes_T;
+
+typedef struct
+{
+    INT8U CompletionCode;
+} PACKED  AMIUpdateUbootRes_T;
+
+typedef struct
+{
+    INT8U CompletionCode;
+} PACKED  AMISetFirmwareUpdateModeRes_T;
+
+typedef struct
+{
+    INT8U CompletionCode;
+} PACKED  AMIStartFirmwareUpdateRes_T;
+
+typedef struct
+{
+    FLASH_PARAMS params;
+} PACKED AMIGetFirmwareUpdateStatusReq_T;
+
+
+typedef struct
+{
+    INT8U EraseInProgress;
+    INT8U CurrentSectorErased;
+    INT8U TotalSectorstobeErased;
+    INT8U WriteInProgress;
+    INT8U CurrentSectorWritten;
+    INT8U TotalSectorstobeWritten;
+    INT8U EraseWriteCompleted;
+    
+} PACKED AMIFlashStatus_T;
+
+typedef struct
+{
+    INT8U CompletionCode;
+    STRUCTURED_FLASH_PROGRESS flprog;
+
+} PACKED AMIGetFirmwareUpdateStatusRes_T;
+
+typedef struct
+{
+	int TimeOut;
+	int FlashProcessStarted;
+
+} PACKED FlashTimerInfo_T;
+
+typedef struct
+{
+    INT8U FanSpeed;      /* Fan speed in percentage */
+} PACKED  AMISetFanSpeedReq_T;
+
+typedef struct
+{
+    INT8U CompletionCode;
+} PACKED  AMISetFanSpeedRes_T;
+
+/**
+ * @struct AMIGetLEDmodeReq_T
+ * @brief AMI Get LED Mode command request structure
+ **/
+typedef struct
+{
+    INT8U   devAddr; /* value from the "Device Slave Address" field in, */
+                     /* LED's Generic Device Locator record, in the SDR     */
+    INT8U   led;
+    INT8U   ctrlrAddr; /* Its controller's address; value from the          */
+                       /* "Device Access Address" field. Zero if the LED is */
+                       /* local.                               */
+    INT8U   hwInfo;  /* the OEMField from the SDR record */
+    INT8U   force;     /* TRUE - directly access the device, FALSE - go     */
+                       /* thru its controller. Ignored if LED is local.     */
+} PACKED  AMIGetLEDmodeReq_T;
+
+/**
+ * @struct AMIGetLEDmodeRes_T
+ * @brief AMI Get LED Mode command response structure
+ **/
+typedef struct
+{
+    INT8U CompletionCode;
+    INT8U mode;
+} PACKED  AMIGetLEDmodeRes_T;
+
+/**
+ * @struct AMISetLEDmodeReq_T
+ * @brief AMI Set LED Mode command request structure
+ **/
+typedef struct
+{
+    INT8U   devAddr; /* value from the "Device Slave Address" field in, */
+                     /* LED's Generic Device Locator record, in the SDR     */
+    INT8U   led;
+    INT8U   ctrlrAddr; /* Its controller's address; value from the          */
+                       /* "Device Access Address" field. Zero if the LED is */
+                       /* local.                               */
+    INT8U   hwInfo;  /* the OEMField from the SDR record */
+    INT8U   mode;
+    INT8U   force;     /* TRUE: directly access the device. FALSE: go thru  */
+                       /* its controller. Ignored if LED is local.          */
+    INT8U   role; /* This is used by BMC, for authorization purposes   */
+} PACKED  AMISetLEDmodeReq_T;
+
+/**
+ * @struct AMISetLEDmodeRes_T
+ * @brief AMI Set LED Mode command response structure
+ **/
+typedef struct
+{
+    INT8U CompletionCode;
+} PACKED  AMISetLEDmodeRes_T;
+
+#define FRUDATA_MAX_SIZE	0x80 /* 128 bytes */
+#define FRUDATA_TYPE_DIMM	0x00
+#define FRUDATA_TYPE_CPU	0x01
+#define FRUDATA_TYPE_BIOS	0x02
+
+/**
+ * @struct FRUData_DIMM_T
+ * @brief FRU Data for DIMM SPD information sent from BIOS in two blocks
+ **/
+typedef struct
+{
+    INT8U SPDData[128];		/* 128 bytes */
+} PACKED  FRUData_DIMM_T;		/* 128 bytes total */
+
+/**
+ * @struct FRUData_CPU_T
+ * @brief FRU Data for Processor information sent from BIOS
+ **/
+typedef struct
+{
+    uint32 ThermTrip;
+    uint32 cpuid1_eax;
+    uint32 cpuid_product_name[12];
+} PACKED  FRUData_CPU_T;		/* 56 bytes total */
+
+/**
+ * @struct FRUData_BIOS_T
+ * @brief FRU Data for BIOS information sent from BIOS
+ **/
+typedef struct
+{
+    INT8U PartNumber[16];	/* 16 bytes */
+    INT8U PartVersion[16];	/* 16 bytes */
+} PACKED  FRUData_BIOS_T;		/* 32 bytes total */
+
+/**
+ * @struct AMITransferFRUDataReq_T
+ * @brief OEM request for transferring FRU data from BIOS
+ */
+typedef struct
+{
+    INT8U Type;                    /* identifier for this FRU data */
+    INT8U Number;                  /* identifier for different datas of same type */
+    INT8U DataLen;                 /* length of data block */
+    INT8U Data[FRUDATA_MAX_SIZE];  /* data of data */
+} PACKED  AMITransferFRUDataReq_T;
+
+/**
+ * @struct AMITransferFRUDataRes_T
+ * @brief OEM response for transferring FRU data from BIOS
+ */
+typedef struct
+{
+    INT8U CompletionCode;
+} PACKED  AMITransferFRUDataRes_T;
+
+
+/**
+ * @struct YafuHeader
+ * @brief Flash info structure
+ */
+ typedef struct
+{
+    uint32  Seqnum;
+    INT16U  YafuCmd;
+    INT16U  Datalen;
+    uint32  CRC32chksum;
+} PACKED YafuHeader;
+	
+/**
+ * @struct AMIYAFUNotAck
+ * @brief Flash info structure
+ */
+typedef struct
+{
+   INT8U CompletionCode;
+   YafuHeader NotAck;
+   INT16U       ErrorCode;
+}PACKED AMIYAFUNotAck;
+
+/**
+ * @struct ALT_FMH
+ * @brief Flash info structure
+ */
+
+typedef struct
+{
+    INT16U EndSignature;
+    INT8U   HeaderChkSum;
+    INT8U   Reserved;
+    uint32 LinkAddress;
+    INT8U   Signature[8]; 	
+} PACKED ALT_FMHead;
+
+
+
+/**
+ * @struct FMH
+ * @brief Flash info structure
+ */
+
+	typedef struct
+	{
+		INT8U		FmhSignature[8];
+		union
+		{
+			INT16U	FwVersion;
+			INT8U	FwMinorVer;
+			INT8U	FwMajorVer;
+		} PACKED Fmh_Version;
+		INT16U		FmhSize;
+		uint32		AllocatedSize;
+		uint32		FmhLocation;
+		INT8U		FmhReserved[3];
+		INT8U		HeaderChecksum;
+		INT8U		ModuleName[8];
+		union
+		{
+			INT16U	ModVersion;
+			INT8U	ModMinorVer;
+			INT8U	ModMajorVer;
+		}PACKED Module_Version;
+		INT16U		ModuleType;
+		uint32		ModuleLocation;
+		uint32		ModuleSize;
+		INT16U		ModuleFlags;
+		uint32		ModuleLoadAddress;
+		uint32		ModuleChecksum;
+		INT8U		ModuleAuxVer[2];
+		INT8U		ModuleReserved[6];
+		INT16U		EndSignature;
+	}PACKED  FlashMH;
+
+/**
+ * @struct AMIYAFUGetFlashInfoReq_T
+ * @brief Flash info structure
+ */
+ 
+typedef struct
+{
+    YafuHeader FlashInfoReq;
+
+} PACKED AMIYAFUGetFlashInfoReq_T;
+
+
+typedef struct
+{
+
+    uint32  FlashSize;
+    uint32  FlashAddress;
+    uint32  FlashEraseBlkSize;
+    INT16U  FlashProductID;
+    INT8U    FlashWidth;	
+    INT8U    FMHCompliance;
+    INT16U  Reserved;
+    INT16U  NoEraseBlks;	 
+	
+}PACKED FlashDetails;
+
+
+/**
+ * @struct AMIYAFUGetFlashInfoRes_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    INT8U           CompletionCode;
+    YafuHeader   FlashInfoRes;
+    FlashDetails  FlashInfo;
+
+} PACKED AMIYAFUGetFlashInfoRes_T;	
+
+/**
+ * @struct AMIYAFUGetFirmwareInfoReq_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    YafuHeader FirmwareinfoReq;
+
+} PACKED AMIYAFUGetFirmwareInfoReq_T;	
+
+/**
+ * @struct FirmInfo
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    INT8U     FirmMajVersion;
+    INT8U     FirmMinVersion;
+    INT16U   FirmAuxVersion;	
+    uint32   FirmBuildNum;	
+    uint32   Reserved;
+    INT8U     FirmwareName[8];	
+    uint32   FirmwareSize;
+    uint32   ProductID;
+	
+} PACKED FirmInfo;
+
+/**
+ * @struct AMIYAFUGetFirmwareInfoRes_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    INT8U         CompletionCode;
+    YafuHeader FirmwareinfoRes;	
+    FirmInfo      FirmwareInfo;
+
+} PACKED AMIYAFUGetFirmwareInfoRes_T;	
+
+
+/**
+ * @struct AMIYAFUGetFMHInfoRes_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+     YafuHeader FMHReq;
+
+} PACKED AMIYAFUGetFMHInfoReq_T;	
+
+/**
+ * @struct AMIYAFUGetFMHInfoRes_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    INT8U         CompletionCode; 
+    YafuHeader FMHRes;
+    INT16U       Reserved;	
+    INT16U       NumFMH; 	
+              
+
+} PACKED AMIYAFUGetFMHInfoRes_T;		
+
+/**
+ * @struct AMIYAFUGetStatusReq_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+     YafuHeader GetStatusReq;
+
+} PACKED AMIYAFUGetStatusReq_T;	
+
+
+/**
+ * @struct AMIYAFUGetStatusRes_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    INT8U         CompletionCode; 
+    YafuHeader GetStatusRes;
+    INT16U       LastStatusCode;
+    INT16U       YAFUState;
+    INT16U         Mode;
+    INT16U       Reserved;
+    INT8U         Message[65];	   
+	    
+} PACKED AMIYAFUGetStatusRes_T;	
+
+/**
+ * @struct AMIYAFUActivateFlashModeReq_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    YafuHeader ActivateflashReq;
+    INT16U       Mode;	
+
+} PACKED AMIYAFUActivateFlashModeReq_T;	
+
+/**
+ * @struct AMIYAFUGetStatusRes_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    INT8U         CompletionCode; 
+    YafuHeader ActivateflashRes;
+    INT8U         Delay;	
+    	
+}PACKED AMIYAFUActivateFlashModeRes_T;		
+
+/**
+*@struct AMIYAFUDualImgSupReq_T
+*@brief Dual Image Support Structure
+**/
+typedef struct
+{
+    YafuHeader DualImgSupReq;
+    INT8U         PreserveConf;
+    INT8U         Reserved1;
+    INT8U         Reserved2;
+    INT8U         Reserved3;
+}PACKED AMIYAFUDualImgSupReq_T;
+
+/**
+*@struct AMIYAFUDualImgSupRes_T
+*@brief Dual Image Support Structure
+**/
+typedef struct
+{
+    INT8U CompletionCode;
+    YafuHeader DualImgSupRes;
+}PACKED AMIYAFUDualImgSupRes_T;
+
+
+typedef struct
+{
+    YafuHeader  fwselectflashReq;
+    INT8U   fwselect;
+} PACKED AMIYAFUFWSelectFlashModeReq_T;
+
+typedef struct
+{
+    INT8U   CompletionCode;
+    YafuHeader  fwselectflashRes;
+}PACKED AMIYAFUFWSelectFlashModeRes_T;
+
+/**
+ * @struct AMIYAFUAllocateMemoryReq_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    YafuHeader AllocmemReq;
+    uint32       Sizeofmemtoalloc;	
+
+} PACKED AMIYAFUAllocateMemoryReq_T;	
+
+
+/**
+ * @struct AMIYAFUAllocateMemoryRes_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    INT8U         CompletionCode; 
+    YafuHeader AllocmemRes;
+    uint32       Addofallocmem; 	
+
+}PACKED AMIYAFUAllocateMemoryRes_T;		
+
+
+/**
+ * @struct AMIYAFUFreeMemoryReq_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    YafuHeader FreememReq;
+    uint32       AddrtobeFreed;	
+
+} PACKED AMIYAFUFreeMemoryReq_T;	
+
+/**
+ * @struct AMIYAFUFreeMemoryRes_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    INT8U         CompletionCode; 
+    YafuHeader FreememRes;
+    INT8U         Status; 	
+
+}PACKED AMIYAFUFreeMemoryRes_T;		
+
+/**
+ * @struct AMIYAFUReadFlashReq_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    YafuHeader ReadFlashReq;
+    uint32       offsettoread;	
+    INT8U         Readwidth;
+    uint32       Sizetoread;	 
+
+} PACKED AMIYAFUReadFlashReq_T;	
+
+/**
+ * @struct AMIYAFUReadFlashRes_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    INT8U         CompletionCode; 
+    YafuHeader ReadFlashRes;
+    //INT8U         FlashContent[0x4000];	
+	
+}PACKED AMIYAFUReadFlashRes_T;		
+
+/**
+ * @struct AMIYAFUWriteFlashReq_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    YafuHeader WriteFlashReq;
+    uint32 offsettowrite;	
+    INT8U   Writewidth;
+    //INT8U   Buffer[0x4000];	
+  	 
+
+} PACKED AMIYAFUWriteFlashReq_T;	
+
+/**
+ * @struct AMIYAFUWriteFlashRes_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    INT8U   CompletionCode; 
+    YafuHeader WriteFlashRes;
+    INT16U SizeWritten; 	
+}PACKED AMIYAFUWriteFlashRes_T;		
+
+/**
+ * @struct AMIYAFUErashFlashReq_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    YafuHeader EraseFlashReq;
+    uint32 Blknumtoerase;	
+     	
+} PACKED AMIYAFUErashFlashReq_T;
+
+
+/**
+ * @struct AMIYAFUErashFlashRes_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    INT8U   CompletionCode; 
+    YafuHeader EraseFlashRes;
+    INT8U   Status; 	
+
+}PACKED AMIYAFUErashFlashRes_T;	
+
+/**
+ * @struct AMIYAFUProtectFlashReq_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    YafuHeader ProtectFlashReq;
+    uint32 Blknum;
+    INT8U   Protect;			
+     	
+} PACKED AMIYAFUProtectFlashReq_T;
+
+/**
+ * @struct AMIYAFUProtectFlashRes_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    INT8U   CompletionCode; 
+    YafuHeader ProtectFlashRes;	
+    INT8U   Status; 	
+
+}PACKED AMIYAFUProtectFlashRes_T;
+
+/**
+ * @struct AMIYAFUEraseCopyFlashReq_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    YafuHeader EraseCpyFlashReq;
+    uint32 Memoffset;
+    uint32 Flashoffset;
+    uint32 Sizetocopy;	
+     	
+} PACKED AMIYAFUEraseCopyFlashReq_T;
+
+/**
+ * @struct AMIYAFUEraseCopyFlashRes_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    INT8U   CompletionCode; 
+    YafuHeader EraseCpyFlashRes;	
+    uint32 Sizecopied; 	
+
+}PACKED AMIYAFUEraseCopyFlashRes_T;
+
+/**
+ * @struct AMIYAFUGetECFStatusReq_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    YafuHeader GetECFStatusReq;
+         	
+} PACKED AMIYAFUGetECFStatusReq_T;
+
+/**
+ * @struct AMIYAFUGetECFStatusRes_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    INT8U   CompletionCode; 
+    YafuHeader GetECFStatusRes;
+	uint32 Status;
+	INT16U Progress;
+}PACKED AMIYAFUGetECFStatusRes_T;
+
+/**
+ * @struct AMIYAFUVerifyFlashReq_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    YafuHeader VerifyFlashReq;
+    uint32 Memoffset;
+    uint32 Flashoffset;
+    uint32 Sizetoverify;	
+     	
+} PACKED AMIYAFUVerifyFlashReq_T;
+
+/**
+ * @struct AMIYAFUVerifyFlashRes_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    INT8U   CompletionCode; 
+    YafuHeader VerifyFlashRes;	
+    uint32 Offset; 	
+
+}PACKED AMIYAFUVerifyFlashRes_T;
+/**
+ * @struct AMIYAFUGetVerifyStatusReq_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    YafuHeader GetVerifyStatusReq;
+         	
+} PACKED AMIYAFUGetVerifyStatusReq_T;
+
+/**
+ * @struct AMIYAFUGetVerifyStatusRes_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    INT8U   CompletionCode; 
+    YafuHeader GetVerifyStatusRes;
+	uint32 Status;
+	uint32 Offset; 	
+	INT16U Progress;
+}PACKED AMIYAFUGetVerifyStatusRes_T;
+
+/**
+ * @struct AMIYAFUReadMemoryReq_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    YafuHeader ReadMemReq;
+    uint32 Memoffset;
+    INT8U   ReadWidth;
+    INT16U Sizetoread;	
+     	
+} PACKED AMIYAFUReadMemoryReq_T;
+
+/**
+ * @struct AMIYAFUReadMemoryRes_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    INT8U   CompletionCode; 
+    YafuHeader ReadMemRes;	
+       
+}PACKED AMIYAFUReadMemoryRes_T;
+
+/**
+ * @struct AMIYAFUWriteMemoryReq_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    YafuHeader WriteMemReq;
+    uint32 Memoffset;
+    INT8U   WriteWidth; 
+         	
+} PACKED AMIYAFUWriteMemoryReq_T;
+
+/**
+ * @struct AMIYAFUWriteMemoryRes_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    INT8U   CompletionCode; 
+    YafuHeader WriteMemRes;	
+    INT16U SizeWritten;
+       
+}PACKED AMIYAFUWriteMemoryRes_T;
+
+/**
+ * @struct AMIYAFUCopyMemoryReq_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    YafuHeader CopyMemReq;
+    uint32 MemoffsetSrc;
+    uint32 MemoffsetDest;	
+    uint32 Sizetocopy;	
+         	
+} PACKED AMIYAFUCopyMemoryReq_T;
+
+/**
+ * @struct AMIYAFUCopyMemoryRes_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    INT8U   CompletionCode; 
+    YafuHeader CopyMemRes;
+    uint32 Sizecopied;
+       
+}PACKED AMIYAFUCopyMemoryRes_T;
+
+/**
+ * @struct AMIYAFUCompareMemoryReq_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    YafuHeader CmpMemReq;
+    uint32 Memoffset1;
+    uint32 Memoffset2;	
+    uint32 SizetoCmp;	
+         	
+} PACKED AMIYAFUCompareMemoryReq_T;
+
+/**
+ * @struct AMIYAFUCompareMemoryRes_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    INT8U   CompletionCode; 
+    YafuHeader CmpMemRes;
+    uint32 Offset;
+       
+}PACKED AMIYAFUCompareMemoryRes_T;
+
+/**
+ * @struct AMIYAFUClearMemoryReq_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    YafuHeader ClearMemReq;
+    uint32 MemofftoClear;
+    uint32 SizetoClear;	
+         	
+} PACKED AMIYAFUClearMemoryReq_T;
+
+/**
+ * @struct AMIYAFUClearMemoryRes_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    INT8U   CompletionCode; 
+    YafuHeader ClearMemRes;
+    uint32 SizeCleared;
+       
+}PACKED AMIYAFUClearMemoryRes_T;
+
+/**
+ * @struct AMIYAFUGetBootConfigReq_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    YafuHeader GetBootReq;
+    INT8U         VarName[65];  	
+             	
+} PACKED AMIYAFUGetBootConfigReq_T;
+
+/**
+ * @struct AMIYAFUGetBootConfigRes_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    INT8U         CompletionCode; 
+    YafuHeader GetBootRes;
+    INT8U         Status;	
+   	
+}PACKED AMIYAFUGetBootConfigRes_T;
+
+/**
+ * @struct AMIYAFUSetBootConfigReq_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    YafuHeader SetBootReq;
+    INT8U         VarName[65];	
+                	  
+} PACKED AMIYAFUSetBootConfigReq_T;
+
+/**
+ * @struct AMIYAFUSetBootConfigRes_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    INT8U         CompletionCode; 
+    YafuHeader SetBootRes;
+    INT8U         Status;	
+    	
+}PACKED AMIYAFUSetBootConfigRes_T;
+
+/**
+ * @struct AMIYAFUGetBootVarsReq_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    YafuHeader GetBootReq;
+                  	  
+} PACKED AMIYAFUGetBootVarsReq_T;
+
+/**
+ * @struct AMIYAFUGetBootVarsRes_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    INT8U         CompletionCode; 
+    YafuHeader GetBootRes;
+    INT8U         VarCount;
+    	
+}PACKED AMIYAFUGetBootVarsRes_T;
+
+
+
+/**
+ * @struct AMIYAFUDeactivateFlashReq_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    YafuHeader DeactivateFlashReq;
+               	  
+} PACKED AMIYAFUDeactivateFlashReq_T;
+
+/**
+ * @struct AMIYAFUDeactivateFlashRes_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    INT8U         CompletionCode; 
+    YafuHeader DeactivateFlashRes;
+    INT8U         Status;	
+	    	
+}PACKED AMIYAFUDeactivateFlashRes_T;
+
+/**
+ * @struct AMIYAFUResetDeviceReq_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    YafuHeader ResetReq;
+    INT16U       WaitSec;	
+               	  
+} PACKED AMIYAFUResetDeviceReq_T;
+
+typedef struct
+{
+    INT8U MajVer;
+    INT8U MinVer;
+}PACKED FwVersion;
+
+typedef union
+{
+    INT8U SetBootSelector;
+    INT8U GetBootSelector;
+    INT8U SetUploadSelector;
+    INT8U GetUploadSelector;
+    INT8U SetRebootStatus;
+    INT8U GetRebootStatus;
+    INT8U GetCurActiveImg;
+    FwVersion GetFwVersion;
+
+}DualImageOpt_T;
+
+typedef struct
+{
+    INT8U Parameter;
+    INT8U BootSelector;
+}PACKED AMIDualImageSupReq_T;
+
+typedef struct
+{
+    INT8U    CompletionCode;
+    DualImageOpt_T BootSelOpt;
+}PACKED AMIDualImageSupRes_T;
+
+/**
+ * @struct AMIYAFUResetDeviceRes_T
+ * @brief Flash info structure
+ */
+typedef struct
+{
+    INT8U         CompletionCode; 
+    YafuHeader ResetRes;
+    INT8U         Status;	
+	    	
+}PACKED AMIYAFUResetDeviceRes_T;
+
+/**
+ * @struct AMIGetFruDetailReq_T
+ * @brief FRU request info structure
+ */
+typedef struct
+{
+    INT8U FruReq;
+}PACKED AMIGetFruDetailReq_T;
+
+/**
+ * @struct AMIGetFruDetailRes_T
+ * @brief FRU response info structure
+ */
+typedef struct
+{
+    INT8U CompletionCode;
+    INT8U TotalFru;
+    INT8U DeviceNo;
+    INT8U FRUName[MAX_ID_STR_LEN];
+}PACKED AMIGetFruDetailRes_T;
+
+
+/**
+ * @struct AMIGetRootUserAccessRes_T
+ * @brief Get Linux Root user access response info structure
+ */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   CurrentUserIDState;
+} PACKED AMIGetRootUserAccessRes_T;
+
+
+/**
+ * @struct AMISetRootPasswordReq_T
+ * @brief Set Root user password request info structure
+ */
+typedef struct
+{
+    INT8U Operation;
+    INT8U Password[MAX_LINUX_ROOT_USER_PASSWORD_LEN + 1];
+}PACKED AMISetRootPasswordReq_T;
+
+/**
+ * @struct AMISetRootPasswordRes_T
+ * @brief  set Root user password response info structure
+ */
+typedef struct
+{
+    INT8U CompletionCode;
+}PACKED AMISetRootPasswordRes_T;
+
+/**
+ * @struct AMIGetUserShelltypeReq_T
+ * @brief  get user shelltype structure
+ */
+typedef struct
+{
+    INT8U UserID;
+}PACKED AMIGetUserShelltypeReq_T;
+
+/**
+ * @struct AMIGetUserShelltypeRes_T
+ * @brief  get user shelltype structure
+ */
+typedef struct
+{
+    INT8U CompletionCode;
+    INT8U Shelltype;	
+}PACKED AMIGetUserShelltypeRes_T;
+
+
+/**
+ * @struct AMISetUserShelltypeReq_T
+ * @brief  set user shelltype structure
+ */
+typedef struct
+{
+    INT8U UserID;
+    INT8U Shelltype;
+}PACKED AMISetUserShelltypeReq_T;
+
+/**
+ * @struct AMISetUserShelltypeRes_T
+ * @brief  set user shelltype structure
+ */
+typedef struct
+{
+    INT8U CompletionCode;
+}PACKED AMISetUserShelltypeRes_T;
+
+
+/**
+ * @struct AMITriggerEventDataUn_T
+ * @brief  Trigger Event Data Structure
+ */
+typedef union
+{
+    INT32U  Time;
+}PACKED AMITriggerEventDataUn_T;
+
+/**
+ * @struct AMISetTriggerEventReq_T
+ * @brief  Set Trigger Event Request Structure
+ */
+typedef struct
+{
+    INT8U TriggerParam;
+    INT8U EnableDisableFlag;
+    AMITriggerEventDataUn_T TriggerData;
+}PACKED AMISetTriggerEventReq_T;
+
+/**
+ * @struct AMISetTriggerEventRes_T
+ * @brief  Set Trigger Event Response Structure
+ */
+typedef struct
+{
+    INT8U CompletionCode;
+}PACKED AMISetTriggerEventRes_T;
+
+/**
+ * @struct AMIGetTriggerEventReq_T
+ * @brief  Get Trigger Event Request Structure
+ */
+typedef struct
+{
+    INT8U TriggerParam;
+}PACKED AMIGetTriggerEventReq_T;
+
+/**
+ * @struct AMIGetTriggerEvent_T
+ * @brief  Get Trigger Event Structure
+ */
+typedef struct
+{
+    INT8U CompletionCode;
+    INT8U EnableDisableFlag;
+}PACKED AMIGetTriggerEvent_T;
+
+/**
+ * @struct AMIGetTriggerEventRes_T
+ * @brief  Get Trigger Event Response Structure
+ */
+typedef struct
+{
+    AMIGetTriggerEvent_T AMIGetTriggerEvent;
+    AMITriggerEventDataUn_T TriggerData;
+}PACKED AMIGetTriggerEventRes_T;
+
+
+/**
+ * @struct AMIGetLoginAuditCfgRes_T
+ * @brief  Get login Audit configuration response structure
+ */
+typedef struct
+{
+    INT8U CompletionCode;
+    INT8U WebLogAuditCfg;
+    INT8U IPMILogAuditCfg;	
+    INT8U TelnetLogAuditCfg;
+    INT8U SSHLogAuditCfg;
+    INT8U KVMLogAuditCfg;
+}PACKED AMIGetLoginAuditCfgRes_T;
+
+
+/**
+ * @struct AMISetLoginAuditCfgReq_T
+ * @brief  Set login Audit configuration request structure
+ */
+typedef struct
+{
+    INT8U WebLogAuditCfg;
+    INT8U IPMILogAuditCfg;
+    INT8U TelnetLogAuditCfg;
+    INT8U SSHLogAuditCfg;
+    INT8U KVMLogAuditCfg;
+}PACKED AMISetLoginAuditCfgReq_T;
+
+/**
+ * @struct AMISetLoginAuditCfgRes_T
+ * @brief  Set login Audit configuration response structure
+ */
+typedef struct
+{
+    INT8U CompletionCode;
+}PACKED AMISetLoginAuditCfgRes_T;
+
+/**
+ * @struct AMIGetIPv6AddrRes_T
+ * @brief  Get IPv6 address request structure.
+ */
+typedef struct
+{
+    INT8U ChannelNum;
+    INT8U Index;
+    INT8U IPCnt;
+}AMIGetIPv6AddrReq_T;
+
+/**
+ * @struct AMIGetIPv6AddrRes_T
+ * @brief  Get IPV6 address response structure.
+ */
+typedef struct
+{
+    INT8U CompletionCode;
+    unsigned char GlobalIPAddr[8][16];   //anyCast Globel address    //UniCast Globel address
+    unsigned char GlobalPrefix[8];
+}AMIGetIPv6AddrRes_T;
+
+typedef struct
+{
+    unsigned char GlobalIPAddr[16][16];   //anyCast Globel address    //UniCast Globel address
+    unsigned char GlobalPrefix[16];
+}GetIPv6AddrRes_T;
+
+/**
+ * @struct AMIGetSOLConfRes_T
+ * @brief  Get SOL Conf Response Structure
+ */
+typedef struct
+{
+    INT8U CompletionCode;
+    INT8U SolSessionTimeout;
+    char  SolIfcPort[MAX_SOL_PORT_STR_LEN];
+}PACKED AMIGetSOLConfRes_T;
+
+/**
+ * @struct AMISetPamReq_T
+ * @brief  Set PAM Order request structure
+ */
+typedef struct 
+{
+    INT8U  Sqnce[MODULES_TO_MODIFIED];
+}AMISetPamReq_T;
+
+/**
+ * @struct AMISetPamRes_T
+ * @brief  Set PAM Order Response Structure
+ */
+typedef struct 
+{
+    INT8U CompletionCode;
+}AMISetPamRes_T;
+
+/**
+ * @struct AMIGetPamRes_T
+ * @brief Get PAM Order Response Structure
+ */
+typedef struct 
+{
+    INT8U CompletionCode;
+    INT8U Seqnce[MODULES_TO_MODIFIED];
+}AMIGetPamRes_T;
+
+/**
+ * @struct AMIYAFUSearchFlashInfoReq_T
+ * @brief Flash info structure based on node
+**/
+typedef struct
+{
+    INT8U	SPIDevice;
+
+} PACKED AMIYAFUSwitchFlashDeviceReq_T;
+
+/**
+ * @struct AMIYAFUSearchFlashInfoRes_T
+ * @brief Flash info structure based on node
+**/
+typedef struct
+{
+    INT8U	CompletionCode;
+    char	MTDName[MTD_DEV_NAME_LEN];
+    FlashDetails  FlashInfo;
+
+} PACKED AMIYAFUSwitchFlashDeviceRes_T;
+
+/**
+ * @struct AMIConfigTFTP_T
+ * @brief
+ */
+typedef struct
+{
+    INT8U Host[200];
+    INT8U RemoteFilePath[200];
+    INT8U Retry; //
+}PACKED AMIConfigTFTP_T;
+
+/**
+ * @struct AMIConfigFWUpdateSelect_T
+ * @brief
+ */
+typedef struct
+{
+    INT8U FWSelect;
+}PACKED AMIConfigFWUpdateSelect_T;
+
+
+/**
+ * @struct AMIStartFwUpdateReq_T
+ * @brief
+ */
+typedef struct 
+{
+    INT8U PreserveCfg;
+    INT8U ResetBMC;
+}PACKED AMIStartFwUpdateReq_T;
+
+/**
+ * @struct AMIStartFwUpdateRes_T
+ * @brief
+ */
+typedef struct
+{
+    INT8U CompletionCode;
+}PACKED AMIStartFwUpdateRes_T;
+
+
+
+/**
+ * @struct AMIGetTftpProgressStatusRes_T
+ * @brief TFTP Flash Progress Status Info
+ */
+typedef struct
+{
+    INT8U CompletionCode;
+    INT8U Progress;
+    INT8U Overall;
+}PACKED AMIGetTftpProgressStatusRes_T;
+
+/**
+ * @struct AMISetFWCfgReq_T
+ * @brief
+ */
+typedef struct
+{
+    INT8U Parameter;
+    INT8U Data[200];
+}PACKED AMISetFWCfgReq_T;
+
+/**
+ * @struct AMISetFWCfgRes_T
+ * @brief
+ */
+typedef struct
+{
+    INT8U CompletionCode;
+}PACKED AMISetFWCfgRes_T;
+
+/**
+ * @struct AMIGetFWCfgReq_T
+ * @brief
+ */
+typedef struct
+{
+    INT8U Parameter;
+}PACKED AMIGetFWCfgReq_T;
+
+/**
+ * @struct AMIGetFWCfgRes_T
+ * @brief
+ */
+typedef struct
+{
+    INT8U CompletionCode;
+    INT8U Data[200];
+}PACKED AMIGetFWCfgRes_T;
+
+/**
+ * @struct AMISetFWProtocolReq_T
+ * @brief
+ */
+typedef struct
+{
+    INT8U ProtocolType;
+}PACKED AMISetFWProtocolReq_T;
+
+/**
+ * @struct AMISetFWProtocolRes_T
+ * @brief
+ */
+typedef struct
+{
+    INT8U CompletionCode;
+}PACKED AMISetFWProtocolRes_T;
+
+
+/**
+ * @struct AMIGetFWProtocolRes_T
+ * @brief
+ */
+typedef struct
+{
+    INT8U CompletionCode;
+    INT8U ProtocolType;
+}PACKED AMIGetFWProtocolRes_T;
+
+/**
+ * @struct AMISetPwdEncKeyReq_T
+ * @brief
+ */
+typedef struct
+{
+    INT8U PwdEncryptKey[MAX_SIZE_KEY];
+} PACKED AMISetPwdEncKeyReq_T;
+
+/**
+ * @struct AMISetPwdEncKeyRes_T
+ * @brief
+ */
+typedef struct
+{
+    INT8U CompletionCode;
+} PACKED AMISetPwdEncKeyRes_T;
+
+/**
+ * @struct AMISetUBootMemtestReq_T
+ * @brief
+ */
+typedef struct
+{
+    INT8U EnableMemoryTest;
+} PACKED AMISetUBootMemtestReq_T;
+
+/**
+ * @struct AMISetUBootMemtestRes_T
+ * @brief
+ */
+typedef struct
+{
+    INT8U CompletionCode;
+} PACKED AMISetUBootMemtestRes_T;
+
+/**
+ * @struct AMIGetUBootMemtestStatusRes_T
+ * @brief
+ */
+typedef struct
+{
+    INT8U CompletionCode;
+    INT8U MemtestStatus;
+    INT8U IsMemtestEnable;
+} PACKED AMIGetUBootMemtestStatusRes_T;
+
+/*Structure is used to set the time zone */
+typedef struct
+{
+    INT8U ZoneName [TIME_ZONE_LEN];
+}PACKED AMISetTimeZone_T;
+
+/*Structure is used to get the time zone */
+typedef struct
+{
+    INT8U CompletionCode;
+    INT8U ZoneName [TIME_ZONE_LEN];
+}PACKED AMIGetTimeZone_T;
+
+/*MACROS and structures  for get/set NTP server configs*/
+
+#define MAX_SERVER_LEN     128
+#define MAX_STATUS_LEN     8
+#define PARAM_SERVER_PRIM  1
+#define PARAM_SERVER_SEC   2
+#define PARAM_STATUS       3
+#define AUTO               0x1
+#define MANUAL             0x0
+#define FAIL               0x2
+
+typedef struct
+{
+    INT8U CompletionCode;
+    INT8U Status;
+    INT8U PrimServer[MAX_SERVER_LEN];
+    INT8U SecServer[MAX_SERVER_LEN];
+}PACKED AMIGetNTPCfgRes_T;
+
+typedef union 
+{
+    INT8U Status;
+    INT8U Server[MAX_SERVER_LEN];
+	
+} NTPConfUn_T; 
+
+typedef struct
+{
+    INT8U param;
+    NTPConfUn_T ntpconf;
+}PACKED AMISetNTPCfgReq_T;
+
+typedef struct
+{
+    INT8U CompletionCode;
+}PACKED AMISetNTPCfgRes_T;
+
+
+typedef struct
+{
+    INT8U PubKey[MAX_PERMITTED_KEY_SIZE];
+}PACKED AMIYafuSignedImageKeyReq_T;
+
+typedef struct
+{
+    INT8U CompletionCode;
+}PACKED AMIYafuSignedImageKeyRes_T;
+
+typedef struct
+{
+    INT8U Status;
+}PACKED AMIVirtualDeviceSetStatusReq_T;
+
+typedef struct
+{
+	INT8U CompletionCode;
+}PACKED AMIVirtualDeviceSetStatusRes_T;
+
+typedef struct
+{
+	INT8U CompletionCode;
+	INT8U Status;
+}PACKED AMIVirtualDeviceGetStatusRes_T;
+
+typedef struct 
+{
+        INT8U LicenseKey[MAX_LIC_KEY_LEN];
+}PACKED AMIAddLicenseKeyReq_T;
+
+typedef struct 
+{
+        INT8U CompletionCode;
+}PACKED AMIAddLicenseKeyRes_T;
+
+typedef struct 
+{
+    INT8U FeatureName[APPCODE_LEN];
+    INT8U Validity;
+}PACKED LicenseInfo_T;
+
+typedef struct 
+{
+    INT8U CompletionCode;
+    INT8U NumOfFeatures;
+    LicenseInfo_T Lic_Info[MAX_LIC_APP];
+}PACKED AMIGetLicenseValidityRes_T;
+
+
+
+#pragma pack()
+
+#endif /* IPMI_AMI_H */
+
+
+
+

+ 53 - 0
app/bmc_server/ipmi_dev/IPMI_AMILicense.h

@@ -0,0 +1,53 @@
+/****************************************************************
+ **                                                            **
+ **       (C)Copyright 2012, American Megatrends Inc.          **
+ **                                                            **
+ **                  All Rights Reserved.                      **
+ **                                                            **
+ **        5555 Oakbrook Pkwy Suite 200, Norcross,             **
+ **                                                            **
+ **        Georgia - 30093, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ *
+ * Filename: IPMI_AMILicense.h
+ * 
+ *  Author: Poulabi Patra   <poulabipatra@amiindia.co.in>
+ ****************************************************************/
+
+#ifndef _IPMI_AMILICENSE_H    
+#define _IPMI_AMILICENSE_H 1
+
+#include "Types.h"
+
+#define BUFFER_LENGTH            50
+#define MAC_ADDR_LEN             6
+#define LIC_SIGNATURE_LEN        2
+#define LIC_SIGNATURE            "SP"
+#define MAC_OUI_LEN              3
+#define APPCODE_LEN              8
+#define MAX_LIC_APP              32
+#define LIC_KEY_LEN              26
+#define MAX_LIC_KEY_LEN          60
+#define LICENSE_CONF             "/conf/license/license.conf"
+#define LICENSE_STATUS_FILE      "/conf/license/status"
+#define LICENSE_TEMP_FILE        "/tmp/temp"
+#define LICENSE_CNT_DAYS_FILE    "/conf/license/count_days"
+#define LICENSE_DIR             "/conf/license/"
+#define LICENSE_KEY_FILE        "/conf/license/keys"
+
+
+#pragma pack(1)
+typedef struct
+{
+    INT8U Signature[LIC_SIGNATURE_LEN];
+    INT8U Lic_Validity;
+    INT32U FtrList;
+    INT8U MACAddr[MAC_ADDR_LEN];
+    
+}PACKED LicenseKeyInfo_T;
+#pragma pack()
+extern INT16 GetLicenseStatus(const char *AppCode, BOOL *Status);
+
+#endif

+ 375 - 0
app/bmc_server/ipmi_dev/IPMI_AMIOBSM.h

@@ -0,0 +1,375 @@
+/****************************************************************
+ **                                                            **
+ **    (C)Copyright 2007-2008, American Megatrends Inc.        **
+ **                                                            **
+ **                   All Rights Reserved.                     **
+ **                                                            **
+ **        5555, Oakbrook Parkway, Suite 200, Norcross,        **
+ **                                                            **
+ **        Georgia - 30093, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************/
+
+ /****************************************************************
+ * @file	IPMI_AMIOBSM.h
+ * @author	Velu	<velmuruganv@amiindia.co.in>
+ * @brief
+ ****************************************************************/
+
+#ifndef LIBIPMI_AMIOBSM_H
+#define LIBIPMI_AMIOBSM_H
+
+
+#include "OBSMPort.h"
+
+/*** Definitions and Macros ***/
+#define CMD_AMI_GET_SLOT_MAP_INFO			0xA0
+#define CMD_AMI_GET_SLOT_INFO				0xA1
+#define CMD_AMI_GET_PWR_INFO				0xA2
+#define CMD_AMI_GET_PWR_DOM_INFO			0xA3
+#define CMD_AMI_GET_PWR_SUPPLY_INFO			0xA4
+#define CMD_AMI_GET_COOLING_INFO			0xA5
+#define CMD_AMI_GET_COOLING_DOM_INFO		0xA6
+#define CMD_AMI_GET_FAN_INFO				0xA7
+#define CMD_AMI_GET_BLADE_STATUS			0xA8
+#define CMD_AMI_ETH_RESTART_ALL				0xA9
+
+/* Debug Commands */
+#define CMD_DBG_GET_CHASSIS_PWR_INFO		0xD0
+#define CMD_DBG_GET_CHASSIS_COOLING_INFO	0xD1
+#define CMD_DBG_GET_BLADE_INFO				0xD2
+#define CMD_DBG_BLADE_INS_REM_EVT			0xD3
+#define CMD_DBG_PS_STATE_CHANGE_EVT			0xD4
+#define CMD_DBG_FAN_STATE_CHANGE_EVT		0xD5
+#define CMD_DBG_THERMAL_STATE_CHANGE_EVT	0xD6
+
+#pragma pack(1)
+
+/*
+ * Slot Data Info structure
+ */
+typedef struct
+{
+	INT8U	modClass;
+	INT8U	modType;
+	INT8U	slotIns;
+	INT8U	slotId;
+	INT8U   slotStatus;
+	INT8U   devId[16];
+}PACKED SlotData_T;
+
+/*
+ * Power Supply Info Structure
+ */
+typedef struct
+{
+	INT8U  presence;
+	INT8U  status;
+	INT16U maxPwr;
+}PACKED PwrSupplyStatusInfo_T;
+
+/*
+ * Power Domain Info Structure
+ */
+typedef struct
+{
+	INT8U  domNum;
+	INT8U  redundancy;
+	INT8U  redundancyState;
+	INT8U  hotSwap;
+	INT16U totalPwr;
+	INT16U remPwr;
+	INT8U  devCount;
+	INT8U  pwrSupplyCount;
+	INT8U  totalPwrSupplySlot;
+	INT8U  reqPwrSupply;
+	INT8U  slotCount;
+	INT8U  slotList[MAX_SLOT_NUM_SUPPORTED];
+}PACKED ChassisPwrDomInfo_T;
+
+/*
+ * Fan Info Structure
+ */
+typedef struct
+{
+	INT8U tachSensorNum;
+	INT8U rdg;
+	INT8U presence;
+	INT8U status;
+}PACKED FanModuleInfo_T;
+
+/*
+ * Cooling Domain Info Structure
+ */
+typedef struct
+{
+	INT8U  domNum;
+	INT8U  redundancy;
+	INT8U  redundancyState;
+	INT8U  hotSwap;
+	INT8U  thermalState;
+	INT16U allocPwr;
+	INT8U  devCount;
+	INT8U  fanCount;
+	INT8U  totalFanSlot;
+	INT8U  reqFanCount;
+	INT8U  slotCount;
+	INT8U  slotList[MAX_SLOT_NUM_SUPPORTED];
+}PACKED ChassisCoolingDomInfo_T;
+
+/*
+ * Get Power Supply Info structures
+ */
+typedef struct
+{
+	INT8U   openBladeId;
+	INT8U   domNum;
+	INT8U   pwrSupplyId;
+} PACKED GetPwrSupplyInfoReq_T;
+
+typedef struct
+{
+	INT8U   completionCode;
+	INT8U   openBladeId;
+	PwrSupplyStatusInfo_T pwrSupplyStatusInfo;
+} PACKED GetPwrSupplyInfoRes_T;
+
+/*
+ * Get Power Domain Info structures
+ */
+typedef struct
+{
+	INT8U   openBladeId;
+	INT8U   domNum;
+} PACKED GetPwrDomInfoReq_T;
+
+typedef struct
+{
+	INT8U   completionCode;
+	INT8U   openBladeId;
+	ChassisPwrDomInfo_T chassisPwrDomInfo;
+} PACKED GetPwrDomInfoRes_T;
+
+/*
+ * Get Power Info structures
+ */
+typedef struct
+{
+	INT8U   openBladeId;
+} PACKED GetPwrInfoReq_T;
+
+typedef struct
+{
+	INT8U   completionCode;
+	INT8U   openBladeId;
+	INT8U   totPwrDomain;
+} PACKED GetPwrInfoRes_T;
+
+
+/*
+ * Get Fan Info structures
+ */
+typedef struct
+{
+	INT8U   openBladeId;
+	INT8U   domNum;
+	INT8U   fanId;
+} PACKED GetFanInfoReq_T;
+
+typedef struct
+{
+	INT8U   completionCode;
+	INT8U   openBladeId;
+	FanModuleInfo_T fanModuleInfo;
+} PACKED GetFanInfoRes_T;
+
+/*
+ * Get Cooling Domain Info structures
+ */
+typedef struct
+{
+	INT8U   openBladeId;
+	INT8U   domNum;
+} PACKED GetCoolingDomInfoReq_T;
+
+typedef struct
+{
+	INT8U   completionCode;
+	INT8U   openBladeId;
+	ChassisCoolingDomInfo_T chassisCoolingDomInfo;
+} PACKED GetCoolingDomInfoRes_T;
+
+/*
+ * Get Cooling Info structures
+ */
+typedef struct
+{
+	INT8U   openBladeId;
+} PACKED GetCoolingInfoReq_T;
+
+typedef struct
+{
+	INT8U   completionCode;
+	INT8U   openBladeId;
+	INT8U   totCoolingDomain;
+} PACKED GetCoolingInfoRes_T;
+
+/*
+ * Get Slot Map Info Structures
+ */
+typedef struct
+{
+	INT8U	openBladeId;
+} PACKED GetSlotMapInfoReq_T;
+
+typedef struct
+{
+	INT8U	completionCode;
+	INT8U	openBladeId;
+	INT8U	slotCount;
+} PACKED GetSlotMapInfoRes_T;
+
+/*
+ * Get Slot Info Structures
+ */
+typedef struct
+{
+	INT8U	openBladeId;
+	INT8U	slotNum;
+} PACKED GetSlotInfoReq_T;
+
+typedef struct
+{
+	INT8U	completionCode;
+	INT8U	openBladeId;
+	SlotData_T slotData;
+} PACKED GetSlotInfoRes_T;
+
+/*
+ * Get Blade Status Structure
+ */
+typedef struct
+{
+	INT8U   openBladeId;
+	INT8U   slotId;
+} PACKED GetBladeStatusReq_T;
+
+typedef struct
+{
+	INT8U   completionCode;
+	INT8U   openBladeId;
+	INT8U   bladePresentFlag;
+} PACKED GetBladeStatusRes_T;
+
+/*-------------------
+ * Debug Commands
+ *-------------------*/
+/*
+ * Get Power Info Structure
+ */
+typedef struct
+{
+	INT8U  param;
+	INT8U  size;
+	INT16U offset;
+} PACKED GetChassisPwrInfoReq_T;
+
+typedef struct
+{
+	INT8U	completionCode;
+	INT8U	pwrData [512];
+} PACKED GetChassisPwrInfoRes_T;
+
+/*
+ * Get Cooling Info Structure
+ */
+typedef struct
+{
+	INT8U  param;
+	INT8U  size;
+	INT16U offset;
+} PACKED GetChassisCoolingInfoReq_T;
+
+typedef struct
+{
+	INT8U	completionCode;
+	INT8U	coolingData [512];
+} PACKED GetChassisCoolingInfoRes_T;
+
+/*
+ * Get Blade Info Structure 
+ */
+typedef struct
+{
+	INT8U	slotId;
+} PACKED GetBladeInfoReq_T;
+
+typedef struct
+{
+	INT8U	completionCode;
+	INT8U	bladePresentFlag;
+	INT8U	bladeInfo[127];
+} PACKED GetBladeInfoRes_T;
+
+/*
+ * Blade Insertion/Removal Structure
+ */
+typedef struct
+{
+	INT8U	slotId;
+	INT8U	insertFlag;
+} PACKED BladeInsRemEvtReq_T;
+
+typedef struct
+{
+	INT8U	completionCode;
+} PACKED BladeInsRemEvtRes_T;
+
+/*
+ * Power supply state change event
+ */
+typedef struct
+{
+	INT8U	param;
+	INT8U	sensorNum;
+} PACKED PSEvtReq_T;
+
+typedef struct
+{
+	INT8U	completionCode;
+} PACKED PSEvtRes_T;
+
+/*
+ * Fan state change event
+ */
+typedef struct
+{
+	INT8U	param;
+	INT8U	sensorNum;
+} PACKED FanEvtReq_T;
+
+typedef struct
+{
+	INT8U	completionCode;
+} PACKED FanEvtRes_T;
+
+/*
+ * Thermal state change event
+ */
+typedef struct
+{
+	INT8U	param;
+	INT8U	slotId;
+	INT8U	sensorNum;
+	INT8U   domId;
+	INT8U   thermalState;
+} PACKED ThermalEvtReq_T;
+
+typedef struct
+{
+	INT8U	completionCode;
+} PACKED ThermalEvtRes_T;
+
+
+#pragma pack()
+#endif

+ 134 - 0
app/bmc_server/ipmi_dev/IPMI_AMIResetPass.h

@@ -0,0 +1,134 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ ****************************************************************
+ *
+ * IPMI_AMIResetPassword.h
+ * AMI Reset Password specific IPMI Commands
+ *
+ * Author: Gokula Kannan. S <gokulakannans@amiindia.co.in>
+ *
+ *****************************************************************/
+
+#ifndef IPMI_AMIRESETPASS_H_
+#define IPMI_AMIRESETPASS_H_
+
+#include <Types.h>
+#include "OemDefs.h"
+//#define USER_EMAIL_DB "/conf/UserEmail.db"
+//#define MAX_USERS       64
+//#ifndef EMAIL_ADDR_SIZE
+#define EMAIL_ADDR_SIZE 64
+
+//#endif
+
+#pragma pack (1)
+
+/**
+ * *@struct AMISetUserEmailReq_T
+ * *@brief Request Structure for setting the Email address 
+ * *		for a particular user ID.
+ * */
+typedef struct
+{
+	INT8U	UserID;
+	char	EMailID[EMAIL_ADDR_SIZE];
+}PACKED AMISetUserEmailReq_T;
+
+/**
+ * *@struct AMISetUserEmailRes_T
+ * *@brief Response Structure for setting the Email address 
+ * *		for a particular user ID.
+ * */
+typedef struct
+{
+	INT8U	CompletionCode;
+}PACKED AMISetUserEmailRes_T;
+
+/**
+ * *@struct AMIGetUserEmailReq_T
+ * *@brief Request Structure for getting the Email address 
+ * *		for a particular user ID.
+ * */
+typedef struct
+{
+	INT8U	UserID;
+}PACKED AMIGetUserEmailReq_T;
+
+/**
+ * *@struct AMIGetUserEmailRes_T
+ * *@brief Response Structure for getting the Email address 
+ * *		for a particular user ID.
+ * */
+typedef struct
+{
+	INT8U	CompletionCode;
+	char	EMailID[EMAIL_ADDR_SIZE];
+}PACKED AMIGetUserEmailRes_T;
+
+/**
+ * *@struct AMIResetPasswordReq_T
+ * *@brief Request Structure to Reset the Password  
+ * *		for a particular user ID.
+ * */
+typedef struct
+{
+	INT8U   UserID;
+	INT8U   Channel;
+}PACKED AMIResetPasswordReq_T;
+
+/**
+ * *@struct AMIResetPasswordReq_T
+ * *@brief Response Structure to Reset the Password  
+ * *		for a particular user ID.
+ * */
+typedef struct
+{
+	INT8U	CompletionCode;
+}PACKED AMIResetPasswordRes_T;
+
+/**
+ * *@struct AMISetUserEmailFormatReq_T
+ * *@brief Request Structure for setting the Email Format 
+ * *		for a particular user ID.
+ * */
+typedef struct
+{
+	INT8U	UserID;
+	INT8U	EMailFormat[EMAIL_FORMAT_SIZE];
+}PACKED AMISetUserEmailFormatReq_T;
+
+/**
+ * *@struct AMISetUserEmailFormatRes_T
+ * *@brief Response Structure for setting the Email Format 
+ * *		for a particular user ID.
+ * */
+typedef struct
+{
+	INT8U	CompletionCode;
+}PACKED AMISetUserEmailFormatRes_T;
+/**
+ * *@struct AMIGetUserEmailFormatRes_T
+ * *@brief Response Structure for getting the Email Format 
+ * *		for a particular user ID.
+ * */
+typedef struct
+{
+	INT8U	CompletionCode;
+	INT8U 	EMailFormat[EMAIL_FORMAT_SIZE];
+}PACKED AMIGetUserEmailFormatRes_T;
+
+#pragma pack ()
+
+#endif
+

+ 145 - 0
app/bmc_server/ipmi_dev/IPMI_AMISmtp.h

@@ -0,0 +1,145 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ ******************************************************************
+ *
+ * IPMI_AMIsmtp.h
+ * AMI specific Smtp  Commands
+ *
+ *
+ ******************************************************************/
+
+#ifndef __IPMI_AMISMTP_H__
+#define __IPMI_AMISMTP_H__
+
+#include "IPMI_LANConfig.h"
+
+#define OEM_ENABLE_DISABLE_SMTP 		0
+#define OEM_PARAM_SMTP_SERVR_ADDR		1
+#define OEM_PARAM_SMTP_USER_NAME		2
+#define OEM_PARAM_SMTP_PASSWD			3
+#define OEM_PARAM_SMTP_NO_OF_DESTINATIONS    	4
+#define OEM_PARAM_SMTP_USERID		5
+#define OEM_PARAM_SMTP_SUBJECT			6
+#define OEM_PARAM_SMTP_MSG				7
+#define OEM_PARAM_SMTP_SENDER_ADDR      8
+#define OEM_PARAM_SMTP_HOST_NAME        9
+#define OEM_PARAM_SMTP_PORT				0xA
+#define OEM_ENABLE_DISABLE_SMTP_AUTH	0xB
+#define OEM_PARAM_SMTP_IPV6_SERVR_ADDR 0x0C
+
+#define OEM_ENABLE_DISABLE_SMTP2 		0x0D
+#define OEM_PARAM_SMTP_2_SERVR_ADDR		0x0E
+#define OEM_PARAM_SMTP_2_USER_NAME		0x0F
+#define OEM_PARAM_SMTP_2_PASSWD			0x10
+#define OEM_PARAM_SMTP_2_SENDER_ADDR      0x11
+#define OEM_PARAM_SMTP_2_HOST_NAME        0x12
+#define OEM_PARAM_SMTP_2_PORT				0x13
+#define OEM_ENABLE_DISABLE_SMTP_2_AUTH	0x14
+#define OEM_PARAM_SMTP_2_IPV6_SERVR_ADDR 0x15
+
+
+#define MAX_EMAIL_ADDR_BLOCKS  4
+#define MAX_EMAIL_BLOCK_SIZE   16
+#define MAX_SUB_BLOCKS  	2
+#define MAX_SUB_BLOCK_SIZE   	16
+#define MAX_MSG_BLOCKS  	4
+#define MAX_MSG_BLOCK_SIZE   	16
+#define MAX_SRV_NAME_BLOCKS	4
+#define MAX_SRV_NAME_BLOCK_SIZE	16
+#define MAX_EMAIL_DESTINATIONS    15
+#define MAX_SMTP_USERNAME_LEN  65
+#define MAX_SMTP_PASSWD_LEN       65
+#define MAX_SMTP_PORT_SIZE	4
+#define MAX_SMTP_AUTH_FLAG_LEN 1
+#define OEM_SMTP_SERVER_DISABLED -2
+
+#pragma pack (1)
+
+typedef union
+{
+    INT8U EnableDisableSMTP;
+    INT8U EnableDisableSmtpAuth;
+    INT8U ServerAddr [ IP_ADDR_LEN ];
+    INT8U IP6_ServerAddr [ IP6_ADDR_LEN ];
+    INT8U UserName [ MAX_SMTP_USERNAME_LEN ];
+    INT8U Passwd   [MAX_SMTP_PASSWD_LEN];
+    INT8U NoofDestinations;
+    INT8U Subject	 [MAX_SUB_BLOCK_SIZE ];
+    INT8U Msg	 [MAX_MSG_BLOCK_SIZE ];
+    INT8U SenderAddr[MAX_EMAIL_BLOCK_SIZE];
+    INT8U Servername[MAX_SRV_NAME_BLOCK_SIZE];
+    INT16U SmtpPort;
+    INT8U UserID;
+    INT8U EnableDisableSMTP2;
+    INT8U EnableDisableSmtp2Auth;
+    INT8U Server2Addr [ IP_ADDR_LEN ];
+    INT8U IP6_Server2Addr [ IP6_ADDR_LEN ];
+    INT8U UserName2 [ MAX_SMTP_USERNAME_LEN ];
+    INT8U Passwd2 [MAX_SMTP_PASSWD_LEN];
+    INT8U Sender2Addr[MAX_EMAIL_BLOCK_SIZE];
+    INT8U Server2name[MAX_SRV_NAME_BLOCK_SIZE];
+    INT16U Smtp2Port;
+} PACKED Smtp_ConfigUn_T;
+
+extern const INT8U g_SMTPConfigParameterLength[];
+extern const INT8U g_SMTPBlockSelectorLength[];
+
+typedef struct
+{
+    INT8U   CompletionCode;
+} PACKED  SetSMTPConfigRes_T;
+
+typedef struct
+{
+    INT8U   Channel;
+    INT8U   ParameterSelect;
+    INT8U   SetSelector;
+    INT8U   BlockSelector;
+    Smtp_ConfigUn_T ConfigData;
+
+} PACKED  SetSMTPConfigReq_T;
+
+
+typedef struct
+{
+    INT8U   CompletionCode;
+    Smtp_ConfigUn_T ConfigData;
+
+} PACKED  GetSMTPConfigRes_T;
+
+
+
+typedef struct
+{
+    INT8U   Channel;
+    INT8U   ParameterSelect;
+    INT8U   SetSelector;
+    INT8U   BlockSelector;
+
+} PACKED  GetSMTPConfigReq_T;
+
+typedef struct
+{
+    INT8U EnableDisableSMTP;
+    INT8U UserName [ MAX_SMTP_USERNAME_LEN ];
+    INT8U Passwd   [MAX_SMTP_PASSWD_LEN];
+    uint8_t SenderAddr[MAX_EMAIL_BLOCK_SIZE * MAX_EMAIL_ADDR_BLOCKS];
+    uint8_t MachineName[MAX_SRV_NAME_BLOCK_SIZE * MAX_SRV_NAME_BLOCKS];
+    INT8U EnableDisableSmtpAuth;
+    INT16U SmtpPort;
+} PACKED SmtpInfoParam_T;
+
+#pragma pack ()
+
+
+#endif //__IPMI_AMISMTP_H__

+ 99 - 0
app/bmc_server/ipmi_dev/IPMI_AMISyslogConf.h

@@ -0,0 +1,99 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ ****************************************************************
+ *
+ * IPMI_AMISyslogConf.h
+ * AMI Syslog Configuration related IPMI Commands
+ *
+ * Author: Gokula Kannan. S <gokulakannans@amiindia.co.in>
+ *
+ *****************************************************************/
+
+#ifndef IPMI_AMISYSLOGCONF_H_
+#define IPMI_AMISYSLOGCONF_H_
+
+#include <Types.h>
+#include "syslogconf.h"
+
+#pragma pack (1)
+
+/* Command for Set log */
+#define SYSLOG	0x0
+#define AUDITLOG	0x1
+
+/* Size of the command */
+#define SIZE_SYS_DISABLE (2 * sizeof(INT8U))
+#define SIZE_SYS_LOCAL (SIZE_SYS_DISABLE + sizeof(INT32U) + sizeof(INT8U))
+#define SIZE_SYS_REMOTE (SIZE_SYS_DISABLE + HOSTNAME_LEN)
+#define SIZE_AUDIT	SIZE_SYS_DISABLE
+
+/**
+ * *@struct AMISetLogConfReq_T
+ * *@brief Request Structure for setting the Log configuration.
+ * */
+typedef struct
+{
+    INT8U   Cmd;    /* Command to process */
+    INT8U   Status;     /* status to set */
+    union
+    {
+        struct
+        {
+            char    HostName[HOSTNAME_LEN];                  /* Name of the remote syslog server */
+        }Remote;                                                             /* Request to Enable remote system log */
+        struct
+        {
+            INT32U	Size;                                             /* Size of each file to rotate */
+            INT8U	Rotate;                                                /* Number of back-up files after logrotate */
+        }Local;                                                             /* Request to Enable local system log */
+    }Config;
+}PACKED AMISetLogConfReq_T;
+
+/**
+ * *@struct AMISetLogConfRes_T
+ * *@brief Response Structure for setting the Log configuration.
+ * */
+typedef struct
+{
+    INT8U   CompletionCode;     /* Completion code */
+}PACKED AMISetLogConfRes_T;
+
+/**
+ * *@struct AMIGetLogConfRes_T
+ * *@brief Request Structure for getting the Log configuration.
+ * */
+typedef struct
+{
+
+    INT8U	CompletionCode;    /* Completion code */
+    INT8U	SysStatus;       /* ststem log status */
+    INT8U	AuditStatus;    /* Audit log status */
+    union
+    {
+        struct
+        {
+            char	HostName[HOSTNAME_LEN];     /* Name of the remote syslog server */
+        }Remote;    /* Request to Enable remote system log */
+        struct
+        {
+            INT32U  Size;   /* Size of each file to rotate */
+            INT8U	    Rotate;     /* Number of back-up files after logrotate */
+        }Local;     /* Request to Enable local system log */
+    }Config;
+}PACKED AMIGetLogConfRes_T;
+
+#pragma pack ()
+
+#endif
+

+ 223 - 0
app/bmc_server/ipmi_dev/IPMI_App+.h

@@ -0,0 +1,223 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ ****************************************************************
+ *
+ * IPMI_App.h
+ * AppDevice Commands Handler
+ *
+ * Author: Govind Kothandapani <govindk@ami.com>
+ *       : Rama Bisa <ramab@ami.com>
+ *       : Basavaraj Astekar <basavaraja@ami.com>
+ *       : Bakka Ravinder Reddy <bakkar@ami.com>
+ *
+ *****************************************************************/
+#ifndef IPMI_APPDEV_PLUS_H
+#define IPMI_APPDEV_PLUS_H
+
+#include "Types.h"
+#include "PMConfig.h"
+#include "Session.h"
+
+/*** Macro Definitions ***/
+#define MAX_PLD_ENABLES     4
+
+/* ActivatePayloadReq_T */
+typedef struct
+{
+    INT8U   PayldType;
+    INT8U   PayldInst;
+    INT8U   AuxData [4];
+
+} ActivatePayloadReq_T;
+
+/* ActivatePayloadRes_T */
+typedef struct
+{
+
+    INT8U   CompletionCode;
+    INT8U   AuxData [4];
+    INT16U  InboundPayldSize;
+    INT16U  OutboundPayldSize;
+    INT16U  UDPPort;
+    INT16U  VLANNo;
+
+} ActivatePayloadRes_T;
+
+/* DeactivatePayloadReq_T */
+typedef struct
+{
+    INT8U   PayldType;
+    INT8U   PayldInst;
+    INT8U   AuxData [4];
+
+} DeactivatePayloadReq_T;
+
+/* GetPayldActStatRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   InstCap;
+    INT16U  ActivatedInst;
+
+} GetPayldActStatRes_T;
+
+/* GetPayldInstInfoReq_T */
+typedef struct 
+{
+    INT8U   PayldType;
+    INT8U   PayldInst;
+
+} GetPayldInstInfoReq_T;
+
+/* GetPayldInstInfoRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT32U  SessionID;
+    INT8U   SpecificInfo [8];
+
+} GetPayldInstInfoRes_T;
+
+/* SetUsrPayldAccReq_T */
+typedef struct
+{
+    INT8U   ChannelNum;
+    INT8U   UserId;
+    INT8U   PayloadEnables [MAX_PLD_ENABLES];
+
+} SetUsrPayldAccReq_T;
+
+/* GetUsrPayldAccReq_T */
+typedef struct
+{
+    INT8U   ChannelNum;
+    INT8U   UserId;
+
+} GetUsrPayldAccReq_T;
+
+/* GetUsrPayldAccRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   PayloadEnables [MAX_PLD_ENABLES];
+
+} GetUsrPayldAccRes_T;
+
+
+/* GetChPayldSupRes_T */
+typedef struct
+{
+
+    INT8U   CompletionCode;
+    INT8U   StdPldtype1;
+    INT8U   StdPldtype2;
+    INT8U   SessStpPldtype1;
+    INT8U   SessStpPldtype2;
+    INT8U   OemPldtype1;
+    INT8U   OemPldtype2;
+    INT16U  Rsvd;
+
+} GetChPayldSupRes_T;
+
+/* GetChPayldVerReq_T */
+typedef struct
+{
+    INT8U   ChannelNum;
+    INT8U   PayloadNum;
+
+} GetChPayldVerReq_T;
+
+/* GetChPayldVerRes_T */
+typedef struct
+{
+
+    INT8U   CompletionCode;
+    INT8U   FormatVer;
+
+} GetChPayldVerRes_T;
+
+/* GetChOemPayldInfoReq_T */
+typedef struct
+{
+    INT8U   ChannelNum;
+    INT8U   PayloadNum;
+    INT8U   OemIANA [3];
+    INT8U   OemPyldId [2];
+
+} GetChOemPayldInfoReq_T;
+
+/* GetChOemPayldInfoRes_T */
+typedef struct
+{
+
+    INT8U   CompletionCode;
+    INT8U   PayloadNum;
+    INT8U   OemIANA [3];
+    INT8U   OemPyldId [2];
+    INT8U   FormatVer;
+
+} GetChOemPayldInfoRes_T;
+
+/* SusResPayldEncryptReq_T */
+typedef struct
+{
+    INT8U   PayldType;
+    INT8U   PayldInst;
+    INT8U   Operation;
+
+} SusResPayldEncryptReq_T;
+
+/* SetChSecurityKeysReq_T */
+typedef struct
+{
+    INT8U   ChannelNum;
+    INT8U   Operation;
+    INT8U   KeyID;
+
+} SetChSecurityKeysReq_T;
+
+/* SetChSecurityKeysRes_T */
+typedef struct
+{
+
+    INT8U   CompletionCode;
+
+} SetChSecurityKeysRes_T;
+
+/* GetSysIfcCapsRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   Rsrvd;
+
+} GetSysIfcCapsRes_T;
+
+/* GetChCipherSuitesReq_T */
+typedef struct
+{
+    INT8U   ChannelNum;
+    INT8U   PayloadType;
+    INT8U   ListIndex;
+
+} GetChCipherSuitesReq_T;
+
+/* GetChCipherSuitesRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   ChannelNum;
+
+} GetChCipherSuitesRes_T;
+
+#endif /* IPMI_APPDEV_PLUS_H */

+ 100 - 0
app/bmc_server/ipmi_dev/IPMI_App.h

@@ -0,0 +1,100 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ *****************************************************************
+ *
+ * IPMI_App.h
+ * Application Command numbers
+ *
+ *****************************************************************/
+#ifndef IPMI_APP_H
+#define IPMI_APP_H
+
+/*** Application Commands ***/
+#define CMD_GET_DEV_ID              0x01
+#define CMD_BROADCAST_GET_DEV_ID    0x01
+#define CMD_COLD_RESET              0x02
+#define CMD_WARM_RESET              0x03
+#define CMD_GET_SELF_TEST_RESULTS   0x04
+#define CMD_MFG_TEST_ON             0x05
+#define CMD_SET_ACPI_PWR_STATE      0x06
+#define CMD_GET_ACPI_PWR_STATE      0x07
+#define CMD_GET_DEV_GUID            0x08
+#define CMD_GET_NETFN_SUP           0x09
+#define CMD_GET_CMD_SUP             0x0A
+#define CMD_GET_SUBFN_SUP           0x0B
+#define CMD_GET_CONFIG_CMDS         0x0C
+#define CMD_GET_CONFIG_SUB_FNS      0x0D
+
+
+#define CMD_SET_CMD_ENABLES         0x60
+#define CMD_GET_CMD_ENABLES         0x61
+#define CMD_SET_SUBFN_ENABLES       0x62
+#define CMD_GET_SUBFN_ENABLES       0x63
+#define CMD_GET_OEM_NETFN_IANA_SUPPORT   0x64
+
+
+#define CMD_RESET_WDT               0x22
+#define CMD_SET_WDT                 0x24
+#define CMD_GET_WDT                 0x25
+
+#define CMD_SET_BMC_GBL_ENABLES     0x2E
+#define CMD_GET_BMC_GBL_ENABLES     0x2F
+#define CMD_CLR_MSG_FLAGS           0x30
+#define CMD_GET_MSG_FLAGS           0x31
+#define CMD_ENBL_MSG_CH_RCV         0x32
+#define CMD_GET_MSG                 0x33
+#define CMD_SEND_MSG                0x34
+#define CMD_READ_EVT_MSG_BUFFER     0x35
+#define CMD_GET_BTIFC_CAP           0x36
+#define CMD_GET_SYSTEM_GUID         0x37
+#define CMD_GET_CH_AUTH_CAP         0x38
+#define CMD_GET_SESSION_CHALLENGE   0x39
+#define CMD_ACTIVATE_SESSION        0x3A
+#define CMD_SET_SESSION_PRIV_LEVEL  0x3B
+#define CMD_CLOSE_SESSION           0x3C
+#define CMD_GET_SESSION_INFO        0x3D
+#define CMD_GET_AUTH_CODE           0x3F
+#define CMD_SET_CH_ACCESS           0x40
+#define CMD_GET_CH_ACCESS           0x41
+#define CMD_GET_CH_INFO             0x42
+#define CMD_SET_USER_ACCESS         0x43
+#define CMD_GET_USER_ACCESS         0x44
+#define CMD_SET_USER_NAME           0x45
+#define CMD_GET_USER_NAME           0x46
+#define CMD_SET_USER_PASSWORD       0x47
+#define CMD_MASTER_WRITE_READ       0x52
+
+#define CMD_ACTIVATE_PAYLOAD        0x48
+#define CMD_DEACTIVATE_PAYLOAD      0x49
+#define CMD_GET_PAYLD_ACT_STATUS    0x4A
+#define CMD_GET_PAYLD_INST_INFO     0x4B
+#define CMD_SET_USR_PAYLOAD_ACCESS  0x4C
+#define CMD_GET_USR_PAYLOAD_ACCESS  0x4D
+#define CMD_GET_CH_PAYLOAD_SUPPORT  0x4E
+#define CMD_GET_CH_PAYLOAD_VER      0x4F
+#define CMD_GET_CH_OEM_PAYLOAD_INFO 0x50
+#define CMD_GET_CH_CIPHER_SUITES    0x54
+#define CMD_SUS_RES_PAYLOAD_ENCRYPT 0x55
+#define CMD_SET_CH_SECURITY_KEYS    0x56
+#define CMD_GET_SYS_IFC_CAPS        0x57
+
+#define CMD_SET_SYSTEM_INFO_PARAM   0x58
+#define CMD_GET_SYSTEM_INFO_PARAM   0x59
+
+#define CMD_GET_DEV_ID 0x01
+
+#define CMD_EXAMPLE_1 0x01
+#endif  /* IPMI_APP_H */
+
+

+ 234 - 0
app/bmc_server/ipmi_dev/IPMI_AppDevice+.h

@@ -0,0 +1,234 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ ****************************************************************
+ *
+ * IPMI_App.h
+ * AppDevice Commands Handler
+ *
+ * Author: Govind Kothandapani <govindk@ami.com>
+ *       : Rama Bisa <ramab@ami.com>
+ *       : Basavaraj Astekar <basavaraja@ami.com>
+ *       : Bakka Ravinder Reddy <bakkar@ami.com>
+ *
+ *****************************************************************/
+#ifndef IPMI_APPDEV_PLUS_H
+#define IPMI_APPDEV_PLUS_H
+
+#include "Types.h"
+
+#pragma pack( 1 )
+
+/*** Macro Definitions ***/
+#define MAX_PLD_ENABLES     4
+
+/* ActivatePayloadReq_T */
+typedef struct
+{
+    INT8U   PayldType;
+    INT8U   PayldInst;
+    INT8U   AuxData [4];
+
+} PACKED  ActivatePayloadReq_T;
+
+/* ActivatePayloadRes_T */
+typedef struct
+{
+
+    INT8U   CompletionCode;
+    INT8U   AuxData [4];
+    INT16U  InboundPayldSize;
+    INT16U  OutboundPayldSize;
+    INT16U  UDPPort;
+    INT16U  VLANNo;
+
+} PACKED  ActivatePayloadRes_T;
+
+/* DeactivatePayloadReq_T */
+typedef struct
+{
+    INT8U   PayldType;
+    INT8U   PayldInst;
+    INT8U   AuxData [4];
+
+} PACKED  DeactivatePayloadReq_T;
+
+/* GetPayldActStatRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   InstCap;
+    INT16U  ActivatedInst;
+
+} PACKED  GetPayldActStatRes_T;
+
+/* GetPayldInstInfoReq_T */
+typedef struct 
+{
+    INT8U   PayldType;
+    INT8U   PayldInst;
+
+} PACKED  GetPayldInstInfoReq_T;
+
+/* GetPayldInstInfoRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT32U  SessionID;
+    INT8U   SpecificInfo [8];
+
+} PACKED  GetPayldInstInfoRes_T;
+
+/* SetUsrPayldAccReq_T */
+typedef struct
+{
+    INT8U   ChannelNum;
+    INT8U   UserId;
+    INT8U   PayloadEnables [MAX_PLD_ENABLES];
+
+} PACKED  SetUsrPayldAccReq_T;
+
+/* SetUsrPayldAccRes_T */
+typedef struct
+{
+    INT8U CompletionCode;
+
+} PACKED  SetUsrPayldAccRes_T;
+
+
+/* GetUsrPayldAccReq_T */
+typedef struct
+{
+    INT8U   ChannelNum;
+    INT8U   UserId;
+
+} PACKED  GetUsrPayldAccReq_T;
+
+/* GetUsrPayldAccRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   PayloadEnables [MAX_PLD_ENABLES];
+
+} PACKED  GetUsrPayldAccRes_T;
+
+
+/* GetChPayldSupRes_T */
+typedef struct
+{
+
+    INT8U   CompletionCode;
+    INT8U   StdPldtype1;
+    INT8U   StdPldtype2;
+    INT8U   SessStpPldtype1;
+    INT8U   SessStpPldtype2;
+    INT8U   OemPldtype1;
+    INT8U   OemPldtype2;
+    INT16U  Rsvd;
+
+} PACKED  GetChPayldSupRes_T;
+
+/* GetChPayldVerReq_T */
+typedef struct
+{
+    INT8U   ChannelNum;
+    INT8U   PayloadNum;
+
+} PACKED  GetChPayldVerReq_T;
+
+/* GetChPayldVerRes_T */
+typedef struct
+{
+
+    INT8U   CompletionCode;
+    INT8U   FormatVer;
+
+} PACKED  GetChPayldVerRes_T;
+
+/* GetChOemPayldInfoReq_T */
+typedef struct
+{
+    INT8U   ChannelNum;
+    INT8U   PayloadNum;
+    INT8U   OemIANA [3];
+    INT8U   OemPyldId [2];
+
+} PACKED  GetChOemPayldInfoReq_T;
+
+/* GetChOemPayldInfoRes_T */
+typedef struct
+{
+
+    INT8U   CompletionCode;
+    INT8U   PayloadNum;
+    INT8U   OemIANA [3];
+    INT8U   OemPyldId [2];
+    INT8U   FormatVer;
+
+} PACKED  GetChOemPayldInfoRes_T;
+
+/* SusResPayldEncryptReq_T */
+typedef struct
+{
+    INT8U   PayldType;
+    INT8U   PayldInst;
+    INT8U   Operation;
+
+} PACKED  SusResPayldEncryptReq_T;
+
+/* SetChSecurityKeysReq_T */
+typedef struct
+{
+    INT8U   ChannelNum;
+    INT8U   Operation;
+    INT8U   KeyID;
+
+} PACKED  SetChSecurityKeysReq_T;
+
+/* SetChSecurityKeysRes_T */
+typedef struct
+{
+
+    INT8U   CompletionCode;
+    INT8U   LockStatus;
+
+} PACKED  SetChSecurityKeysRes_T;
+
+/* GetSysIfcCapsRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   Rsrvd;
+
+} PACKED  GetSysIfcCapsRes_T;
+
+/* GetChCipherSuitesReq_T */
+typedef struct
+{
+    INT8U   ChannelNum;
+    INT8U   PayloadType;
+    INT8U   ListIndex;
+
+} PACKED  GetChCipherSuitesReq_T;
+
+/* GetChCipherSuitesRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   ChannelNum;
+
+} PACKED  GetChCipherSuitesRes_T;
+
+#pragma pack( )
+
+#endif /* IPMI_APPDEV_PLUS_H */

+ 619 - 0
app/bmc_server/ipmi_dev/IPMI_AppDevice.h

@@ -0,0 +1,619 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ *****************************************************************
+ *
+ * IPMI_App.h
+ * AppDevice Commands Handler
+ *
+ * Author: Govind Kothandapani <govindk@ami.com>
+ *       : Rama Bisa <ramab@ami.com>
+ *       : Basavaraj Astekar <basavaraja@ami.com>
+ *       : Bakka Ravinder Reddy <bakkar@ami.com>
+ *
+ *****************************************************************/
+#ifndef IPMI_APPDEV_H
+#define IPMI_APPDEV_H
+
+#include "Types.h"
+
+/*** Macro definition ***/
+#define CHALLENGE_STR_LEN       16
+#define AUTH_CODE_LEN           16
+#define MAX_APP_CONF_PARAM				4
+#define MIN_SYSINFO_OEM_CONF_PARAM		192
+#define MAX_SYSINFO_OEM_CONF_PARAM		255
+
+/* Added to Support IPMI v2.0/RMCP+ Integrity Algorithm Number */ 
+#define AUTH_CODE_HASH_LEN      20 
+#define HASH_DATA_LEN           16 
+#define MAX_USERNAME_LEN        16
+#define MAX_PASSWORD_LEN        20
+#define  MAX_I2C_BUFFER_SIZE    50
+#define IPMI15_MAX_PASSWORD_LEN 16
+#define SIXTEEN_COUNT_WINDOW_LEN 16
+#define SEQNUM_ROLLOVER 0xFFFFFFFF
+#define RMCPPLUS_SEQLOWLIMIT 16
+#define RMCPPLUS_SEQUPLIMIT 15
+#define EIGHT_COUNT_WINDOW_LEN 8
+#define	MAX_FW_VER_LENGTH  	254
+#define MAX_SYS_NAME_LENGTH	254
+#define MAX_PRIM_OS_NAME_LENGTH 254
+#define MAX_OS_NAME_LENGTH	254
+#define MAX_BLOCK_SIZE			16
+
+#define SYS_INFO_SET_COMPLETE    0x00
+#define SYS_INFO_SET_IN_PROGRESS 0x01
+#define SYS_INFO_COMMIT_WRITE	 0x02
+#define PARAM_PRESENT_REVISION   0x11
+#define PARAM_OLDER_REVISION 	 0x00
+
+#define SET_IN_PROGRESS_PARAM	0x00
+#define SYS_FW_VERSION_PARAM	0x01
+#define SYS_NAME_PARAM			0x02
+#define PRIM_OS_NAME_PARAM		0x03
+#define OS_NAME_PARAM			0x04
+#define MAX_PARAM_SELECTOR		OS_NAME_PARAM +1 /* Last Parameter + 1 */
+
+#define GET_PARAM_REV_ONLY		0x80
+
+
+
+
+#pragma pack( 1 )
+
+/* SetWDTReq_T */
+typedef struct
+{
+    INT8U   TmrUse;
+    INT8U   TmrActions;
+    INT8U   PreTimeOutInterval;
+    INT8U   ExpirationFlag;
+    INT16U  InitCountDown;
+
+} PACKED SetWDTReq_T;
+
+/* GetWDTRes_T */
+typedef struct
+{
+    INT8U       CompletionCode;
+    SetWDTReq_T CurrentSettings;
+    INT16U      PresentCountDown;
+
+} PACKED GetWDTRes_T;
+
+/* GetBMCGblEnblRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   BMCGblEnblByte;
+
+} PACKED GetBMCGblEnblRes_T;
+
+/* ClearMsgsFlagReq_T */
+typedef struct
+{
+    INT8U   Flag;
+} PACKED ClearMsgsFlagReq_T;
+
+/* GetMsgFlagsRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   MsgFlags;
+
+} PACKED GetMsgFlagsRes_T;
+
+/* EnblMsgChRcvReq_T */
+typedef struct
+{
+    INT8U   ChannelNum;
+    INT8U   ChannelState;
+
+} PACKED EnblMsgChRcvReq_T;
+
+/* EnblMsgChRcvRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   ChannelNum;
+    INT8U   ChannelState;
+
+} PACKED EnblMsgChRcvRes_T;
+
+/* GetMsgRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   ChannelNum;
+
+} PACKED GetMsgRes_T;
+
+/* SendMsgReq_T */
+typedef struct
+{
+    INT8U   ChNoTrackReq;
+
+} PACKED SendMsgReq_T;
+
+/* SendMsgRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   ResData;
+
+} PACKED SendMsgRes_T;
+
+/* ReadEvtMsgBufRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   ResData[16];
+
+} PACKED ReadEvtMsgBufRes_T;
+
+/* GetBTIfcCapRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   NumReqSupported;
+    INT8U   InputBufSize;
+    INT8U   OutputBufSize;
+    INT8U   RespTime;
+    INT8U   Retries;
+
+} PACKED GetBTIfcCapRes_T;
+
+/* GetSysGUIDRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   Node[6];
+    INT16U  ClockSeq;
+    INT16U  TimeHigh;
+    INT16U  TimeMid;
+    INT32U  TimeLow;
+
+} PACKED GetSysGUIDRes_T;
+
+/* GetChAuthCapReq_T */
+typedef struct
+{
+    INT8U   ChannelNum;
+    INT8U   PrivLevel;
+
+} PACKED GetChAuthCapReq_T;
+
+/* GetChAuthCapRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   ChannelNum;
+    INT8U   AuthType;
+    INT8U   PerMsgUserAuthLoginStatus;
+    INT8U   ExtCap;
+    INT8U   OEMID[3];
+    INT8U   OEMAuxData;
+
+} PACKED GetChAuthCapRes_T;
+
+/* GetSesChallengeReq_T */
+typedef struct
+{
+    INT8U   AuthType;
+    INT8U   UserName[16];
+
+} PACKED GetSesChallengeReq_T;
+
+/* GetSesChallengeRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT32U  TempSessionID;
+    INT8U   ChallengeString[16];
+
+} PACKED GetSesChallengeRes_T;
+
+/* ActivateSesReq_T */
+typedef struct
+{
+    INT8U   AuthType;
+    INT8U   Privilege;
+    INT8U   ChallengeString[CHALLENGE_STR_LEN];
+    INT32U  OutboundSeq;
+
+} PACKED ActivateSesReq_T;
+
+/* ActivateSesRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   AuthType;
+    INT32U  SessionID;
+    INT32U  InboundSeq;
+    INT8U   Privilege;
+
+} PACKED ActivateSesRes_T;
+
+/* SetSesPrivLevelReq_T */
+typedef struct
+{
+    INT8U   Privilege;
+
+} PACKED SetSesPrivLevelReq_T;
+
+/* SetSesPrivLevelRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   Privilege;
+
+} PACKED SetSesPrivLevelRes_T;
+
+/* GetSesInfoReq_T */
+typedef struct
+{
+    INT8U   SessionIndex;
+    INT8U   SessionHandleOrID [4];
+
+} PACKED GetSesInfoReq_T;
+
+/* LANSesInfoRes_T */
+typedef struct
+{
+    INT8U    IPAddress[4];
+    INT8U    MACAddress[6];
+    INT16U   PortNumber;
+
+} PACKED LANSesInfoRes_T;
+
+/* SerialSesInfoRes_T */
+typedef struct
+{
+    INT8U    SessionActivityType;
+    INT8U    DestinationSelector;
+    INT8U    IPAddress[4];
+    INT16U   PortNumber;
+
+} PACKED SerialSesInfoRes_T;
+
+/* Union SessionInfoRes_T */
+typedef union
+{
+    LANSesInfoRes_T     LANSesInfo;
+    SerialSesInfoRes_T  SerialSesInfo;
+
+} PACKED SessionInfoRes_T;
+
+/* ActiveSesInfo_T */
+typedef struct
+{
+    INT8U       UserID;
+    INT8U       Privilege;
+    INT8U       ChannelNum;
+
+} PACKED ActiveSesInfo_T;
+
+/* GetSesInfoRes_T */
+typedef struct
+{
+    INT8U               CompletionCode;
+    INT8U               SessionHandle;
+    INT8U               NumPossibleActiveSession;
+    INT8U               NumActiveSession;
+    ActiveSesInfo_T     ActiveSesinfo;
+    SessionInfoRes_T    SesInfo;
+
+} PACKED GetSesInfoRes_T;
+
+/* LANIPv6SesInfoRes_T */
+typedef struct
+{
+    INT8U    IPv6Address[16];
+    INT8U    MACAddress[6];
+    INT16U   PortNumber;
+
+} PACKED LANIPv6SesInfoRes_T;
+
+/* CloseSesReq_T */
+typedef struct
+{
+    INT32U  SessionID;
+    INT8U   SessionHandle;
+
+} PACKED CloseSesReq_T;
+
+/* GetAuthCodeReq_T */
+typedef struct
+{
+    INT8U   AuthType;
+    INT8U   ChannelNum;
+    INT8U   UserID;
+    INT8U   HashData[HASH_DATA_LEN];
+
+} PACKED GetAuthCodeReq_T;
+
+
+/* GetAuthCodeRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   AuthCode[AUTH_CODE_HASH_LEN];
+
+} PACKED GetAuthCodeRes_T;
+
+/* SetChAccessReq_T */
+typedef struct
+{
+    INT8U   ChannelNum;
+    INT8U   ChannelAccess;
+    INT8U   Privilege;
+
+} PACKED SetChAccessReq_T;
+
+typedef struct
+{
+	INT8U		CompletionCode;
+} PACKED SetChAccessRes_T;
+
+/* GetChAccessReq_T */
+typedef struct
+{
+    INT8U   ChannelNum;
+    INT8U   AccessFlag;
+
+} PACKED GetChAccessReq_T;
+
+/* GetChAccessRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   ChannelAccess;
+    INT8U   Privilege;
+
+} PACKED GetChAccessRes_T;
+
+typedef struct
+{
+	INT8U ChannelNum;
+} PACKED GetChInfoReq_T;
+
+/* GetChInfoRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   ChannelNum;
+    INT8U   ChannelMedium;
+    INT8U   ChannelProtocol;
+    INT8U   SessionActiveSupport;
+    INT8U   VendorID[3];
+    INT8U   AuxiliaryInfo[2];
+
+} PACKED GetChInfoRes_T;
+
+/* SetUserAccessReq_T */
+typedef struct
+{
+    INT8U   ChannelNoUserAccess;
+    INT8U   UserID;
+    INT8U   AccessLimit;
+    INT8U   SessionLimit;
+
+} PACKED SetUserAccessReq_T;
+
+typedef struct
+{
+    INT8U CompletionCode;
+} PACKED SetUserAccessRes_T;
+
+
+/* GetUserAccessReq_T */
+typedef struct
+{
+    INT8U   ChannelNum;
+    INT8U   UserID;
+
+} PACKED GetUserAccessReq_T;
+
+/* GetUserAccessRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   MaxNoUserID;
+    INT8U   CurrentUserID;
+    INT8U   FixedUserID;
+    INT8U   ChannelAccess;
+
+} PACKED GetUserAccessRes_T;
+
+/* SetUserNameReq_T */
+typedef struct
+{
+    INT8U   UserID;
+    INT8U   UserName[MAX_USERNAME_LEN];
+
+} PACKED SetUserNameReq_T;
+
+typedef struct
+{
+    INT8U   CompletionCode;
+} PACKED SetUserNameRes_T;
+
+
+/*GetUserNameReq_T*/
+typedef struct
+{
+    INT8U   UserID;
+} PACKED GetUserNameReq_T;
+
+
+/* GetUserNameRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   UserName[MAX_USERNAME_LEN];
+
+} PACKED GetUserNameRes_T;
+
+
+
+/* SetUserPswdReq_T */
+typedef struct
+{
+    INT8U   UserID;
+    INT8U   Operation;
+    INT8U   Password[MAX_PASSWORD_LEN];
+
+} PACKED SetUserPswdReq_T;
+
+/* SetUserPswdReq_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+} PACKED SetUserPswdRes_T;
+
+/* MasterWriteReadReq_T */
+typedef struct
+{
+    INT8U   BusTypeChNo;
+    INT8U   SlaveAddress;
+    INT8U   ReadCount;
+    INT8U   Data[MAX_I2C_BUFFER_SIZE];
+
+} PACKED MasterWriteReadReq_T;
+
+/* MasterWriteReadRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   Data[MAX_I2C_BUFFER_SIZE];
+
+} PACKED MasterWriteReadRes_T;
+
+typedef struct 
+{
+    INT8U       TypeOfEncoding ;
+    INT8U       StringLength;
+    INT8U       SysFWVersionName[MAX_FW_VER_LENGTH];
+}PACKED SysFWVersion_T;
+typedef struct
+{
+    INT8U    TypeOfEncoding_Sys_Name;
+    INT8U    StringLength_Sys_Name;
+    INT8U    SystemName[MAX_SYS_NAME_LENGTH];
+} PACKED SysName_T;
+typedef struct 
+{
+    INT8U    TypeOfEncoding_PrimaryOSName;
+    INT8U    StringLength_PrimaryOSName;
+    INT8U    PrimaryOperatingSystemName[MAX_PRIM_OS_NAME_LENGTH];
+} PACKED PrimaryOSName_T;
+typedef struct 
+{
+    INT8U    TypeOfEncoding_OSName;
+    INT8U    StringLength_OSName;
+    INT8U   OSName[MAX_OS_NAME_LENGTH];
+}PACKED OSName_T;
+
+typedef struct 
+{
+    INT8U   SetSelector;
+    INT8U   SysFWVersion[MAX_BLOCK_SIZE];
+} PACKED SysVerInfo_T;
+
+typedef struct 
+{
+
+    INT8U   SetSelector;
+    INT8U    SysName[MAX_BLOCK_SIZE];
+
+} PACKED SysNameInfo_T;
+
+typedef struct {
+
+    INT8U    SetSelector;
+    INT8U    PrimaryOSName[MAX_BLOCK_SIZE];
+
+} PACKED PrimOSInfo_T;
+
+
+typedef struct {
+
+    INT8U   SetSelector;
+    INT8U   OperatingSystemName[MAX_BLOCK_SIZE];
+
+} PACKED OSInfo_T;
+
+typedef union {
+
+    INT8U   SetInProgress;
+    SysVerInfo_T    SysVerInfo;
+    SysNameInfo_T   SysNameInfo;
+    PrimOSInfo_T    PrimOSInfo;
+    OSInfo_T    OSInfo;
+} PACKED  SysInfoUN_T	;
+
+
+/* GetSystemInfoParamReq_T */
+typedef struct
+{
+    INT8U   ParamRev;
+    INT8U   ParamSelector;
+    INT8U   SetSelector;
+    INT8U   BlockSelector;
+
+} PACKED GetSystemInfoParamReq_T;
+
+
+/* GetSystemInfoParamRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   ParamRevision;
+    SysInfoUN_T     SysInfo;
+
+} PACKED GetSystemInfoParamRes_T;
+
+/* GetSystemInfoParamOEMRes_T */
+typedef struct
+{
+    INT8U           CompletionCode;
+    INT8U           ParamRevision;
+    /* OEM Info */
+} PACKED GetSystemInfoParamOEMRes_T;
+
+
+/* SetSystemInfoParamReq_T */
+typedef struct
+{
+    INT8U   		ParamSelector;
+    SysInfoUN_T		SysInfo;
+} PACKED SetSystemInfoParamReq_T;
+
+
+/* SetSystemInfoParamRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+} PACKED SetSystemInfoParamRes_T;
+
+/* SetSystemInfoParamOEMReq_T */
+typedef struct
+{
+    INT8U   ParamSelector;
+    /* OEM parameter */
+} PACKED SetSystemInfoParamOEMReq_T;
+
+#pragma pack( )
+
+#endif /* IPMI_APPDEV_H */

+ 49 - 0
app/bmc_server/ipmi_dev/IPMI_BrDiscovery.h

@@ -0,0 +1,49 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ ****************************************************************
+ *
+ * IPMI_BrDiscovery.h
+ * IPMI Bridge Discovery structures
+ *
+ * Author: Balasaravanan.P <balasaravananp@amiindia.co.in>
+ *
+ *****************************************************************/
+#ifndef IPMI_BRIDGE_DISCOVERY_H
+#define IPMI_BRIDGE_DISCOVERY_H
+
+#include "Types.h"
+
+#pragma pack( 1 )
+
+/* GetAddressesRes_T */
+typedef struct 
+{
+    INT8U   CompletionCode;     
+    INT16U  ICMBAddresses [8];
+
+} PACKED  GetAddressesRes_T;
+
+
+/* GetChassisDevIDRes_T */
+typedef struct 
+{
+    INT8U   CompletionCode;
+    INT8U   ChassisDevID;
+
+} PACKED  GetChassisDevIDRes_T;
+
+#pragma pack( )
+
+#endif  /* IPMI_BRIDGE_DISCOVERY_H */
+

+ 84 - 0
app/bmc_server/ipmi_dev/IPMI_BrEvt.h

@@ -0,0 +1,84 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ *****************************************************************
+ *****************************************************************
+ *****************************************************************
+ *
+ * IPMI_BrEvt.c
+ * Bridge Event Commands
+ *
+ * Author: Gowtham.M.S <gowthamms@amiindia.co.in>
+ *
+ *****************************************************************/
+#ifndef IPMI_BR_EVT_H
+#define IPMI_BR_EVT_H
+
+#include "Types.h"
+
+#pragma pack( 1 )
+
+/* GetEvtCountRes_T */
+typedef struct 
+{
+    INT8U   CompletionCode;
+    INT8U   EvtCount;
+
+} PACKED  GetEvtCountRes_T;
+
+
+/* SetEvtDestReq_T */
+typedef struct 
+{
+    INT16U  DestAddr;
+
+} PACKED  SetEvtDestReq_T;
+
+
+/* SetEvtRecpStateReq_T */
+typedef struct 
+{
+    INT8U   State;
+    INT8U   SlaveAddr;
+    INT8U   LUN;
+
+} PACKED  SetEvtRecpStateReq_T;
+
+
+/* SendICMBEvtMsgReq_T */
+typedef struct 
+{
+    INT8U   EventCode;
+
+} PACKED  SendICMBEvtMsgReq_T;
+
+
+/* GetEvtDestRes_T */
+typedef struct 
+{
+    INT8U   CompletionCode;
+    INT16U  DestAddr;
+
+} PACKED  GetEvtDestRes_T;
+
+
+/* GetEvtRecpStateRes_T */
+typedef struct 
+{
+    INT8U   CompletionCode;
+    INT8U   State;
+
+} PACKED  GetEvtRecpStateRes_T;
+
+#pragma pack( )
+
+#endif  /*IPMI_BR_EVT_H*/

+ 205 - 0
app/bmc_server/ipmi_dev/IPMI_BrMgmt.h

@@ -0,0 +1,205 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ ****************************************************************
+ *
+ * IPMI_BrMgmt.h
+ * Bridge Management Commands
+ *
+ * Author: Gowtham.M.S <gowthamms@amiindia.co.in>
+ *
+ *****************************************************************/
+#ifndef IPMI_BR_MGMT_H
+#define IPMI_BR_MGMT_H
+
+#include "Types.h"
+
+#pragma pack( 1 )
+
+/*** External Definitions ***/
+#define BRIDGE_DISABLED         0
+#define BRIDGE_ENABLED          1
+#define BRIDGE_ASSIGNING        2
+#define BRIDGE_ERROR            3
+
+#define ICMB_ID_STR_LEN         0x10
+
+
+/* GetBridgeStateRes_T */
+typedef struct 
+{
+    INT8U CompletionCode;   
+    INT8U State;
+
+} PACKED  GetBridgeStateRes_T;
+
+
+/* SetBridgeStateRes_T */
+typedef struct 
+{
+    INT8U State;
+
+} PACKED  SetBridgeStateReq_T; 
+
+
+/* GetICMBAddrRes_T */
+typedef struct 
+{
+    INT8U CompletionCode;   
+    INT16U  Addr;
+
+} PACKED  GetICMBAddrRes_T; 
+    
+
+/* SetICMBAddrReq_T */
+typedef struct 
+{
+    INT16U  Addr;
+
+} PACKED  SetICMBAddrReq_T; 
+
+
+/* GetBrStatisticsReq_T */
+typedef struct 
+{
+    INT8U StatSelector;
+
+} PACKED  GetBrStatisticsReq_T; 
+
+
+/* ICMBStats0_T */
+typedef struct 
+{
+    INT16U  RuntCmd;
+    INT16U  BadCmd;
+    INT16U  SpuriousResp;
+
+} PACKED  ICMBStats0_T; 
+
+
+/* ICMBStats1_T */
+typedef struct 
+{
+    INT16U  Sent;
+    INT16U  Received;
+    INT16U  OtherAddr;
+    INT16U  RuntPkt;
+    INT16U  BadChecksum;
+    INT16U  UnkType;
+    INT16U  NotStart;
+    INT16U  Restart;
+    INT16U  ArbWins;
+    INT16U  ArbLosses;
+
+} PACKED  ICMBStats1_T; 
+
+
+/* ICMBStats_T */
+typedef union  
+{
+    ICMBStats0_T    ICMBStats0;
+    ICMBStats1_T    ICMBStats1;
+
+} ICMBStats_T;
+
+
+/* GetBrStatisticsRes_T */
+typedef struct 
+{
+    INT8U           CompletionCode; 
+    INT8U           StatSelector;
+    ICMBStats_T     ICMBStats;
+
+} PACKED  GetBrStatisticsRes_T; 
+
+
+/* GetICMBCapbRes_T */
+typedef struct 
+{
+    INT8U   CompletionCode; 
+    INT8U   ICMBVersion;
+    INT8U   ICMBRevision;
+    INT8U   FeatureSupport;
+
+} PACKED  GetICMBCapbRes_T; 
+
+
+/* GetBrProxyAddrRes_T */
+typedef struct 
+{
+    INT8U   CompletionCode; 
+    INT16U  ICMBAddr;
+    INT8U   IPMBAddr;
+    INT8U   LUN;
+
+} PACKED  GetBrProxyAddrRes_T; 
+
+
+/* SetBrProxyAddrReq_T */
+typedef struct 
+{
+    INT16U  ICMBAddr;
+    INT8U   IPMBAddr;
+    INT8U   LUN;
+
+} PACKED  SetBrProxyAddrReq_T; 
+
+
+/* GetICMBConnInfoReq_T */
+typedef struct 
+{
+    INT8U   NumericID;
+
+} PACKED  GetICMBConnInfoReq_T;
+
+
+/* GetICMBConnInfoRes_T */
+typedef struct 
+{
+    INT8U   CompletionCode; 
+    INT8U   Flags;
+    INT8U   NoConnectors;
+    INT8U   ConnectorType;
+    INT8U   TypeLength;
+    INT8U   IDString [ICMB_ID_STR_LEN];
+
+} PACKED  GetICMBConnInfoRes_T;
+
+
+/* GetICMBConnIDRes_T */
+typedef struct 
+{
+    INT8U   CompletionCode;
+    INT8U   NumericID;
+    INT8U   TypeLength;
+    INT8U   IDString [ICMB_ID_STR_LEN];
+
+} PACKED  GetICMBConnIDRes_T;
+
+
+/* SendICMBConnIDRes_T */
+typedef struct 
+{
+    INT8U   CompletionCode;
+    INT8U   rCompletionCode;
+    INT8U   NumericID;
+    INT8U   TypeLength;
+    INT8U   IDString [ICMB_ID_STR_LEN];
+
+} PACKED  SendICMBConnIDRes_T;
+
+#pragma pack( )
+
+#endif  /*IPMI_BR_MGMT_H*/
+
+

+ 57 - 0
app/bmc_server/ipmi_dev/IPMI_Bridge.h

@@ -0,0 +1,57 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ *****************************************************************
+ ******************************************************************
+ *
+ * IPMI_Bridge.h
+ * Bridge Command numbers
+ *
+ *****************************************************************/
+#ifndef IPMI_BRIDGE_H
+#define IPMI_BRIDGE_H
+
+/*** Bridge Management Commands ***/
+#define CMD_GET_BRIDGE_STATE            0x00
+#define CMD_SET_BRIDGE_STATE            0x01
+#define CMD_GET_ICMB_ADDR               0x02
+#define CMD_SET_ICMB_ADDR               0x03
+#define CMD_SET_BRIDGE_PROXY_ADDR       0x04
+#define CMD_GET_BRIDGE_STATISTICS       0x05
+#define CMD_GET_ICMB_CAPABILITIES       0x06
+#define CMD_CLEAR_BRIDGE_STATISTICS     0x08
+#define CMD_GET_BRIDGE_PROXY_ADDR       0x09
+#define CMD_GET_ICMB_CONNECTOR_INFO     0x0A
+#define CMD_GET_ICMB_CONNECTION_ID      0x0B
+#define CMD_SEND_ICMB_CONNECTION_ID     0x0C
+
+/*** Bridge Discovery Commands ***/
+#define CMD_PREPARE_FOR_DISCOVERY       0x10
+#define CMD_GET_ADDRESSES               0x11
+#define CMD_SET_DISCOVERED              0x12
+#define CMD_GET_CHASSIS_DEVICE_ID       0x13
+#define CMD_SET_CHASSIS_DEVICE_ID       0x14
+
+/*** Bridging Commands ***/
+#define CMD_BRIDGE_REQUEST              0x20
+#define CMD_BRIDGE_MESSAGE              0x21
+
+/*** Bridge Event Commands ***/
+#define CMD_GET_EVENT_COUNT             0x30
+#define CMD_SET_EVENT_DESTINATION       0x31
+#define CMD_SET_EVENT_RECEPTION_STATE   0x32
+#define CMD_SEND_ICMB_EVENT_MESSAGE     0x33
+#define CMD_GET_EVENT_DESTINATION       0x34
+#define CMD_GET_EVENT_RECEPTION_STATE   0x35
+
+
+#endif  /* IPMI_BRIDGE_H*/

+ 49 - 0
app/bmc_server/ipmi_dev/IPMI_Bridging.h

@@ -0,0 +1,49 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ ****************************************************************
+ *
+ * IPMI_Bridging.h
+ * Bridging Commands
+ *
+ * Author: Gowtham.M.S <gowthamms@amiindia.co.in>
+ *
+ *****************************************************************/
+#ifndef IPMI_BRIDGING_H
+#define IPMI_BRIDGING_H
+
+#include "Types.h"
+
+#pragma pack( 1 )
+
+/* BridgeReqReq_T */
+typedef struct  
+{
+    INT16U  RmtBrAddr;
+    INT8U   RmtBrCmd;
+    INT8U   *RmtBrReqData;
+
+} PACKED  BridgeReqReq_T;
+
+
+/* BridgeReqRes_T */
+typedef struct  
+{
+    INT8U   CompletionCode;
+    INT8U   *RmtBrResData;
+
+} PACKED  BridgeReqRes_T;
+
+#pragma pack( )
+
+#endif  /*IPMI_BRIDGING*/

+ 41 - 0
app/bmc_server/ipmi_dev/IPMI_Chassis.h

@@ -0,0 +1,41 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ ****************************************************************
+ ******************************************************************
+ *
+ * IPMI_Chassis.h
+ * Chassis Command numbers
+ *
+ ******************************************************************/
+
+#ifndef IPMI_CHASSIS_H
+#define IPMI_CHASSIS_H
+
+/*** Chassis Commands ***/
+#define CMD_GET_CHASSIS_CAPABILITIES           0x00
+#define CMD_GET_CHASSIS_STATUS                 0x01
+#define CMD_CHASSIS_CONTROL                    0x02
+#define CMD_CHASSIS_RESET                      0x03
+#define CMD_CHASSIS_IDENTIFY                   0x04
+#define CMD_SET_CHASSIS_CAPABILITIES           0x05
+#define CMD_SET_POWER_RESTORE_POLICY           0x06
+#define CMD_GET_SYSTEM_RESTART_CAUSE           0x07
+#define CMD_SET_SYSTEM_BOOT_OPTIONS            0x08
+#define CMD_GET_SYSTEM_BOOT_OPTIONS            0x09
+#define CMD_SET_FP_BTN_ENABLES                 0x0A
+#define CMD_GET_POH_COUNTER                    0x0F
+#define CMD_SET_POWER_CYCLE_INTERVAL		   0x0B
+
+
+#endif /* IPMI_CHASSIS_H	*/

+ 402 - 0
app/bmc_server/ipmi_dev/IPMI_ChassisDevice.h

@@ -0,0 +1,402 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ ****************************************************************
+ * ipmi_chassis.h
+ * IPMI chassis Request and Response structures
+ *
+ *  Author: Rama Bisa <ramab@ami.com>
+ *
+ ******************************************************************/
+#ifndef IPMI_CHASSIS_DEVICE_H
+#define IPMI_CHASSIS_DEVICE_H
+
+#include "Types.h"
+
+#pragma pack( 1 )
+
+/*** Definitions and Macros ***/
+#define MAX_BOOT_INIT_MAILBOX_BLOCKS      5
+#define MAX_BOOT_INIT_MAILBOX_BLOCK_SIZE  16
+
+#define CHASSIS_IDENTITY_STATE_INFO_SUPPORTED	0x40
+#define CHASSIS_IDENTITY_INDEFINITE_ON 		0x20
+#define CHASSIS_IDENTITY_TIMED_ON  		0x10
+#define CHASSIS_IDENTITY_OFF 			0x00
+
+
+/**
+ * @struct ChassisCapabilities_T
+ * @brief Chassis capabilities
+ **/
+typedef struct
+{
+    INT8U    CapabilitiesFlags;
+    INT8U    FRUInfoAddr;
+    INT8U    SDRDeviceAddr;
+    INT8U    SELDeviceAddr;
+    INT8U    SMDeviceAddr;
+    INT8U    ChassBridgeFn;
+
+} PACKED  ChassisCapabilities_T;
+
+/**
+ * @struct ChassisPowerState_T
+ * @brief Chassis Power state
+ **/
+typedef struct
+{
+    INT8U                   PowerState;
+    INT8U                   LastPowerEvent;
+    INT8U                   MiscChassisState;
+    INT8U                   FPBtnEnables;
+} PACKED  ChassisPowerState_T;
+
+/**
+ * @struct AMI_BootOpt_T
+ * @brief AMI specific Boot options
+ **/
+typedef struct
+{
+    INT8U       Data1;
+    INT8U       Data2;
+    
+} PACKED  AMI_BootOpt_T;
+
+/* GetChassisCapabilitiesRes_T */
+typedef struct
+{
+    INT8U                   CompletionCode;
+    ChassisCapabilities_T   ChassisCapabilities;
+    
+} PACKED  GetChassisCapabilitiesRes_T;
+
+/* GetChassisStatusRes_T */
+typedef struct
+{
+    INT8U                   CompletionCode;
+    ChassisPowerState_T     ChassisPowerState;
+    
+} PACKED  GetChassisStatusRes_T;
+
+/* ChassisControlReq_T */
+typedef struct
+{
+    INT8U  ChassisControl;
+    
+} PACKED  ChassisControlReq_T;
+
+/* ChassisControlRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    
+} PACKED  ChassisControlRes_T;
+
+/* ChassisIdentifyReq_T */
+typedef struct
+{
+    INT8U IdentifyInterval;
+    INT8U ForceIdentify;
+
+} PACKED  ChassisIdentifyReq_T;
+
+/* ChassisIdentifyRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    
+} PACKED  ChassisIdentifyRes_T;
+
+/* SetChassisCapabilitiesReq_T */
+typedef struct
+{
+    ChassisCapabilities_T   ChassisCaps;
+    
+} PACKED  SetChassisCapabilitiesReq_T;
+
+/* SetChassisCapabilitiesRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    
+} PACKED  SetChassisCapabilitiesRes_T;
+
+/* SetPowerRestorePolicyReq_T */
+typedef struct
+{
+    INT8U   PowerRestorePolicy;
+    
+} PACKED  SetPowerRestorePolicyReq_T;
+
+/* SetPowerRestorePolicyRes_T */
+typedef struct
+{
+    INT8U  CompletionCode;
+    INT8U  PowerRestorePolicy;
+    
+} PACKED  SetPowerRestorePolicyRes_T;
+
+/* GetSystemRestartCauseRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   SysRestartCause;
+    INT8U   ChannelID;
+    
+} PACKED  GetSystemRestartCauseRes_T;
+
+/* GetPOHCounterRes_T */
+typedef struct
+{   
+    INT8U           CompletionCode;
+    INT8U           MinutesPerCount;
+    INT32U          POHCounterReading;
+    
+} PACKED  GetPOHCounterRes_T;
+
+/* BootInfoAck_T */
+typedef struct
+{
+    INT8U WriteMask;
+    INT8U BootInitiatorAckData;
+    
+} PACKED  BootInfoAck_T;
+
+/* BootFlags_T */
+typedef struct
+{
+    INT8U    BootFlagsValid;
+    INT8U    Data2;
+    INT8U    Data3;
+    INT8U    Data4;
+    INT8U    Data5;
+    
+} PACKED  BootFlags_T;
+
+/* BootInitiatorInfo_T */
+typedef struct
+{
+    INT8U   BootSource;
+    INT8U   SessionID [4];
+    INT8U   BootInfoTimestamp [4];
+    
+} PACKED  BootInitiatorInfo_T;
+
+/* BootInitiatorMailbox_T */
+typedef struct 
+{
+    INT8U BlockData [MAX_BOOT_INIT_MAILBOX_BLOCK_SIZE];
+    
+} PACKED  BootInitiatorMailbox_T;
+
+/* BootInitiatorMboxReq_T */
+typedef struct
+{
+    INT8U   BlockSel;
+    BootInitiatorMailbox_T  BootMBox;
+    
+} PACKED  BootInitiatorMboxReq_T;
+
+#define DEFAULT_BOT_DEV_NUM 0x1
+#define DEFAULT_BOT_DEV_INFO_SIZE   60
+#define ANCH_STR_LEN        4
+#define IP_ADDR_LEN         4
+#define CFG_SCR_NAME_LEN    48
+#define CHAS_GUID_LEN       16
+#define SCT_RSV_LEN         28
+
+/* OemParamBlkSizeTbl_T */
+typedef struct
+{
+    INT8U   AnchorStr[ANCH_STR_LEN]; /* Header */
+    INT8U   Checksum;
+    INT8U   MajorRev;
+    INT8U   MinorRev;
+    INT16U  Len;
+    INT8U   Reserved1;
+    INT8U   SysIfcBlkSize;           /* Data */
+    INT8U   Reserved2;
+    INT8U   IPMBIfcBlkSize;
+    INT8U   Reserved3;
+    INT8U   LANIfcBlkSize;
+    INT8U   Reserved4;
+} PACKED OemParamBlkSizeTbl_T;
+
+/* BootOrderTbl_T */
+typedef struct
+{
+    INT8U   AnchorStr[ANCH_STR_LEN]; /* Header */
+    INT8U   BOTChecksum;
+    INT8U   BOTMajorRev;
+    INT8U   BOTMinorRev;
+    INT16U  Len;
+    INT8U   Reserved;
+    INT8U   UpdFlag;                 /* Data */
+    INT8U   *BootOrderInfo;
+    INT8U   OrderType;
+    INT8U   OrderLen;
+    INT8U   *DevOrderList;
+    INT8U   *DevNamePath;
+} PACKED BootOrderTbl_T;
+
+/* BootOrderTblReq_T */
+typedef struct
+{
+    INT8U          BlockSel;
+    BootOrderTbl_T BootOrderTbl;
+} PACKED BootOrderTblReq_T;
+
+/* SlotConfigTbl_T */
+typedef struct
+{
+    INT8U   AnchorStr[ANCH_STR_LEN]; /* Header */
+    INT8U   SCTChecksum;
+    INT8U   SCTMajorRev;
+    INT8U   SCTMinorRev;
+    INT16U  Len;
+    INT8U   Reserved1;
+    INT8U   NICIP[IP_ADDR_LEN];      /* Data */
+    INT8U   NICNetmask[IP_ADDR_LEN];
+    INT8U   NICGateway[IP_ADDR_LEN];
+    INT16U  MgmtVLAN;
+    INT8U   MgmtIP[IP_ADDR_LEN];
+    INT8U   ConfigScriptName[CFG_SCR_NAME_LEN];
+    INT8U   ChassisGUID[CHAS_GUID_LEN];
+    INT16U  ConfigBootType;
+    INT16U  TFTPPort;
+    INT16U  SFTPPort;
+    INT16U  SCPort;
+    INT8U   Reserved2[SCT_RSV_LEN];
+} PACKED SlotConfigTbl_T;
+
+/* BootOptParams_T */
+typedef union 
+{
+    INT8U                   SetInProgress;
+    INT8U                   ServicePartitionSelector; 
+    INT8U                   ServicePartitionScan;
+    INT8U                   BootFlagValidBitClearing;
+    BootInfoAck_T           BootInfoAck;
+    BootFlags_T             BootFlags;
+    BootInitiatorInfo_T     BootInitiatorInfo;
+    BootInitiatorMboxReq_T  BootMailBox;
+    AMI_BootOpt_T           Oem;
+    OemParamBlkSizeTbl_T    OemParamBlkSizeTbl;
+    BootOrderTblReq_T       BootOrderTbl;
+    INT8U                   BootDevSelector;
+    SlotConfigTbl_T         SlotConfigTbl;
+} BootOptParams_T;
+
+/* SetBootOptionsReq_T */
+typedef struct
+{
+    INT8U               ParamValidCumParam;
+    BootOptParams_T     BootParam;
+    
+} PACKED  SetBootOptionsReq_T;
+
+/* SetBootOptionsRes_T */
+typedef struct
+{
+    INT8U               CompletionCode;
+    
+} PACKED  SetBootOptionsRes_T;
+
+/* BootOptions_T */
+typedef struct
+{
+    INT8U                   ParameterValid;
+	INT8U          			u8SetInProgress;    			/**< Set in progess variable */
+    INT8U                   ServicePartitionSelector; 
+    INT8U                   ServicePartitionScan;
+    INT8U                   BootFlagValidBitClearing;
+    BootInfoAck_T           BootInfoAck;
+    BootFlags_T             BootFlags;
+    BootInitiatorInfo_T     BootInitiatorInfo;
+    BootInitiatorMailbox_T  BootMailBox[MAX_BOOT_INIT_MAILBOX_BLOCKS];
+    AMI_BootOpt_T           Oem;
+    OemParamBlkSizeTbl_T    OemParamBlkSizeTbl;
+    BootOrderTbl_T          *BootOrderTbl;
+    INT8U                   BootDevSelector;
+    SlotConfigTbl_T         SlotConfigTbl;
+} PACKED  BootOptions_T;
+
+/* GetBootOptionsReq_T */
+typedef struct
+{
+    INT8U       ParamSel;
+    INT8U       SetSel;
+    INT8U       BlockSel;
+    
+} PACKED  GetBootOptionsReq_T;
+
+/* GetBootOptParams_T */
+typedef union
+{
+    INT8U                   SetInProgress;  
+    INT8U                   ServicePartitionSelector; 
+    INT8U                   ServicePartitionScan;
+    INT8U                   BootFlagValidBitClearing;
+    BootInfoAck_T           BootInfoAck;
+    BootFlags_T             BootFlags;
+    BootInitiatorInfo_T     BootInitiatorInfo;
+    BootInitiatorMboxReq_T  BootMailBox;
+    AMI_BootOpt_T           Oem;
+    OemParamBlkSizeTbl_T    OemParamBlkSizeTbl;
+    BootOrderTblReq_T       BootOrderTbl;
+    INT8U                   BootDevSelector;
+    SlotConfigTbl_T         SlotConfigTbl;
+} GetBootOptParams_T;
+
+/* GetBootOptionsRes_T */
+typedef struct 
+{
+    INT8U               CompletionCode;
+    INT8U               ParamVersion;
+    INT8U               ParameterValid;
+    GetBootOptParams_T  BootParams;
+    
+} PACKED  GetBootOptionsRes_T;
+
+/* SetFPBtnEnablesReq_T */
+typedef struct
+{
+    INT8U   ButtonEnables;
+
+} PACKED SetFPBtnEnablesReq_T;
+
+/* SetFPBtnEnablesRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+
+} PACKED SetFPBtnEnablesRes_T;
+
+/* SetPowerCycleInteval Req */
+typedef struct
+{
+    INT8U   PowerCycleInterval;
+    
+} PACKED  SetPowerCycleIntervalReq_T;
+
+/* SetPowerRestorePolicyRes_T */
+typedef struct
+{
+    INT8U  CompletionCode;
+    
+} PACKED  SetPowerCycleIntervalRes_T;
+
+#pragma pack( )
+
+#endif /* IPMI_CHASSIS_DEVICE*/

+ 366 - 0
app/bmc_server/ipmi_dev/IPMI_DCM.h

@@ -0,0 +1,366 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2008-2009, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        Suite 200, 5555 Oakbrook Pkwy, Norcross             **
+ **                                                            **
+ **        Georgia - 30093, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ ****************************************************************
+ *
+ * IPMI_DCM.h
+ * DCMDevice Commands Handler structures & macros
+ *
+ * Author: Rama Bisa <ramab@ami.com>
+ *
+ *****************************************************************/
+#ifndef IPMI_DCMDEV_H
+#define IPMI_DCMDEV_H
+
+#include "Types.h"
+
+
+#pragma pack( 1 )
+
+/* SupportedDCMICap_T */
+typedef struct 
+{
+    INT8U   MandatoryPlatformCaps;
+    INT8U   OptionalPlatformCaps;
+    INT8U   ManageAccessCaps;
+
+} PACKED SupportedDCMICap_T;
+
+/* MandatoryPlatformAttr_T */
+typedef struct 
+{
+    INT16U  SELAttribs;
+    INT8U   IdentifyAttribs;
+    INT8U   TempMonitoring;
+    INT8U       TempMonitoringSampleFreq;
+    
+} PACKED MandatoryPlatformAttr_T;
+
+/* OptionalPlatformAttr_T */
+typedef struct 
+{
+    INT8U   PMDeviceSlaveAddr;
+    INT8U   PMControllerChannelNumber;
+
+} PACKED OptionalPlatformAttr_T;
+
+/* ManageAccessAttr_T */ 
+typedef struct
+{
+    INT8U   PrimaryLANChannelNum;
+    INT8U   SecondaryLANChannelNum;
+    INT8U   SerialTMODEChannelNum;
+
+} PACKED ManageAccessAttr_T;
+
+typedef struct
+{           
+       INT8U   NumberofRollingTimePeriods; 
+       INT8U   RollingTimePeriods;                         
+}EnhancedSystemAttr_T;
+
+/* DCMICapUn_T */
+typedef union 
+{
+    SupportedDCMICap_T      SupDCMICap;
+    MandatoryPlatformAttr_T     ManPlatformAttr;
+    OptionalPlatformAttr_T      OptionalPlatformAttr;
+    ManageAccessAttr_T      ManageAccessAttr;
+    EnhancedSystemAttr_T        EnhancedSystemAttr;
+    
+} DCMICapUn_T;
+
+/* GetDCMICapReq_T */
+typedef struct
+{
+    INT8U       GroupExtnID;
+    INT8U       ParamSelector;
+
+} PACKED  GetDCMICapReq_T;
+
+/* GetDCMICapRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   GroupExtnID;
+    INT8U   DCMIMajorVersion;
+    INT8U   DCMIMinorVersion;
+    INT8U   ParamRevision;
+    DCMICapUn_T     CapData;
+
+} PACKED  GetDCMICapRes_T;
+
+/* GetDCMICCRev_T */
+typedef struct
+{
+	INT8U       CompletionCode;
+	INT8U       GroupExtnID;
+	INT8U       DCMIMajorVersion;
+	INT8U       DCMIMinorVersion;
+	INT8U       ParamRevision;
+
+} PACKED  GetDCMICCRev_T;
+
+/* GetAssetTagReq_T */
+typedef struct 
+{
+    INT8U   GroupExtnID;
+    INT8U   OffsetToRead;
+    INT8U   NumBytesToRead;
+
+} PACKED GetAssetTagReq_T;
+
+
+#define READ_LIMIT_IN_ONE_TRANSACTION		0x10
+
+/* GetAssetTagRes_T */
+typedef struct 
+{
+    INT8U   CompletionCode;
+    INT8U   GroupExtnID;
+    INT8U   TotalAssetTagLen;
+    INT8U   Data [READ_LIMIT_IN_ONE_TRANSACTION];
+
+} PACKED GetAssetTagRes_T;
+
+/* GetDCMISensorInfoReq_T */
+typedef struct
+{
+    INT8U   GroupExtnID;
+    INT8U   SensorType;
+    INT8U   EntityID;
+    INT8U   EntiryInstance;
+    INT8U   StartingEntityInstance;
+
+} PACKED GetDCMISensorInfoReq_T;
+
+#define MAX_RECORD_IDS_IN_ONE_TRANSACTION	8
+
+/* GetDCMISensorInfoRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   GroupExtnID;
+    INT8U   TotalInstances;
+    INT8U   NumRecordIDs;
+    INT16U   Data [MAX_RECORD_IDS_IN_ONE_TRANSACTION];
+
+} PACKED GetDCMISensorInfoRes_T;
+
+/* GetPowerReadingReq_T */
+typedef struct
+{
+    INT8U   GroupExtnID;
+    INT8U   Mode;
+    INT8U   Reserved1;
+    INT8U   Reserved2;
+
+} PACKED GetPowerReadingReq_T;
+
+/* GetPowerReadingRes_T */ 
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U    GroupExtnID;
+    INT16U   CurPwrInWatts;
+    INT16U   MinPwrInWatts;
+    INT16U   MaxPwrInWatts;
+    INT16U   AvgPwrInWatts;
+    INT32U   TimeStamp;
+    INT32U   TimePeriodForStatsInMsec;
+    INT8U   PwrReadingState;
+    
+} PACKED GetPowerReadingRes_T;
+
+/* GetPowerLimitReq_T */
+typedef struct
+{
+    INT8U   GroupExtnID;
+    INT8U   Reserved1;
+    INT8U   Reserved2;
+
+} PACKED GetPowerLimitReq_T;
+
+/* GetPowerLimitRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   GroupExtnID;
+    INT8U   Reserved1;
+    INT8U   Reserved2;
+    INT8U   ExceptionAction;
+    INT16U   PwrLimitInWatts;
+    INT32U   CorrectionTimeLimitInMsec;
+    INT8U   Reserved3;
+    INT8U   Reserved4;
+    INT16U   MangSamplingTimeInSecs;
+
+} PACKED GetPowerLimitRes_T;
+
+/* SetPowerLimitReq_T */
+typedef struct
+{
+    INT8U   GroupExtnID;
+    INT16U   Reserved1;
+    INT8U   Reserved2;
+    INT8U   ExceptionAction;
+    INT16U   PwrLimitInWatts;
+    INT32U   CorrectionTimeLimitInMsec;
+    INT16U   Reserved3;
+    INT16U   MangSamplingTimeInSecs;
+
+} PACKED SetPowerLimitReq_T;
+
+/* SetPowerLimitRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   GroupExtnID;
+
+} PACKED SetPowerLimitRes_T;
+
+/* ActivatePwrLimitReq_T */
+typedef struct
+{
+    INT8U   GroupExtnID;
+    INT8U   PowerLimitActivation;
+    INT16U   Reserved;
+
+} PACKED ActivatePwrLimitReq_T;
+
+/* ActivatePwrLimitRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   GroupExtnID;
+
+} PACKED ActivatePwrLimitRes_T;
+
+/* SetAssetTagReq_T */
+typedef struct 
+{
+    INT8U   GroupExtnID;
+    INT8U   OffsetToWrite;
+    INT8U   DataLen;
+    INT8U   Data [READ_LIMIT_IN_ONE_TRANSACTION];
+
+} PACKED SetAssetTagReq_T;
+
+/* SetAssetTagRes_T */
+typedef struct 
+{
+    INT8U   CompletionCode;
+    INT8U   GroupExtnID;
+    INT8U	TotalAssetTagLen;
+
+} PACKED SetAssetTagRes_T;
+
+/* GetManagementControllerIdStringReq_T */
+typedef struct 
+{
+    INT8U   GroupExtnID;
+    INT8U   OffsetToRead;
+    INT8U   NumBytesToRead;
+
+} PACKED GetManagementControllerIdStringReq_T;
+
+/* GetManagementControllerIdStringRes_T */
+typedef struct 
+{
+    INT8U   CompletionCode;
+    INT8U   GroupExtnID;
+    INT8U   TotalLen;
+    INT8U   Data [READ_LIMIT_IN_ONE_TRANSACTION];
+
+} PACKED GetManagementControllerIdStringRes_T;
+
+/* SetManagementControllerIdStringReq_T */
+typedef struct 
+{
+    INT8U   GroupExtnID;
+    INT8U   OffsetToWrite;
+    INT8U   DataLen;
+    INT8U   Data [READ_LIMIT_IN_ONE_TRANSACTION];
+
+} PACKED SetManagementControllerIdStringReq_T;
+
+/* SetManagementControllerIdStringRes_T */
+typedef struct 
+{
+    INT8U   CompletionCode;
+    INT8U   GroupExtnID;
+    INT8U   LastOffsetWritten;
+} PACKED SetManagementControllerIdStringRes_T;
+
+
+#define MAX_TEMP_INSTANCE   0xFF
+
+
+/*GetThermalLimitReq_T*/
+typedef struct
+{
+    INT8U   GroupExtnID;
+    INT8U   EntityID;
+    INT8U   EntityInst;
+}PACKED GetThermalLimitReq_T;
+
+/*GetThermalLimitRes_T*/
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   GroupExtnID;
+    INT8U   ExceptionAction;
+    INT8U   TempLimit;
+    INT16U  ExceptionTime;
+}PACKED GetThermalLimitRes_T;
+
+/*SetThermalLimitReq_T*/
+typedef struct
+{
+    INT8U   GroupExtnID;
+    INT8U   EntityID;
+    INT8U   EntityInst;
+    INT8U   ExceptionAction;
+    INT8U   TempLimit;
+    INT16U  ExceptionTime;
+}PACKED SetThermalLimitReq_T;
+
+/*SetThermalLimitRes_T*/
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   GroupExtnID;
+}PACKED SetThermalLimitRes_T;
+
+/*GetTemperatureReadingReq_T*/
+typedef struct
+{
+    INT8U   GroupExtnID;
+    INT8U   SensorType;
+    INT8U   EntityID;
+    INT8U   EntityInst;
+    INT8U   EntityInstStart;
+}PACKED GetTemperatureReadingReq_T;
+
+/*GetTemperatureReadingRes_T*/
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   GroupExtnID;
+    INT8U   TotalInstances;
+    INT8U   NoofInstance;
+    INT16U  Data[MAX_RECORD_IDS_IN_ONE_TRANSACTION];
+}PACKED GetTemperatureReadingRes_T;
+#pragma pack( )
+
+#endif /* IPMI_DCMDEV_H */

+ 44 - 0
app/bmc_server/ipmi_dev/IPMI_DeviceConfig.h

@@ -0,0 +1,44 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ ****************************************************************
+ *
+ * IPMI_DeviceConfig.h
+ * Device Configuration Commands
+ *
+ *****************************************************************/
+#ifndef IPMI_DEVICE_CONFIG_H
+#define IPMI_DEVICE_CONFIG_H
+
+/* LAN Configuration Commands */
+#define CMD_SET_LAN_CONFIGURATION_PARAMETERS        0x01
+#define CMD_GET_LAN_CONFIGURATION_PARAMETERS        0x02
+#define CMD_SUSPEND_BMC_ARPS                        0x03
+#define CMD_GET_IP_UDP_RMCP_STATISTICS              0x04
+
+/* Serial Configuration Commands */
+#define CMD_SERIAL_MODEM_CONNECTION_ACTIVITY        0x18
+#define CMD_SET_SERIAL_MODEM_CONFIG                 0x10
+#define CMD_GET_SERIAL_MODEM_CONFIG                 0x11
+#define CMD_SET_SERIAL_MODEM_MUX                    0x12
+#define CMD_GET_TAP_RES_CODES                       0x13
+#define CMD_CALLBACK                                0x19
+#define CMD_SET_USER_CALLBACK_OPTION                0x1a
+#define CMD_GET_USER_CALLBACK_OPTION                0x1b
+
+/* Serial Over Lan Configuration Commands */
+#define CMD_GET_SOL_CONFIGURATION                   0x22
+#define CMD_SET_SOL_CONFIGURATION                   0x21
+
+
+#endif  /* IPMI_DEVICE_CONFIG_H */

+ 74 - 0
app/bmc_server/ipmi_dev/IPMI_Events.h

@@ -0,0 +1,74 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ ****************************************************************
+ *
+ * ipmi_events.h
+ * Event processing command handler
+ *
+ * Author: Bakka Ravinder Reddy <bakkar@ami.com>
+ *
+ *****************************************************************/
+#ifndef IPMI_EVENTS_H
+#define IPMI_EVENTS_H
+
+#include "Types.h"
+
+#pragma pack( 1 )
+
+/**
+ * @struct IPMBGenID_T
+ * @brief IPMB generator id
+**/
+typedef struct 
+{
+    INT8U   RqSA_SWID;
+    INT8U   RqLUN;
+
+} PACKED  IPMBGenID_T;
+
+
+/* SetEvtRcvReq_T */
+typedef struct 
+{
+    INT8U   RcvSlaveAddr;
+    INT8U   RcvLUN;
+
+} PACKED  SetEvtRcvReq_T;
+
+
+/* GetEvtRcvRes_T */
+typedef struct 
+{
+    INT8U   CompletionCode;
+    INT8U   RcvSlaveAddr;
+    INT8U   RcvLUN;
+
+} PACKED  GetEvtRcvRes_T;
+
+/* Event Message */
+typedef struct 
+{
+   INT8U   RqAddr;
+   INT8U   RqLUN;
+   INT8U   EvMRev;
+   INT8U   SensorType;
+   INT8U   SensorNum;
+   INT8U   EvtDirType;
+   INT8U   EvtData1;
+   INT8U   EvtData2;
+   INT8U   EvtData3;
+} EvtMsg_T;
+#pragma pack( )
+
+#endif /* IPMI_EVENTS_H */

+ 301 - 0
app/bmc_server/ipmi_dev/IPMI_FRU.h

@@ -0,0 +1,301 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ ****************************************************************
+ ******************************************************************
+ *
+ * ipmi_fru.h
+ * IPMI fru structures
+ *
+ *  Author: Rama Bisa <govindk@ami.com>
+ *
+ ******************************************************************/
+#ifndef IPMI_FRU_H
+#define IPMI_FRU_H
+
+#include "Types.h"
+
+#define FRU_COMMON_HEADER           1
+#define FRU_INTERNAL_USE_AREA       2
+#define FRU_CHASSIS_INFO_AREA       3
+#define FRU_BOARD_INFO_AREA         4
+#define FRU_PRODUCT_INFO_AREA       5
+#define FRU_MULTI_RECORD_AREA       6
+#define FRU_MULTI_RECORD_HEADER     FRU_MULTI_RECORD_AREA
+#define FRU_MULTI_RECORD_DATA       7
+
+#define FRU_END_OF_RECORD           0xF
+
+#define FRU_BLOCK_SIZE              8
+
+#pragma pack(1)
+
+/* FRUInventoryAreaInfoReq_T */
+typedef struct
+{
+    INT8U FRUDeviceID;  /* 0xff is reserved */
+
+} PACKED  FRUInventoryAreaInfoReq_T;
+
+
+/* FRUInventoryAreaInfoRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT16U  Size;
+    INT8U   DeviceAccessMode;
+
+} PACKED  FRUInventoryAreaInfoRes_T;
+
+
+/* FRUReadReq_T */
+typedef struct
+{
+    INT8U   FRUDeviceID;
+    INT16U  Offset;
+    INT8U   CountToRead;
+
+} PACKED  FRUReadReq_T;
+
+
+/* FRUReadRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   CountReturned;
+
+} PACKED  FRUReadRes_T;
+
+
+/* FRUWriteReq_T */
+typedef struct
+{
+    INT8U   FRUDeviceID;
+    INT16U  Offset;
+
+} PACKED  FRUWriteReq_T;
+
+
+/* FRUWriteRes_T */
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   CountWritten;
+
+} PACKED  FRUWriteRes_T;
+
+/**************************************************************/
+/* FRU Data structures */
+/**************************************************************/
+
+/* Common Header */
+typedef struct
+{
+    INT8U   CommonHeaderFormatVersion;
+    INT8U   InternalUseAreaStartOffset; /* In multiple of 8 bytes. 0 means area not present */
+    INT8U   ChassisInfoAreaStartOffset; /* In multiple of 8 bytes. 0 means area not present */
+    INT8U   BoardInfoAreaStartOffset; 	/* In multiple of 8 bytes. 0 means area not present */
+    INT8U   ProductInfoAreaStartOffset; /* In multiple of 8 bytes. 0 means area not present */
+    INT8U   MultiRecordAreaStartOffset; /* In multiple of 8 bytes. 0 means area not present */
+    INT8U   PAD;			/* 0x00 */
+    INT8U   ZeroChecksum;		/* Common Header Zero checksum */
+} PACKED  FRUCommonHeader_T;
+
+/* Internal Use Area */
+typedef struct
+{
+    INT8U   FormatVersion;
+    INT8U   *Data;
+} PACKED  FRUInternalInfo_T;
+
+/* Chassis Info Area */
+typedef enum
+{
+    Other = 0x01,
+    ChassisUnknown,
+    Desktop,
+    LowProfileDesktop,
+    PizzaBox,
+    MiniTower,
+    Tower,
+    Portable,
+    LapTop,
+    Notebook,
+    HandHeld,
+    DockingStation,
+    AllinOne,
+    SubNotebook,
+    SpaceSaving,
+    LunchBox,
+    MainServerChassis,
+    ExpansionChassis,
+    SubChassis,
+    BusExpansionChassis,
+    PeripheralChassis,
+    RAIDChassis,
+    RackMountChassis
+} ChassisType_T;
+
+typedef struct
+{
+    INT8U		ChassisInfoAreaFormatVersion;
+    INT8U		ChassisInfoAreaLength;	/* In multiple of 8 bytes. */
+    INT8U		*ChassisType;
+    INT8U   		ChassisPartNumTypeLength;
+    INT8U   		*ChassisPartNum;
+    INT8U   		ChassisSerialNumTypeLength;
+    INT8U   		*ChassisSerialNum;
+    INT8U   		**CustomFields;
+    INT8U           Total_Chassis_CustomField;
+} PACKED  FRUChassisInfo_T;
+
+/* Board Info Area */
+typedef enum
+{
+    English = 0
+} LanguageType_T;
+
+typedef struct
+{
+    INT8U		BoardInfoAreaFormatVersion;
+    INT8U		BoardInfoAreaLength;	/* In multiple of 8 bytes. */
+    INT8U		Language;
+    INT8U   		MfgDateTime[3];
+    INT8U   		BoardMfrTypeLength;
+    INT8U   		*BoardMfr;
+    INT8U   		BoardProductNameTypeLength;
+    INT8U   		*BoardProductName;
+    INT8U   		BoardSerialNumTypeLength;
+    INT8U   		*BoardSerialNum;
+    INT8U   		BoardPartNumTypeLength;
+    INT8U   		*BoardPartNum;
+    INT8U   		FRUFileIDTypeLength;
+    INT8U   		*FRUFileID;
+    INT8U   		**CustomFields;
+    INT8U           Total_Board_CustomField;
+
+} PACKED  FRUBoardInfo_T;
+
+/* Product Info Area */
+typedef struct
+{
+    INT8U		ProductInfoAreaFormatVersion;
+    INT8U		ProductInfoAreaLength;	/* In multiple of 8 bytes. */
+    INT8U		Language;
+    INT8U   		MfrNameTypeLength;
+    INT8U   		*MfrName;
+    INT8U   		ProductNameTypeLength;
+    INT8U   		*ProductName;
+    INT8U   		ProductPartNumTypeLength;
+    INT8U   		*ProductPartNum;
+    INT8U   		ProductVersionTypeLength;
+    INT8U   		*ProductVersion;
+    INT8U   		ProductSerialNumTypeLength;
+    INT8U   		*ProductSerialNum;
+    INT8U   		AssetTagTypeLength;
+    INT8U   		*AssetTag;
+    INT8U   		FRUFileIDTypeLength;
+    INT8U   		*FRUFileID;
+    INT8U   		**CustomFields;
+    INT8U           Total_Product_CustomField;
+} PACKED  FRUProductInfo_T;
+
+/* MultiRecord Area */
+
+typedef enum
+{
+    PowerSupplyInformation,
+    DCOutput,
+    DCLoad,
+    ManagementAccessRecord,
+    BaseCompatibilityRecord,
+    ExtendedCompatibilityRecord
+} RecordType_T;
+
+typedef struct
+{
+    INT16U	OverallCapacity;
+    INT16U	PeakVA;
+    INT8U	InrushCurrent;
+    INT8U	InrushIntervalinMSecs;
+    INT16U	LowEndInVoltageRange1;	/* 10mV */
+    INT16U	HighEndInVoltageRange1;	/* 10mV */
+    INT16U	LowEndInVoltageRange2;	/* 10mV. 0 if single range */
+    INT16U	HighEndInVoltageRange2;	/* 10mV. 0 if single range */
+    INT8U	LowEndInFreqRange;
+    INT8U	HighEndInFreqRange;
+    INT8U	ACDropoutToleranceinMSecs;
+    INT8U	FlagsPolarity;
+    INT16U	PeakWattage;
+    INT8U	CombinedWattage[3];
+    INT8U	TechMtrLowerThresh;
+} PACKED  PowerSupplyInformation_T;
+
+typedef struct
+{
+    INT8U	OutputInfo;
+    INT16U	NominalVoltage;		/* 10mV */
+    INT16U	MaxNegVolDeviation;	/* 10mV */
+    INT16U	MaxPosVolDeviation;	/* 10mV */
+    INT16U	RippleNoise;		/* mV */
+    INT16U	MinCurrentDraw;		/* mA */
+    INT16U	MaxCurrentDraw;		/* mA */
+} PACKED  DCOutput_T;
+
+typedef struct
+{
+    INT8U	VoltageReqd;
+    INT16U	NominalVoltage;		/* 10mV */
+    INT16U	SpecdMinVoltage;	/* 10mV */
+    INT16U	SpecdMaxVoltage;	/* 10mV */
+    INT16U	SpecdRippleNoise;	/* mV */
+    INT16U	MinCurrentLoad;		/* mA */
+    INT16U	MaxCurrentLoad;		/* mA */
+} PACKED  DCLoad_T;
+
+typedef struct
+{
+    INT8U		RecordTypeID;
+    INT8U		RecordFormatVersionEOL;
+    INT8U		RecordLength;
+    INT8U		RecordChecksum;	/* zero checksum */
+    INT8U		HeaderChecksum;	/* zero checksum */
+    INT8U		*RecordData;
+} PACKED  MultiRecordHeader_T;
+
+typedef struct
+{
+    MultiRecordHeader_T	RecordHeader;
+    INT8U		*RecordData;
+} PACKED  Record_T;
+
+#define	MAX_MULTIRECORDS	64
+typedef struct
+{
+    Record_T	MultiRecordsData[MAX_MULTIRECORDS];
+} PACKED  FRUMultiRecordInfo_T;
+
+/* Complete FRU Data */
+typedef struct
+{
+    FRUCommonHeader_T   	CommonHeader;
+    FRUInternalInfo_T		InternalInfo;
+    FRUChassisInfo_T		ChassisInfo;
+    FRUBoardInfo_T			BoardInfo;
+    FRUProductInfo_T		ProductInfo;
+    FRUMultiRecordInfo_T 	MultiRecordInfo;
+} PACKED  FRUData_T;
+
+#pragma pack()
+
+#endif  /* IPMI_FRU_H */

+ 245 - 0
app/bmc_server/ipmi_dev/IPMI_Firewall.h

@@ -0,0 +1,245 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ *****************************************************************
+ *
+ * ipmi_firewall.h
+ * IPMI firmware firewall Request and Response structures
+ *
+ *  Author: Ravinder Reddy <bakkar@ami.com>
+ *          Basavaraj Astekar <basavaraja@ami.com>
+ *
+ ******************************************************************/
+#ifndef IPMI_FIREWALL_H
+#define IPMI_FIREWALL_H
+#include "Types.h"
+
+#pragma pack( 1 )
+
+typedef union
+{
+	INT8U DefBodyCode;
+	INT8U IANA[3];
+} PACKED NetFnParams_T;
+/*------------------------------
+ * GetNetFnSupRes_T
+ *------------------------------*/
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   LUNSupport;
+    INT8U   NetFnPair [16];
+
+} PACKED  GetNetFnSupRes_T;
+
+
+/*------------------------------
+ * GetCmdSupReq_T
+ *------------------------------*/
+typedef struct
+{
+    INT8U   ChannelNum;
+    INT8U   OpNetFn;
+    INT8U   LUN;
+    NetFnParams_T NetFnParams;
+
+} PACKED  GetCmdSupReq_T;
+
+/*------------------------------
+ * GetCmdSupRes_T
+ *------------------------------*/
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   SupMask [16];
+
+} PACKED  GetCmdSupRes_T;
+
+/*---------------------------------
+ * GetSubFnSupReq_T
+ *---------------------------------*/
+typedef struct
+{
+    INT8U   ChannelNum;
+    INT8U   NetFn;
+    INT8U   LUN;
+    INT8U   Cmd;
+    NetFnParams_T NetFnParams;
+
+} PACKED  GetSubFnSupReq_T;
+
+
+/*----------------------------------
+ * GetSubFnSupRes_T
+ *----------------------------------*/
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   SpecType;
+    INT8U   SpecVer;
+    INT8U   SpecRev;
+    INT32U  SupMask;
+
+} PACKED  GetSubFnSupRes_T;
+
+
+/*-----------------------------------
+ * GetConfigCmdsReq_T
+ *-----------------------------------*/
+typedef struct
+{
+    INT8U   ChannelNum;
+    INT8U   OpNetFn;
+    INT8U   LUN;
+    NetFnParams_T NetFnParams;
+
+} PACKED  GetConfigCmdsReq_T;
+
+
+/*------------------------------------
+ * GetConfigCmdsRes_T
+ *------------------------------------*/
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   SupMask [16];
+
+} PACKED  GetConfigCmdsRes_T;
+
+
+/*---------------------------------------
+ * GetConfigSubFnsReq_T
+ *---------------------------------------*/
+typedef struct
+{
+    INT8U   ChannelNum;
+    INT8U   NetFn;
+    INT8U   LUN;
+    INT8U   Cmd;
+    NetFnParams_T NetFnParams;
+
+} PACKED  GetConfigSubFnsReq_T;
+
+
+/*----------------------------------------
+ * GetConfigSubFnsRes_T
+ *----------------------------------------*/
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT32U  SupMask;
+
+} PACKED  GetConfigSubFnsRes_T;
+
+
+/*---------------------------------------
+ * SetCmdEnablesReq_T
+ *---------------------------------------*/
+typedef struct
+{
+    INT8U   ChannelNum;
+    INT8U   OpNetFn;
+    INT8U   LUN;
+    INT8U   EnDisMask [16];
+    NetFnParams_T NetFnParams;
+
+} PACKED  SetCmdEnablesReq_T;
+
+
+/*---------------------------------------
+ * GetCmdEnablesReq_T
+ *---------------------------------------*/
+typedef struct
+{
+    INT8U   ChannelNum;
+    INT8U   OpNetFn;
+    INT8U   LUN;
+    NetFnParams_T NetFnParams;
+
+} PACKED  GetCmdEnablesReq_T;
+
+
+/*---------------------------------------
+ * GetCmdEnablesRes_T
+ *---------------------------------------*/
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT8U   EnDisMask [16];
+    NetFnParams_T NetFnParams;
+
+} PACKED  GetCmdEnablesRes_T;
+
+
+/*---------------------------------------
+ * SetSubFnEnablesReq_T
+ *---------------------------------------*/
+typedef struct
+{
+    INT8U   ChannelNum;
+    INT8U   NetFn;
+    INT8U   LUN;
+    INT8U   Cmd;
+    INT32U  Enables;
+
+} PACKED  SetSubFnEnablesReq_T;
+
+
+/*---------------------------------------
+ * GetSubFnEnablesReq_T
+ *---------------------------------------*/
+typedef struct
+{
+    INT8U   ChannelNum;
+    INT8U   NetFn;
+    INT8U   LUN;
+    INT8U   Cmd;
+
+} PACKED  GetSubFnEnablesReq_T;
+
+
+/*---------------------------------------
+ * GetSubFnEnablesRes_T
+ *---------------------------------------*/
+typedef struct
+{
+    INT8U   CompletionCode;
+    INT32U  Enables;
+
+} PACKED  GetSubFnEnablesRes_T;
+
+/*---------------------------------------
+ * GetOEMNetFnIANASupportReq_T
+ *---------------------------------------*/
+typedef struct
+{
+   INT8U   ChannelNum;
+   INT8U   NetFn;
+   INT8U   ListIndex;
+
+}PACKED GetOEMNetFnIANASupportReq_T;
+/*---------------------------------------
+ * GetOEMNetFnIANASupportRes_T
+ *---------------------------------------*/
+typedef struct
+{
+   INT8U   CompletionCode;
+   INT8U   IANAIndex;
+   INT8U   LUNSupport;
+   INT8U   IANACode[3];
+
+}PACKED GetOEMNetFnIANASupportRes_T;
+
+
+#pragma pack( )
+
+#endif /* IPMI_FIREWALL_H */

+ 74 - 0
app/bmc_server/ipmi_dev/IPMI_GroupExtn.h

@@ -0,0 +1,74 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2008-2009, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        Suite 200, 5555 oakbrook pkwy, Norcross             **
+ **                                                            **
+ **        Georgia - 30093, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ *****************************************************************
+ *
+ * IPMI_GroupExtn.h
+ * IPMI Group Extension Application Command numbers
+ * 
+ * Author: Rama Bisa <ramab@ami.com>
+ *
+ *****************************************************************/
+
+/*** Group Extension (NetFn Pair 0x2C/0x2D) Specific Commands ***/
+
+/*** SSI Compute Blade Specific Commands ***/
+#define CMD_SSICB_GET_COMPUTE_BLADE_PROPERTIES      0x00
+#define CMD_SSICB_GET_ADDR_INFO                     0x01
+#define CMD_SSICB_PLATFORM_EVENT_MESSAGE            0x02
+#define CMD_SSICB_MODULE_BMI_CONTROL                0x03
+#define CMD_SSICB_MODULE_PAYLOAD_CONTROL            0x04
+#define CMD_SSICB_SET_SYSTEM_EVENT_LOG_POLICY       0x05
+#define CMD_SSICB_SET_MODULE_ACTIVATION_POLICY      0x0A
+#define CMD_SSICB_GET_MODULE_ACTIVATION_POLICY      0x0B
+#define CMD_SSICB_SET_MODULE_ACTIVATION             0x0C
+#define CMD_SSICB_SET_POWER_LEVEL                   0x11
+#define CMD_SSICB_GET_POWER_LEVEL                   0x12
+#define CMD_SSICB_RENEGOTIATE_POWER                 0x13
+#define CMD_SSICB_GET_SERVICE_INFO                  0x16
+#define CMD_SSICB_GET_APPLET_PACKAGE_URI            0x17
+#define CMD_SSICB_GET_SERVICE_ENABLE_STATE          0x18
+#define CMD_SSICB_SET_SERVICE_ENABLE_STATE          0x19
+#define CMD_SSICB_SET_SERVICE_TICKET                0x20
+#define CMD_SSICB_STOP_SERVICE_SESSION              0x21
+
+/*** DCMI Specific Commands ***/
+#define CMD_GET_DCMI_CAPABILITY_INFO                0x01
+#define CMD_GET_POWER_READING                       0x02
+#define CMD_GET_POWER_LIMIT                         0x03
+#define CMD_SET_POWER_LIMIT                         0x04
+#define CMD_ACTIVATE_POWER_LIMIT                    0x05
+#define CMD_GET_ASSET_TAG                           0x06
+#define CMD_GET_DCMI_SENSOR_INFO                    0x07
+#define CMD_SET_ASSET_TAG                           0x08
+#define CMD_GET_MANAGEMENT_CONTROLLER_ID_STRING     0x09
+#define CMD_SET_MANAGEMENT_CONTROLLER_ID_STRING     0x0A
+#define CMD_SET_THERMAL_LIMIT                       0x0B
+#define CMD_GET_THERMAL_LIMIT                       0x0C
+#define CMD_GET_TEMPERATURE_READING              0x10
+#define CMD_SET_DCMI_CONF_PARAMS                0x12
+#define CMD_GET_DCMI_CONF_PARAMS                0x13
+
+/*** HPM Specific Commands ***/
+#define CMD_GET_TARGET_UPLD_CAPABLITIES             0x2E
+#define CMD_GET_COMPONENT_PROPERTIES                0x2F
+#define CMD_ABORT_FIRMWARE_UPGRADE                  0x30
+#define CMD_INITIATE_UPG_ACTION                     0x31
+#define CMD_UPLOAD_FIRMWARE_BLOCK                   0x32
+#define CMD_FINISH_FIRMWARE_UPLOAD                  0x33
+#define CMD_GET_UPGRADE_STATUS                      0x34
+#define CMD_ACTIVATE_FIRMWARE                       0x35
+#define CMD_QUERY_SELF_TEST_RESULTS                 0x36
+#define CMD_QUERY_ROLLBACK_STATUS                   0x37
+#define CMD_INITIATE_MANUAL_ROLLBACK                0x38
+

+ 41 - 0
app/bmc_server/ipmi_dev/IPMI_HPM.h

@@ -0,0 +1,41 @@
+/* ***************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2012, American Megatrends Inc.             **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        5555, Oakbrook Parkway, Suite 200,  Norcross,       **
+ **                                                            **
+ **        Georgia - 30093, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ ****************************************************************
+ *
+ * IPMI_HPM.h
+ * IPMI HPM Command Definitions.
+ *
+ * Author: Joey Chen <JoeyChen@ami.com.tw>
+ *
+ *****************************************************************/
+#ifndef IPMI_HPM_H
+#define IPMI_HPM_H
+
+
+/* HPM.1 Commands */
+#define CMD_GET_TARGET_UPLD_CAPABLITIES     0x2E
+#define CMD_GET_COMPONENT_PROPERTIES        0x2F
+
+#define CMD_ABORT_FIRMWARE_UPGRADE          0x30
+#define CMD_INITIATE_UPG_ACTION             0x31
+#define CMD_UPLOAD_FIRMWARE_BLOCK           0x32
+#define CMD_FINISH_FIRMWARE_UPLOAD          0x33
+#define CMD_GET_UPGRADE_STATUS              0x34
+#define CMD_ACTIVATE_FIRMWARE               0x35
+#define CMD_QUERY_SELF_TEST_RESULTS         0x36
+#define CMD_QUERY_ROLLBACK_STATUS           0x37
+#define CMD_INITIATE_MANUAL_ROLLBACK        0x38
+
+
+#endif  /* IPMI_HPM_H */

+ 286 - 0
app/bmc_server/ipmi_dev/IPMI_HPMCmds.h

@@ -0,0 +1,286 @@
+/* ***************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2012, American Megatrends Inc.             **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        5555, Oakbrook Parkway, Suite 200,  Norcross,       **
+ **                                                            **
+ **        Georgia - 30093, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ ****************************************************************
+ *
+ * IPMI_HPMCmds.h
+ * IPMI HPM.1 Type Definitions.
+ *
+ * Author: Joey Chen <JoeyChen@ami.com.tw> 
+ *         Rajaganesh R <rajaganeshr@amiindia.co.in>
+ *
+ *****************************************************************/
+#ifndef IPMI_HPMCMDS_H
+#define IPMI_HPMCMDS_H
+
+#include "Types.h"
+
+
+
+/* PICMG defined Group Extension Command */
+#define PICMG_IDENTIFIER				0x00
+
+/* HPM1 Revision per PICMG HPM.1 R1.0 SPEC */
+#define HPM1_REV						0x00
+
+#define DESC_STRING_LEN					12
+
+#define INIT_UPLOAD_FOR_COMPARE         3
+#define INIT_UPLOAD_FOR_UPGRADE			2
+#define INIT_PREPARE_COMPONENTS			1
+#define INIT_BACKUP_COMPONENTS          0
+
+#define HPM_LONG_DURATION_CMD           1
+#define HPM_SHORT_DURATION_CMD          2
+
+typedef enum {
+	COMPONENT_ID_0 = 0x00,
+	COMPONENT_ID_1,
+	COMPONENT_ID_2,
+	COMPONENT_ID_3,
+	COMPONENT_ID_4,
+	COMPONENT_ID_5,
+	COMPONENT_ID_6,
+	COMPONENT_ID_7,
+	COMPONENT_ID_MAX
+} Component_ID_E;
+
+typedef enum {
+	GENERAL_COMPONENT_PROPERTIES,
+	CURRENT_VERSION,
+	DESCRIPTION_STRING,
+	ROLLBACK_FW_VERSION,
+	DEFERRED_UPG_FW_VERSION,
+	RESERVED,
+	OEM_COMPONENT_PROPERTIES = 192
+} Component_Prop_Selector_E;
+
+#pragma pack(1)
+
+
+typedef struct {
+	INT8U	Identifier;						/* 00h for PICMG */
+} PACKED GetTargetUpgradeCapablitiesReq_T;
+
+typedef struct {
+
+    INT8U   CompletionCode;
+    INT8U   Identifier;						
+    INT8U   HPM1Ver;
+    INT8U   IPMCGlobalCapablities;
+    INT8U   UpgradeTimeout;					/* in 5s interval,00h if not supported */
+	INT8U   SelfTestTimeout;				/* in 5s interval,00h if not supported */
+	INT8U   Rollbackimeout;					/* in 5s interval,00h if not supported */
+	INT8U   InaccessiblityTimeout;			/* in 5s interval,00h if not supported */
+	INT8U	ComponentsPresent;
+
+} PACKED GetTargetUpgradeCapablitiesRes_T;
+
+typedef struct {
+
+	INT8U	Identifier;						
+	INT8U	ComponentID;
+	INT8U	ComponentPropSelector;
+
+} PACKED GetComponentPropertiesReq_T;
+
+typedef struct {
+
+	INT8U	FWRev1;
+	INT8U	FWRev2;
+	INT32U	AuxillaryFWRevInfo;
+
+} PACKED FirmwareVersion_T;
+
+typedef struct {
+    INT8U               CompletionCode;
+    INT8U               Identifier;
+    FirmwareVersion_T   CurrFW;
+} PACKED GetCompPropFWRes_T;
+
+typedef struct {
+    INT8U               CompletionCode;
+    INT8U               Identifier;
+    INT8U               DescString[DESC_STRING_LEN];
+} PACKED GetCompPropDescStrRes_T;
+
+typedef struct {
+    INT8U           	CompletionCode;
+    INT8U           	Identifier;
+    INT8U				GeneralCompProp;
+} PACKED GetCompPropGeneralRes_T;
+
+typedef struct {
+
+	INT8U	Identifier;						
+	INT8U	Components;
+	INT8U	UpgradeAction;
+
+} PACKED InitiateUpgActionReq_T;
+
+typedef struct {
+
+	INT8U	CompletionCode;
+	INT8U	Identifier;						
+
+} PACKED InitiateUpgActionRes_T;
+
+typedef struct {
+
+	INT8U	Identifier;						
+
+} PACKED QuerySelfTestResultsReq_T;
+
+typedef struct {
+
+	INT8U	CompletionCode;
+	INT8U	Identifier;						
+	INT8U	SelfTestResult1;
+	INT8U	SelfTestResult2;
+
+} PACKED QuerySelfTestResultsRes_T;
+
+typedef struct {
+
+    INT8U           Identifier;             
+    INT8U           BlkNumber;
+    INT8U           FWData[64];
+
+} PACKED UploadFirmwareBlkReq_T;
+
+typedef struct {
+
+    INT8U   CompletionCode;
+    INT8U   Identifier;                    
+
+} PACKED UploadFirmwareBlkRes_T;
+
+typedef struct {
+
+    INT8U   Identifier;                     
+    INT8U   Component;
+    INT32U  ImageSize;
+
+} PACKED FinishFWUploadReq_T;
+
+typedef struct {
+
+    INT8U   CompletionCode;
+    INT8U   Identifier;                     
+
+} PACKED FinishFWUploadRes_T;
+
+typedef struct {
+
+    INT8U   Identifier;                     
+
+} PACKED ActivateFWReq_T;
+
+typedef struct {
+
+    INT8U   CompletionCode;
+    INT8U   Identifier;                     
+
+} PACKED ActivateFWRes_T;
+
+typedef struct {
+
+    INT8U   Identifier;                     
+
+} PACKED AbortFirmwareUpgradeReq_T;
+
+typedef struct {
+
+    INT8U   CompletionCode;
+    INT8U   Identifier;                    
+
+} PACKED AbortFirmwareUpgradeRes_T;
+
+typedef struct {
+
+    INT8U   Identifier;                    
+
+} PACKED GetUpgradeStatusReq_T;
+
+typedef struct {
+
+    INT8U   CompletionCode;
+    INT8U   Identifier;                    
+    INT8U   CmdInProgress;
+    INT8U   LastCmdCC;
+
+} PACKED GetUpgradeStatusRes_T;
+
+typedef struct {
+
+    INT8U   Identifier;                    
+
+} PACKED QueryRollbackStatusReq_T;
+
+typedef struct {
+
+    INT8U   CompletionCode;
+    INT8U   Identifier;                    
+    INT8U   RollbackStatus;
+
+} PACKED QueryRollbackStatusRes_T;
+
+typedef struct {
+
+    INT8U   Identifier;                     
+
+} PACKED InitiateManualRollbackReq_T;
+
+typedef struct {
+    
+    INT8U   CompletionCode;
+    INT8U   Identifier;                   
+
+} PACKED InitiateManualRollbackRes_T;
+
+typedef struct
+{
+    INT8U   CmdCC;         /* Completion Code of Last Executed Command     */
+    INT8U   CmdInProgress; /* Cmd no in progress if its long duration cmd  */
+                           /* also to be used for identifying previous cmd */
+    INT8U   CmdDuration;   /* flag for long | short duration commands      */  
+} PACKED HPMCmdStatus_T;
+
+typedef enum
+{
+    HPM_EMPTY = 0x00,
+    INIT_UPLOAD,
+    UPLOAD_FW_BLK,
+    FLASHING,    
+    VERIFYING,
+    UPG_DONE,
+    ACTIVATION_PENDING
+} HPMStates_E;
+
+typedef struct 
+{
+    HPMStates_E State;
+    INT8U       UpAction;
+    INT8U       Abort;  
+} PACKED FWUpgState_T;
+
+typedef enum {
+    FWVER_TYPE_CURRENT = 0x00,
+	FWVER_TYPE_ROLLBACK, 
+	FWVER_TYPE_DEFER,
+    FWVER_TYPE_MAX
+} FwVersionType_E;
+
+#pragma pack()
+
+#endif  /* IPMI_HPMCMDS_H */

+ 307 - 0
app/bmc_server/ipmi_dev/IPMI_IPM.h

@@ -0,0 +1,307 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ ****************************************************************
+ *
+ * IPMI_IPM.h
+ * IPMDevice Commands Handler
+ *
+ * Author: Govind Kothandapani <govindk@ami.com>
+ *       : Rama Bisa <ramab@ami.com>
+ *       : Basavaraj Astekar <basavaraja@ami.com>
+ *       : Bakka Ravinder <Reddy bakkar@ami.com>
+ *
+ *****************************************************************/
+#ifndef IPMI_IPMDEV_H
+#define IPMI_IPMDEV_H
+#include "Types.h"
+
+
+#pragma pack( 1 )
+
+/*** Macro Definitions ***/
+/**
+ * @def DEVICE_ID
+ * @brief Device ID
+ **/
+#define DEVICE_ID                       0x20
+/**
+ * @def SDR_SUPPORT
+ * @brief SDR support bit flag 
+ **/
+#define SDR_SUPPORT                     0x80    
+/**
+ * @def DEV_REVISION                    
+ * @brief Device Revision 
+ **/
+#define DEV_REVISION                    0x01    
+#define IPMI_DEV_REVISION               DEV_REVISION
+/**
+ * @def DEV_AVAILABLE                   
+ * @brief Device availability bit flag
+ **/
+#define DEV_AVAILABLE                   0x80
+/**
+ * @def IPMI_VERSION
+ * @brief IPMI version
+ **/
+#define IPMI_VERSION                    0x02
+/**
+ * @def CHASSIS_DEVICE_SUPPORT          
+ * @brief Chassis Device support bit flag
+ **/
+#define CHASSIS_DEVICE_SUPPORT          ( CHASSIS_DEVICE << 7 )
+/**
+ * @def BRIDGE_COMMAND_SUPPORT          
+ * @brief Bridge Device support bit flag
+ **/
+#define BRIDGE_COMMAND_SUPPORT          ( BRIDGE_DEVICE << 6 )
+/**
+ * @def IPMB_EVENT_GENERATOR_SUPPORT    
+ * @brief IPMB Event generator support bit flag 
+ **/
+#define IPMB_EVENT_GENERATOR_SUPPORT    ( EVENT_GENERATOR << 5 )
+/**
+ * @def IPMB_EVENT_RECEIVER_SUPPORT     
+ * @brief IPMB Event receiver support bit flag 
+ **/
+#define IPMB_EVENT_RECEIVER_SUPPORT     ( EVENT_RECEIVER << 4 )
+/**
+ * @def FRU_INVENTORY_DEVICE_SUPPORT    
+ * @brief FRU Device support bit flag 
+ **/
+#define FRU_INVENTORY_DEVICE_SUPPORT    ( FRU_DEVICE << 3 )
+/**
+ * @def SEL_DEVICE_SUPPORT              
+ * @brief SEL Device support bit flag 
+ **/
+#define SEL_DEVICE_SUPPORT              ( SEL_DEVICE << 2 )
+/**
+ * @def SDR_REPOSITORY_DEVICE_SUPPORT   
+ * @brief SDR Device support bit flag
+ **/
+#define SDR_REPOSITORY_DEVICE_SUPPORT   ( SDR_DEVICE << 1 )
+/**
+ * @def SENSOR_DEVICE_SUPPORT           
+ * @brief Sensor Device support bit flag 
+ **/
+#define SENSOR_DEVICE_SUPPORT           ( SENSOR_DEVICE )
+
+#define DEV_SUPPORT                     CHASSIS_DEVICE_SUPPORT          | BRIDGE_COMMAND_SUPPORT        | \
+                                        IPMB_EVENT_GENERATOR_SUPPORT    | IPMB_EVENT_RECEIVER_SUPPORT   | \
+                                        FRU_INVENTORY_DEVICE_SUPPORT    | SEL_DEVICE_SUPPORT            | \
+                                        SDR_REPOSITORY_DEVICE_SUPPORT   | SENSOR_DEVICE_SUPPORT 
+/**
+ * @def MFG_ID_AMI                      
+ * @brief IANA number for AMI 
+ **/
+#define MFG_ID_AMI                      {0x00,0x00,0x00}    
+/**
+ * @def PROD_ID_AMI_PM                  
+ * @brief AMI Product ID {'E','M'} 
+ **/
+#define PROD_ID_AMI_PM                  0x0000
+
+/**
+ * @def DEV_GUID_NODE                   
+ * @brief node - Mac Address 
+ **/
+#define DEV_GUID_NODE                   {0x45,0xDF,0x44,0xAC,0x25,0xD4} 
+/**
+ * @def DEV_GUID_CLOCK_SEQ              
+ * @brief GUID Clolck Sequenbce
+ **/
+#define DEV_GUID_CLOCK_SEQ              0xB24A  
+/**
+ * @def DEV_GUID_TIME_HIGH
+ * @brief GUID Time High 
+ **/
+#define DEV_GUID_TIME_HIGH              0x48F3  
+/**
+ * @def DEV_GUID_TIME_MID               
+ * @brief GUID Time Mid 
+ **/
+#define DEV_GUID_TIME_MID               0x4F46  
+/**
+ * @def DEV_GUID_TIME_LOW               
+ * @brief GUID Time Low 
+ **/
+#define DEV_GUID_TIME_LOW               0xBD2C300A 
+
+/**
+ * @def GST_NO_ERROR
+ * @brief Error Code for Get Self Test Results
+ **/
+#define GST_NO_ERROR                    0x55 
+/**
+ * @def GST_CORRUPTED_DEVICES           
+ * @brief Error code for Get Self Test Results 
+ **/
+#define GST_CORRUPTED_DEVICES           0x57 
+/**
+ * @def GST_CANNOT_ACCESS_SEL           
+ * @brief Error code for Get Self Test Results 
+ **/
+#define GST_CANNOT_ACCESS_SEL           0x80 
+/**
+ * @def GST_CANNOT_ACCESS_SDR           
+ * @brief Error code for Get Self Test Results
+ **/
+#define GST_CANNOT_ACCESS_SDR           0x40
+/**
+ * @def GST_CANNOT_ACCESS_FRU           
+ * @brief Error code for Get Self Test Results 
+ **/
+#define GST_CANNOT_ACCESS_FRU           0x20 
+/**
+ * @def GST_IPMB_DO_NOT_RESPOND         
+ * @brief Error code for Get Self Test Results 
+ **/
+#define GST_IPMB_DO_NOT_RESPOND         0x10 
+/**
+ * @def GST_SDR_EMPTY
+ * @brief Error code for Get Self Test Results
+ **/
+#define GST_SDR_EMPTY                   0x08 
+/**
+ * @def GST_FRU_CORRUPTED               
+ * @brief Error code for Get Self Test Results 
+ **/
+#define GST_FRU_CORRUPTED               0x04 
+/**
+ * @def GST_BBLK_CORRUPTED              
+ * @brief Error code for Get Self Test Results 
+ **/
+#define GST_BBLK_CORRUPTED              0x02 
+/**
+ * @def GST_FIRMWARE_CORRUPTED          
+ * @brief Error code for Get Self Test Results 
+ **/
+#define GST_FIRMWARE_CORRUPTED          0x01 
+
+/**
+ * @def IPMI_ACPI_S0                    
+ * @brief ACPI State
+ **/
+#define IPMI_ACPI_S0                    0x00    
+/**
+ * @def IPMI_ACPI_S1                    
+ * @brief ACPI State 
+ **/
+#define IPMI_ACPI_S1                    0x01    
+/**
+ * @def IPMI_ACPI_S2
+ * @brief ACPI State 
+ **/
+#define IPMI_ACPI_S2                    0x02    
+/**
+ * @def IPMI_ACPI_S3                    
+ * @brief ACPI State
+ **/
+#define IPMI_ACPI_S3                    0x03    
+/**
+ * @def IPMI_ACPI_S4                    
+ * @brief ACPI State 
+ **/
+#define IPMI_ACPI_S4                    0x04
+/**
+ * @def IPMI_ACPI_S5                    
+ * @brief ACPI State 
+ **/
+#define IPMI_ACPI_S5                    0x05    
+/**
+ * @def IPMI_ACPI_S4_S5                 
+ * @brief ACPI State 
+ **/
+#define IPMI_ACPI_S4_S5                 0x06    
+/**
+ * @def IPMI_ACPI_G3                    
+ * @brief ACPI State 
+ **/
+#define IPMI_ACPI_G3                    0x07
+/**
+ * @def IPMI_ACPI_LEGACY_ON
+ * @brief ACPI State
+ **/
+#define IPMI_ACPI_LEGACY_ON             0x20
+
+/**
+ * @def IPMI_ACPI_LEGACY_OFF
+ * @brief ACPI State
+ **/
+#define IPMI_ACPI_LEGACY_OFF            0x21
+
+/**
+ * @def IPMI_ACPI_SLEEPING_S1_S3                    
+ * @brief ACPI State 
+ **/
+#define IPMI_ACPI_SLEEPING_S1_S3        0x08
+/**
+ * @def IPMI_ACPI_G1_SLEPPING_S1_S4                    
+ * @brief ACPI State 
+ **/
+#define IPMI_ACPI_G1_SLEPPING_S1_S4     0x09
+
+/**
+ * @def IPMI_S5_OVERRIDE
+ * @brief ACPI State 
+ **/
+#define IPMI_S5_OVERRIDE                0x0A
+
+/* GetDevIDRes_T */
+typedef struct {
+    INT8U   CompletionCode;
+    INT8U   DeviceID;
+    INT8U   DevRevision;
+    INT8U   FirmwareRevision1;
+    INT8U   FirmwareRevision2;
+    INT8U   IPMIVersion;
+    INT8U   DevSupport;
+    INT8U   MfgID[3];
+    INT16U  ProdID;
+    INT32U  AuxFirmwareRevision;
+} PACKED  GetDevIDRes_T;
+
+/* GetSelfTestRes_T */
+typedef struct {
+    INT8U   CompletionCode;
+    INT8U   TestResultByte1;
+    INT8U   TestResultByte2;
+} PACKED  GetSelfTestRes_T;
+
+/* SetACPIPwrStateReq_T */
+typedef struct {
+    INT8U   ACPISysPwrState;
+    INT8U   ACPIDevPwrState;
+} PACKED  SetACPIPwrStateReq_T;
+
+/* getACPIPwrStateRes_T */
+typedef struct {
+    INT8U   CompletionCode;
+    INT8U   ACPISysPwrState;
+    INT8U   ACPIDevPwrState;
+} PACKED  GetACPIPwrStateRes_T;
+
+/* GetDevGUIDRes_T */
+typedef struct {
+    INT8U   CompletionCode;
+    INT8U   Node[6];
+    INT16U  ClockSeq;
+    INT16U  TimeHigh;
+    INT16U  TimeMid;
+    INT32U  TimeLow;
+} PACKED  GetDevGUIDRes_T;
+
+#pragma pack( )
+
+#endif /* IPMI_IPMDEV_H */

+ 69 - 0
app/bmc_server/ipmi_dev/IPMI_IPMB.h

@@ -0,0 +1,69 @@
+/****************************************************************
+ ****************************************************************
+ **                                                            **
+ **    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ **                                                            **
+ **            All Rights Reserved.                            **
+ **                                                            **
+ **        6145-F, Northbelt Parkway, Norcross,                **
+ **                                                            **
+ **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ **                                                            **
+ ****************************************************************
+ ****************************************************************
+ ****************************************************************
+ *
+ * IPMI_IPMB.H
+ * IPMB IPMI related structures
+ *
+ * Author: Rama Bisa <ramab@ami.com>
+ *
+ *
+ *****************************************************************/
+#ifndef IPMI_IPMB_H
+#define IPMI_IPMB_H
+
+#include "Types.h"
+
+#pragma pack( 1 )
+
+/**
+ * @struct IPMIEvtMsgHdr_T
+ * @brief IPMI Event Message Header. 
+**/
+typedef struct
+{
+    IPMIMsgHdr_T    IPMIMsgHdr;
+    INT8U   EvMRev;
+    INT8U   SensorType;
+    INT8U   SensorNum;
+    INT8U   Ev_Type_Dir;
+    INT8U   EventData1;
+    INT8U   EventData2;
+    INT8U   EventData3;
+    INT8U   ChkSum;
+} PACKED  IPMIEvtMsgHdr_T;
+
+
+/**
+ * @struct EvtRecord_T
+ * @brief Event Record structure.
+**/
+typedef struct 
+{
+    INT8U	GeneratorID;
+    INT8U	EvMRev;			/**< Event Message format version. */
+    INT8U	SensorType;		/**< Sensor Type Code. */
+    INT8U	SensorNum;		/**< Number of sensor that generated the event.	*/
+    INT8U	Ev_Type_Dir;	/**< [7]   - 0b = Assertion event	
+    						 		   - 1b = Deassertion event.
+    						     [6:0] - Event Type Code.   */
+    INT8U	EventData1;		/**< Event Data Field Contents.	*/
+    INT8U	EventData2;		/**< Event Data Field Contents.	*/
+    INT8U	EventData3;		/**< Event Data Field Contents.	*/
+
+} PACKED  EvtRecord_T;
+
+#pragma pack( )
+
+#endif /* IPMI_IPMB_H */

+ 74 - 0
app/bmc_server/ipmi_dev/IPMI_KCS.h

@@ -0,0 +1,74 @@
+/*****************************************************************
+ *****************************************************************
+ ***                                                            **
+ ***    (C)Copyright 2005-2006, American Megatrends Inc.        **
+ ***                                                            **
+ ***            All Rights Reserved.                            **
+ ***                                                            **
+ ***        6145-F, Northbelt Parkway, Norcross,                **
+ ***                                                            **
+ ***        Georgia - 30071, USA. Phone-(770)-246-8600.         **
+ ***                                                            **
+ *****************************************************************
+ *****************************************************************
+ *
+ * ipmi_kcs.h
+ * KCS specific IPMI structures.
+ *
+ *  Author: Govind Kothandapani <govindk@ami.com>
+ ******************************************************************/
+#ifndef IPMI_KCS_H
+#define IPMI_KCS_H
+#include "Types.h"
+//#include "PDKAccess.h"
+
+#pragma pack( 1 )
+
+/* KCS Request Structure */
+typedef struct
+{
+    INT8U   NetFnLUN;
+    INT8U   Cmd;
+
+} PACKED  KCSReq_T;
+#pragma pack( )
+
+
+/**
+ * @def SET_SMS_ATN
+ * @brief Macro to set the SMS Attention bit.
+**/
+#define SET_SMS_ATN(KCSIFC_NUM, BMCInst)       \
+    do{                                                            \
+        if(g_PDKHandle[PDK_SETSMSATTN] != NULL)                   \
+        {                                                                                           \
+            ((void(*)(INT8U, int))g_PDKHandle[PDK_SETSMSATTN]) (KCSIFC_NUM, BMCInst);   \
+        }                                                                                                                     \
+    }while(0);
+
+/**
+ * @def CLEAR_SMS_ATN
+ * @brief Macro to reset the SMS attention bit.
+**/
+#define CLEAR_SMS_ATN(KCSIFC_NUM, BMCInst)       \
+do{                                                            \
+    if(g_PDKHandle[PDK_CLEARSMSATTN] != NULL)                   \
+    {                                                                                           \
+        ((void(*)(INT8U, int))g_PDKHandle[PDK_CLEARSMSATTN]) (KCSIFC_NUM, BMCInst);   \
+    }                                                                                                                     \
+}while(0);
+
+/**
+ * @def SET_OBF
+ * @brief Macro to set the OBF bit.
+**/
+#define SET_OBF(KCSIFC_NUM, BMCInst)       \
+    do{                                                            \
+        if(g_PDKHandle[PDK_SETOBF] != NULL)                   \
+        {                                                                                           \
+            ((void(*)(INT8U, int))g_PDKHandle[PDK_SETOBF]) (KCSIFC_NUM, BMCInst);   \
+        }                                                                                                                     \
+    }while(0);
+
+#endif	/* IPMI_KCS_H */
+

Деякі файли не було показано, через те що забагато файлів було змінено