summaryrefslogblamecommitdiffstats
path: root/drivers/staging/bcm/IPv6ProtocolHdr.h
blob: 96b36a579af202b9d8419bcb99e6c9fe22b3d195 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11


                               







                                                  

                            




                                          


                                                            

                                        
                     

                                       
                                       

                                    

                                          
  
 
                             



                                     
                                 
  
 
                              

                                    
                                        
                                        
  
 
                                  


                                       
  
 
                             

                                   
                                        
  
 
                                    

                                    
                                  
                                                 
  
 
                         

                      
  
 
                         
 
                                                                                                           
                                                                                                    
                                                                                       
 
                                                   
 


                                                                                                    

      
#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