xref: /aosp_15_r20/external/kernel-headers/original/uapi/linux/icmpv6.h (revision f80ad8b4341604f5951dab671d41019a6d7087ce)
1*f80ad8b4SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2*f80ad8b4SAndroid Build Coastguard Worker #ifndef _UAPI_LINUX_ICMPV6_H
3*f80ad8b4SAndroid Build Coastguard Worker #define _UAPI_LINUX_ICMPV6_H
4*f80ad8b4SAndroid Build Coastguard Worker 
5*f80ad8b4SAndroid Build Coastguard Worker #include <linux/types.h>
6*f80ad8b4SAndroid Build Coastguard Worker #include <asm/byteorder.h>
7*f80ad8b4SAndroid Build Coastguard Worker 
8*f80ad8b4SAndroid Build Coastguard Worker struct icmp6hdr {
9*f80ad8b4SAndroid Build Coastguard Worker 
10*f80ad8b4SAndroid Build Coastguard Worker 	__u8		icmp6_type;
11*f80ad8b4SAndroid Build Coastguard Worker 	__u8		icmp6_code;
12*f80ad8b4SAndroid Build Coastguard Worker 	__sum16		icmp6_cksum;
13*f80ad8b4SAndroid Build Coastguard Worker 
14*f80ad8b4SAndroid Build Coastguard Worker 
15*f80ad8b4SAndroid Build Coastguard Worker 	union {
16*f80ad8b4SAndroid Build Coastguard Worker 		__be32			un_data32[1];
17*f80ad8b4SAndroid Build Coastguard Worker 		__be16			un_data16[2];
18*f80ad8b4SAndroid Build Coastguard Worker 		__u8			un_data8[4];
19*f80ad8b4SAndroid Build Coastguard Worker 
20*f80ad8b4SAndroid Build Coastguard Worker 		struct icmpv6_echo {
21*f80ad8b4SAndroid Build Coastguard Worker 			__be16		identifier;
22*f80ad8b4SAndroid Build Coastguard Worker 			__be16		sequence;
23*f80ad8b4SAndroid Build Coastguard Worker 		} u_echo;
24*f80ad8b4SAndroid Build Coastguard Worker 
25*f80ad8b4SAndroid Build Coastguard Worker                 struct icmpv6_nd_advt {
26*f80ad8b4SAndroid Build Coastguard Worker #if defined(__LITTLE_ENDIAN_BITFIELD)
27*f80ad8b4SAndroid Build Coastguard Worker                         __u32		reserved:5,
28*f80ad8b4SAndroid Build Coastguard Worker                         		override:1,
29*f80ad8b4SAndroid Build Coastguard Worker                         		solicited:1,
30*f80ad8b4SAndroid Build Coastguard Worker                         		router:1,
31*f80ad8b4SAndroid Build Coastguard Worker 					reserved2:24;
32*f80ad8b4SAndroid Build Coastguard Worker #elif defined(__BIG_ENDIAN_BITFIELD)
33*f80ad8b4SAndroid Build Coastguard Worker                         __u32		router:1,
34*f80ad8b4SAndroid Build Coastguard Worker 					solicited:1,
35*f80ad8b4SAndroid Build Coastguard Worker                         		override:1,
36*f80ad8b4SAndroid Build Coastguard Worker                         		reserved:29;
37*f80ad8b4SAndroid Build Coastguard Worker #else
38*f80ad8b4SAndroid Build Coastguard Worker #error	"Please fix <asm/byteorder.h>"
39*f80ad8b4SAndroid Build Coastguard Worker #endif
40*f80ad8b4SAndroid Build Coastguard Worker                 } u_nd_advt;
41*f80ad8b4SAndroid Build Coastguard Worker 
42*f80ad8b4SAndroid Build Coastguard Worker                 struct icmpv6_nd_ra {
43*f80ad8b4SAndroid Build Coastguard Worker 			__u8		hop_limit;
44*f80ad8b4SAndroid Build Coastguard Worker #if defined(__LITTLE_ENDIAN_BITFIELD)
45*f80ad8b4SAndroid Build Coastguard Worker 			__u8		reserved:3,
46*f80ad8b4SAndroid Build Coastguard Worker 					router_pref:2,
47*f80ad8b4SAndroid Build Coastguard Worker 					home_agent:1,
48*f80ad8b4SAndroid Build Coastguard Worker 					other:1,
49*f80ad8b4SAndroid Build Coastguard Worker 					managed:1;
50*f80ad8b4SAndroid Build Coastguard Worker 
51*f80ad8b4SAndroid Build Coastguard Worker #elif defined(__BIG_ENDIAN_BITFIELD)
52*f80ad8b4SAndroid Build Coastguard Worker 			__u8		managed:1,
53*f80ad8b4SAndroid Build Coastguard Worker 					other:1,
54*f80ad8b4SAndroid Build Coastguard Worker 					home_agent:1,
55*f80ad8b4SAndroid Build Coastguard Worker 					router_pref:2,
56*f80ad8b4SAndroid Build Coastguard Worker 					reserved:3;
57*f80ad8b4SAndroid Build Coastguard Worker #else
58*f80ad8b4SAndroid Build Coastguard Worker #error	"Please fix <asm/byteorder.h>"
59*f80ad8b4SAndroid Build Coastguard Worker #endif
60*f80ad8b4SAndroid Build Coastguard Worker 			__be16		rt_lifetime;
61*f80ad8b4SAndroid Build Coastguard Worker                 } u_nd_ra;
62*f80ad8b4SAndroid Build Coastguard Worker 
63*f80ad8b4SAndroid Build Coastguard Worker 	} icmp6_dataun;
64*f80ad8b4SAndroid Build Coastguard Worker 
65*f80ad8b4SAndroid Build Coastguard Worker #define icmp6_identifier	icmp6_dataun.u_echo.identifier
66*f80ad8b4SAndroid Build Coastguard Worker #define icmp6_sequence		icmp6_dataun.u_echo.sequence
67*f80ad8b4SAndroid Build Coastguard Worker #define icmp6_pointer		icmp6_dataun.un_data32[0]
68*f80ad8b4SAndroid Build Coastguard Worker #define icmp6_mtu		icmp6_dataun.un_data32[0]
69*f80ad8b4SAndroid Build Coastguard Worker #define icmp6_unused		icmp6_dataun.un_data32[0]
70*f80ad8b4SAndroid Build Coastguard Worker #define icmp6_maxdelay		icmp6_dataun.un_data16[0]
71*f80ad8b4SAndroid Build Coastguard Worker #define icmp6_datagram_len	icmp6_dataun.un_data8[0]
72*f80ad8b4SAndroid Build Coastguard Worker #define icmp6_router		icmp6_dataun.u_nd_advt.router
73*f80ad8b4SAndroid Build Coastguard Worker #define icmp6_solicited		icmp6_dataun.u_nd_advt.solicited
74*f80ad8b4SAndroid Build Coastguard Worker #define icmp6_override		icmp6_dataun.u_nd_advt.override
75*f80ad8b4SAndroid Build Coastguard Worker #define icmp6_ndiscreserved	icmp6_dataun.u_nd_advt.reserved
76*f80ad8b4SAndroid Build Coastguard Worker #define icmp6_hop_limit		icmp6_dataun.u_nd_ra.hop_limit
77*f80ad8b4SAndroid Build Coastguard Worker #define icmp6_addrconf_managed	icmp6_dataun.u_nd_ra.managed
78*f80ad8b4SAndroid Build Coastguard Worker #define icmp6_addrconf_other	icmp6_dataun.u_nd_ra.other
79*f80ad8b4SAndroid Build Coastguard Worker #define icmp6_rt_lifetime	icmp6_dataun.u_nd_ra.rt_lifetime
80*f80ad8b4SAndroid Build Coastguard Worker #define icmp6_router_pref	icmp6_dataun.u_nd_ra.router_pref
81*f80ad8b4SAndroid Build Coastguard Worker };
82*f80ad8b4SAndroid Build Coastguard Worker 
83*f80ad8b4SAndroid Build Coastguard Worker 
84*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_ROUTER_PREF_LOW		0x3
85*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_ROUTER_PREF_MEDIUM	0x0
86*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_ROUTER_PREF_HIGH		0x1
87*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_ROUTER_PREF_INVALID	0x2
88*f80ad8b4SAndroid Build Coastguard Worker 
89*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_DEST_UNREACH		1
90*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_PKT_TOOBIG		2
91*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_TIME_EXCEED		3
92*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_PARAMPROB		4
93*f80ad8b4SAndroid Build Coastguard Worker 
94*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_ERRMSG_MAX       127
95*f80ad8b4SAndroid Build Coastguard Worker 
96*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_INFOMSG_MASK		0x80
97*f80ad8b4SAndroid Build Coastguard Worker 
98*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_ECHO_REQUEST		128
99*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_ECHO_REPLY		129
100*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_MGM_QUERY		130
101*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_MGM_REPORT       	131
102*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_MGM_REDUCTION    	132
103*f80ad8b4SAndroid Build Coastguard Worker 
104*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_NI_QUERY			139
105*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_NI_REPLY			140
106*f80ad8b4SAndroid Build Coastguard Worker 
107*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_MLD2_REPORT		143
108*f80ad8b4SAndroid Build Coastguard Worker 
109*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_DHAAD_REQUEST		144
110*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_DHAAD_REPLY		145
111*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_MOBILE_PREFIX_SOL	146
112*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_MOBILE_PREFIX_ADV	147
113*f80ad8b4SAndroid Build Coastguard Worker 
114*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_MRDISC_ADV		151
115*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_MRDISC_SOL		152
116*f80ad8b4SAndroid Build Coastguard Worker 
117*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_MSG_MAX          255
118*f80ad8b4SAndroid Build Coastguard Worker 
119*f80ad8b4SAndroid Build Coastguard Worker /*
120*f80ad8b4SAndroid Build Coastguard Worker  *	Codes for Destination Unreachable
121*f80ad8b4SAndroid Build Coastguard Worker  */
122*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_NOROUTE			0
123*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_ADM_PROHIBITED		1
124*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_NOT_NEIGHBOUR		2
125*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_ADDR_UNREACH		3
126*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_PORT_UNREACH		4
127*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_POLICY_FAIL		5
128*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_REJECT_ROUTE		6
129*f80ad8b4SAndroid Build Coastguard Worker 
130*f80ad8b4SAndroid Build Coastguard Worker /*
131*f80ad8b4SAndroid Build Coastguard Worker  *	Codes for Time Exceeded
132*f80ad8b4SAndroid Build Coastguard Worker  */
133*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_EXC_HOPLIMIT		0
134*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_EXC_FRAGTIME		1
135*f80ad8b4SAndroid Build Coastguard Worker 
136*f80ad8b4SAndroid Build Coastguard Worker /*
137*f80ad8b4SAndroid Build Coastguard Worker  *	Codes for Parameter Problem
138*f80ad8b4SAndroid Build Coastguard Worker  */
139*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_HDR_FIELD		0
140*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_UNK_NEXTHDR		1
141*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_UNK_OPTION		2
142*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_HDR_INCOMP		3
143*f80ad8b4SAndroid Build Coastguard Worker 
144*f80ad8b4SAndroid Build Coastguard Worker /* Codes for EXT_ECHO (PROBE) */
145*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_EXT_ECHO_REQUEST		160
146*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_EXT_ECHO_REPLY		161
147*f80ad8b4SAndroid Build Coastguard Worker /*
148*f80ad8b4SAndroid Build Coastguard Worker  *	constants for (set|get)sockopt
149*f80ad8b4SAndroid Build Coastguard Worker  */
150*f80ad8b4SAndroid Build Coastguard Worker 
151*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_FILTER			1
152*f80ad8b4SAndroid Build Coastguard Worker 
153*f80ad8b4SAndroid Build Coastguard Worker /*
154*f80ad8b4SAndroid Build Coastguard Worker  *	ICMPV6 filter
155*f80ad8b4SAndroid Build Coastguard Worker  */
156*f80ad8b4SAndroid Build Coastguard Worker 
157*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_FILTER_BLOCK		1
158*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_FILTER_PASS		2
159*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_FILTER_BLOCKOTHERS	3
160*f80ad8b4SAndroid Build Coastguard Worker #define ICMPV6_FILTER_PASSONLY		4
161*f80ad8b4SAndroid Build Coastguard Worker 
162*f80ad8b4SAndroid Build Coastguard Worker struct icmp6_filter {
163*f80ad8b4SAndroid Build Coastguard Worker 	__u32		data[8];
164*f80ad8b4SAndroid Build Coastguard Worker };
165*f80ad8b4SAndroid Build Coastguard Worker 
166*f80ad8b4SAndroid Build Coastguard Worker /*
167*f80ad8b4SAndroid Build Coastguard Worker  *	Definitions for MLDv2
168*f80ad8b4SAndroid Build Coastguard Worker  */
169*f80ad8b4SAndroid Build Coastguard Worker #define MLD2_MODE_IS_INCLUDE	1
170*f80ad8b4SAndroid Build Coastguard Worker #define MLD2_MODE_IS_EXCLUDE	2
171*f80ad8b4SAndroid Build Coastguard Worker #define MLD2_CHANGE_TO_INCLUDE	3
172*f80ad8b4SAndroid Build Coastguard Worker #define MLD2_CHANGE_TO_EXCLUDE	4
173*f80ad8b4SAndroid Build Coastguard Worker #define MLD2_ALLOW_NEW_SOURCES	5
174*f80ad8b4SAndroid Build Coastguard Worker #define MLD2_BLOCK_OLD_SOURCES	6
175*f80ad8b4SAndroid Build Coastguard Worker 
176*f80ad8b4SAndroid Build Coastguard Worker #define MLD2_ALL_MCR_INIT { { { 0xff,0x02,0,0,0,0,0,0,0,0,0,0,0,0,0,0x16 } } }
177*f80ad8b4SAndroid Build Coastguard Worker 
178*f80ad8b4SAndroid Build Coastguard Worker 
179*f80ad8b4SAndroid Build Coastguard Worker #endif /* _UAPI_LINUX_ICMPV6_H */
180