1224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/*
2224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *	Types and definitions for AF_INET6
3224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *	Linux INET6 implementation
4224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *
5224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *	Authors:
6224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *	Pedro Roque		<roque@di.fc.ul.pt>
7224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *
8224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *	Sources:
9224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *	IPv6 Program Interfaces for BSD Systems
10224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *      <draft-ietf-ipngwg-bsd-api-05.txt>
11224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *
12224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *	Advanced Sockets API for IPv6
13224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *	<draft-stevens-advanced-api-00.txt>
14224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *
15224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *	This program is free software; you can redistribute it and/or
16224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *      modify it under the terms of the GNU General Public License
17224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *      as published by the Free Software Foundation; either version
18224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *      2 of the License, or (at your option) any later version.
19224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
20224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
21224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#ifndef _UAPI_LINUX_IN6_H
22224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define _UAPI_LINUX_IN6_H
23224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
24224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#include <linux/types.h>
25e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#include <linux/libc-compat.h>
26224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
27224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/*
28224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *	IPv6 address structure
29224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
30224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
31e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#if __UAPI_DEF_IN6_ADDR
32224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct in6_addr {
33224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	union {
34224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng		__u8		u6_addr8[16];
35e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#if __UAPI_DEF_IN6_ADDR_ALT
36224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng		__be16		u6_addr16[8];
37224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng		__be32		u6_addr32[4];
38e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#endif
39224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	} in6_u;
40224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define s6_addr			in6_u.u6_addr8
41e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#if __UAPI_DEF_IN6_ADDR_ALT
42224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define s6_addr16		in6_u.u6_addr16
43224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define s6_addr32		in6_u.u6_addr32
44e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#endif
45224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng};
46e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#endif /* __UAPI_DEF_IN6_ADDR */
47224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
48e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#if __UAPI_DEF_SOCKADDR_IN6
49224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct sockaddr_in6 {
50224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	unsigned short int	sin6_family;    /* AF_INET6 */
51224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__be16			sin6_port;      /* Transport layer port # */
52224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__be32			sin6_flowinfo;  /* IPv6 flow information */
53224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	struct in6_addr		sin6_addr;      /* IPv6 address */
54224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u32			sin6_scope_id;  /* scope id (new in RFC2553) */
55224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng};
56e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#endif /* __UAPI_DEF_SOCKADDR_IN6 */
57224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
58e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#if __UAPI_DEF_IPV6_MREQ
59224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct ipv6_mreq {
60224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	/* IPv6 multicast address of group */
61224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	struct in6_addr ipv6mr_multiaddr;
62224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
63224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	/* local IPv6 address of interface */
64224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	int		ipv6mr_ifindex;
65224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng};
66e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#endif /* __UAPI_DEF_IVP6_MREQ */
67224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
68224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define ipv6mr_acaddr	ipv6mr_multiaddr
69224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
70224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct in6_flowlabel_req {
71224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	struct in6_addr	flr_dst;
72224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__be32	flr_label;
73224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u8	flr_action;
74224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u8	flr_share;
75224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u16	flr_flags;
76224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u16 	flr_expires;
77224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u16	flr_linger;
78224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u32	__flr_pad;
79224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	/* Options in format of IPV6_PKTOPTIONS */
80224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng};
81224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
82224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_FL_A_GET	0
83224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_FL_A_PUT	1
84224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_FL_A_RENEW	2
85224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
86224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_FL_F_CREATE	1
87224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_FL_F_EXCL		2
88e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define IPV6_FL_F_REFLECT	4
89e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define IPV6_FL_F_REMOTE	8
90224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
91224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_FL_S_NONE		0
92224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_FL_S_EXCL		1
93224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_FL_S_PROCESS	2
94224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_FL_S_USER		3
95224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_FL_S_ANY		255
96224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
97224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
98224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/*
99224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *	Bitmask constant declarations to help applications select out the
100224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *	flow label and priority fields.
101224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *
102224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *	Note that this are in host byte order while the flowinfo field of
103224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *	sockaddr_in6 is in network byte order.
104224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
105224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
106224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_FLOWINFO_FLOWLABEL		0x000fffff
107224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_FLOWINFO_PRIORITY		0x0ff00000
108224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
109224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* These definitions are obsolete */
110224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PRIORITY_UNCHARACTERIZED	0x0000
111224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PRIORITY_FILLER		0x0100
112224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PRIORITY_UNATTENDED	0x0200
113224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PRIORITY_RESERVED1		0x0300
114224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PRIORITY_BULK		0x0400
115224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PRIORITY_RESERVED2		0x0500
116224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PRIORITY_INTERACTIVE	0x0600
117224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PRIORITY_CONTROL		0x0700
118224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PRIORITY_8			0x0800
119224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PRIORITY_9			0x0900
120224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PRIORITY_10		0x0a00
121224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PRIORITY_11		0x0b00
122224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PRIORITY_12		0x0c00
123224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PRIORITY_13		0x0d00
124224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PRIORITY_14		0x0e00
125224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PRIORITY_15		0x0f00
126224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
127224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/*
128224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *	IPV6 extension headers
129224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
130e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#if __UAPI_DEF_IPPROTO_V6
131224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPPROTO_HOPOPTS		0	/* IPv6 hop-by-hop options	*/
132224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPPROTO_ROUTING		43	/* IPv6 routing header		*/
133224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPPROTO_FRAGMENT	44	/* IPv6 fragmentation header	*/
134224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPPROTO_ICMPV6		58	/* ICMPv6			*/
135224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPPROTO_NONE		59	/* IPv6 no next header		*/
136224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPPROTO_DSTOPTS		60	/* IPv6 destination options	*/
137224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPPROTO_MH		135	/* IPv6 mobility header		*/
138e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#endif /* __UAPI_DEF_IPPROTO_V6 */
139224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
140224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/*
141224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *	IPv6 TLV options.
142224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
143224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_TLV_PAD1		0
144224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_TLV_PADN		1
145224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_TLV_ROUTERALERT	5
1466e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris#define IPV6_TLV_CALIPSO	7	/* RFC 5570 */
147224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_TLV_JUMBO		194
148224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_TLV_HAO		201	/* home address option */
149224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
150224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/*
151224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *	IPV6 socket options
152224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
15367b3b9dd002823a751ff46eb08b03d9288bda9f1Christopher Ferris#if __UAPI_DEF_IPV6_OPTIONS
154224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_ADDRFORM		1
155224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_2292PKTINFO	2
156224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_2292HOPOPTS	3
157224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_2292DSTOPTS	4
158224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_2292RTHDR		5
159224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_2292PKTOPTIONS	6
160224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_CHECKSUM		7
161224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_2292HOPLIMIT	8
162224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_NEXTHOP		9
163224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_AUTHHDR		10	/* obsolete */
164224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_FLOWINFO		11
165224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
166224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_UNICAST_HOPS	16
167224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_MULTICAST_IF	17
168224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_MULTICAST_HOPS	18
169224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_MULTICAST_LOOP	19
170224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_ADD_MEMBERSHIP	20
171224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_DROP_MEMBERSHIP	21
172224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_ROUTER_ALERT	22
173224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_MTU_DISCOVER	23
174224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_MTU		24
175224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_RECVERR		25
176224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_V6ONLY		26
177224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_JOIN_ANYCAST	27
178224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_LEAVE_ANYCAST	28
179224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
180224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* IPV6_MTU_DISCOVER values */
181224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PMTUDISC_DONT		0
182224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PMTUDISC_WANT		1
183224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PMTUDISC_DO		2
184224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PMTUDISC_PROBE		3
185e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris/* same as IPV6_PMTUDISC_PROBE, provided for symetry with IPv4
186e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * also see comments on IP_PMTUDISC_INTERFACE
187e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris */
188e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define IPV6_PMTUDISC_INTERFACE		4
189314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris/* weaker version of IPV6_PMTUDISC_INTERFACE, which allows packets to
190314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * get fragmented if they exceed the interface mtu
191314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris */
192314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris#define IPV6_PMTUDISC_OMIT		5
193224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
194224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* Flowlabel */
195224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_FLOWLABEL_MGR	32
196224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_FLOWINFO_SEND	33
197224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
198224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_IPSEC_POLICY	34
199224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_XFRM_POLICY	35
200ccfaccd726a369b7df72e251710755233d176e5aChristopher Ferris#define IPV6_HDRINCL		36
20167b3b9dd002823a751ff46eb08b03d9288bda9f1Christopher Ferris#endif
202224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
203224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/*
204224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Multicast:
205224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Following socket options are shared between IPv4 and IPv6.
206224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *
207224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * MCAST_JOIN_GROUP		42
208224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * MCAST_BLOCK_SOURCE		43
209224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * MCAST_UNBLOCK_SOURCE		44
210224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * MCAST_LEAVE_GROUP		45
211224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * MCAST_JOIN_SOURCE_GROUP	46
212224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * MCAST_LEAVE_SOURCE_GROUP	47
213224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * MCAST_MSFILTER		48
214224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
215224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
216224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/*
217224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Advanced API (RFC3542) (1)
218224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *
219224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Note: IPV6_RECVRTHDRDSTOPTS does not exist. see net/ipv6/datagram.c.
220224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
221224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
222224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_RECVPKTINFO	49
223224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PKTINFO		50
224224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_RECVHOPLIMIT	51
225224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_HOPLIMIT		52
226224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_RECVHOPOPTS	53
227224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_HOPOPTS		54
228224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_RTHDRDSTOPTS	55
229224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_RECVRTHDR		56
230224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_RTHDR		57
231224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_RECVDSTOPTS	58
232224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_DSTOPTS		59
233224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_RECVPATHMTU	60
234224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PATHMTU		61
235224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_DONTFRAG		62
236224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#if 0	/* not yet */
237224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_USE_MIN_MTU	63
238224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#endif
239224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
240224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/*
241224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Netfilter (1)
242224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *
243224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Following socket options are used in ip6_tables;
244224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * see include/linux/netfilter_ipv6/ip6_tables.h.
245224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *
246224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * IP6T_SO_SET_REPLACE / IP6T_SO_GET_INFO		64
247224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * IP6T_SO_SET_ADD_COUNTERS / IP6T_SO_GET_ENTRIES	65
248224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
249224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
250224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/*
251224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Advanced API (RFC3542) (2)
252224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
253224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_RECVTCLASS		66
254224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_TCLASS		67
255224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
256224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/*
257224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Netfilter (2)
258224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *
259224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Following socket options are used in ip6_tables;
260224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * see include/linux/netfilter_ipv6/ip6_tables.h.
261224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *
262224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * IP6T_SO_GET_REVISION_MATCH	68
263224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * IP6T_SO_GET_REVISION_TARGET	69
264224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * IP6T_SO_ORIGINAL_DST		80
265224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
266224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
2677c0b639731767acd9b3788628d81174c641fa6b9Christopher Ferris#define IPV6_AUTOFLOWLABEL	70
268224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* RFC5014: Source address selection */
269224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_ADDR_PREFERENCES	72
270224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
271224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PREFER_SRC_TMP		0x0001
272224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PREFER_SRC_PUBLIC		0x0002
273224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PREFER_SRC_PUBTMP_DEFAULT	0x0100
274224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PREFER_SRC_COA		0x0004
275224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PREFER_SRC_HOME		0x0400
276224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PREFER_SRC_CGA		0x0008
277224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_PREFER_SRC_NONCGA		0x0800
278224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
279224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* RFC5082: Generalized Ttl Security Mechanism */
280224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_MINHOPCOUNT		73
281224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
282224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_ORIGDSTADDR        74
283224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_RECVORIGDSTADDR    IPV6_ORIGDSTADDR
284224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_TRANSPARENT        75
285224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IPV6_UNICAST_IF         76
2862fd4b3cf888b560db61afa9e50dd42039e07a8b2Christopher Ferris#define IPV6_RECVFRAGSIZE	77
287224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
288224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/*
289224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Multicast Routing:
290224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * see include/uapi/linux/mroute6.h.
291224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *
292224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * MRT6_BASE			200
293224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * ...
294224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * MRT6_MAX
295224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
296224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#endif /* _UAPI_LINUX_IN6_H */
297