• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/include/Common/
1/*
2* IPv6ProtocolHdr.h
3*
4*Copyright (C) 2010 Beceem Communications, Inc.
5*
6*This program is free software: you can redistribute it and/or modify
7*it under the terms of the GNU General Public License version 2 as
8*published by the Free Software Foundation.
9*
10*This program is distributed in the hope that it will be useful,but
11*WITHOUT ANY WARRANTY; without even the implied warranty of
12*MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13*See the GNU General Public License for more details.
14*
15*You should have received a copy of the GNU General Public License
16*along with this program. If not, write to the Free Software Foundation, Inc.,
17*51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
18*
19*/
20
21
22#ifndef _IPV6_PROTOCOL_DEFINES_
23#define _IPV6_PROTOCOL_DEFINES_
24
25
26#define IPV6HDR_TYPE_HOPBYHOP 0x0
27#define IPV6HDR_TYPE_ROUTING 0x2B
28#define IPV6HDR_TYPE_FRAGMENTATION 0x2C
29#define IPV6HDR_TYPE_DESTOPTS 0x3c
30#define IPV6HDR_TYPE_AUTHENTICATION 0x33
31#define IPV6HDR_TYPE_ENCRYPTEDSECURITYPAYLOAD 0x34
32#define MASK_IPV6_CS_SPEC 0x2
33
34
35#define TCP_HEADER_TYPE 0x6
36#define UDP_HEADER_TYPE 0x11
37#define IPV6_ICMP_HDR_TYPE 0x2
38#define IPV6_FLOWLABEL_BITOFFSET 9
39
40#define IPV6_MAX_CHAINEDHDR_BUFFBYTES 0x64
41/*
42// Size of Dest Options field of Destinations Options Header
43// in bytes.
44*/
45#define IPV6_DESTOPTS_HDR_OPTIONSIZE 0x8
46
47//typedef  unsigned char UCHAR;
48//typedef  unsigned short USHORT;
49//typedef  unsigned long int ULONG;
50
51typedef struct IPV6HeaderFormatTag
52{
53	UCHAR  ucVersionPrio;
54	UCHAR  aucFlowLabel[3];
55	USHORT usPayloadLength;
56	UCHAR  ucNextHeader;
57	UCHAR  ucHopLimit;
58	ULONG  ulSrcIpAddress[4];
59	ULONG  ulDestIpAddress[4];
60}IPV6Header;
61
62typedef struct IPV6RoutingHeaderFormatTag
63{
64	UCHAR ucNextHeader;
65	UCHAR ucRoutingType;
66	UCHAR ucNumAddresses;
67	UCHAR ucNextAddress;
68	ULONG ulReserved;
69	//UCHAR aucAddressList[0];
70
71}IPV6RoutingHeader;
72
73typedef struct IPV6FragmentHeaderFormatTag
74{
75	UCHAR ucNextHeader;
76	UCHAR ucReserved;
77	USHORT usFragmentOffset;
78	ULONG  ulIdentification;
79}IPV6FragmentHeader;
80
81typedef struct IPV6DestOptionsHeaderFormatTag
82{
83	UCHAR ucNextHeader;
84	UCHAR ucHdrExtLen;
85	UCHAR ucDestOptions[6];
86	//UCHAR udExtDestOptions[0];
87}IPV6DestOptionsHeader;
88
89typedef struct IPV6HopByHopOptionsHeaderFormatTag
90{
91	UCHAR ucNextHeader;
92	UCHAR ucMisc[3];
93	ULONG ulJumboPayloadLen;
94}IPV6HopByHopOptionsHeader;
95
96typedef struct IPV6AuthenticationHeaderFormatTag
97{
98	UCHAR ucNextHeader;
99	UCHAR ucLength;
100	USHORT usReserved;
101	ULONG  ulSecurityParametersIndex;
102	//UCHAR  ucAuthenticationData[0];
103
104}IPV6AuthenticationHeader;
105
106typedef struct IPV6IcmpHeaderFormatTag
107{
108	UCHAR ucType;
109	UCHAR ucCode;
110	USHORT usChecksum;
111	//UCHAR  ucIcmpMsg[0];
112
113}IPV6IcmpHeader;
114
115typedef enum _E_IPADDR_CONTEXT
116{
117	eSrcIpAddress,
118	eDestIpAddress
119
120}E_IPADDR_CONTEXT;
121
122
123
124//Function Prototypes
125BOOLEAN MatchSrcIpv6Address(S_CLASSIFIER_RULE *pstClassifierRule,IPV6Header *pstIpv6Header);
126BOOLEAN MatchDestIpv6Address(S_CLASSIFIER_RULE *pstClassifierRule,IPV6Header *pstIpv6Header);
127
128USHORT	IpVersion6(PMINI_ADAPTER Adapter, /**< Pointer to the driver control structure */
129					PVOID pcIpHeader, /**<Pointer to the IP Hdr of the packet*/
130					S_CLASSIFIER_RULE *pstClassifierRule );
131
132VOID DumpIpv6Address(ULONG *puIpv6Address);
133VOID DumpIpv6Header(IPV6Header *pstIpv6Header);
134
135extern BOOLEAN MatchSrcPort(S_CLASSIFIER_RULE *pstClassifierRule,USHORT ushSrcPort);
136extern BOOLEAN MatchDestPort(S_CLASSIFIER_RULE *pstClassifierRule,USHORT ushSrcPort);
137extern BOOLEAN MatchProtocol(S_CLASSIFIER_RULE *pstClassifierRule,UCHAR ucProtocol);
138
139
140#endif
141