#ifndef _IPV6_PROTOCOL_DEFINES_
#define _IPV6_PROTOCOL_DEFINES_
#define IPV6HDR_TYPE_HOPBYHOP 0x0
#define IPV6HDR_TYPE_ROUTING 0x2B
#define IPV6HDR_TYPE_FRAGMENTATION 0x2C
#define IPV6HDR_TYPE_DESTOPTS 0x3c
#define IPV6HDR_TYPE_AUTHENTICATION 0x33
#define IPV6HDR_TYPE_ENCRYPTEDSECURITYPAYLOAD 0x34
#define MASK_IPV6_CS_SPEC 0x2
#define TCP_HEADER_TYPE 0x6
#define UDP_HEADER_TYPE 0x11
#define IPV6_ICMP_HDR_TYPE 0x2
#define IPV6_FLOWLABEL_BITOFFSET 9
#define IPV6_MAX_CHAINEDHDR_BUFFBYTES 0x64
/*
* Size of Dest Options field of Destinations Options Header
* in bytes.
*/
#define IPV6_DESTOPTS_HDR_OPTIONSIZE 0x8
struct bcm_ipv6_hdr {
unsigned char ucVersionPrio;
unsigned char aucFlowLabel[3];
unsigned short usPayloadLength;
unsigned char ucNextHeader;
unsigned char ucHopLimit;
unsigned long ulSrcIpAddress[4];
unsigned long ulDestIpAddress[4];
};
struct bcm_ipv6_routing_hdr {
unsigned char ucNextHeader;
unsigned char ucRoutingType;
unsigned char ucNumAddresses;
unsigned char ucNextAddress;
unsigned long ulReserved;
};
struct bcm_ipv6_fragment_hdr {
unsigned char ucNextHeader;
unsigned char ucReserved;
unsigned short usFragmentOffset;
unsigned long ulIdentification;
};
struct bcm_ipv6_dest_options_hdr {
unsigned char ucNextHeader;
unsigned char ucHdrExtLen;
unsigned char ucDestOptions[6];
};
struct bcm_ipv6_options_hdr {
unsigned char ucNextHeader;
unsigned char ucMisc[3];
unsigned long ulJumboPayloadLen;
};
struct bcm_ipv6_authentication_hdr {
unsigned char ucNextHeader;
unsigned char ucLength;
unsigned short usReserved;
unsigned long ulSecurityParametersIndex;
};
enum bcm_ipaddr_context {
eSrcIpAddress,
eDestIpAddress
};
/* Function Prototypes */
unsigned short IpVersion6(struct bcm_mini_adapter *Adapter, /* < Pointer to the driver control structure */
void *pcIpHeader, /* <Pointer to the IP Hdr of the packet */
struct bcm_classifier_rule *pstClassifierRule);
void DumpIpv6Address(unsigned long *puIpv6Address);
extern bool MatchSrcPort(struct bcm_classifier_rule *pstClassifierRule, unsigned short ushSrcPort);
extern bool MatchDestPort(struct bcm_classifier_rule *pstClassifierRule, unsigned short ushSrcPort);
extern bool MatchProtocol(struct bcm_classifier_rule *pstClassifierRule, unsigned char ucProtocol);
#endif