Merge branch 'staging-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh...
[pandora-kernel.git] / drivers / staging / bcm / IPv6ProtocolHdr.h
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
30 typedef 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
41 typedef 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
52 typedef struct IPV6FragmentHeaderFormatTag
53 {
54         UCHAR ucNextHeader;
55         UCHAR ucReserved;
56         USHORT usFragmentOffset;
57         ULONG  ulIdentification;
58 }IPV6FragmentHeader;
59
60 typedef struct IPV6DestOptionsHeaderFormatTag
61 {
62         UCHAR ucNextHeader;
63         UCHAR ucHdrExtLen;
64         UCHAR ucDestOptions[6];
65         //UCHAR udExtDestOptions[0];
66 }IPV6DestOptionsHeader;
67
68 typedef struct IPV6HopByHopOptionsHeaderFormatTag
69 {
70         UCHAR ucNextHeader;
71         UCHAR ucMisc[3];
72         ULONG ulJumboPayloadLen;
73 }IPV6HopByHopOptionsHeader;
74
75 typedef struct IPV6AuthenticationHeaderFormatTag
76 {
77         UCHAR ucNextHeader;
78         UCHAR ucLength;
79         USHORT usReserved;
80         ULONG  ulSecurityParametersIndex;
81         //UCHAR  ucAuthenticationData[0];
82
83 }IPV6AuthenticationHeader;
84
85 typedef struct IPV6IcmpHeaderFormatTag
86 {
87         UCHAR ucType;
88         UCHAR ucCode;
89         USHORT usChecksum;
90         //UCHAR  ucIcmpMsg[0];
91
92 }IPV6IcmpHeader;
93
94 typedef enum _E_IPADDR_CONTEXT
95 {
96         eSrcIpAddress,
97         eDestIpAddress
98
99 }E_IPADDR_CONTEXT;
100
101
102
103 //Function Prototypes
104
105 USHORT  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
109 VOID DumpIpv6Address(ULONG *puIpv6Address);
110
111 extern BOOLEAN MatchSrcPort(S_CLASSIFIER_RULE *pstClassifierRule,USHORT ushSrcPort);
112 extern BOOLEAN MatchDestPort(S_CLASSIFIER_RULE *pstClassifierRule,USHORT ushSrcPort);
113 extern BOOLEAN MatchProtocol(S_CLASSIFIER_RULE *pstClassifierRule,UCHAR ucProtocol);
114
115
116 #endif