com_IPMI_LANIfc.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  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. * ipmi_LANIfc.h
  17. * LAN Interface structures
  18. *
  19. * Author: Govind Kothandapani <govindk@ami.com>
  20. * : Bakka Ravinder Reddy <bakkar@ami.com>
  21. *
  22. *****************************************************************/
  23. #ifndef IPMI_LANIFC_H
  24. #define IPMI_LANIFC_H
  25. #include <stdio.h>
  26. #include <stdint.h>
  27. #include "com_IPMI_RMCP.h"
  28. #include "com_IPMIDefs.h"
  29. #pragma pack( 1 )
  30. /**
  31. * @struct MACHdr_T
  32. * @brief MAC header of LAN interface packet.
  33. **/
  34. typedef struct
  35. {
  36. uint8_t DestAddr [MAC_ADDR_LEN];
  37. uint8_t SrcAddr [MAC_ADDR_LEN];
  38. } MACHdr_T;
  39. typedef union
  40. {
  41. /*IPv6 Header */
  42. struct
  43. {
  44. uint32_t Hdr1;/* Version Class and Flow Lable*/
  45. uint16_t Payload_Len;
  46. uint8_t Nxt_Hdr;
  47. uint8_t HOPLIMIT;
  48. uint8_t Srcv6Addr [IP6_ADDR_LEN];
  49. uint8_t Destv6Addr [IP6_ADDR_LEN];
  50. };
  51. /*IPv4 Header */
  52. struct
  53. {
  54. uint8_t Ver_HdrLen;
  55. uint8_t Prec_SerType;
  56. uint16_t TotalLen;
  57. uint16_t Id;
  58. uint16_t Flags_FragOffset;
  59. uint8_t TTL;
  60. uint8_t Protocol;
  61. uint16_t IPHdrChecksum;
  62. uint8_t Srcv4Addr [IP_ADDR_LEN];
  63. uint8_t Destv4Addr [IP_ADDR_LEN];
  64. };
  65. } IPHdr_T;
  66. /**
  67. * @struct UDPHdr_T
  68. * @brief UDP header of LAN interface packet.
  69. **/
  70. typedef struct
  71. {
  72. uint16_t SrcPort;
  73. uint16_t DestPort;
  74. uint16_t UDPLen;
  75. uint16_t UDPChecksum;
  76. } UDPHdr_T;
  77. /**
  78. * @struct LANRMCPPkt_T
  79. * @brief LAN RMCP packet format.
  80. **/
  81. typedef struct
  82. {
  83. MACHdr_T MACHdr;
  84. uint16_t FrameType;
  85. IPHdr_T IPHdr;
  86. UDPHdr_T UDPHdr;
  87. RMCPHdr_T RMCPHdr;
  88. } LANRMCPPkt_T;
  89. /**
  90. * @struct LANARPData_T
  91. * @brief ARP Request/Reply
  92. **/
  93. typedef struct
  94. {
  95. uint16_t HardType;
  96. uint16_t ProtType;
  97. uint8_t HardSize;
  98. uint8_t ProtSize;
  99. uint16_t Op;
  100. uint8_t SenderMACAddr [MAC_ADDR_LEN];
  101. uint8_t SenderIPAddr [IP_ADDR_LEN];
  102. uint8_t TargetMACAddr [MAC_ADDR_LEN];
  103. uint8_t TargetIPAddr [IP_ADDR_LEN];
  104. uint8_t PAD [18];
  105. } LANARPData_T;
  106. /**
  107. * @struct LANARPPkt_T
  108. * @brief LAN ARP Packet
  109. **/
  110. typedef struct
  111. {
  112. MACHdr_T MACHdr;
  113. uint16_t FrameType;
  114. LANARPData_T LANARPHdr;
  115. } LANARPPkt_T;
  116. /**
  117. * @struct UDPPseudoHdr_T
  118. * @brief UDP Pseudo header - used in udp checksum calculation.
  119. **/
  120. typedef struct
  121. {
  122. uint8_t Protocol;
  123. uint8_t SrcAddr [IP_ADDR_LEN];
  124. uint8_t DestAddr [IP_ADDR_LEN];
  125. uint16_t UDPLen;
  126. } UDPPseudoHdr_T;
  127. #pragma pack( )
  128. #endif /* IPMI_LANIFC_H */