Loading...
1#ifndef _IPV6_PROTOCOL_DEFINES_
2#define _IPV6_PROTOCOL_DEFINES_
3
4
5#define IPV6HDR_TYPE_HOPBYHOP 0x0
6#define IPV6HDR_TYPE_ROUTING 0x2B
7#define IPV6HDR_TYPE_FRAGMENTATION 0x2C
8#define IPV6HDR_TYPE_DESTOPTS 0x3c
9#define IPV6HDR_TYPE_AUTHENTICATION 0x33
10#define IPV6HDR_TYPE_ENCRYPTEDSECURITYPAYLOAD 0x34
11#define MASK_IPV6_CS_SPEC 0x2
12
13
14#define TCP_HEADER_TYPE 0x6
15#define UDP_HEADER_TYPE 0x11
16#define IPV6_ICMP_HDR_TYPE 0x2
17#define IPV6_FLOWLABEL_BITOFFSET 9
18
19#define IPV6_MAX_CHAINEDHDR_BUFFBYTES 0x64
20/*
21// Size of Dest Options field of Destinations Options Header
22// in bytes.
23*/
24#define IPV6_DESTOPTS_HDR_OPTIONSIZE 0x8
25
26//typedef unsigned char UCHAR;
27//typedef unsigned short USHORT;
28//typedef unsigned long int ULONG;
29
30typedef struct IPV6HeaderFormatTag
31{
32 UCHAR ucVersionPrio;
33 UCHAR aucFlowLabel[3];
34 USHORT usPayloadLength;
35 UCHAR ucNextHeader;
36 UCHAR ucHopLimit;
37 ULONG ulSrcIpAddress[4];
38 ULONG ulDestIpAddress[4];
39}IPV6Header;
40
41typedef struct IPV6RoutingHeaderFormatTag
42{
43 UCHAR ucNextHeader;
44 UCHAR ucRoutingType;
45 UCHAR ucNumAddresses;
46 UCHAR ucNextAddress;
47 ULONG ulReserved;
48 //UCHAR aucAddressList[0];
49
50}IPV6RoutingHeader;
51
52typedef struct IPV6FragmentHeaderFormatTag
53{
54 UCHAR ucNextHeader;
55 UCHAR ucReserved;
56 USHORT usFragmentOffset;
57 ULONG ulIdentification;
58}IPV6FragmentHeader;
59
60typedef struct IPV6DestOptionsHeaderFormatTag
61{
62 UCHAR ucNextHeader;
63 UCHAR ucHdrExtLen;
64 UCHAR ucDestOptions[6];
65 //UCHAR udExtDestOptions[0];
66}IPV6DestOptionsHeader;
67
68typedef struct IPV6HopByHopOptionsHeaderFormatTag
69{
70 UCHAR ucNextHeader;
71 UCHAR ucMisc[3];
72 ULONG ulJumboPayloadLen;
73}IPV6HopByHopOptionsHeader;
74
75typedef struct IPV6AuthenticationHeaderFormatTag
76{
77 UCHAR ucNextHeader;
78 UCHAR ucLength;
79 USHORT usReserved;
80 ULONG ulSecurityParametersIndex;
81 //UCHAR ucAuthenticationData[0];
82
83}IPV6AuthenticationHeader;
84
85typedef struct IPV6IcmpHeaderFormatTag
86{
87 UCHAR ucType;
88 UCHAR ucCode;
89 USHORT usChecksum;
90 //UCHAR ucIcmpMsg[0];
91
92}IPV6IcmpHeader;
93
94typedef enum _E_IPADDR_CONTEXT
95{
96 eSrcIpAddress,
97 eDestIpAddress
98
99}E_IPADDR_CONTEXT;
100
101
102
103//Function Prototypes
104
105USHORT IpVersion6(PMINI_ADAPTER Adapter, /**< Pointer to the driver control structure */
106 PVOID pcIpHeader, /**<Pointer to the IP Hdr of the packet*/
107 S_CLASSIFIER_RULE *pstClassifierRule );
108
109VOID DumpIpv6Address(ULONG *puIpv6Address);
110
111extern BOOLEAN MatchSrcPort(S_CLASSIFIER_RULE *pstClassifierRule,USHORT ushSrcPort);
112extern BOOLEAN MatchDestPort(S_CLASSIFIER_RULE *pstClassifierRule,USHORT ushSrcPort);
113extern BOOLEAN MatchProtocol(S_CLASSIFIER_RULE *pstClassifierRule,UCHAR ucProtocol);
114
115
116#endif
1#ifndef _IPV6_PROTOCOL_DEFINES_
2#define _IPV6_PROTOCOL_DEFINES_
3
4#define IPV6HDR_TYPE_HOPBYHOP 0x0
5#define IPV6HDR_TYPE_ROUTING 0x2B
6#define IPV6HDR_TYPE_FRAGMENTATION 0x2C
7#define IPV6HDR_TYPE_DESTOPTS 0x3c
8#define IPV6HDR_TYPE_AUTHENTICATION 0x33
9#define IPV6HDR_TYPE_ENCRYPTEDSECURITYPAYLOAD 0x34
10#define MASK_IPV6_CS_SPEC 0x2
11
12#define TCP_HEADER_TYPE 0x6
13#define UDP_HEADER_TYPE 0x11
14#define IPV6_ICMP_HDR_TYPE 0x2
15#define IPV6_FLOWLABEL_BITOFFSET 9
16
17#define IPV6_MAX_CHAINEDHDR_BUFFBYTES 0x64
18/*
19 * Size of Dest Options field of Destinations Options Header
20 * in bytes.
21 */
22#define IPV6_DESTOPTS_HDR_OPTIONSIZE 0x8
23
24struct bcm_ipv6_hdr {
25 unsigned char ucVersionPrio;
26 unsigned char aucFlowLabel[3];
27 unsigned short usPayloadLength;
28 unsigned char ucNextHeader;
29 unsigned char ucHopLimit;
30 unsigned long ulSrcIpAddress[4];
31 unsigned long ulDestIpAddress[4];
32};
33
34struct bcm_ipv6_routing_hdr {
35 unsigned char ucNextHeader;
36 unsigned char ucRoutingType;
37 unsigned char ucNumAddresses;
38 unsigned char ucNextAddress;
39 unsigned long ulReserved;
40};
41
42struct bcm_ipv6_fragment_hdr {
43 unsigned char ucNextHeader;
44 unsigned char ucReserved;
45 unsigned short usFragmentOffset;
46 unsigned long ulIdentification;
47};
48
49struct bcm_ipv6_dest_options_hdr {
50 unsigned char ucNextHeader;
51 unsigned char ucHdrExtLen;
52 unsigned char ucDestOptions[6];
53};
54
55struct bcm_ipv6_options_hdr {
56 unsigned char ucNextHeader;
57 unsigned char ucMisc[3];
58 unsigned long ulJumboPayloadLen;
59};
60
61struct bcm_ipv6_authentication_hdr {
62 unsigned char ucNextHeader;
63 unsigned char ucLength;
64 unsigned short usReserved;
65 unsigned long ulSecurityParametersIndex;
66};
67
68enum bcm_ipaddr_context {
69 eSrcIpAddress,
70 eDestIpAddress
71};
72
73/* Function Prototypes */
74
75unsigned short IpVersion6(struct bcm_mini_adapter *Adapter, /* < Pointer to the driver control structure */
76 void *pcIpHeader, /* <Pointer to the IP Hdr of the packet */
77 struct bcm_classifier_rule *pstClassifierRule);
78
79void DumpIpv6Address(unsigned long *puIpv6Address);
80
81extern bool MatchSrcPort(struct bcm_classifier_rule *pstClassifierRule, unsigned short ushSrcPort);
82extern bool MatchDestPort(struct bcm_classifier_rule *pstClassifierRule, unsigned short ushSrcPort);
83extern bool MatchProtocol(struct bcm_classifier_rule *pstClassifierRule, unsigned char ucProtocol);
84
85#endif