Home | History | Annotate | Download | only in arpa
      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
     71 extern "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 
    131 typedef 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