xref: /utopia/UTPA2-700.0.x/projects/tools/lint/mips-linux-gnu_include/linux/ipv6.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1 #ifndef _IPV6_H
2 #define _IPV6_H
3 
4 #include <linux/in6.h>
5 #include <asm/byteorder.h>
6 
7 /* The latest drafts declared increase in minimal mtu up to 1280. */
8 
9 #define IPV6_MIN_MTU	1280
10 
11 /*
12  *	Advanced API
13  *	source interface/address selection, source routing, etc...
14  *	*under construction*
15  */
16 
17 
18 struct in6_pktinfo {
19 	struct in6_addr	ipi6_addr;
20 	int		ipi6_ifindex;
21 };
22 
23 
24 struct in6_ifreq {
25 	struct in6_addr	ifr6_addr;
26 	__u32		ifr6_prefixlen;
27 	int		ifr6_ifindex;
28 };
29 
30 #define IPV6_SRCRT_STRICT	0x01	/* Deprecated; will be removed */
31 #define IPV6_SRCRT_TYPE_0	0	/* Deprecated; will be removed */
32 #define IPV6_SRCRT_TYPE_2	2	/* IPv6 type 2 Routing Header	*/
33 
34 /*
35  *	routing header
36  */
37 struct ipv6_rt_hdr {
38 	__u8		nexthdr;
39 	__u8		hdrlen;
40 	__u8		type;
41 	__u8		segments_left;
42 
43 	/*
44 	 *	type specific data
45 	 *	variable length field
46 	 */
47 };
48 
49 
50 struct ipv6_opt_hdr {
51 	__u8 		nexthdr;
52 	__u8 		hdrlen;
53 	/*
54 	 * TLV encoded option data follows.
55 	 */
56 } __attribute__ ((packed));	/* required for some archs */
57 
58 #define ipv6_destopt_hdr ipv6_opt_hdr
59 #define ipv6_hopopt_hdr  ipv6_opt_hdr
60 
61 
62 /*
63  *	routing header type 0 (used in cmsghdr struct)
64  */
65 
66 struct rt0_hdr {
67 	struct ipv6_rt_hdr	rt_hdr;
68 	__u32			reserved;
69 	struct in6_addr		addr[0];
70 
71 #define rt0_type		rt_hdr.type
72 };
73 
74 /*
75  *	routing header type 2
76  */
77 
78 struct rt2_hdr {
79 	struct ipv6_rt_hdr	rt_hdr;
80 	__u32			reserved;
81 	struct in6_addr		addr;
82 
83 #define rt2_type		rt_hdr.type
84 };
85 
86 /*
87  *	home address option in destination options header
88  */
89 
90 struct ipv6_destopt_hao {
91 	__u8			type;
92 	__u8			length;
93 	struct in6_addr		addr;
94 } __attribute__ ((__packed__));
95 
96 /*
97  *	IPv6 fixed header
98  *
99  *	BEWARE, it is incorrect. The first 4 bits of flow_lbl
100  *	are glued to priority now, forming "class".
101  */
102 
103 struct ipv6hdr {
104 #if defined(__LITTLE_ENDIAN_BITFIELD)
105 	__u8			priority:4,
106 				version:4;
107 #elif defined(__BIG_ENDIAN_BITFIELD)
108 	__u8			version:4,
109 				priority:4;
110 #else
111 #error	"Please fix <asm/byteorder.h>"
112 #endif
113 	__u8			flow_lbl[3];
114 
115 	__be16			payload_len;
116 	__u8			nexthdr;
117 	__u8			hop_limit;
118 
119 	struct	in6_addr	saddr;
120 	struct	in6_addr	daddr;
121 };
122 
123 /*
124  * This structure contains configuration options per IPv6 link.
125  */
126 struct ipv6_devconf {
127 	__s32		forwarding;
128 	__s32		hop_limit;
129 	__s32		mtu6;
130 	__s32		accept_ra;
131 	__s32		accept_redirects;
132 	__s32		autoconf;
133 	__s32		dad_transmits;
134 	__s32		rtr_solicits;
135 	__s32		rtr_solicit_interval;
136 	__s32		rtr_solicit_delay;
137 	__s32		force_mld_version;
138 #ifdef CONFIG_IPV6_PRIVACY
139 	__s32		use_tempaddr;
140 	__s32		temp_valid_lft;
141 	__s32		temp_prefered_lft;
142 	__s32		regen_max_retry;
143 	__s32		max_desync_factor;
144 #endif
145 	__s32		max_addresses;
146 	__s32		accept_ra_defrtr;
147 	__s32		accept_ra_pinfo;
148 #ifdef CONFIG_IPV6_ROUTER_PREF
149 	__s32		accept_ra_rtr_pref;
150 	__s32		rtr_probe_interval;
151 #ifdef CONFIG_IPV6_ROUTE_INFO
152 	__s32		accept_ra_rt_info_max_plen;
153 #endif
154 #endif
155 	__s32		proxy_ndp;
156 	__s32		accept_source_route;
157 #ifdef CONFIG_IPV6_OPTIMISTIC_DAD
158 	__s32		optimistic_dad;
159 #endif
160 #ifdef CONFIG_IPV6_MROUTE
161 	__s32		mc_forwarding;
162 #endif
163 	void		*sysctl;
164 };
165 
166 /* index values for the variables in ipv6_devconf */
167 enum {
168 	DEVCONF_FORWARDING = 0,
169 	DEVCONF_HOPLIMIT,
170 	DEVCONF_MTU6,
171 	DEVCONF_ACCEPT_RA,
172 	DEVCONF_ACCEPT_REDIRECTS,
173 	DEVCONF_AUTOCONF,
174 	DEVCONF_DAD_TRANSMITS,
175 	DEVCONF_RTR_SOLICITS,
176 	DEVCONF_RTR_SOLICIT_INTERVAL,
177 	DEVCONF_RTR_SOLICIT_DELAY,
178 	DEVCONF_USE_TEMPADDR,
179 	DEVCONF_TEMP_VALID_LFT,
180 	DEVCONF_TEMP_PREFERED_LFT,
181 	DEVCONF_REGEN_MAX_RETRY,
182 	DEVCONF_MAX_DESYNC_FACTOR,
183 	DEVCONF_MAX_ADDRESSES,
184 	DEVCONF_FORCE_MLD_VERSION,
185 	DEVCONF_ACCEPT_RA_DEFRTR,
186 	DEVCONF_ACCEPT_RA_PINFO,
187 	DEVCONF_ACCEPT_RA_RTR_PREF,
188 	DEVCONF_RTR_PROBE_INTERVAL,
189 	DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN,
190 	DEVCONF_PROXY_NDP,
191 	DEVCONF_OPTIMISTIC_DAD,
192 	DEVCONF_ACCEPT_SOURCE_ROUTE,
193 	DEVCONF_MC_FORWARDING,
194 	DEVCONF_MAX
195 };
196 
197 
198 #endif /* _IPV6_H */
199