1
2#ifndef _UAPI_IPV6_H
3#define _UAPI_IPV6_H
4
5#include <linux/libc-compat.h>
6#include <linux/types.h>
7#include <linux/in6.h>
8#include <asm/byteorder.h>
9
10
11
12#define IPV6_MIN_MTU 1280
13
14
15
16
17
18
19
20#if __UAPI_DEF_IN6_PKTINFO
21struct in6_pktinfo {
22 struct in6_addr ipi6_addr;
23 int ipi6_ifindex;
24};
25#endif
26
27#if __UAPI_DEF_IP6_MTUINFO
28struct ip6_mtuinfo {
29 struct sockaddr_in6 ip6m_addr;
30 __u32 ip6m_mtu;
31};
32#endif
33
34struct in6_ifreq {
35 struct in6_addr ifr6_addr;
36 __u32 ifr6_prefixlen;
37 int ifr6_ifindex;
38};
39
40#define IPV6_SRCRT_STRICT 0x01
41#define IPV6_SRCRT_TYPE_0 0
42#define IPV6_SRCRT_TYPE_2 2
43#define IPV6_SRCRT_TYPE_3 3
44#define IPV6_SRCRT_TYPE_4 4
45
46
47
48
49struct ipv6_rt_hdr {
50 __u8 nexthdr;
51 __u8 hdrlen;
52 __u8 type;
53 __u8 segments_left;
54
55
56
57
58
59};
60
61
62struct ipv6_opt_hdr {
63 __u8 nexthdr;
64 __u8 hdrlen;
65
66
67
68} __attribute__((packed));
69
70#define ipv6_destopt_hdr ipv6_opt_hdr
71#define ipv6_hopopt_hdr ipv6_opt_hdr
72
73
74#define IPV6_OPT_ROUTERALERT_MLD 0x0000
75
76
77
78
79
80struct rt0_hdr {
81 struct ipv6_rt_hdr rt_hdr;
82 __u32 reserved;
83 struct in6_addr addr[0];
84
85#define rt0_type rt_hdr.type
86};
87
88
89
90
91
92struct rt2_hdr {
93 struct ipv6_rt_hdr rt_hdr;
94 __u32 reserved;
95 struct in6_addr addr;
96
97#define rt2_type rt_hdr.type
98};
99
100
101
102
103
104struct ipv6_destopt_hao {
105 __u8 type;
106 __u8 length;
107 struct in6_addr addr;
108} __attribute__((packed));
109
110
111
112
113
114
115
116
117struct ipv6hdr {
118#if defined(__LITTLE_ENDIAN_BITFIELD)
119 __u8 priority:4,
120 version:4;
121#elif defined(__BIG_ENDIAN_BITFIELD)
122 __u8 version:4,
123 priority:4;
124#else
125#error "Please fix <asm/byteorder.h>"
126#endif
127 __u8 flow_lbl[3];
128
129 __be16 payload_len;
130 __u8 nexthdr;
131 __u8 hop_limit;
132
133 struct in6_addr saddr;
134 struct in6_addr daddr;
135};
136
137
138
139enum {
140 DEVCONF_FORWARDING = 0,
141 DEVCONF_HOPLIMIT,
142 DEVCONF_MTU6,
143 DEVCONF_ACCEPT_RA,
144 DEVCONF_ACCEPT_REDIRECTS,
145 DEVCONF_AUTOCONF,
146 DEVCONF_DAD_TRANSMITS,
147 DEVCONF_RTR_SOLICITS,
148 DEVCONF_RTR_SOLICIT_INTERVAL,
149 DEVCONF_RTR_SOLICIT_DELAY,
150 DEVCONF_USE_TEMPADDR,
151 DEVCONF_TEMP_VALID_LFT,
152 DEVCONF_TEMP_PREFERED_LFT,
153 DEVCONF_REGEN_MAX_RETRY,
154 DEVCONF_MAX_DESYNC_FACTOR,
155 DEVCONF_MAX_ADDRESSES,
156 DEVCONF_FORCE_MLD_VERSION,
157 DEVCONF_ACCEPT_RA_DEFRTR,
158 DEVCONF_ACCEPT_RA_PINFO,
159 DEVCONF_ACCEPT_RA_RTR_PREF,
160 DEVCONF_RTR_PROBE_INTERVAL,
161 DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN,
162 DEVCONF_PROXY_NDP,
163 DEVCONF_OPTIMISTIC_DAD,
164 DEVCONF_ACCEPT_SOURCE_ROUTE,
165 DEVCONF_MC_FORWARDING,
166 DEVCONF_DISABLE_IPV6,
167 DEVCONF_ACCEPT_DAD,
168 DEVCONF_FORCE_TLLAO,
169 DEVCONF_NDISC_NOTIFY,
170 DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL,
171 DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL,
172 DEVCONF_SUPPRESS_FRAG_NDISC,
173 DEVCONF_ACCEPT_RA_FROM_LOCAL,
174 DEVCONF_USE_OPTIMISTIC,
175 DEVCONF_ACCEPT_RA_MTU,
176 DEVCONF_STABLE_SECRET,
177 DEVCONF_USE_OIF_ADDRS_ONLY,
178 DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT,
179 DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN,
180 DEVCONF_DROP_UNICAST_IN_L2_MULTICAST,
181 DEVCONF_DROP_UNSOLICITED_NA,
182 DEVCONF_KEEP_ADDR_ON_DOWN,
183 DEVCONF_RTR_SOLICIT_MAX_INTERVAL,
184 DEVCONF_SEG6_ENABLED,
185 DEVCONF_SEG6_REQUIRE_HMAC,
186 DEVCONF_ENHANCED_DAD,
187 DEVCONF_ADDR_GEN_MODE,
188 DEVCONF_DISABLE_POLICY,
189 DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN,
190 DEVCONF_NDISC_TCLASS,
191 DEVCONF_RPL_SEG_ENABLED,
192 DEVCONF_MAX
193};
194
195
196#endif
197