• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * This header was generated from the Linux kernel headers by update_headers.py,
3  * to provide necessary information from kernel to userspace, such as constants,
4  * structures, and macros, and thus, contains no copyrightable information.
5  */
6 #ifndef _UAPI_IPV6_H
7 #define _UAPI_IPV6_H
8 #include <linux/libc-compat.h>
9 #include <linux/types.h>
10 #include <linux/in6.h>
11 #include <asm/byteorder.h>
12 #define IPV6_MIN_MTU	1280
13 #if __UAPI_DEF_IN6_PKTINFO
14 struct in6_pktinfo {
15 	struct in6_addr	ipi6_addr;
16 	int		ipi6_ifindex;
17 };
18 #endif
19 #if __UAPI_DEF_IP6_MTUINFO
20 struct ip6_mtuinfo {
21 	struct sockaddr_in6	ip6m_addr;
22 	__u32			ip6m_mtu;
23 };
24 #endif
25 struct in6_ifreq {
26 	struct in6_addr	ifr6_addr;
27 	__u32		ifr6_prefixlen;
28 	int		ifr6_ifindex;
29 };
30 #define IPV6_SRCRT_STRICT	0x01
31 #define IPV6_SRCRT_TYPE_0	0
32 #define IPV6_SRCRT_TYPE_2	2
33 #define IPV6_SRCRT_TYPE_4	4
34 struct ipv6_rt_hdr {
35 	__u8		nexthdr;
36 	__u8		hdrlen;
37 	__u8		type;
38 	__u8		segments_left;
39 
40 };
41 struct ipv6_opt_hdr {
42 	__u8 		nexthdr;
43 	__u8 		hdrlen;
44 
45 } __attribute__((packed));
46 #define ipv6_destopt_hdr ipv6_opt_hdr
47 #define ipv6_hopopt_hdr  ipv6_opt_hdr
48 #define IPV6_OPT_ROUTERALERT_MLD	0x0000
49 struct rt0_hdr {
50 	struct ipv6_rt_hdr	rt_hdr;
51 	__u32			reserved;
52 	struct in6_addr		addr[0];
53 #define rt0_type		rt_hdr.type
54 };
55 struct rt2_hdr {
56 	struct ipv6_rt_hdr	rt_hdr;
57 	__u32			reserved;
58 	struct in6_addr		addr;
59 #define rt2_type		rt_hdr.type
60 };
61 struct ipv6_destopt_hao {
62 	__u8			type;
63 	__u8			length;
64 	struct in6_addr		addr;
65 } __attribute__((packed));
66 struct ipv6hdr {
67 #if defined(__LITTLE_ENDIAN_BITFIELD)
68 	__u8			priority:4,
69 				version:4;
70 #elif defined(__BIG_ENDIAN_BITFIELD)
71 	__u8			version:4,
72 				priority:4;
73 #else
74 #error	"Please fix <asm/byteorder.h>"
75 #endif
76 	__u8			flow_lbl[3];
77 	__be16			payload_len;
78 	__u8			nexthdr;
79 	__u8			hop_limit;
80 	struct	in6_addr	saddr;
81 	struct	in6_addr	daddr;
82 };
83 enum {
84 	DEVCONF_FORWARDING = 0,
85 	DEVCONF_HOPLIMIT,
86 	DEVCONF_MTU6,
87 	DEVCONF_ACCEPT_RA,
88 	DEVCONF_ACCEPT_REDIRECTS,
89 	DEVCONF_AUTOCONF,
90 	DEVCONF_DAD_TRANSMITS,
91 	DEVCONF_RTR_SOLICITS,
92 	DEVCONF_RTR_SOLICIT_INTERVAL,
93 	DEVCONF_RTR_SOLICIT_DELAY,
94 	DEVCONF_USE_TEMPADDR,
95 	DEVCONF_TEMP_VALID_LFT,
96 	DEVCONF_TEMP_PREFERED_LFT,
97 	DEVCONF_REGEN_MAX_RETRY,
98 	DEVCONF_MAX_DESYNC_FACTOR,
99 	DEVCONF_MAX_ADDRESSES,
100 	DEVCONF_FORCE_MLD_VERSION,
101 	DEVCONF_ACCEPT_RA_DEFRTR,
102 	DEVCONF_ACCEPT_RA_PINFO,
103 	DEVCONF_ACCEPT_RA_RTR_PREF,
104 	DEVCONF_RTR_PROBE_INTERVAL,
105 	DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN,
106 	DEVCONF_PROXY_NDP,
107 	DEVCONF_OPTIMISTIC_DAD,
108 	DEVCONF_ACCEPT_SOURCE_ROUTE,
109 	DEVCONF_MC_FORWARDING,
110 	DEVCONF_DISABLE_IPV6,
111 	DEVCONF_ACCEPT_DAD,
112 	DEVCONF_FORCE_TLLAO,
113 	DEVCONF_NDISC_NOTIFY,
114 	DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL,
115 	DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL,
116 	DEVCONF_SUPPRESS_FRAG_NDISC,
117 	DEVCONF_ACCEPT_RA_FROM_LOCAL,
118 	DEVCONF_USE_OPTIMISTIC,
119 	DEVCONF_ACCEPT_RA_MTU,
120 	DEVCONF_STABLE_SECRET,
121 	DEVCONF_USE_OIF_ADDRS_ONLY,
122 	DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT,
123 	DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN,
124 	DEVCONF_DROP_UNICAST_IN_L2_MULTICAST,
125 	DEVCONF_DROP_UNSOLICITED_NA,
126 	DEVCONF_KEEP_ADDR_ON_DOWN,
127 	DEVCONF_RTR_SOLICIT_MAX_INTERVAL,
128 	DEVCONF_SEG6_ENABLED,
129 	DEVCONF_SEG6_REQUIRE_HMAC,
130 	DEVCONF_ENHANCED_DAD,
131 	DEVCONF_ADDR_GEN_MODE,
132 	DEVCONF_DISABLE_POLICY,
133 	DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN,
134 	DEVCONF_NDISC_TCLASS,
135 	DEVCONF_MAX
136 };
137 #endif
138