1*83ee113eSDavid van Moolenbroek /* $NetBSD: nameser_compat.h,v 1.1.1.3 2014/07/12 11:57:56 spz Exp $ */ 2*83ee113eSDavid van Moolenbroek /* Copyright (c) 1983, 1989 3*83ee113eSDavid van Moolenbroek * The Regents of the University of California. All rights reserved. 4*83ee113eSDavid van Moolenbroek * 5*83ee113eSDavid van Moolenbroek * Redistribution and use in source and binary forms, with or without 6*83ee113eSDavid van Moolenbroek * modification, are permitted provided that the following conditions 7*83ee113eSDavid van Moolenbroek * are met: 8*83ee113eSDavid van Moolenbroek * 1. Redistributions of source code must retain the above copyright 9*83ee113eSDavid van Moolenbroek * notice, this list of conditions and the following disclaimer. 10*83ee113eSDavid van Moolenbroek * 2. Redistributions in binary form must reproduce the above copyright 11*83ee113eSDavid van Moolenbroek * notice, this list of conditions and the following disclaimer in the 12*83ee113eSDavid van Moolenbroek * documentation and/or other materials provided with the distribution. 13*83ee113eSDavid van Moolenbroek * 3. Neither the name of the University nor the names of its contributors 14*83ee113eSDavid van Moolenbroek * may be used to endorse or promote products derived from this software 15*83ee113eSDavid van Moolenbroek * without specific prior written permission. 16*83ee113eSDavid van Moolenbroek * 17*83ee113eSDavid van Moolenbroek * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 18*83ee113eSDavid van Moolenbroek * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19*83ee113eSDavid van Moolenbroek * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20*83ee113eSDavid van Moolenbroek * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 21*83ee113eSDavid van Moolenbroek * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22*83ee113eSDavid van Moolenbroek * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23*83ee113eSDavid van Moolenbroek * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24*83ee113eSDavid van Moolenbroek * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25*83ee113eSDavid van Moolenbroek * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26*83ee113eSDavid van Moolenbroek * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27*83ee113eSDavid van Moolenbroek * SUCH DAMAGE. 28*83ee113eSDavid van Moolenbroek */ 29*83ee113eSDavid van Moolenbroek 30*83ee113eSDavid van Moolenbroek /* 31*83ee113eSDavid van Moolenbroek * from nameser.h 8.1 (Berkeley) 6/2/93 32*83ee113eSDavid van Moolenbroek * Id: nameser_compat.h,v 1.2 2000/01/27 23:28:08 mellon Exp 33*83ee113eSDavid van Moolenbroek */ 34*83ee113eSDavid van Moolenbroek 35*83ee113eSDavid van Moolenbroek #ifndef _ARPA_NAMESER_COMPAT_ 36*83ee113eSDavid van Moolenbroek #define _ARPA_NAMESER_COMPAT_ 37*83ee113eSDavid van Moolenbroek 38*83ee113eSDavid van Moolenbroek /* 39*83ee113eSDavid van Moolenbroek * Structure for query header. The order of the fields is machine- and 40*83ee113eSDavid van Moolenbroek * compiler-dependent, depending on the byte/bit order and the layout 41*83ee113eSDavid van Moolenbroek * of bit fields. We use bit fields only in int variables, as this 42*83ee113eSDavid van Moolenbroek * is all ANSI requires. This requires a somewhat confusing rearrangement. 43*83ee113eSDavid van Moolenbroek */ 44*83ee113eSDavid van Moolenbroek 45*83ee113eSDavid van Moolenbroek typedef struct { 46*83ee113eSDavid van Moolenbroek unsigned id :16; /* query identification number */ 47*83ee113eSDavid van Moolenbroek #if BYTE_ORDER == BIG_ENDIAN 48*83ee113eSDavid van Moolenbroek /* fields in third byte */ 49*83ee113eSDavid van Moolenbroek unsigned qr: 1; /* response flag */ 50*83ee113eSDavid van Moolenbroek unsigned opcode: 4; /* purpose of message */ 51*83ee113eSDavid van Moolenbroek unsigned aa: 1; /* authoritive answer */ 52*83ee113eSDavid van Moolenbroek unsigned tc: 1; /* truncated message */ 53*83ee113eSDavid van Moolenbroek unsigned rd: 1; /* recursion desired */ 54*83ee113eSDavid van Moolenbroek /* fields in fourth byte */ 55*83ee113eSDavid van Moolenbroek unsigned ra: 1; /* recursion available */ 56*83ee113eSDavid van Moolenbroek unsigned unused :1; /* unused bits (MBZ as of 4.9.3a3) */ 57*83ee113eSDavid van Moolenbroek unsigned ad: 1; /* authentic data from named */ 58*83ee113eSDavid van Moolenbroek unsigned cd: 1; /* checking disabled by resolver */ 59*83ee113eSDavid van Moolenbroek unsigned rcode :4; /* response code */ 60*83ee113eSDavid van Moolenbroek #endif 61*83ee113eSDavid van Moolenbroek #if BYTE_ORDER == LITTLE_ENDIAN || BYTE_ORDER == PDP_ENDIAN 62*83ee113eSDavid van Moolenbroek /* fields in third byte */ 63*83ee113eSDavid van Moolenbroek unsigned rd :1; /* recursion desired */ 64*83ee113eSDavid van Moolenbroek unsigned tc :1; /* truncated message */ 65*83ee113eSDavid van Moolenbroek unsigned aa :1; /* authoritive answer */ 66*83ee113eSDavid van Moolenbroek unsigned opcode :4; /* purpose of message */ 67*83ee113eSDavid van Moolenbroek unsigned qr :1; /* response flag */ 68*83ee113eSDavid van Moolenbroek /* fields in fourth byte */ 69*83ee113eSDavid van Moolenbroek unsigned rcode :4; /* response code */ 70*83ee113eSDavid van Moolenbroek unsigned cd: 1; /* checking disabled by resolver */ 71*83ee113eSDavid van Moolenbroek unsigned ad: 1; /* authentic data from named */ 72*83ee113eSDavid van Moolenbroek unsigned unused :1; /* unused bits (MBZ as of 4.9.3a3) */ 73*83ee113eSDavid van Moolenbroek unsigned ra :1; /* recursion available */ 74*83ee113eSDavid van Moolenbroek #endif 75*83ee113eSDavid van Moolenbroek /* remaining bytes */ 76*83ee113eSDavid van Moolenbroek unsigned qdcount :16; /* number of question entries */ 77*83ee113eSDavid van Moolenbroek unsigned ancount :16; /* number of answer entries */ 78*83ee113eSDavid van Moolenbroek unsigned nscount :16; /* number of authority entries */ 79*83ee113eSDavid van Moolenbroek unsigned arcount :16; /* number of resource entries */ 80*83ee113eSDavid van Moolenbroek } HEADER; 81*83ee113eSDavid van Moolenbroek 82*83ee113eSDavid van Moolenbroek #define PACKETSZ NS_PACKETSZ 83*83ee113eSDavid van Moolenbroek #define MAXDNAME NS_MAXDNAME 84*83ee113eSDavid van Moolenbroek #define MAXCDNAME NS_MAXCDNAME 85*83ee113eSDavid van Moolenbroek #define MAXLABEL NS_MAXLABEL 86*83ee113eSDavid van Moolenbroek #define HFIXEDSZ NS_HFIXEDSZ 87*83ee113eSDavid van Moolenbroek #define QFIXEDSZ NS_QFIXEDSZ 88*83ee113eSDavid van Moolenbroek #define RRFIXEDSZ NS_RRFIXEDSZ 89*83ee113eSDavid van Moolenbroek #define INT32SZ NS_INT32SZ 90*83ee113eSDavid van Moolenbroek #define INT16SZ NS_INT16SZ 91*83ee113eSDavid van Moolenbroek #define INADDRSZ NS_INADDRSZ 92*83ee113eSDavid van Moolenbroek #define IN6ADDRSZ NS_IN6ADDRSZ 93*83ee113eSDavid van Moolenbroek #define INDIR_MASK NS_CMPRSFLGS 94*83ee113eSDavid van Moolenbroek #define NAMESERVER_PORT NS_DEFAULTPORT 95*83ee113eSDavid van Moolenbroek 96*83ee113eSDavid van Moolenbroek #define S_ZONE ns_s_zn 97*83ee113eSDavid van Moolenbroek #define S_PREREQ ns_s_pr 98*83ee113eSDavid van Moolenbroek #define S_UPDATE ns_s_ud 99*83ee113eSDavid van Moolenbroek #define S_ADDT ns_s_ar 100*83ee113eSDavid van Moolenbroek 101*83ee113eSDavid van Moolenbroek #define QUERY ns_o_query 102*83ee113eSDavid van Moolenbroek #define IQUERY ns_o_iquery 103*83ee113eSDavid van Moolenbroek #define STATUS ns_o_status 104*83ee113eSDavid van Moolenbroek #define NS_NOTIFY_OP ns_o_notify 105*83ee113eSDavid van Moolenbroek #define NS_UPDATE_OP ns_o_update 106*83ee113eSDavid van Moolenbroek 107*83ee113eSDavid van Moolenbroek #define NOERROR ns_r_noerror 108*83ee113eSDavid van Moolenbroek #define FORMERR ns_r_formerr 109*83ee113eSDavid van Moolenbroek #define SERVFAIL ns_r_servfail 110*83ee113eSDavid van Moolenbroek #define NXDOMAIN ns_r_nxdomain 111*83ee113eSDavid van Moolenbroek #define NOTIMP ns_r_notimpl 112*83ee113eSDavid van Moolenbroek #define REFUSED ns_r_refused 113*83ee113eSDavid van Moolenbroek #define YXDOMAIN ns_r_yxdomain 114*83ee113eSDavid van Moolenbroek #define YXRRSET ns_r_yxrrset 115*83ee113eSDavid van Moolenbroek #define NXRRSET ns_r_nxrrset 116*83ee113eSDavid van Moolenbroek #define NOTAUTH ns_r_notauth 117*83ee113eSDavid van Moolenbroek #define NOTZONE ns_r_notzone 118*83ee113eSDavid van Moolenbroek /*#define BADSIG ns_r_badsig*/ 119*83ee113eSDavid van Moolenbroek /*#define BADKEY ns_r_badkey*/ 120*83ee113eSDavid van Moolenbroek /*#define BADTIME ns_r_badtime*/ 121*83ee113eSDavid van Moolenbroek 122*83ee113eSDavid van Moolenbroek 123*83ee113eSDavid van Moolenbroek #define DELETE ns_uop_delete 124*83ee113eSDavid van Moolenbroek #define ADD ns_uop_add 125*83ee113eSDavid van Moolenbroek 126*83ee113eSDavid van Moolenbroek #define T_A ns_t_a 127*83ee113eSDavid van Moolenbroek #define T_NS ns_t_ns 128*83ee113eSDavid van Moolenbroek #define T_MD ns_t_md 129*83ee113eSDavid van Moolenbroek #define T_MF ns_t_mf 130*83ee113eSDavid van Moolenbroek #define T_CNAME ns_t_cname 131*83ee113eSDavid van Moolenbroek #define T_SOA ns_t_soa 132*83ee113eSDavid van Moolenbroek #define T_MB ns_t_mb 133*83ee113eSDavid van Moolenbroek #define T_MG ns_t_mg 134*83ee113eSDavid van Moolenbroek #define T_MR ns_t_mr 135*83ee113eSDavid van Moolenbroek #define T_NULL ns_t_null 136*83ee113eSDavid van Moolenbroek #define T_WKS ns_t_wks 137*83ee113eSDavid van Moolenbroek #define T_PTR ns_t_ptr 138*83ee113eSDavid van Moolenbroek #define T_HINFO ns_t_hinfo 139*83ee113eSDavid van Moolenbroek #define T_MINFO ns_t_minfo 140*83ee113eSDavid van Moolenbroek #define T_MX ns_t_mx 141*83ee113eSDavid van Moolenbroek #define T_TXT ns_t_txt 142*83ee113eSDavid van Moolenbroek #define T_RP ns_t_rp 143*83ee113eSDavid van Moolenbroek #define T_AFSDB ns_t_afsdb 144*83ee113eSDavid van Moolenbroek #define T_X25 ns_t_x25 145*83ee113eSDavid van Moolenbroek #define T_ISDN ns_t_isdn 146*83ee113eSDavid van Moolenbroek #define T_RT ns_t_rt 147*83ee113eSDavid van Moolenbroek #define T_NSAP ns_t_nsap 148*83ee113eSDavid van Moolenbroek #define T_NSAP_PTR ns_t_nsap_ptr 149*83ee113eSDavid van Moolenbroek #define T_SIG ns_t_sig 150*83ee113eSDavid van Moolenbroek #define T_KEY ns_t_key 151*83ee113eSDavid van Moolenbroek #define T_PX ns_t_px 152*83ee113eSDavid van Moolenbroek #define T_GPOS ns_t_gpos 153*83ee113eSDavid van Moolenbroek #define T_AAAA ns_t_aaaa 154*83ee113eSDavid van Moolenbroek #define T_LOC ns_t_loc 155*83ee113eSDavid van Moolenbroek #define T_NXT ns_t_nxt 156*83ee113eSDavid van Moolenbroek #define T_EID ns_t_eid 157*83ee113eSDavid van Moolenbroek #define T_NIMLOC ns_t_nimloc 158*83ee113eSDavid van Moolenbroek #define T_SRV ns_t_srv 159*83ee113eSDavid van Moolenbroek #define T_ATMA ns_t_atma 160*83ee113eSDavid van Moolenbroek #define T_NAPTR ns_t_naptr 161*83ee113eSDavid van Moolenbroek #define T_TSIG ns_t_tsig 162*83ee113eSDavid van Moolenbroek #define T_IXFR ns_t_ixfr 163*83ee113eSDavid van Moolenbroek #define T_AXFR ns_t_axfr 164*83ee113eSDavid van Moolenbroek #define T_MAILB ns_t_mailb 165*83ee113eSDavid van Moolenbroek #define T_MAILA ns_t_maila 166*83ee113eSDavid van Moolenbroek #define T_ANY ns_t_any 167*83ee113eSDavid van Moolenbroek 168*83ee113eSDavid van Moolenbroek #define C_IN ns_c_in 169*83ee113eSDavid van Moolenbroek #define C_CHAOS ns_c_chaos 170*83ee113eSDavid van Moolenbroek #define C_HS ns_c_hs 171*83ee113eSDavid van Moolenbroek /* BIND_UPDATE */ 172*83ee113eSDavid van Moolenbroek #define C_NONE ns_c_none 173*83ee113eSDavid van Moolenbroek #define C_ANY ns_c_any 174*83ee113eSDavid van Moolenbroek 175*83ee113eSDavid van Moolenbroek #define GETSHORT NS_GET16 176*83ee113eSDavid van Moolenbroek #define GETLONG NS_GET32 177*83ee113eSDavid van Moolenbroek #define PUTSHORT NS_PUT16 178*83ee113eSDavid van Moolenbroek #define PUTLONG NS_PUT32 179*83ee113eSDavid van Moolenbroek 180*83ee113eSDavid van Moolenbroek #endif /* _ARPA_NAMESER_COMPAT_ */ 181