com_IPMI_LANConfig.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405
  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. *
  17. * ipmi_lanconfig.h
  18. * Lan configuration command handler
  19. *
  20. * Author: Bakka Ravinder Reddy <bakkar@ami.com>
  21. *
  22. *****************************************************************/
  23. #ifndef IPMI_LANCONFIG_H
  24. #define IPMI_LANCONFIG_H
  25. #include <stdint.h>
  26. //#include <nwcfg.h>
  27. /*** External Definitions ***/
  28. #define IP_ADDR_LEN 4
  29. #define MAC_ADDR_LEN 6
  30. #define MAX_COMM_STRING_SIZE 18
  31. #define MAX_NUM_CIPHER_SUITE_PRIV_LEVELS 10
  32. #define MAX_IPV6_ADDR_STRLEN 41
  33. #define MAX_NUM_LAN_ALERT_DESTINATIONS 15 //1h to Fh
  34. #define MAX_LAN_CONF_PARAM 0x1A
  35. #define MIN_LAN_OEM_CONF_PARAM 192
  36. #define MAX_LAN_OEM_CONF_PARAM 255
  37. #define LAN_PARAM_SET_IN_PROGRESS 0
  38. #define LAN_PARAM_AUTH_TYPE_SUPPORT 1
  39. #define LAN_PARAM_AUTH_TYPE_ENABLES 2
  40. #define LAN_PARAM_IP_ADDRESS 3
  41. #define LAN_PARAM_IP_ADDRESS_SOURCE 4
  42. #define LAN_PARAM_MAC_ADDRESS 5
  43. #define LAN_PARAM_SUBNET_MASK 6
  44. #define LAN_PARAM_IPv4_HEADER 7
  45. #define LAN_PARAM_PRI_RMCP_PORT 8
  46. #define LAN_PARAM_SEC_RMCP_PORT 9
  47. #define LAN_PARAM_BMC_GENERATED_ARP_CONTROL 10
  48. #define LAN_PARAM_GRATITIOUS_ARP_INTERVAL 11
  49. #define LAN_PARAM_DEFAULT_GATEWAY_IP 12
  50. #define LAN_PARAM_DEFAULT_GATEWAY_MAC 13
  51. #define LAN_PARAM_BACKUP_GATEWAY_IP 14
  52. #define LAN_PARAM_BACKUP_GATEWAY_MAC 15
  53. #define LAN_PARAM_COMMUNITY_STRING 16
  54. #define LAN_PARAM_DEST_NUM 17
  55. #define LAN_PARAM_SELECT_DEST_TYPE 18
  56. #define LAN_PARAM_SELECT_DEST_ADDR 19
  57. #define LAN_PARAM_VLAN_ID 20
  58. #define LAN_PARAM_VLAN_PRIORITY 21
  59. #define LAN_PARAM_CIPHER_SUITE_ENTRY_SUP 22
  60. #define LAN_PARAM_CIPHER_SUITE_ENTRIES 23
  61. #define LAN_PARAM_CIPHER_SUITE_PRIV_LEVELS 24
  62. #define LAN_PARAM_VLAN_TAGS 25
  63. #define LAN_PARAMS_BAD_PASSWORD_THRESHOLD 26
  64. #define LAN_PARAMS_AMI_OEM_VLANIFC_ENABLE 192
  65. #define LAN_PARAMS_AMI_OEM_SNMPV6_DEST_ADDR 193
  66. #define LAN_PARAMS_AMI_OEM_ENABLE_SET_MAC 194
  67. #define LAN_PARAMS_AMI_OEM_IPV6_ENABLE 195
  68. #define LAN_PARAMS_AMI_OEM_IPV6_IP_ADDR_SOURCE 196
  69. #define LAN_PARAMS_AMI_OEM_IPV6_IP_ADDR 197
  70. #define LAN_PARAMS_AMI_OEM_IPV6_LINK_ADDR 207
  71. #define LAN_PARAMS_AMI_OEM_IPV6_LINK_ADDR_PREFIX 208
  72. #define LAN_PARAMS_AMI_OEM_IPV6_PREFIX_LENGTH 198
  73. #define LAN_PARAMS_AMI_OEM_IPV6_GATEWAY_IP 199
  74. #define LAN_PARAMS_AMI_OEM_IPV6_IP_ADDR_EUI64 211
  75. /* Parameter No. 200 to 202 are specified as SSI OEM LAN Parameters */
  76. #define LAN_PARAMS_SSI_OEM_2ND_PRI_ETH_MAC_ADDR 200
  77. #define LAN_PARAMS_SSI_OEM_LINK_CTRL 201
  78. #define LAN_PARAMS_SSI_OEM_CMM_IP_ADDR 202
  79. #define LAN_PARAMS_AMI_OEM_IPV6_DNS_SETTINGS 203
  80. #define LAN_PARAMS_AMI_OEM_NCSI_CONFIG_NUM 204
  81. #define LAN_PARAMS_AMI_OEM_NCSI_SETTINGS 205
  82. #define LAN_PARAMS_AMI_OEM_NCSI_MODE_CHANGE 210
  83. #define LAN_PARAMS_AMI_OEM_NCSI_EXTENSION 212
  84. #define LAN_PARAMS_AMI_OEM_PHY_SETTINGS 206
  85. #define LAN_PARAMS_AMI_OEM_MTU_SETTINGS 209
  86. #define UNSPECIFIED_IP_SOURCE 0x00
  87. #define STATIC_IP_SOURCE 0x01
  88. #define DHCP_IP_SOURCE 0x02
  89. #define BIOS_IP_SOURCE 0x03
  90. #define BMC_OTHER_SOURCE 0x04
  91. #define VLAN_MASK_BIT 0x8000 /* VLAN enable bit */
  92. /**
  93. * @struct AuthTypeEnables_T
  94. * @brief Authentication Type Enables
  95. **/
  96. #pragma pack(1)
  97. typedef struct
  98. {
  99. uint8_t AuthTypeCallBack;
  100. uint8_t AuthTypeUser;
  101. uint8_t AuthTypeOperator;
  102. uint8_t AuthTypeAdmin;
  103. uint8_t AuthTypeOem;
  104. } AuthTypeEnables_T;
  105. /**
  106. * @struct LANDestType_T
  107. * @brief LAN Destination Type
  108. **/
  109. typedef struct
  110. {
  111. uint8_t SetSelect;
  112. uint8_t DestType;
  113. uint8_t AlertAckTimeout;
  114. uint8_t Retries;
  115. } LANDestType_T;
  116. /**
  117. * @struct LANDestAddr_T
  118. * @brief LAN Destination Address
  119. **/
  120. typedef struct
  121. {
  122. uint8_t SetSelect;
  123. uint8_t AddrFormat;
  124. uint8_t GateWayUse;
  125. uint8_t IPAddr [IP_ADDR_LEN];
  126. uint8_t MACAddr [MAC_ADDR_LEN];
  127. } LANDestAddr_T;
  128. typedef struct
  129. {
  130. uint8_t SetSelect;
  131. uint8_t AddrFormat;
  132. uint8_t GateWayUse;
  133. uint8_t IPAddr [IP6_ADDR_LEN];
  134. uint8_t MACAddr [MAC_ADDR_LEN];
  135. } LANDestv6Addr_T;
  136. /**
  137. * @struct IPv4HdrParams_T
  138. * @brief IPv4 Header Parameters
  139. **/
  140. typedef struct
  141. {
  142. uint8_t TimeToLive;
  143. uint8_t IpHeaderFlags;
  144. uint8_t TypeOfService;
  145. } IPv4HdrParams_T;
  146. typedef struct
  147. {
  148. uint8_t GenEvent;
  149. uint8_t ThreshNum;
  150. uint16_t ResetInterval;
  151. uint16_t LockoutInterval;
  152. } BadPassword_T;
  153. typedef struct
  154. {
  155. uint8_t EthIndex;
  156. uint8_t MACAddress[MAC_ADDR_LEN];
  157. } EnableSetMACAddress_T;
  158. typedef struct
  159. {
  160. uint8_t Interface;
  161. uint8_t PackageId;
  162. uint8_t ChannelId;
  163. } NCSIPortConfig_T;
  164. typedef struct
  165. {
  166. uint8_t Interface;
  167. uint8_t NCSIMode;
  168. } NCSIModeConfig_T;
  169. typedef struct
  170. {
  171. uint8_t Command;
  172. uint8_t Interface;
  173. uint8_t VetoBit;
  174. } NCSIPHYConfigSet_T;
  175. typedef struct
  176. {
  177. uint8_t Interface;
  178. uint8_t VetoBit;
  179. } NCSIPHYConfigGet_T;
  180. /**
  181. * @struct IPv6Addr_T
  182. * @brief Setting Multiple static IPv6 address
  183. **/
  184. typedef struct
  185. {
  186. uint8_t IPv6_Cntr;
  187. uint8_t IPv6_IPAddr [IP6_ADDR_LEN];
  188. }IPv6Addr_T;
  189. /**
  190. * @struct IPv6Prefix_T
  191. * @brief Setting Multiple static IPv6 prefix length
  192. **/
  193. typedef struct
  194. {
  195. uint8_t IPv6_Prepos;
  196. uint8_t IPv6_PrefixLen;
  197. }IPv6Prefix_T;
  198. typedef struct
  199. {
  200. uint8_t AutoNegotiationEnable;
  201. uint16_t Speed;
  202. uint8_t Duplex;
  203. uint8_t Interface;
  204. uint8_t CapabilitiesSupported;
  205. } PHYConfig_T;
  206. /**
  207. * @struct LANConfigUn_T
  208. * @brief LAN Configuration Parameters.
  209. **/
  210. typedef union {
  211. uint8_t SetInProgress;
  212. uint8_t AuthTypeSupport;
  213. AuthTypeEnables_T AuthTypeEnables;
  214. uint8_t IPAddr [4];
  215. uint8_t IPAddrSrc;
  216. uint8_t MACAddr [6];
  217. uint8_t SubNetMask [4];
  218. IPv4HdrParams_T Ipv4HdrParam;
  219. uint16_t PrimaryRMCPPort;
  220. uint16_t SecondaryPort;
  221. uint8_t BMCGeneratedARPControl;
  222. uint8_t GratitousARPInterval;
  223. uint8_t DefaultGatewayIPAddr [IP_ADDR_LEN];
  224. uint8_t DefaultGatewayMACAddr [MAC_ADDR_LEN];
  225. uint8_t BackupGatewayIPAddr [IP_ADDR_LEN];
  226. uint8_t BackupGatewayMACAddr [MAC_ADDR_LEN];
  227. uint8_t CommunityStr [MAX_COMM_STRING_SIZE];
  228. uint8_t NumDest;
  229. LANDestType_T DestType;
  230. LANDestAddr_T DestAddr;
  231. LANDestv6Addr_T Destv6Addr;
  232. uint16_t VLANID;
  233. uint8_t VLANPriority;
  234. uint8_t CipherSuiteSup;
  235. uint8_t CipherSuiteEntries [17];
  236. uint8_t CipherSuitePrivLevels [MAX_NUM_CIPHER_SUITE_PRIV_LEVELS];
  237. BadPassword_T BadPasswd;
  238. uint8_t EthIndex;
  239. uint8_t ChangeMACEnabled;
  240. uint8_t IPv6_Enable;
  241. uint8_t IPv6_IPAddrSrc;
  242. uint8_t IPv6_LinkAddr [IP6_ADDR_LEN];
  243. IPv6Addr_T IPv6Addr;
  244. IPv6Prefix_T IPv6Prefix;
  245. uint8_t IPv6_LinkAddrPrefix;
  246. uint8_t IPv6_GatewayIPAddr[IP6_ADDR_LEN];
  247. uint8_t NumNCSIPortConfigs;
  248. NCSIPortConfig_T NCSIPortConfig;
  249. PHYConfig_T PHYConfig;
  250. uint8_t SSI2ndPriEthMACAddr[MAC_ADDR_LEN];
  251. uint8_t SSILinkControl;
  252. uint8_t CMMIPAddr[IP_ADDR_LEN];
  253. uint16_t MTU_size;
  254. NCSIModeConfig_T NCSIModeConfig;
  255. NCSIPHYConfigSet_T NCSIPHYConfigSet;
  256. NCSIPHYConfigGet_T NCSIPHYConfigGet;
  257. } LANConfigUn_T;
  258. /* GetLanCCRev_T */
  259. typedef struct
  260. {
  261. uint8_t CompletionCode;
  262. uint8_t ParamRevision;
  263. } GetLanCCRev_T;
  264. /* GetLanConfigReq_T */
  265. typedef struct
  266. {
  267. uint8_t ChannelNum;
  268. uint8_t ParameterSelect;
  269. uint8_t SetSelect;
  270. uint8_t BlockSelect;
  271. } GetLanConfigReq_T;
  272. /* GetLanConfigRes_T */
  273. typedef struct
  274. {
  275. GetLanCCRev_T CCParamRev;
  276. LANConfigUn_T ConfigData;
  277. } GetLanConfigRes_T;
  278. /* GetLanConfigOEM_T */
  279. typedef struct
  280. {
  281. GetLanCCRev_T CCParamRev;
  282. /* OEM parameter should be added below*/
  283. } GetLanConfigOEMRes_T;
  284. /* SetLanConfigReq_T */
  285. typedef struct
  286. {
  287. uint8_t ChannelNum;
  288. uint8_t ParameterSelect;
  289. /* OEM parameter should be added below*/
  290. } SetLanConfigOEMReq_T;
  291. /* SetLanConfigReq_T */
  292. typedef struct
  293. {
  294. uint8_t ChannelNum;
  295. uint8_t ParameterSelect;
  296. LANConfigUn_T ConfigData;
  297. } SetLanConfigReq_T;
  298. /* SetLanConfigRes_T */
  299. typedef struct
  300. {
  301. uint8_t CompletionCode;
  302. } SetLanConfigRes_T;
  303. /* SuspendBMCArpsReq_T */
  304. typedef struct
  305. {
  306. uint8_t ChannelNo;
  307. uint8_t ArpSuspend;
  308. } SuspendBMCArpsReq_T;
  309. /* SuspendBMCArpsRes_T */
  310. typedef struct
  311. {
  312. uint8_t CompletionCode;
  313. uint8_t ArpSuspendStatus;
  314. } SuspendBMCArpsRes_T;
  315. /* GetIPUDPRMCPStatsReq_T */
  316. typedef struct
  317. {
  318. uint8_t ChannelNo;
  319. uint8_t ClearStatus;
  320. } GetIPUDPRMCPStatsReq_T;
  321. /* GetIPUDPRMCPStatsRes_T */
  322. typedef struct
  323. {
  324. uint8_t CompletionCode;
  325. uint16_t IPPacketsRecv;
  326. uint16_t IPHeaderErr;
  327. uint16_t IPAddrErr;
  328. uint16_t FragIPPacketsRecv;
  329. uint16_t IPPacketsTrans;
  330. uint16_t UDPPacketsRecv;
  331. uint16_t ValidRMCPPackets;
  332. } GetIPUDPRMCPStatsRes_T;
  333. typedef struct
  334. {
  335. int16_t RegValue;
  336. uint8_t RegNumber;
  337. uint8_t IsReplace;
  338. } SetPHYReg_T;
  339. #pragma pack()
  340. #endif /* IPMI_LANCONFIG_H */