nameser_compat.h revision 641:057d58d31499
1/* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License, Version 1.0 only 6 * (the "License"). You may not use this file except in compliance 7 * with the License. 8 * 9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10 * or http://www.opensolaris.org/os/licensing. 11 * See the License for the specific language governing permissions 12 * and limitations under the License. 13 * 14 * When distributing Covered Code, include this CDDL HEADER in each 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 * If applicable, add the following below this CDDL HEADER, with the 17 * fields enclosed by brackets "[]" replaced with your own identifying 18 * information: Portions Copyright [yyyy] [name of copyright owner] 19 * 20 * CDDL HEADER END 21 */ 22/* 23 * Copyright 2005 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27/* 28 * Copyright(c) 1983, 1989 29 * The Regents of the University of California. All rights reserved. 30 * 31 * Redistribution and use in source and binary forms, with or without 32 * modification, are permitted provided that the following conditions 33 * are met: 34 * 1. Redistributions of source code must retain the above copyright 35 * notice, this list of conditions and the following disclaimer. 36 * 2. Redistributions in binary form must reproduce the above copyright 37 * notice, this list of conditions and the following disclaimer in the 38 * documentation and/or other materials provided with the distribution. 39 * 3. All advertising materials mentioning features or use of this software 40 * must display the following acknowledgement: 41 * This product includes software developed by the University of 42 * California, Berkeley and its contributors. 43 * 4. Neither the name of the University nor the names of its contributors 44 * may be used to endorse or promote products derived from this software 45 * without specific prior written permission. 46 * 47 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 48 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 49 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 50 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 51 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 52 * DAMAGES(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 53 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 54 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 55 * LIABILITY, OR TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 56 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 57 * SUCH DAMAGE. 58 */ 59 60/* 61 * from nameser.h 8.1 (Berkeley) 6/2/93 62 * $Id: nameser_compat.h,v 8.15 2002/07/17 07:01:02 marka Exp $ 63 */ 64 65#ifndef _ARPA_NAMESER_COMPAT_H 66#define _ARPA_NAMESER_COMPAT_H 67 68#pragma ident "%Z%%M% %I% %E% SMI" 69 70#ifdef __cplusplus 71extern "C" { 72#endif 73 74#define __BIND 19950621 /* (DEAD) interface version stamp. */ 75 76#ifndef BYTE_ORDER 77#if (BSD >= 199103) 78#include <machine/endian.h> 79#else 80#ifdef linux 81#include <endian.h> 82#else 83#define LITTLE_ENDIAN 1234 /* least-significant byte first (vax, pc) */ 84#define BIG_ENDIAN 4321 /* most-significant byte first (IBM, net) */ 85#define PDP_ENDIAN 3412 /* LSB first in word, MSW first in long (pdp) */ 86 87#if defined(vax) || defined(ns32000) || defined(sun386) || defined(i386) || \ 88 defined(__i386) || defined(__amd64) || \ 89 defined(MIPSEL) || defined(_MIPSEL) || defined(BIT_ZERO_ON_RIGHT) || \ 90 defined(__alpha__) || defined(__alpha) || \ 91 (defined(__Lynx__) && defined(__x86__)) 92#define BYTE_ORDER LITTLE_ENDIAN 93#endif 94 95#if defined(sel) || defined(pyr) || defined(mc68000) || defined(sparc) || \ 96 defined(__sparc) || \ 97 defined(is68k) || defined(tahoe) || defined(ibm032) || defined(ibm370) || \ 98 defined(MIPSEB) || defined(_MIPSEB) || defined(_IBMR2) || defined(DGUX) ||\ 99 defined(apollo) || defined(__convex__) || defined(_CRAY) || \ 100 defined(__hppa) || defined(__hp9000) || \ 101 defined(__hp9000s300) || defined(__hp9000s700) || \ 102 defined(__hp3000s900) || defined(MPE) || \ 103 defined(BIT_ZERO_ON_LEFT) || defined(m68k) || \ 104 (defined(__Lynx__) && \ 105 (defined(__68k__) || defined(__sparc__) || defined(__powerpc__))) 106#define BYTE_ORDER BIG_ENDIAN 107#endif 108#endif /* linux */ 109#endif /* BSD */ 110#endif /* BYTE_ORDER */ 111 112#if !defined(BYTE_ORDER) || \ 113 (BYTE_ORDER != BIG_ENDIAN && BYTE_ORDER != LITTLE_ENDIAN && \ 114 BYTE_ORDER != PDP_ENDIAN) 115 /* 116 * you must determine what the correct bit order is for 117 * your compiler - the next line is an intentional error 118 * which will force your compiles to bomb until you fix 119 * the above macros. 120 */ 121 error "Undefined or invalid BYTE_ORDER"; 122#endif 123 124/* 125 * Structure for query header. The order of the fields is machine- and 126 * compiler-dependent, depending on the byte/bit order and the layout 127 * of bit fields. We use bit fields only in int variables, as this 128 * is all ANSI requires. This requires a somewhat confusing rearrangement. 129 */ 130 131typedef struct { 132 unsigned id :16; /* query identification number */ 133#if BYTE_ORDER == BIG_ENDIAN 134 /* fields in third byte */ 135 unsigned qr: 1; /* response flag */ 136 unsigned opcode: 4; /* purpose of message */ 137 unsigned aa: 1; /* authoritive answer */ 138 unsigned tc: 1; /* truncated message */ 139 unsigned rd: 1; /* recursion desired */ 140 /* fields in fourth byte */ 141 unsigned ra: 1; /* recursion available */ 142 unsigned unused :1; /* unused bits (MBZ as of 4.9.3a3) */ 143 unsigned ad: 1; /* authentic data from named */ 144 unsigned cd: 1; /* checking disabled by resolver */ 145 unsigned rcode :4; /* response code */ 146#endif 147#if BYTE_ORDER == LITTLE_ENDIAN || BYTE_ORDER == PDP_ENDIAN 148 /* fields in third byte */ 149 unsigned rd :1; /* recursion desired */ 150 unsigned tc :1; /* truncated message */ 151 unsigned aa :1; /* authoritive answer */ 152 unsigned opcode :4; /* purpose of message */ 153 unsigned qr :1; /* response flag */ 154 /* fields in fourth byte */ 155 unsigned rcode :4; /* response code */ 156 unsigned cd: 1; /* checking disabled by resolver */ 157 unsigned ad: 1; /* authentic data from named */ 158 unsigned unused :1; /* unused bits (MBZ as of 4.9.3a3) */ 159 unsigned ra :1; /* recursion available */ 160#endif 161 /* remaining bytes */ 162 unsigned qdcount :16; /* number of question entries */ 163 unsigned ancount :16; /* number of answer entries */ 164 unsigned nscount :16; /* number of authority entries */ 165 unsigned arcount :16; /* number of resource entries */ 166} HEADER; 167 168#define PACKETSZ NS_PACKETSZ 169#define MAXDNAME NS_MAXDNAME 170#define MAXCDNAME NS_MAXCDNAME 171#define MAXLABEL NS_MAXLABEL 172#define HFIXEDSZ NS_HFIXEDSZ 173#define QFIXEDSZ NS_QFIXEDSZ 174#define RRFIXEDSZ NS_RRFIXEDSZ 175#define INT32SZ NS_INT32SZ 176#define INT16SZ NS_INT16SZ 177#define INT8SZ NS_INT8SZ 178#define INADDRSZ NS_INADDRSZ 179#define IN6ADDRSZ NS_IN6ADDRSZ 180#define INDIR_MASK NS_CMPRSFLGS 181#define NAMESERVER_PORT NS_DEFAULTPORT 182 183#define S_ZONE ns_s_zn 184#define S_PREREQ ns_s_pr 185#define S_UPDATE ns_s_ud 186#define S_ADDT ns_s_ar 187 188#define QUERY ns_o_query 189#define IQUERY ns_o_iquery 190#define STATUS ns_o_status 191#define NS_NOTIFY_OP ns_o_notify 192#define NS_UPDATE_OP ns_o_update 193 194#define NOERROR ns_r_noerror 195#define FORMERR ns_r_formerr 196#define SERVFAIL ns_r_servfail 197#define NXDOMAIN ns_r_nxdomain 198#define NOTIMP ns_r_notimpl 199#define REFUSED ns_r_refused 200#define YXDOMAIN ns_r_yxdomain 201#define YXRRSET ns_r_yxrrset 202#define NXRRSET ns_r_nxrrset 203#define NOTAUTH ns_r_notauth 204#define NOTZONE ns_r_notzone 205/* #define BADSIG ns_r_badsig */ 206/* #define BADKEY ns_r_badkey */ 207/* #define BADTIME ns_r_badtime */ 208 209#define DELETE ns_uop_delete 210#ifndef ADD 211#define ADD ns_uop_add 212#endif 213 214#define T_A ns_t_a 215#define T_NS ns_t_ns 216#define T_MD ns_t_md 217#define T_MF ns_t_mf 218#define T_CNAME ns_t_cname 219#define T_SOA ns_t_soa 220#define T_MB ns_t_mb 221#define T_MG ns_t_mg 222#define T_MR ns_t_mr 223#define T_NULL ns_t_null 224#define T_WKS ns_t_wks 225#define T_PTR ns_t_ptr 226#define T_HINFO ns_t_hinfo 227#define T_MINFO ns_t_minfo 228#define T_MX ns_t_mx 229#define T_TXT ns_t_txt 230#define T_RP ns_t_rp 231#define T_AFSDB ns_t_afsdb 232#define T_X25 ns_t_x25 233#define T_ISDN ns_t_isdn 234#define T_RT ns_t_rt 235#define T_NSAP ns_t_nsap 236#define T_NSAP_PTR ns_t_nsap_ptr 237#define T_SIG ns_t_sig 238#define T_KEY ns_t_key 239#define T_PX ns_t_px 240#define T_GPOS ns_t_gpos 241#define T_AAAA ns_t_aaaa 242#define T_LOC ns_t_loc 243#define T_NXT ns_t_nxt 244#define T_EID ns_t_eid 245#define T_NIMLOC ns_t_nimloc 246#define T_SRV ns_t_srv 247#define T_ATMA ns_t_atma 248#define T_NAPTR ns_t_naptr 249#define T_A6 ns_t_a6 250#define T_TSIG ns_t_tsig 251#define T_IXFR ns_t_ixfr 252#define T_AXFR ns_t_axfr 253#define T_MAILB ns_t_mailb 254#define T_MAILA ns_t_maila 255#define T_ANY ns_t_any 256 257#define C_IN ns_c_in 258#define C_CHAOS ns_c_chaos 259#define C_HS ns_c_hs 260/* BIND_UPDATE */ 261#define C_NONE ns_c_none 262#define C_ANY ns_c_any 263 264#define GETSHORT NS_GET16 265#define GETLONG NS_GET32 266#define PUTSHORT NS_PUT16 267#define PUTLONG NS_PUT32 268 269#ifdef __cplusplus 270} 271#endif 272 273#endif /* _ARPA_NAMESER_COMPAT_H */ 274