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