LANAlert.h 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. /****************************************************************
  2. ****************************************************************
  3. ** **
  4. ** (C)Copyright 2005-2006, American Megatrends Inc. **
  5. ** **
  6. ** All Rights Reserved. **
  7. ** **
  8. ** 6145-F, Northbelt Parkway, Norcross, **
  9. ** **
  10. ** Georgia - 30071, USA. Phone-(770)-246-8600. **
  11. ** **
  12. ****************************************************************
  13. ****************************************************************/
  14. /*****************************************************************
  15. *
  16. * LANAlert.h
  17. * SNMP Trap generation
  18. *
  19. * Author: Govind Kothandapani <govindk@ami.com>
  20. * : Rama Bisa <ramab@ami.com>
  21. * : Basavaraj Astekar <basavaraja@ami.com>
  22. * : Bakka Ravinder Reddy <bakkar@ami.com>
  23. *
  24. *****************************************************************/
  25. #ifndef LANALERT_H
  26. #define LANALERT_H
  27. #include "Types.h"
  28. #include "SELRecord.h"
  29. #pragma pack( 1 )
  30. #define MAX_EVENT_DATA 0x8
  31. #define MAX_OEM_TRAP_FIELDS 64
  32. /*** Macro Definitions ***/
  33. #define PET_TRAP_DEST_TYPE 0x07
  34. #define TIMESTAMP_1970_TO_1998 883612800
  35. #define EVENT_SOURCE_IPMI 0x20
  36. #define PEF_PET_GUID_USE_MASK 0x01
  37. #define MAX_ENCODED_LEN_SIZE 5
  38. #define MAX_ENCODED_VER_SIZE 5
  39. #define MAX_ENCODED_COM_STR_SIZE 25
  40. #define MAX_ENCODED_TRAP_PDU_SIZE 225
  41. #define MAX_ENCODED_AGENT_ADDR_SIZE 10
  42. #define MAX_ENCODED_GEN_TRAP_SIZE 20
  43. #define MAX_ENCODED_SPEC_TRAP_SIZE 20
  44. #define MAX_ENCODED_TIME_STAMP_SIZE 10
  45. #define MAX_ENCODED_VAR_BIND_SIZE 127
  46. #define UTC_OFFSET_UNSPECIFIED 0xFFFF
  47. #define EVT_SEV_UNSPECIFIED 0x00
  48. #define TRAP_SOURCE_IPMI 0x20
  49. #define SENSOR_DEV_BMC 0x20
  50. #define SENSOR_NO_UNSPECIFIED 0x00
  51. #define ENTITY_UNSPECIFIED 0x00
  52. #define ENTITY_INSTANCE_UNSPEC 0x00
  53. #define LANGUAGE_CODE_ENGLISH 0x19
  54. #define MANUFACTURER_ID_PET 0x00
  55. #define SYSTEM_ID 0x00
  56. #define MAX_ENCODE_OID_BUFFER_SIZE 6
  57. #define MAX_ENCODED_OID_SIZE 15
  58. #define MAX_BYTE_DATA 0xFF
  59. #define MAX_UINT16_DATA 0xFFFF
  60. #define MAX_UINT24_DATA 0xFFFFFF
  61. #define HI_UINT32_MASK 0xFF000000
  62. #define HI_UINT24_MASK 0xFF0000
  63. #define HI_BYTE_MASK 0xFF00
  64. #define LO_BYTE_MASK 0xFF
  65. #define BIT8_SET_MASK 0x80
  66. #define LO_NIBBLE_MASK 0x0f
  67. #define HI_UINT32_SHIFT 24
  68. #define HI_UINT24_SHIFT 16
  69. #define HI_BYTE_SHIFT 8
  70. #define BYTE_SHIFT 8
  71. #define ASN_OID_MULTIPLIER1 40
  72. #define ASN_OID_MULTIPLIER2 128
  73. #define ASN_ID_INTEGER 0x02
  74. #define ASN_ID_STRING 0x04
  75. #define ASN_ID_SEQUENCE 0x30
  76. #define ASN_ID_OBJECT 0x06
  77. #define ASN_ID_IP_ADDR 0x40
  78. #define ASN_ID_TRAP_PDU 0xa4
  79. #define ASN_ID_TIMESTAMP 0x43
  80. #define TIMESTAMPMULTIPLE 100
  81. #define ONE_DATA_ENCODED_ID 0x81
  82. #define TWO_DATA_ENCODED_ID 0x82
  83. #define MAX_LEN_ENCODING_SIZE 5
  84. #define ENTERPRISE_SPECIFIC_GENERIC_TRAP 0x6
  85. #define MAX_AGENT_ADDR_SIZE 4
  86. #define SNMP_UDP_PORT 162
  87. #define MAX_SNMP_TRAP_SIZE 256
  88. #define LAN_DEST_TYPE_MASK 0x7
  89. #define LAN_PET_TRAP 0x0
  90. #define LAN_OEM1_ALERT 0x06
  91. #define LAN_OEM2_ALERT 0x07
  92. #define BACKUP_GATEWAY 0X01
  93. /*** Type Definitions ***/
  94. /**
  95. * @struct VarBindings_T
  96. * @brief Structure for the SNMP Trap varible bindings
  97. **/
  98. typedef struct
  99. {
  100. INT8U GUid[16]; /**< Global unique ID */
  101. INT16U SeqCookie; /**< Sequence Cookie */
  102. INT32U TimeStamp; /**< Platform Local Time Stamp */
  103. INT16U UTCOffset; /**< UTC offset in minutes */
  104. INT8U TrapSourceType; /**< Trap Source Type */
  105. INT8U EventSourceType; /**< Event Source Type */
  106. INT8U EventSeverity; /**< Event Severity */
  107. INT8U SensorDevice; /**< Identifies instance of a Device */
  108. INT8U SensorNumber; /**< Identifies instance of a Sensor */
  109. INT8U Entity; /**< Platform Entity ID */
  110. INT8U EntityInstance; /**< Entity instance */
  111. INT8U EvtData[MAX_EVENT_DATA]; /**< Maxmimum event data */
  112. INT8U LanguageCode; /**<Language code */
  113. INT32U ManufacturerID; /**< Manufacturer ID per IANA.*/
  114. INT16U SystemID; /**< System ID */
  115. INT8U Oem[MAX_OEM_TRAP_FIELDS]; /**< Oem specific trap fields */
  116. } PACKED VarBindings_T;
  117. typedef struct
  118. {
  119. INT8U Type;
  120. INT8U Length;
  121. INT8U RecType;
  122. INT8U RecData[61];
  123. }PACKED OemPETField_T;
  124. /*** Type Definitions ***/
  125. /**
  126. * @struct ASNHeader_T
  127. * @brief Structure for the ASN header in SNMP Trap
  128. **/
  129. typedef struct
  130. {
  131. INT8U Identifier; /**< Identifier */
  132. INT8U Length; /**< Length of the Variable bindings */
  133. } PACKED ASNHeader_T;
  134. #pragma pack ()
  135. /*** Extern Declarations ***/
  136. /*** Function Prototypes ***/
  137. /**
  138. * @brief Generates SNMP Trap through LAN
  139. * @param EvtRecord Pointer to Event record
  140. * @param DestSel Destination selector
  141. * @param AlertImmFlag Alert Immediate flag
  142. * @param Event Severity
  143. * @return TRUE if success else FALSE
  144. **/
  145. extern INT8U LANAlert (_NEAR_ SELEventRecord_T* EvtRecord,
  146. INT8U DestSel,
  147. INT8U EventSeverity,
  148. INT8U AlertImmFlag,INT8U EthIndex,INT8U *AlertStr, int BMCInst);
  149. extern int EncodeLength (_NEAR_ INT8U* EncodedLength,
  150. INT8U Length);
  151. extern int AddEncodedOID (_NEAR_ INT8U* VarbindData,
  152. _NEAR_ INT8U* EncodedOID,
  153. INT8U Length);
  154. extern int ASNOIDEncode (const _FAR_ INT16U* OID,
  155. INT8U Length,
  156. _NEAR_ INT8U* EncodedOID);
  157. extern INT8U ASNEncodeBYTE (_NEAR_ INT8U* EncodedOID,
  158. INT8U Length,
  159. _NEAR_ INT8U* EncodedData,
  160. INT8U Data);
  161. extern int ASNEncodeUINT16 (_NEAR_ INT8U* EncodedOID,
  162. INT8U Length,
  163. _NEAR_ INT8U* EncodedData,
  164. INT16U Data);
  165. extern int ASNEncodeUINT32 (_NEAR_ INT8U* EncodedOID,
  166. INT8U Length,
  167. _NEAR_ INT8U* EncodedData,
  168. INT32U Data);
  169. extern int ASNEncodeTimestamp(_NEAR_ INT8U* EncodedOID,
  170. INT8U Length,
  171. _NEAR_ INT8U* EncodedData,
  172. INT32U Data);
  173. extern int ASNEncodeString (_NEAR_ INT8U* EncodedOID,
  174. INT8U Length,
  175. _NEAR_ INT8U* EncodedData,
  176. _NEAR_ INT8U* Str,
  177. INT8U StrLength);
  178. extern int ConstructTrapPDU (_NEAR_ SELEventRecord_T* EvtRecord,
  179. _NEAR_ INT8U* EncodedTrapPDU,
  180. _NEAR_ INT8U* IPAddr,
  181. INT8U EventSeverity,INT8U *AlertStr,int BMCInst);
  182. extern int ConstructVarBind (_NEAR_ SELEventRecord_T* EvtRecord,
  183. _NEAR_ INT8U* EncodedVarBindings,
  184. INT8U EventSeverity,INT8U *AlertStr,int BMCInst);
  185. #endif /* LANALERT_H */