xref: /aosp_15_r20/external/iputils/ninfod/icmp6_nodeinfo.h (revision bd1f8aeb6080fa6544ec30aeca3eb4da100f359f)
1*bd1f8aebSAndroid Build Coastguard Worker /*
2*bd1f8aebSAndroid Build Coastguard Worker  * Copyright (C) 2002 USAGI/WIDE Project.
3*bd1f8aebSAndroid Build Coastguard Worker  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
4*bd1f8aebSAndroid Build Coastguard Worker  * All rights reserved.
5*bd1f8aebSAndroid Build Coastguard Worker  *
6*bd1f8aebSAndroid Build Coastguard Worker  * Redistribution and use in source and binary forms, with or without
7*bd1f8aebSAndroid Build Coastguard Worker  * modification, are permitted provided that the following conditions
8*bd1f8aebSAndroid Build Coastguard Worker  * are met:
9*bd1f8aebSAndroid Build Coastguard Worker  * 1. Redistributions of source code must retain the above copyright
10*bd1f8aebSAndroid Build Coastguard Worker  *    notice, this list of conditions and the following disclaimer.
11*bd1f8aebSAndroid Build Coastguard Worker  * 2. Redistributions in binary form must reproduce the above copyright
12*bd1f8aebSAndroid Build Coastguard Worker  *    notice, this list of conditions and the following disclaimer in the
13*bd1f8aebSAndroid Build Coastguard Worker  *    documentation and/or other materials provided with the distribution.
14*bd1f8aebSAndroid Build Coastguard Worker  * 3. Neither the name of the project nor the names of its contributors
15*bd1f8aebSAndroid Build Coastguard Worker  *    may be used to endorse or promote products derived from this software
16*bd1f8aebSAndroid Build Coastguard Worker  *    without specific prior written permission.
17*bd1f8aebSAndroid Build Coastguard Worker  *
18*bd1f8aebSAndroid Build Coastguard Worker  * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
19*bd1f8aebSAndroid Build Coastguard Worker  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20*bd1f8aebSAndroid Build Coastguard Worker  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21*bd1f8aebSAndroid Build Coastguard Worker  * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
22*bd1f8aebSAndroid Build Coastguard Worker  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23*bd1f8aebSAndroid Build Coastguard Worker  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24*bd1f8aebSAndroid Build Coastguard Worker  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25*bd1f8aebSAndroid Build Coastguard Worker  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26*bd1f8aebSAndroid Build Coastguard Worker  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27*bd1f8aebSAndroid Build Coastguard Worker  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28*bd1f8aebSAndroid Build Coastguard Worker  * SUCH DAMAGE.
29*bd1f8aebSAndroid Build Coastguard Worker  */
30*bd1f8aebSAndroid Build Coastguard Worker 
31*bd1f8aebSAndroid Build Coastguard Worker #ifndef ICMP6_NODEINFO_H
32*bd1f8aebSAndroid Build Coastguard Worker #define ICMP6_NODEINFO_H
33*bd1f8aebSAndroid Build Coastguard Worker 
34*bd1f8aebSAndroid Build Coastguard Worker struct icmp6_nodeinfo {
35*bd1f8aebSAndroid Build Coastguard Worker 	struct icmp6_hdr	icmp6_ni_hdr;
36*bd1f8aebSAndroid Build Coastguard Worker 	uint8_t			icmp6_ni_nonce[8];
37*bd1f8aebSAndroid Build Coastguard Worker 	/* could be followed by reply data */
38*bd1f8aebSAndroid Build Coastguard Worker };
39*bd1f8aebSAndroid Build Coastguard Worker 
40*bd1f8aebSAndroid Build Coastguard Worker #define ni_type		icmp6_ni_hdr.icmp6_type
41*bd1f8aebSAndroid Build Coastguard Worker #define ni_code		icmp6_ni_hdr.icmp6_code
42*bd1f8aebSAndroid Build Coastguard Worker #define ni_cksum	icmp6_ni_hdr.icmp6_cksum
43*bd1f8aebSAndroid Build Coastguard Worker #define ni_qtype	icmp6_ni_hdr.icmp6_data16[0]
44*bd1f8aebSAndroid Build Coastguard Worker #define ni_flags	icmp6_ni_hdr.icmp6_data16[1]
45*bd1f8aebSAndroid Build Coastguard Worker #define ni_nonce	icmp6_ni_nonce
46*bd1f8aebSAndroid Build Coastguard Worker 
47*bd1f8aebSAndroid Build Coastguard Worker /* ICMP6 types */
48*bd1f8aebSAndroid Build Coastguard Worker #define ICMP6_NI_QUERY			139
49*bd1f8aebSAndroid Build Coastguard Worker #define ICMP6_NI_REPLY			140
50*bd1f8aebSAndroid Build Coastguard Worker 
51*bd1f8aebSAndroid Build Coastguard Worker /* ICMP6 codes for NI Query */
52*bd1f8aebSAndroid Build Coastguard Worker #define ICMP6_NI_SUBJ_IPV6		0	/* Query Subject is an ipv6 address */
53*bd1f8aebSAndroid Build Coastguard Worker #define ICMP6_NI_SUBJ_FQDN		1	/* Query Subject is a Domain name */
54*bd1f8aebSAndroid Build Coastguard Worker #define ICMP6_NI_SUBJ_IPV4		2	/* Query Subject is an ipv4 address */
55*bd1f8aebSAndroid Build Coastguard Worker 
56*bd1f8aebSAndroid Build Coastguard Worker /* ICMP6 codes for NI Reply */
57*bd1f8aebSAndroid Build Coastguard Worker #define ICMP6_NI_SUCCESS		0	/* NI successful reply */
58*bd1f8aebSAndroid Build Coastguard Worker #define ICMP6_NI_REFUSED		1	/* NI request is refused */
59*bd1f8aebSAndroid Build Coastguard Worker #define ICMP6_NI_UNKNOWN		2	/* unknown Qtype */
60*bd1f8aebSAndroid Build Coastguard Worker 
61*bd1f8aebSAndroid Build Coastguard Worker /* NI Codes */
62*bd1f8aebSAndroid Build Coastguard Worker #define NI_QTYPE_NOOP			0	/* NOOP  */
63*bd1f8aebSAndroid Build Coastguard Worker #define NI_QTYPE_SUPTYPES		1	/* Supported Qtypes */
64*bd1f8aebSAndroid Build Coastguard Worker #define NI_QTYPE_DNSNAME		2	/* DNS Name */
65*bd1f8aebSAndroid Build Coastguard Worker #define NI_QTYPE_NODEADDR		3	/* Node Addresses */
66*bd1f8aebSAndroid Build Coastguard Worker #define NI_QTYPE_IPV4ADDR		4	/* IPv4 Addresses */
67*bd1f8aebSAndroid Build Coastguard Worker 
68*bd1f8aebSAndroid Build Coastguard Worker /* NI Flags */
69*bd1f8aebSAndroid Build Coastguard Worker #if WORDS_BIGENDIAN
70*bd1f8aebSAndroid Build Coastguard Worker #define NI_SUPTYPE_FLAG_COMPRESS	0x1
71*bd1f8aebSAndroid Build Coastguard Worker #define NI_FQDN_FLAG_VALIDTTL		0x1
72*bd1f8aebSAndroid Build Coastguard Worker #else
73*bd1f8aebSAndroid Build Coastguard Worker #define NI_SUPTYPE_FLAG_COMPRESS	0x0100
74*bd1f8aebSAndroid Build Coastguard Worker #define NI_FQDN_FLAG_VALIDTTL		0x0100
75*bd1f8aebSAndroid Build Coastguard Worker #endif
76*bd1f8aebSAndroid Build Coastguard Worker 
77*bd1f8aebSAndroid Build Coastguard Worker #if WORDS_BIGENDIAN
78*bd1f8aebSAndroid Build Coastguard Worker #define NI_NODEADDR_FLAG_TRUNCATE	0x1
79*bd1f8aebSAndroid Build Coastguard Worker #define NI_NODEADDR_FLAG_ALL		0x2
80*bd1f8aebSAndroid Build Coastguard Worker #define NI_NODEADDR_FLAG_COMPAT		0x4
81*bd1f8aebSAndroid Build Coastguard Worker #define NI_NODEADDR_FLAG_LINKLOCAL	0x8
82*bd1f8aebSAndroid Build Coastguard Worker #define NI_NODEADDR_FLAG_SITELOCAL	0x10
83*bd1f8aebSAndroid Build Coastguard Worker #define NI_NODEADDR_FLAG_GLOBAL		0x20
84*bd1f8aebSAndroid Build Coastguard Worker #else
85*bd1f8aebSAndroid Build Coastguard Worker #define NI_NODEADDR_FLAG_TRUNCATE	0x0100
86*bd1f8aebSAndroid Build Coastguard Worker #define NI_NODEADDR_FLAG_ALL		0x0200
87*bd1f8aebSAndroid Build Coastguard Worker #define NI_NODEADDR_FLAG_COMPAT		0x0400
88*bd1f8aebSAndroid Build Coastguard Worker #define NI_NODEADDR_FLAG_LINKLOCAL	0x0800
89*bd1f8aebSAndroid Build Coastguard Worker #define NI_NODEADDR_FLAG_SITELOCAL	0x1000
90*bd1f8aebSAndroid Build Coastguard Worker #define NI_NODEADDR_FLAG_GLOBAL		0x2000
91*bd1f8aebSAndroid Build Coastguard Worker #endif
92*bd1f8aebSAndroid Build Coastguard Worker 
93*bd1f8aebSAndroid Build Coastguard Worker #define NI_IPV4ADDR_FLAG_TRUNCATE	NI_NODEADDR_FLAG_TRUNCATE
94*bd1f8aebSAndroid Build Coastguard Worker #define NI_IPV4ADDR_FLAG_ALL		NI_NODEADDR_FLAG_ALL
95*bd1f8aebSAndroid Build Coastguard Worker 
96*bd1f8aebSAndroid Build Coastguard Worker #endif
97*bd1f8aebSAndroid Build Coastguard Worker 
98