]> Pileus Git - ~andy/linux/blob - drivers/staging/bcm/IPv6ProtocolHdr.h
Merge tag 'for-v3.14-fixes' of git://git.infradead.org/battery-2.6
[~andy/linux] / drivers / staging / bcm / IPv6ProtocolHdr.h
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
24 struct 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
34 struct 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
42 struct bcm_ipv6_fragment_hdr {
43         unsigned char  ucNextHeader;
44         unsigned char  ucReserved;
45         unsigned short usFragmentOffset;
46         unsigned long  ulIdentification;
47 };
48
49 struct bcm_ipv6_dest_options_hdr {
50         unsigned char ucNextHeader;
51         unsigned char ucHdrExtLen;
52         unsigned char ucDestOptions[6];
53 };
54
55 struct bcm_ipv6_options_hdr {
56         unsigned char ucNextHeader;
57         unsigned char ucMisc[3];
58         unsigned long ulJumboPayloadLen;
59 };
60
61 struct bcm_ipv6_authentication_hdr {
62         unsigned char  ucNextHeader;
63         unsigned char  ucLength;
64         unsigned short usReserved;
65         unsigned long  ulSecurityParametersIndex;
66 };
67
68 enum bcm_ipaddr_context {
69         eSrcIpAddress,
70         eDestIpAddress
71 };
72
73 /* Function Prototypes */
74
75 unsigned 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
79 void DumpIpv6Address(unsigned long *puIpv6Address);
80
81 extern bool MatchSrcPort(struct bcm_classifier_rule *pstClassifierRule, unsigned short ushSrcPort);
82 extern bool MatchDestPort(struct bcm_classifier_rule *pstClassifierRule, unsigned short ushSrcPort);
83 extern bool MatchProtocol(struct bcm_classifier_rule *pstClassifierRule, unsigned char ucProtocol);
84
85 #endif