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