Project

General

Profile

Statistics
| Revision:

root / lab4 / .minix-src / include / arpa / nameser_compat.h @ 14

History | View | Annotate | Download (7.93 KB)

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