/****************************************************************
 ****************************************************************
 **                                                            **
 **    (C)Copyright 2005-2006, American Megatrends Inc.        **
 **                                                            **
 **            All Rights Reserved.                            **
 **                                                            **
 **        6145-F, Northbelt Parkway, Norcross,                **
 **                                                            **
 **        Georgia - 30071, USA. Phone-(770)-246-8600.         **
 **                                                            **
 ****************************************************************
 *****************************************************************
 *
 * rmcp.h
 * RMCP Packet Handler
 *
 * Author: Govind Kothandapani <govindk@ami.com>
 *       : Bakka Ravinder Reddy <bakkar@ami.com>
 *
 *****************************************************************/
#ifndef RMCP_H
#define RMCP_H

#include "com_BmcType.h"
#include "com_IPMI_RMCP.h"
#include "com_IPMIDefs.h"


/* Integrity Algorithm Numbers */
#define AUTH_NONE                   0
#define AUTH_HMAC_SHA1_96           1
#define AUTH_HMAC_MD5_128           2
#define AUTH_MD5_128                3
#define AUTH_HMAC_SHA256_128        4

#define CONF_AES_CBC_128            1
#define CONF_xCR4_128               2
#define CONF_xCR4_40                3

/* Login Event OEMType definitions */
#define EVENT_LOGIN 	            0x9
#define EVENT_LOGOUT 	            0xA
#define EVENT_AUTO_LOGOUT           0xB
#define EVENT_LOGIN_FAILURE         0xE

#define NULL_USER                   1
// /**
//  * This structure holds various params/flags that are collected/accumulated/set/reset on the way during the flow of packets in API chain.
//  * 
// */
// typedef struct {
//     uint8_t	IsPktFromLoopBack; /** packet is received thru LoopBack */
//     uint8_t	IsPktFromVLAN; /** packet is received thru VLAN */
// }MiscParams_T;

// /**
//  * @var   uint32_t g_DeleteThisLANSSession
//  * @brief Flag indicates LAN ifc to delete the session after sending response
//  **/
// //extern      uint32_t      g_DeleteThisLANSessionID;


// /**
//  * @brief Process RMCP request received over LAN interface.
//  * @param pRMCPReq - Request message.
//  * @param pRMCPRes - Response message.
//  * @return Message length.
// **/
// extern uint32_t ProcessRMCPReq(  RMCPHdr_T* pRMCPReq,   RMCPHdr_T* pRMCPRes, MiscParams_T *pParams,uint8_t Channel, int BMCInst);


// *
//  * @brief Compute authentication code.
//  * @param pPassword     - User password.
//  * @param pSessionHdr   - Session header RMCP message.
//  * @param pIPMIMsg      - IPMI message payload.
//  * @param pAuthCode     - Authentication Code being generated.
//  * @param ChannelType   - Channel Type.
// *
// extern void  ComputeAuthCode (  uint8_t* pPassword,   SessionHdr_T* pSessionHdr,
//                                 IPMIMsgHdr_T* pIPMIMsg,   uint8_t* pAuthCode,
//                               uint8_t ChannelType);


// /**
//  * @brief Frame IPMI 2.0 payload.
//  * @param PayloadType - Payload Type.
//  * @param pRMCPPkt    - RMCP data.
//  * @param pPayload    - Payload data.
//  * @param PayloadLen  - Payload Length.
//  * @param pSessionInfo - Session information.
//  * @return 0 if success, -1 if error.
// **/
// extern int   Frame20Payload     (uint8_t PayloadType,   RMCPHdr_T* pRMCPPkt,
//                                    uint8_t* pPayload,  uint32_t PayloadLen,  
//                                  SessionInfo_T* pSessionInfo, int BMCInst);


// extern int AddLoginEvent ( uint8_t UserID, uint8_t* UserName, uint8_t EvtType, int BMCInst);


#endif /* RMCP_H */
