IPv6ProtocolHdr.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #ifndef _IPV6_PROTOCOL_DEFINES_
  2. #define _IPV6_PROTOCOL_DEFINES_
  3. #define IPV6HDR_TYPE_HOPBYHOP 0x0
  4. #define IPV6HDR_TYPE_ROUTING 0x2B
  5. #define IPV6HDR_TYPE_FRAGMENTATION 0x2C
  6. #define IPV6HDR_TYPE_DESTOPTS 0x3c
  7. #define IPV6HDR_TYPE_AUTHENTICATION 0x33
  8. #define IPV6HDR_TYPE_ENCRYPTEDSECURITYPAYLOAD 0x34
  9. #define MASK_IPV6_CS_SPEC 0x2
  10. #define TCP_HEADER_TYPE 0x6
  11. #define UDP_HEADER_TYPE 0x11
  12. #define IPV6_ICMP_HDR_TYPE 0x2
  13. #define IPV6_FLOWLABEL_BITOFFSET 9
  14. #define IPV6_MAX_CHAINEDHDR_BUFFBYTES 0x64
  15. /*
  16. * Size of Dest Options field of Destinations Options Header
  17. * in bytes.
  18. */
  19. #define IPV6_DESTOPTS_HDR_OPTIONSIZE 0x8
  20. struct bcm_ipv6_hdr {
  21. unsigned char ucVersionPrio;
  22. unsigned char aucFlowLabel[3];
  23. unsigned short usPayloadLength;
  24. unsigned char ucNextHeader;
  25. unsigned char ucHopLimit;
  26. unsigned long ulSrcIpAddress[4];
  27. unsigned long ulDestIpAddress[4];
  28. };
  29. struct bcm_ipv6_routing_hdr {
  30. unsigned char ucNextHeader;
  31. unsigned char ucRoutingType;
  32. unsigned char ucNumAddresses;
  33. unsigned char ucNextAddress;
  34. unsigned long ulReserved;
  35. };
  36. struct bcm_ipv6_fragment_hdr {
  37. unsigned char ucNextHeader;
  38. unsigned char ucReserved;
  39. unsigned short usFragmentOffset;
  40. unsigned long ulIdentification;
  41. };
  42. struct bcm_ipv6_dest_options_hdr {
  43. unsigned char ucNextHeader;
  44. unsigned char ucHdrExtLen;
  45. unsigned char ucDestOptions[6];
  46. };
  47. struct bcm_ipv6_options_hdr {
  48. unsigned char ucNextHeader;
  49. unsigned char ucMisc[3];
  50. unsigned long ulJumboPayloadLen;
  51. };
  52. struct bcm_ipv6_authentication_hdr {
  53. unsigned char ucNextHeader;
  54. unsigned char ucLength;
  55. unsigned short usReserved;
  56. unsigned long ulSecurityParametersIndex;
  57. };
  58. enum bcm_ipaddr_context {
  59. eSrcIpAddress,
  60. eDestIpAddress
  61. };
  62. /* Function Prototypes */
  63. unsigned short IpVersion6(struct bcm_mini_adapter *Adapter, /* < Pointer to the driver control structure */
  64. void *pcIpHeader, /* <Pointer to the IP Hdr of the packet */
  65. struct bcm_classifier_rule *pstClassifierRule);
  66. void DumpIpv6Address(unsigned long *puIpv6Address);
  67. extern bool MatchSrcPort(struct bcm_classifier_rule *pstClassifierRule, unsigned short ushSrcPort);
  68. extern bool MatchDestPort(struct bcm_classifier_rule *pstClassifierRule, unsigned short ushSrcPort);
  69. extern bool MatchProtocol(struct bcm_classifier_rule *pstClassifierRule, unsigned char ucProtocol);
  70. #endif